From d577d991b97ae2b5ee1af23641bcffc3f83af5b2 Mon Sep 17 00:00:00 2001 From: Pixel Date: Wed, 4 Nov 2009 11:56:41 -0800 Subject: Initial import. Contains the im, cd and iup librairies, and a "working" Makefile for them under linux. --- iup/COPYRIGHT | 32 + iup/Makefile | 29 + iup/README | 12 + iup/dox/iup.dox | 264 + iup/etc/iup.manifest | 22 + iup/etc/iup.rc | 44 + iup/etc/iup64.manifest | 22 + iup/etc/pen.cur | Bin 0 -> 326 bytes iup/etc/tecgraf.ico | Bin 0 -> 7438 bytes iup/fix_permission | 1 + iup/include/iup.h | 363 + iup/include/iup_pplot.h | 40 + iup/include/iupcb.h | 1 + iup/include/iupcbox.h | 1 + iup/include/iupcbs.h | 43 + iup/include/iupcells.h | 1 + iup/include/iupcolorbar.h | 1 + iup/include/iupcontrols.h | 46 + iup/include/iupdef.h | 725 ++ iup/include/iupdial.h | 1 + iup/include/iupgauge.h | 1 + iup/include/iupgc.h | 1 + iup/include/iupgetparam.h | 1 + iup/include/iupgl.h | 96 + iup/include/iupim.h | 27 + iup/include/iupkey.h | 457 + iup/include/iuplua.h | 41 + iup/include/iuplua_pplot.h | 26 + iup/include/iupluacontrols.h | 27 + iup/include/iupluagl.h | 26 + iup/include/iupluaim.h | 26 + iup/include/iupluaole.h | 26 + iup/include/iupmask.h | 41 + iup/include/iupmatrix.h | 1 + iup/include/iupole.h | 24 + iup/include/iupsbox.h | 1 + iup/include/iupspin.h | 1 + iup/include/iuptabs.h | 1 + iup/include/iuptree.h | 1 + iup/include/iupval.h | 1 + iup/mak.vc8/iup.sln | 347 + iup/mak.vc8/iup_pplot.vcproj | 137 + iup/mak.vc8/iupcd.vcproj | 104 + iup/mak.vc8/iupcontrols.vcproj | 335 + iup/mak.vc8/iupcore.vcproj | 600 ++ iup/mak.vc8/iupgl.vcproj | 127 + iup/mak.vc8/iupgtk.vcproj | 217 + iup/mak.vc8/iupim.vcproj | 103 + iup/mak.vc8/iupimglib.vcproj | 142 + iup/mak.vc8/iuplua3.vcproj | 194 + iup/mak.vc8/iuplua5.vcproj | 462 + iup/mak.vc8/iuplua_pplot3.vcproj | 110 + iup/mak.vc8/iuplua_pplot5.vcproj | 122 + iup/mak.vc8/iupluacd3.vcproj | 99 + iup/mak.vc8/iupluacd5.vcproj | 99 + iup/mak.vc8/iupluacontrols3.vcproj | 170 + iup/mak.vc8/iupluacontrols5.vcproj | 182 + iup/mak.vc8/iupluaexe3.vcproj | 120 + iup/mak.vc8/iupluaexe5.vcproj | 121 + iup/mak.vc8/iupluaexe5gtk.vcproj | 117 + iup/mak.vc8/iupluagl3.vcproj | 101 + iup/mak.vc8/iupluagl5.vcproj | 118 + iup/mak.vc8/iupluaim3.vcproj | 101 + iup/mak.vc8/iupluaim5.vcproj | 101 + iup/mak.vc8/iupluaimglib5.vcproj | 97 + iup/mak.vc8/iupluaole3.vcproj | 101 + iup/mak.vc8/iupluaole5.vcproj | 114 + iup/mak.vc8/iupmot.vcproj | 235 + iup/mak.vc8/iupole.vcproj | 182 + iup/mak.vc8/iupsample.vcproj | 1172 +++ iup/mak.vc8/iupsamplegtk.vcproj | 791 ++ iup/mak.vc8/iuptest.vcproj | 304 + iup/mak.vc8/iuptestgtk.vcproj | 295 + iup/mak.vc8/iupview.vcproj | 117 + iup/mak.vc8/iupviewgtk.vcproj | 113 + iup/mak.vc8/iupwin.vcproj | 250 + iup/mak.vc8/ledc.vcproj | 120 + iup/mak.vc9/iup.sln | 347 + iup/mak.vc9/iup_pplot.vcproj | 137 + iup/mak.vc9/iupcd.vcproj | 104 + iup/mak.vc9/iupcontrols.vcproj | 335 + iup/mak.vc9/iupcore.vcproj | 600 ++ iup/mak.vc9/iupgl.vcproj | 127 + iup/mak.vc9/iupgtk.vcproj | 221 + iup/mak.vc9/iupim.vcproj | 103 + iup/mak.vc9/iupimglib.vcproj | 142 + iup/mak.vc9/iuplua3.vcproj | 194 + iup/mak.vc9/iuplua5.vcproj | 470 + iup/mak.vc9/iuplua_pplot3.vcproj | 110 + iup/mak.vc9/iuplua_pplot5.vcproj | 122 + iup/mak.vc9/iupluacd3.vcproj | 99 + iup/mak.vc9/iupluacd5.vcproj | 99 + iup/mak.vc9/iupluacontrols3.vcproj | 170 + iup/mak.vc9/iupluacontrols5.vcproj | 182 + iup/mak.vc9/iupluaexe3.vcproj | 120 + iup/mak.vc9/iupluaexe5.vcproj | 121 + iup/mak.vc9/iupluaexe5gtk.vcproj | 117 + iup/mak.vc9/iupluagl3.vcproj | 101 + iup/mak.vc9/iupluagl5.vcproj | 118 + iup/mak.vc9/iupluaim3.vcproj | 101 + iup/mak.vc9/iupluaim5.vcproj | 101 + iup/mak.vc9/iupluaimglib5.vcproj | 97 + iup/mak.vc9/iupluaole3.vcproj | 101 + iup/mak.vc9/iupluaole5.vcproj | 114 + iup/mak.vc9/iupmot.vcproj | 239 + iup/mak.vc9/iupole.vcproj | 182 + iup/mak.vc9/iupsample.vcproj | 1179 +++ iup/mak.vc9/iupsamplegtk.vcproj | 798 ++ iup/mak.vc9/iuptest.vcproj | 320 + iup/mak.vc9/iuptestgtk.vcproj | 311 + iup/mak.vc9/iupview.vcproj | 117 + iup/mak.vc9/iupviewgtk.vcproj | 113 + iup/mak.vc9/iupwin.vcproj | 254 + iup/mak.vc9/ledc.vcproj | 120 + iup/make_uname | 49 + iup/make_uname.bat | 5 + iup/make_uname_lib.bat | 6 + iup/src/Makefile | 9 + iup/src/config.mak | 118 + iup/src/gtk/iupgtk_button.c | 477 + iup/src/gtk/iupgtk_canvas.c | 624 ++ iup/src/gtk/iupgtk_clipboard.c | 125 + iup/src/gtk/iupgtk_colordlg.c | 211 + iup/src/gtk/iupgtk_common.c | 830 ++ iup/src/gtk/iupgtk_dialog.c | 1023 ++ iup/src/gtk/iupgtk_drv.h | 82 + iup/src/gtk/iupgtk_filedlg.c | 536 + iup/src/gtk/iupgtk_focus.c | 44 + iup/src/gtk/iupgtk_font.c | 413 + iup/src/gtk/iupgtk_fontdlg.c | 91 + iup/src/gtk/iupgtk_frame.c | 155 + iup/src/gtk/iupgtk_globalattrib.c | 211 + iup/src/gtk/iupgtk_help.c | 52 + iup/src/gtk/iupgtk_image.c | 430 + iup/src/gtk/iupgtk_key.c | 422 + iup/src/gtk/iupgtk_label.c | 318 + iup/src/gtk/iupgtk_list.c | 1439 +++ iup/src/gtk/iupgtk_loop.c | 93 + iup/src/gtk/iupgtk_menu.c | 525 + iup/src/gtk/iupgtk_messagedlg.c | 128 + iup/src/gtk/iupgtk_open.c | 172 + iup/src/gtk/iupgtk_progressbar.c | 131 + iup/src/gtk/iupgtk_tabs.c | 444 + iup/src/gtk/iupgtk_text.c | 1716 +++ iup/src/gtk/iupgtk_timer.c | 61 + iup/src/gtk/iupgtk_tips.c | 100 + iup/src/gtk/iupgtk_toggle.c | 519 + iup/src/gtk/iupgtk_tree.c | 2369 +++++ iup/src/gtk/iupgtk_val.c | 208 + iup/src/iup.c | 86 + iup/src/iup.def | 353 + iup/src/iup.dep | 334 + iup/src/iup_array.c | 108 + iup/src/iup_array.h | 63 + iup/src/iup_assert.c | 54 + iup/src/iup_assert.h | 68 + iup/src/iup_attrib.c | 673 ++ iup/src/iup_attrib.h | 137 + iup/src/iup_box.c | 238 + iup/src/iup_box.h | 40 + iup/src/iup_button.c | 206 + iup/src/iup_button.h | 39 + iup/src/iup_callback.c | 90 + iup/src/iup_canvas.c | 169 + iup/src/iup_canvas.h | 37 + iup/src/iup_cbox.c | 143 + iup/src/iup_childtree.c | 455 + iup/src/iup_childtree.h | 54 + iup/src/iup_class.c | 314 + iup/src/iup_class.h | 414 + iup/src/iup_classattrib.c | 508 + iup/src/iup_classbase.c | 466 + iup/src/iup_classbase.h | 175 + iup/src/iup_colordlg.c | 44 + iup/src/iup_dialog.c | 747 ++ iup/src/iup_dialog.h | 89 + iup/src/iup_dlglist.c | 130 + iup/src/iup_dlglist.h | 58 + iup/src/iup_dll.rc | 41 + iup/src/iup_drv.h | 99 + iup/src/iup_drvfont.h | 116 + iup/src/iup_drvinfo.h | 103 + iup/src/iup_filedlg.c | 67 + iup/src/iup_fill.c | 242 + iup/src/iup_focus.c | 281 + iup/src/iup_focus.h | 53 + iup/src/iup_font.c | 714 ++ iup/src/iup_fontdlg.c | 48 + iup/src/iup_frame.c | 165 + iup/src/iup_frame.h | 22 + iup/src/iup_func.c | 78 + iup/src/iup_func.h | 28 + iup/src/iup_getparam.c | 1254 +++ iup/src/iup_globalattrib.c | 153 + iup/src/iup_globalattrib.h | 33 + iup/src/iup_hbox.c | 309 + iup/src/iup_image.c | 1017 ++ iup/src/iup_image.h | 61 + iup/src/iup_key.c | 269 + iup/src/iup_key.h | 70 + iup/src/iup_label.c | 183 + iup/src/iup_label.h | 37 + iup/src/iup_layout.c | 273 + iup/src/iup_layout.h | 28 + iup/src/iup_ledlex.c | 366 + iup/src/iup_ledlex.h | 54 + iup/src/iup_ledparse.c | 288 + iup/src/iup_list.c | 711 ++ iup/src/iup_list.h | 53 + iup/src/iup_mask.c | 146 + iup/src/iup_mask.h | 55 + iup/src/iup_maskmatch.c | 582 ++ iup/src/iup_maskmatch.h | 62 + iup/src/iup_maskparse.c | 547 + iup/src/iup_maskparse.h | 46 + iup/src/iup_menu.c | 364 + iup/src/iup_menu.h | 35 + iup/src/iup_messagedlg.c | 70 + iup/src/iup_names.c | 193 + iup/src/iup_names.h | 34 + iup/src/iup_normalizer.c | 188 + iup/src/iup_object.c | 180 + iup/src/iup_object.h | 132 + iup/src/iup_open.c | 119 + iup/src/iup_predial.c | 510 + iup/src/iup_predial.h | 32 + iup/src/iup_progressbar.c | 118 + iup/src/iup_progressbar.h | 35 + iup/src/iup_radio.c | 195 + iup/src/iup_register.c | 123 + iup/src/iup_register.h | 47 + iup/src/iup_sbox.c | 413 + iup/src/iup_scanf.c | 200 + iup/src/iup_show.c | 256 + iup/src/iup_spin.c | 301 + iup/src/iup_stdcontrols.h | 76 + iup/src/iup_str.c | 716 ++ iup/src/iup_str.h | 183 + iup/src/iup_strmessage.c | 137 + iup/src/iup_strmessage.h | 45 + iup/src/iup_table.c | 736 ++ iup/src/iup_table.h | 143 + iup/src/iup_tabs.c | 471 + iup/src/iup_tabs.h | 50 + iup/src/iup_text.c | 513 + iup/src/iup_text.h | 48 + iup/src/iup_timer.c | 80 + iup/src/iup_timer.h | 24 + iup/src/iup_toggle.c | 140 + iup/src/iup_toggle.h | 37 + iup/src/iup_tree.c | 499 + iup/src/iup_tree.h | 57 + iup/src/iup_user.c | 41 + iup/src/iup_val.c | 209 + iup/src/iup_val.h | 42 + iup/src/iup_vbox.c | 311 + iup/src/iup_zbox.c | 375 + iup/src/iupgtk.dep | 259 + iup/src/iupstub.mak | 12 + iup/src/make_uname | 4 + iup/src/make_uname.bat | 55 + iup/src/mot/iupmot_button.c | 301 + iup/src/mot/iupmot_canvas.c | 639 ++ iup/src/mot/iupmot_clipboard.c | 208 + iup/src/mot/iupmot_color.c | 380 + iup/src/mot/iupmot_color.h | 36 + iup/src/mot/iupmot_colordlg.c | 31 + iup/src/mot/iupmot_common.c | 630 ++ iup/src/mot/iupmot_dialog.c | 1069 ++ iup/src/mot/iupmot_drv.h | 75 + iup/src/mot/iupmot_filedlg.c | 578 ++ iup/src/mot/iupmot_focus.c | 35 + iup/src/mot/iupmot_font.c | 443 + iup/src/mot/iupmot_fontdlg.c | 31 + iup/src/mot/iupmot_frame.c | 257 + iup/src/mot/iupmot_globalattrib.c | 155 + iup/src/mot/iupmot_image.c | 397 + iup/src/mot/iupmot_key.c | 425 + iup/src/mot/iupmot_label.c | 256 + iup/src/mot/iupmot_list.c | 1404 +++ iup/src/mot/iupmot_loop.c | 108 + iup/src/mot/iupmot_menu.c | 457 + iup/src/mot/iupmot_messagedlg.c | 191 + iup/src/mot/iupmot_open.c | 141 + iup/src/mot/iupmot_progressbar.c | 165 + iup/src/mot/iupmot_tabs.c | 593 ++ iup/src/mot/iupmot_text.c | 1165 +++ iup/src/mot/iupmot_timer.c | 70 + iup/src/mot/iupmot_tips.c | 226 + iup/src/mot/iupmot_toggle.c | 469 + iup/src/mot/iupmot_tree.c | 2848 +++++ iup/src/mot/iupmot_val.c | 488 + iup/src/mot/iupunix_help.c | 44 + iup/src/mot/iupunix_info.c | 305 + iup/src/win/iupwin_brush.c | 62 + iup/src/win/iupwin_brush.h | 26 + iup/src/win/iupwin_button.c | 715 ++ iup/src/win/iupwin_canvas.c | 724 ++ iup/src/win/iupwin_clipboard.c | 190 + iup/src/win/iupwin_colordlg.c | 133 + iup/src/win/iupwin_common.c | 865 ++ iup/src/win/iupwin_dialog.c | 1439 +++ iup/src/win/iupwin_draw.c | 328 + iup/src/win/iupwin_draw.h | 47 + iup/src/win/iupwin_drv.h | 113 + iup/src/win/iupwin_filedlg.c | 580 ++ iup/src/win/iupwin_focus.c | 62 + iup/src/win/iupwin_font.c | 342 + iup/src/win/iupwin_fontdlg.c | 160 + iup/src/win/iupwin_frame.c | 203 + iup/src/win/iupwin_globalattrib.c | 243 + iup/src/win/iupwin_handle.c | 56 + iup/src/win/iupwin_handle.h | 28 + iup/src/win/iupwin_image.c | 668 ++ iup/src/win/iupwin_info.c | 277 + iup/src/win/iupwin_info.h | 29 + iup/src/win/iupwin_key.c | 348 + iup/src/win/iupwin_label.c | 339 + iup/src/win/iupwin_list.c | 1460 +++ iup/src/win/iupwin_loop.c | 135 + iup/src/win/iupwin_menu.c | 667 ++ iup/src/win/iupwin_messagedlg.c | 105 + iup/src/win/iupwin_open.c | 124 + iup/src/win/iupwin_progressbar.c | 164 + iup/src/win/iupwin_tabs.c | 680 ++ iup/src/win/iupwin_text.c | 1993 ++++ iup/src/win/iupwin_timer.c | 88 + iup/src/win/iupwin_tips.c | 191 + iup/src/win/iupwin_toggle.c | 693 ++ iup/src/win/iupwin_tree.c | 2542 +++++ iup/src/win/iupwin_val.c | 315 + iup/src/win/iupwindows_help.c | 32 + iup/src/win/iupwindows_info.c | 212 + iup/src/win/iupwindows_main.c | 66 + iup/srccd/Makefile | 6 + iup/srccd/config.mak | 14 + iup/srccd/iup_cd.c | 70 + iup/srccd/iupcd.def | 2 + iup/srccd/iupcd.dep | 3 + iup/srccd/make_uname | 3 + iup/srccd/make_uname.bat | 4 + iup/srcconsole/Makefile | 12 + iup/srcconsole/config.mak | 138 + iup/srcconsole/console3.lua | 181 + iup/srcconsole/console5.lua | 204 + iup/srcconsole/copy_all_so | 11 + iup/srcconsole/copy_dll.bat | 10 + iup/srcconsole/copy_dll_64.bat | 10 + iup/srcconsole/copy_so | 4 + iup/srcconsole/iup_lua3.c | 128 + iup/srcconsole/iup_lua51.c | 493 + iup/srcconsole/iuplua3.bat | 3 + iup/srcconsole/iuplua3.mak | 90 + iup/srcconsole/iuplua3.rc | 45 + iup/srcconsole/iuplua5.rc | 59 + iup/srcconsole/iuplua51 | 6 + iup/srcconsole/iuplua51.bat | 3 + iup/srcconsole/iuplua51.dep | 4 + iup/srcconsole/iuplua51mot | 6 + iup/srcconsole/iuplua51mot.dep | 12 + iup/srcconsole/loh/console3.loh | 254 + iup/srcconsole/loh/console3_be32.loh | 254 + iup/srcconsole/loh/console3_be64.loh | 254 + iup/srcconsole/loh/console3_le64.loh | 251 + iup/srcconsole/loh/console3_le64w.loh | 251 + iup/srcconsole/loh/console5.loh | 475 + iup/srcconsole/loh/console5_be32.loh | 475 + iup/srcconsole/loh/console5_be64.loh | 524 + iup/srcconsole/loh/console5_le64.loh | 524 + iup/srcconsole/loh/console5_le64w.loh | 525 + iup/srcconsole/lua.ico | Bin 0 -> 22486 bytes iup/srcconsole/make_uname | 6 + iup/srcconsole/make_uname.bat | 30 + iup/srcconsole/wlua_dll8_x64.manifest | 33 + iup/srcconsole/wlua_dll8_x86.manifest | 33 + iup/srcconsole/wlua_dll9_x64.manifest | 33 + iup/srcconsole/wlua_dll9_x86.manifest | 33 + iup/srccontrols/Makefile | 6 + iup/srccontrols/color/iup_colorbrowser.c | 849 ++ iup/srccontrols/color/iup_colorbrowserdlg.c | 1120 ++ iup/srccontrols/color/iup_colorhsi.c | 358 + iup/srccontrols/color/iup_colorhsi.h | 44 + iup/srccontrols/config.mak | 48 + iup/srccontrols/iup_cdutil.c | 153 + iup/srccontrols/iup_cdutil.h | 35 + iup/srccontrols/iup_cells.c | 974 ++ iup/srccontrols/iup_colorbar.c | 1082 ++ iup/srccontrols/iup_controls.c | 56 + iup/srccontrols/iup_controls.h | 33 + iup/srccontrols/iup_dial.c | 864 ++ iup/srccontrols/iup_gauge.c | 435 + iup/srccontrols/iup_oldmask.c | 208 + iup/srccontrols/iup_oldtabs.c | 2616 +++++ iup/srccontrols/iup_oldval.c | 809 ++ iup/srccontrols/iupcontrols.def | 35 + iup/srccontrols/iupcontrols.dep | 173 + iup/srccontrols/make_uname | 3 + iup/srccontrols/make_uname.bat | 4 + iup/srccontrols/matrix/iupmat_aux.c | 480 + iup/srccontrols/matrix/iupmat_aux.h | 37 + iup/srccontrols/matrix/iupmat_cd.h | 25 + iup/srccontrols/matrix/iupmat_colres.c | 182 + iup/srccontrols/matrix/iupmat_colres.h | 24 + iup/srccontrols/matrix/iupmat_def.h | 122 + iup/srccontrols/matrix/iupmat_draw.c | 866 ++ iup/srccontrols/matrix/iupmat_draw.h | 31 + iup/srccontrols/matrix/iupmat_edit.c | 450 + iup/srccontrols/matrix/iupmat_edit.h | 26 + iup/srccontrols/matrix/iupmat_focus.c | 58 + iup/srccontrols/matrix/iupmat_focus.h | 21 + iup/srccontrols/matrix/iupmat_getset.c | 358 + iup/srccontrols/matrix/iupmat_getset.h | 37 + iup/srccontrols/matrix/iupmat_key.c | 229 + iup/srccontrols/matrix/iupmat_key.h | 23 + iup/srccontrols/matrix/iupmat_mark.c | 720 ++ iup/srccontrols/matrix/iupmat_mark.h | 42 + iup/srccontrols/matrix/iupmat_mem.c | 319 + iup/srccontrols/matrix/iupmat_mem.h | 24 + iup/srccontrols/matrix/iupmat_mouse.c | 212 + iup/srccontrols/matrix/iupmat_mouse.h | 22 + iup/srccontrols/matrix/iupmat_numlc.c | 495 + iup/srccontrols/matrix/iupmat_numlc.h | 27 + iup/srccontrols/matrix/iupmat_scroll.c | 495 + iup/srccontrols/matrix/iupmat_scroll.h | 69 + iup/srccontrols/matrix/iupmatrix.c | 980 ++ iup/srcgl/Makefile | 6 + iup/srcgl/config.mak | 20 + iup/srcgl/iup_glcanvas_win.c | 411 + iup/srcgl/iup_glcanvas_x.c | 448 + iup/srcgl/iupgl.def | 9 + iup/srcgl/iupgl.dep | 5 + iup/srcgl/make_uname | 3 + iup/srcgl/make_uname.bat | 4 + iup/srcim/Makefile | 6 + iup/srcim/config.mak | 15 + iup/srcim/iup_im.c | 306 + iup/srcim/iupim.def | 3 + iup/srcim/iupim.dep | 7 + iup/srcim/make_uname | 3 + iup/srcim/make_uname.bat | 4 + iup/srcimglib/Makefile | 6 + iup/srcimglib/config.mak | 14 + iup/srcimglib/iup_image_library.c | 403 + iup/srcimglib/iup_imglib_bitmaps.h | 1248 +++ iup/srcimglib/iup_imglib_bitmaps8.h | 14421 ++++++++++++++++++++++++++ iup/srcimglib/iup_imglib_bitmapsgtk.h | 224 + iup/srcimglib/iup_imglib_icons.h | 240 + iup/srcimglib/iup_imglib_icons8.h | 1788 ++++ iup/srcimglib/iup_imglib_logos.h | 1319 +++ iup/srcimglib/iup_imglib_logos8.h | 1915 ++++ iup/srcimglib/iupimglib.def | 4 + iup/srcimglib/iupimglib.dep | 5 + iup/srcimglib/make_uname | 3 + iup/srcimglib/make_uname.bat | 4 + iup/srcledc/Makefile | 6 + iup/srcledc/config.mak | 22 + iup/srcledc/ledc | 6 + iup/srcledc/ledc.bat | 3 + iup/srcledc/ledc.c | 920 ++ iup/srcledc/ledc.dep | 3 + iup/srcledc/ledc.h | 84 + iup/srcledc/ledc.l | 65 + iup/srcledc/ledc.y | 189 + iup/srcledc/lex.yy.c | 1604 +++ iup/srcledc/make_uname | 3 + iup/srcledc/make_uname.bat | 22 + iup/srcledc/y.tab.c | 507 + iup/srcledc/y.tab.h | 10 + iup/srclua3/Makefile | 21 + iup/srclua3/cells.lua | 37 + iup/srclua3/colorbar.lua | 21 + iup/srclua3/colorbrowser.lua | 17 + iup/srclua3/config.mak | 19 + iup/srclua3/constants.lua | 148 + iup/srclua3/dial.lua | 15 + iup/srclua3/gauge.lua | 10 + iup/srclua3/il.h | 81 + iup/srclua3/il_cbox.c | 36 + iup/srclua3/il_cells.c | 150 + iup/srclua3/il_colorbar.c | 97 + iup/srclua3/il_colorbrowser.c | 72 + iup/srclua3/il_controls.h | 26 + iup/srclua3/il_dial.c | 53 + iup/srclua3/il_gauge.c | 52 + iup/srclua3/il_getcolor.c | 42 + iup/srclua3/il_getparam.c | 171 + iup/srclua3/il_mask.c | 138 + iup/srclua3/il_matrix.c | 308 + iup/srclua3/il_sbox.c | 50 + iup/srclua3/il_scanf.c | 181 + iup/srclua3/il_spin.c | 66 + iup/srclua3/il_tabs.c | 67 + iup/srclua3/il_tree.c | 283 + iup/srclua3/il_val.c | 77 + iup/srclua3/iup_pplot.mak | 15 + iup/srclua3/iupcd.mak | 19 + iup/srclua3/iupcontrols.mak | 19 + iup/srclua3/iupgl.mak | 12 + iup/srclua3/iupim.mak | 12 + iup/srclua3/iuplua.c | 494 + iup/srclua3/iuplua.lua | 134 + iup/srclua3/iuplua3.def | 16 + iup/srclua3/iuplua_api.c | 762 ++ iup/srclua3/iuplua_cd.c | 43 + iup/srclua3/iuplua_controls.c | 25 + iup/srclua3/iuplua_glcanvas.c | 112 + iup/srclua3/iuplua_im.c | 39 + iup/srclua3/iuplua_olecontrol.c | 34 + iup/srclua3/iuplua_pplot.c | 241 + iup/srclua3/iuplua_pplot3.def | 2 + iup/srclua3/iuplua_widgets.c | 662 ++ iup/srclua3/iuplua_widgets.lua | 942 ++ iup/srclua3/iupluacd3.def | 3 + iup/srclua3/iupluacontrols3.def | 2 + iup/srclua3/iupluagl3.def | 2 + iup/srclua3/iupluaim3.def | 2 + iup/srclua3/iupluaole3.def | 2 + iup/srclua3/iupole.mak | 13 + iup/srclua3/loh/cells.loh | 76 + iup/srclua3/loh/cells_be32.loh | 76 + iup/srclua3/loh/cells_be64.loh | 75 + iup/srclua3/loh/cells_le64.loh | 76 + iup/srclua3/loh/cells_le64w.loh | 76 + iup/srclua3/loh/colorbar.loh | 49 + iup/srclua3/loh/colorbar_be32.loh | 49 + iup/srclua3/loh/colorbar_be64.loh | 48 + iup/srclua3/loh/colorbar_le64.loh | 49 + iup/srclua3/loh/colorbar_le64w.loh | 49 + iup/srclua3/loh/colorbrowser.loh | 39 + iup/srclua3/loh/colorbrowser_be32.loh | 39 + iup/srclua3/loh/colorbrowser_be64.loh | 40 + iup/srclua3/loh/colorbrowser_le64.loh | 39 + iup/srclua3/loh/colorbrowser_le64w.loh | 39 + iup/srclua3/loh/constants.loh | 301 + iup/srclua3/loh/constants_be32.loh | 289 + iup/srclua3/loh/constants_be64.loh | 301 + iup/srclua3/loh/constants_le64.loh | 289 + iup/srclua3/loh/constants_le64w.loh | 301 + iup/srclua3/loh/dial.loh | 31 + iup/srclua3/loh/dial_be32.loh | 31 + iup/srclua3/loh/dial_be64.loh | 30 + iup/srclua3/loh/dial_le64.loh | 31 + iup/srclua3/loh/dial_le64w.loh | 31 + iup/srclua3/loh/gauge.loh | 28 + iup/srclua3/loh/gauge_be32.loh | 28 + iup/srclua3/loh/gauge_be64.loh | 27 + iup/srclua3/loh/gauge_le64.loh | 28 + iup/srclua3/loh/gauge_le64w.loh | 28 + iup/srclua3/loh/iuplua.loh | 170 + iup/srclua3/loh/iuplua_be32.loh | 170 + iup/srclua3/loh/iuplua_be64.loh | 170 + iup/srclua3/loh/iuplua_le64.loh | 170 + iup/srclua3/loh/iuplua_le64w.loh | 170 + iup/srclua3/loh/iuplua_widgets.loh | 939 ++ iup/srclua3/loh/iuplua_widgets_be32.loh | 939 ++ iup/srclua3/loh/iuplua_widgets_be64.loh | 939 ++ iup/srclua3/loh/iuplua_widgets_le64.loh | 939 ++ iup/srclua3/loh/iuplua_widgets_le64w.loh | 920 ++ iup/srclua3/loh/matrix.loh | 120 + iup/srclua3/loh/matrix_be32.loh | 120 + iup/srclua3/loh/matrix_be64.loh | 120 + iup/srclua3/loh/matrix_le64.loh | 120 + iup/srclua3/loh/matrix_le64w.loh | 118 + iup/srclua3/loh/pplot.loh | 68 + iup/srclua3/loh/pplot_be32.loh | 68 + iup/srclua3/loh/pplot_be64.loh | 68 + iup/srclua3/loh/pplot_le64.loh | 68 + iup/srclua3/loh/pplot_le64w.loh | 69 + iup/srclua3/loh/sbox.loh | 27 + iup/srclua3/loh/sbox_be32.loh | 27 + iup/srclua3/loh/sbox_be64.loh | 27 + iup/srclua3/loh/sbox_le64.loh | 27 + iup/srclua3/loh/sbox_le64w.loh | 27 + iup/srclua3/loh/spin.loh | 43 + iup/srclua3/loh/spin_be32.loh | 43 + iup/srclua3/loh/spin_be64.loh | 43 + iup/srclua3/loh/spin_le64.loh | 43 + iup/srclua3/loh/spin_le64w.loh | 44 + iup/srclua3/loh/tabs.loh | 33 + iup/srclua3/loh/tabs_be32.loh | 33 + iup/srclua3/loh/tabs_be64.loh | 33 + iup/srclua3/loh/tabs_le64.loh | 33 + iup/srclua3/loh/tabs_le64w.loh | 34 + iup/srclua3/loh/tree.loh | 115 + iup/srclua3/loh/tree_be32.loh | 115 + iup/srclua3/loh/tree_be64.loh | 115 + iup/srclua3/loh/tree_le64.loh | 115 + iup/srclua3/loh/tree_le64w.loh | 116 + iup/srclua3/loh/val.loh | 45 + iup/srclua3/loh/val_be32.loh | 45 + iup/srclua3/loh/val_be64.loh | 45 + iup/srclua3/loh/val_le64.loh | 45 + iup/srclua3/loh/val_le64w.loh | 45 + iup/srclua3/make_uname | 8 + iup/srclua3/make_uname.bat | 10 + iup/srclua3/matrix.lua | 54 + iup/srclua3/pplot.lua | 23 + iup/srclua3/sbox.lua | 10 + iup/srclua3/spin.lua | 24 + iup/srclua3/tabs.lua | 13 + iup/srclua3/tree.lua | 68 + iup/srclua3/val.lua | 22 + iup/srclua5/Makefile | 24 + iup/srclua5/button.lua | 18 + iup/srclua5/canvas.lua | 29 + iup/srclua5/cbox.lua | 28 + iup/srclua5/cells.lua | 32 + iup/srclua5/clipboard.lua | 17 + iup/srclua5/colorbar.lua | 26 + iup/srclua5/colorbrowser.lua | 21 + iup/srclua5/colordlg.lua | 26 + iup/srclua5/config.mak | 31 + iup/srclua5/constants.lua | 72 + iup/srclua5/ctrl_template.lua | 94 + iup/srclua5/dial.lua | 21 + iup/srclua5/dialog.lua | 36 + iup/srclua5/filedlg.lua | 28 + iup/srclua5/fill.lua | 16 + iup/srclua5/fontdlg.lua | 26 + iup/srclua5/frame.lua | 16 + iup/srclua5/gauge.lua | 17 + iup/srclua5/generator.lua | 222 + iup/srclua5/glcanvas.lua | 46 + iup/srclua5/hbox.lua | 20 + iup/srclua5/il.h | 161 + iup/srclua5/il_button.c | 59 + iup/srclua5/il_canvas.c | 159 + iup/srclua5/il_cbox.c | 53 + iup/srclua5/il_cells.c | 136 + iup/srclua5/il_clipboard.c | 52 + iup/srclua5/il_colorbar.c | 87 + iup/srclua5/il_colorbrowser.c | 73 + iup/srclua5/il_colordlg.c | 52 + iup/srclua5/il_controls.h | 26 + iup/srclua5/il_dial.c | 61 + iup/srclua5/il_dialog.c | 111 + iup/srclua5/il_filedlg.c | 61 + iup/srclua5/il_fill.c | 52 + iup/srclua5/il_fontdlg.c | 52 + iup/srclua5/il_frame.c | 52 + iup/srclua5/il_gauge.c | 53 + iup/srclua5/il_getcolor.c | 46 + iup/srclua5/il_getparam.c | 177 + iup/srclua5/il_glcanvas.c | 90 + iup/srclua5/il_hbox.c | 52 + iup/srclua5/il_image.c | 119 + iup/srclua5/il_imagergb.c | 57 + iup/srclua5/il_imagergba.c | 57 + iup/srclua5/il_item.c | 66 + iup/srclua5/il_label.c | 52 + iup/srclua5/il_list.c | 96 + iup/srclua5/il_mask.c | 132 + iup/srclua5/il_matrix.c | 247 + iup/srclua5/il_matrix_aux.c | 85 + iup/srclua5/il_menu.c | 66 + iup/srclua5/il_messagedlg.c | 52 + iup/srclua5/il_multiline.c | 61 + iup/srclua5/il_normalizer.c | 52 + iup/srclua5/il_olecontrol.c | 77 + iup/srclua5/il_pplot.c | 151 + iup/srclua5/il_progressbar.c | 52 + iup/srclua5/il_radio.c | 52 + iup/srclua5/il_sbox.c | 52 + iup/srclua5/il_scanf.c | 197 + iup/srclua5/il_separator.c | 52 + iup/srclua5/il_spin.c | 60 + iup/srclua5/il_spinbox.c | 60 + iup/srclua5/il_submenu.c | 52 + iup/srclua5/il_tabs.c | 63 + iup/srclua5/il_text.c | 78 + iup/srclua5/il_timer.c | 59 + iup/srclua5/il_toggle.c | 60 + iup/srclua5/il_tree.c | 152 + iup/srclua5/il_tree_aux.c | 184 + iup/srclua5/il_user.c | 52 + iup/srclua5/il_val.c | 76 + iup/srclua5/il_vbox.c | 52 + iup/srclua5/il_zbox.c | 52 + iup/srclua5/image.lua | 96 + iup/srclua5/imagergb.lua | 31 + iup/srclua5/imagergba.lua | 31 + iup/srclua5/item.lua | 19 + iup/srclua5/iup_pplot.mak | 26 + iup/srclua5/iupcd.mak | 21 + iup/srclua5/iupcontrols.mak | 26 + iup/srclua5/iupgl.mak | 27 + iup/srclua5/iupim.mak | 17 + iup/srclua5/iupimglib.mak | 17 + iup/srclua5/iuplua.c | 918 ++ iup/srclua5/iuplua.lua | 285 + iup/srclua5/iuplua5.def | 27 + iup/srclua5/iuplua51.dep | 177 + iup/srclua5/iuplua_api.c | 874 ++ iup/srclua5/iuplua_cd.c | 56 + iup/srclua5/iuplua_controls.c | 55 + iup/srclua5/iuplua_glcanvas.c | 82 + iup/srclua5/iuplua_im.c | 54 + iup/srclua5/iuplua_imglib.c | 44 + iup/srclua5/iuplua_pplot.c | 159 + iup/srclua5/iuplua_pplot5.def | 4 + iup/srclua5/iuplua_pplot51.dep | 11 + iup/srclua5/iupluacd5.def | 4 + iup/srclua5/iupluacd51.dep | 6 + iup/srclua5/iupluacontrols5.def | 6 + iup/srclua5/iupluacontrols51.dep | 46 + iup/srclua5/iupluagl5.def | 5 + iup/srclua5/iupluagl51.dep | 10 + iup/srclua5/iupluaim5.def | 5 + iup/srclua5/iupluaim51.dep | 5 + iup/srclua5/iupluaimglib5.def | 4 + iup/srclua5/iupluaimglib51.dep | 4 + iup/srclua5/iupluaole5.def | 5 + iup/srclua5/iupole.mak | 23 + iup/srclua5/label.lua | 16 + iup/srclua5/list.lua | 22 + iup/srclua5/loh/button.loh | 38 + iup/srclua5/loh/button_be32.loh | 38 + iup/srclua5/loh/button_be64.loh | 42 + iup/srclua5/loh/button_le64.loh | 42 + iup/srclua5/loh/button_le64w.loh | 42 + iup/srclua5/loh/canvas.loh | 54 + iup/srclua5/loh/canvas_be32.loh | 54 + iup/srclua5/loh/canvas_be64.loh | 61 + iup/srclua5/loh/canvas_le64.loh | 61 + iup/srclua5/loh/canvas_le64w.loh | 61 + iup/srclua5/loh/cbox.loh | 50 + iup/srclua5/loh/cbox_be32.loh | 52 + iup/srclua5/loh/cbox_be64.loh | 54 + iup/srclua5/loh/cbox_le64.loh | 56 + iup/srclua5/loh/cbox_le64w.loh | 54 + iup/srclua5/loh/cells.loh | 57 + iup/srclua5/loh/cells_be32.loh | 57 + iup/srclua5/loh/cells_be64.loh | 64 + iup/srclua5/loh/cells_le64.loh | 64 + iup/srclua5/loh/cells_le64w.loh | 64 + iup/srclua5/loh/clipboard.loh | 36 + iup/srclua5/loh/clipboard_be32.loh | 36 + iup/srclua5/loh/clipboard_be64.loh | 40 + iup/srclua5/loh/clipboard_le64.loh | 40 + iup/srclua5/loh/colorbar.loh | 53 + iup/srclua5/loh/colorbar_be32.loh | 49 + iup/srclua5/loh/colorbar_be64.loh | 59 + iup/srclua5/loh/colorbar_le64.loh | 55 + iup/srclua5/loh/colorbar_le64w.loh | 59 + iup/srclua5/loh/colorbrowser.loh | 45 + iup/srclua5/loh/colorbrowser_be32.loh | 44 + iup/srclua5/loh/colorbrowser_be64.loh | 49 + iup/srclua5/loh/colorbrowser_le64.loh | 49 + iup/srclua5/loh/colorbrowser_le64w.loh | 49 + iup/srclua5/loh/colordlg.loh | 54 + iup/srclua5/loh/colordlg_be32.loh | 54 + iup/srclua5/loh/colordlg_be64.loh | 60 + iup/srclua5/loh/colordlg_le64.loh | 60 + iup/srclua5/loh/colordlg_le64w.loh | 60 + iup/srclua5/loh/constants.loh | 102 + iup/srclua5/loh/constants_be32.loh | 88 + iup/srclua5/loh/constants_be64.loh | 113 + iup/srclua5/loh/constants_le64.loh | 97 + iup/srclua5/loh/constants_le64w.loh | 113 + iup/srclua5/loh/dial.loh | 40 + iup/srclua5/loh/dial_be32.loh | 40 + iup/srclua5/loh/dial_be64.loh | 44 + iup/srclua5/loh/dial_le64.loh | 44 + iup/srclua5/loh/dial_le64w.loh | 44 + iup/srclua5/loh/dialog.loh | 72 + iup/srclua5/loh/dialog_be32.loh | 72 + iup/srclua5/loh/dialog_be64.loh | 81 + iup/srclua5/loh/dialog_le64.loh | 81 + iup/srclua5/loh/dialog_le64w.loh | 79 + iup/srclua5/loh/filedlg.loh | 55 + iup/srclua5/loh/filedlg_be32.loh | 55 + iup/srclua5/loh/filedlg_be64.loh | 61 + iup/srclua5/loh/filedlg_le64.loh | 61 + iup/srclua5/loh/filedlg_le64w.loh | 61 + iup/srclua5/loh/fill.loh | 36 + iup/srclua5/loh/fill_be32.loh | 36 + iup/srclua5/loh/fill_be64.loh | 39 + iup/srclua5/loh/fill_le64.loh | 39 + iup/srclua5/loh/fill_le64w.loh | 39 + iup/srclua5/loh/fontdlg.loh | 54 + iup/srclua5/loh/fontdlg_be32.loh | 54 + iup/srclua5/loh/fontdlg_be64.loh | 59 + iup/srclua5/loh/fontdlg_le64.loh | 59 + iup/srclua5/loh/fontdlg_le64w.loh | 59 + iup/srclua5/loh/frame.loh | 37 + iup/srclua5/loh/frame_be32.loh | 37 + iup/srclua5/loh/frame_be64.loh | 40 + iup/srclua5/loh/frame_le64.loh | 40 + iup/srclua5/loh/frame_le64w.loh | 40 + iup/srclua5/loh/gauge.loh | 39 + iup/srclua5/loh/gauge_be32.loh | 39 + iup/srclua5/loh/gauge_be64.loh | 43 + iup/srclua5/loh/gauge_le64.loh | 43 + iup/srclua5/loh/gauge_le64w.loh | 43 + iup/srclua5/loh/glcanvas.loh | 65 + iup/srclua5/loh/glcanvas_be32.loh | 65 + iup/srclua5/loh/glcanvas_be64.loh | 70 + iup/srclua5/loh/glcanvas_le64.loh | 70 + iup/srclua5/loh/glcanvas_le64w.loh | 70 + iup/srclua5/loh/hbox.loh | 43 + iup/srclua5/loh/hbox_be32.loh | 43 + iup/srclua5/loh/hbox_be64.loh | 48 + iup/srclua5/loh/hbox_le64.loh | 48 + iup/srclua5/loh/hbox_le64w.loh | 48 + iup/srclua5/loh/image.loh | 127 + iup/srclua5/loh/image_be32.loh | 127 + iup/srclua5/loh/image_be64.loh | 132 + iup/srclua5/loh/image_le64.loh | 132 + iup/srclua5/loh/image_le64w.loh | 90 + iup/srclua5/loh/imagergb.loh | 58 + iup/srclua5/loh/imagergb_be32.loh | 58 + iup/srclua5/loh/imagergb_be64.loh | 62 + iup/srclua5/loh/imagergb_le64.loh | 62 + iup/srclua5/loh/imagergb_le64w.loh | 62 + iup/srclua5/loh/imagergba.loh | 58 + iup/srclua5/loh/imagergba_be32.loh | 58 + iup/srclua5/loh/imagergba_be64.loh | 63 + iup/srclua5/loh/imagergba_le64.loh | 63 + iup/srclua5/loh/imagergba_le64w.loh | 63 + iup/srclua5/loh/item.loh | 39 + iup/srclua5/loh/item_be32.loh | 39 + iup/srclua5/loh/item_be64.loh | 44 + iup/srclua5/loh/item_le64.loh | 44 + iup/srclua5/loh/item_le64w.loh | 44 + iup/srclua5/loh/iuplua.loh | 487 + iup/srclua5/loh/iuplua_be32.loh | 489 + iup/srclua5/loh/iuplua_be64.loh | 545 + iup/srclua5/loh/iuplua_le64.loh | 545 + iup/srclua5/loh/iuplua_le64w.loh | 531 + iup/srclua5/loh/label.loh | 37 + iup/srclua5/loh/label_be32.loh | 37 + iup/srclua5/loh/label_be64.loh | 40 + iup/srclua5/loh/label_le64.loh | 40 + iup/srclua5/loh/label_le64w.loh | 40 + iup/srclua5/loh/list.loh | 43 + iup/srclua5/loh/list_be32.loh | 40 + iup/srclua5/loh/list_be64.loh | 48 + iup/srclua5/loh/list_le64.loh | 45 + iup/srclua5/loh/list_le64w.loh | 48 + iup/srclua5/loh/matrix.loh | 94 + iup/srclua5/loh/matrix_be32.loh | 94 + iup/srclua5/loh/matrix_be64.loh | 107 + iup/srclua5/loh/matrix_le64.loh | 107 + iup/srclua5/loh/matrix_le64w.loh | 103 + iup/srclua5/loh/menu.loh | 122 + iup/srclua5/loh/menu_be32.loh | 122 + iup/srclua5/loh/menu_be64.loh | 134 + iup/srclua5/loh/menu_le64.loh | 134 + iup/srclua5/loh/menu_le64w.loh | 136 + iup/srclua5/loh/messagedlg.loh | 54 + iup/srclua5/loh/messagedlg_be32.loh | 54 + iup/srclua5/loh/messagedlg_be64.loh | 60 + iup/srclua5/loh/messagedlg_le64.loh | 60 + iup/srclua5/loh/messagedlg_le64w.loh | 60 + iup/srclua5/loh/multiline.loh | 40 + iup/srclua5/loh/multiline_be32.loh | 40 + iup/srclua5/loh/multiline_be64.loh | 44 + iup/srclua5/loh/multiline_le64.loh | 44 + iup/srclua5/loh/multiline_le64w.loh | 44 + iup/srclua5/loh/normalizer.loh | 63 + iup/srclua5/loh/normalizer_be32.loh | 63 + iup/srclua5/loh/normalizer_be64.loh | 70 + iup/srclua5/loh/normalizer_le64.loh | 70 + iup/srclua5/loh/normalizer_le64w.loh | 72 + iup/srclua5/loh/olecontrol.loh | 79 + iup/srclua5/loh/olecontrol_be64.loh | 85 + iup/srclua5/loh/olecontrol_le64w.loh | 80 + iup/srclua5/loh/pplot.loh | 58 + iup/srclua5/loh/pplot_be32.loh | 58 + iup/srclua5/loh/pplot_be64.loh | 65 + iup/srclua5/loh/pplot_le64.loh | 65 + iup/srclua5/loh/pplot_le64w.loh | 65 + iup/srclua5/loh/progressbar.loh | 39 + iup/srclua5/loh/progressbar_be32.loh | 39 + iup/srclua5/loh/progressbar_be64.loh | 43 + iup/srclua5/loh/progressbar_le64.loh | 43 + iup/srclua5/loh/progressbar_le64w.loh | 43 + iup/srclua5/loh/radio.loh | 64 + iup/srclua5/loh/radio_be32.loh | 64 + iup/srclua5/loh/radio_be64.loh | 70 + iup/srclua5/loh/radio_le64.loh | 70 + iup/srclua5/loh/radio_le64w.loh | 70 + iup/srclua5/loh/sbox.loh | 37 + iup/srclua5/loh/sbox_be32.loh | 37 + iup/srclua5/loh/sbox_be64.loh | 40 + iup/srclua5/loh/sbox_le64.loh | 40 + iup/srclua5/loh/sbox_le64w.loh | 40 + iup/srclua5/loh/separator.loh | 36 + iup/srclua5/loh/separator_be32.loh | 36 + iup/srclua5/loh/separator_be64.loh | 40 + iup/srclua5/loh/separator_le64.loh | 40 + iup/srclua5/loh/separator_le64w.loh | 40 + iup/srclua5/loh/spin.loh | 38 + iup/srclua5/loh/spin_be32.loh | 38 + iup/srclua5/loh/spin_be64.loh | 42 + iup/srclua5/loh/spin_le64.loh | 44 + iup/srclua5/loh/spin_le64w.loh | 44 + iup/srclua5/loh/spinbox.loh | 38 + iup/srclua5/loh/spinbox_be32.loh | 40 + iup/srclua5/loh/spinbox_be64.loh | 44 + iup/srclua5/loh/spinbox_le64.loh | 44 + iup/srclua5/loh/spinbox_le64w.loh | 44 + iup/srclua5/loh/submenu.loh | 38 + iup/srclua5/loh/submenu_be32.loh | 38 + iup/srclua5/loh/submenu_be64.loh | 42 + iup/srclua5/loh/submenu_le64.loh | 42 + iup/srclua5/loh/submenu_le64w.loh | 42 + iup/srclua5/loh/tabs.loh | 51 + iup/srclua5/loh/tabs_be32.loh | 51 + iup/srclua5/loh/tabs_be64.loh | 56 + iup/srclua5/loh/tabs_le64.loh | 56 + iup/srclua5/loh/tabs_le64w.loh | 56 + iup/srclua5/loh/text.loh | 40 + iup/srclua5/loh/text_be32.loh | 40 + iup/srclua5/loh/text_be64.loh | 45 + iup/srclua5/loh/text_le64.loh | 45 + iup/srclua5/loh/text_le64w.loh | 43 + iup/srclua5/loh/timer.loh | 37 + iup/srclua5/loh/timer_be32.loh | 37 + iup/srclua5/loh/timer_be64.loh | 41 + iup/srclua5/loh/timer_le64.loh | 41 + iup/srclua5/loh/timer_le64w.loh | 41 + iup/srclua5/loh/toggle.loh | 38 + iup/srclua5/loh/toggle_be32.loh | 38 + iup/srclua5/loh/toggle_be64.loh | 42 + iup/srclua5/loh/toggle_le64.loh | 42 + iup/srclua5/loh/toggle_le64w.loh | 42 + iup/srclua5/loh/tree.loh | 177 + iup/srclua5/loh/tree_be32.loh | 177 + iup/srclua5/loh/tree_be64.loh | 195 + iup/srclua5/loh/tree_le64.loh | 195 + iup/srclua5/loh/tree_le64w.loh | 112 + iup/srclua5/loh/user.loh | 36 + iup/srclua5/loh/user_be32.loh | 36 + iup/srclua5/loh/user_be64.loh | 39 + iup/srclua5/loh/user_le64.loh | 39 + iup/srclua5/loh/user_le64w.loh | 39 + iup/srclua5/loh/val.loh | 41 + iup/srclua5/loh/val_be32.loh | 43 + iup/srclua5/loh/val_be64.loh | 45 + iup/srclua5/loh/val_le64.loh | 47 + iup/srclua5/loh/val_le64w.loh | 45 + iup/srclua5/loh/vbox.loh | 43 + iup/srclua5/loh/vbox_be32.loh | 43 + iup/srclua5/loh/vbox_be64.loh | 48 + iup/srclua5/loh/vbox_le64.loh | 48 + iup/srclua5/loh/vbox_le64w.loh | 48 + iup/srclua5/loh/zbox.loh | 61 + iup/srclua5/loh/zbox_be32.loh | 61 + iup/srclua5/loh/zbox_be64.loh | 67 + iup/srclua5/loh/zbox_le64.loh | 67 + iup/srclua5/loh/zbox_le64w.loh | 67 + iup/srclua5/make_uname | 9 + iup/srclua5/make_uname.bat | 11 + iup/srclua5/matrix.lua | 46 + iup/srclua5/menu.lua | 55 + iup/srclua5/messagedlg.lua | 26 + iup/srclua5/multiline.lua | 19 + iup/srclua5/normalizer.lua | 28 + iup/srclua5/olecontrol.lua | 54 + iup/srclua5/pplot.lua | 31 + iup/srclua5/progressbar.lua | 17 + iup/srclua5/radio.lua | 33 + iup/srclua5/sbox.lua | 16 + iup/srclua5/separator.lua | 16 + iup/srclua5/spin.lua | 18 + iup/srclua5/spinbox.lua | 18 + iup/srclua5/submenu.lua | 19 + iup/srclua5/tabs.lua | 31 + iup/srclua5/text.lua | 20 + iup/srclua5/timer.lua | 18 + iup/srclua5/toggle.lua | 18 + iup/srclua5/tree.lua | 76 + iup/srclua5/user.lua | 17 + iup/srclua5/val.lua | 20 + iup/srclua5/vbox.lua | 20 + iup/srclua5/zbox.lua | 32 + iup/srcole/config.mak | 17 + iup/srcole/iup_olecontrol.cpp | 200 + iup/srcole/iupole.def | 3 + iup/srcole/make_uname.bat | 4 + iup/srcole/tAmbientProperties.cpp | 157 + iup/srcole/tAmbientProperties.h | 47 + iup/srcole/tDispatch.cpp | 236 + iup/srcole/tDispatch.h | 40 + iup/srcole/tLegacy.cpp | 240 + iup/srcole/tLegacy.h | 550 + iup/srcole/tOleClientSite.cpp | 148 + iup/srcole/tOleClientSite.h | 40 + iup/srcole/tOleControlSite.cpp | 301 + iup/srcole/tOleControlSite.h | 39 + iup/srcole/tOleHandler.cpp | 1123 ++ iup/srcole/tOleHandler.h | 139 + iup/srcole/tOleInPlaceFrame.cpp | 429 + iup/srcole/tOleInPlaceFrame.h | 67 + iup/srcole/tOleInPlaceSite.cpp | 485 + iup/srcole/tOleInPlaceSite.h | 47 + iup/srcpplot/Makefile | 6 + iup/srcpplot/config.mak | 25 + iup/srcpplot/iupPPlot.cpp | 2470 +++++ iup/srcpplot/iupPPlot.h | 645 ++ iup/srcpplot/iupPPlotInteraction.cpp | 832 ++ iup/srcpplot/iupPPlotInteraction.h | 328 + iup/srcpplot/iup_pplot.cpp | 2959 ++++++ iup/srcpplot/iup_pplot.def | 11 + iup/srcpplot/iup_pplot.dep | 12 + iup/srcpplot/iuppplot.hpp | 137 + iup/srcpplot/make_uname | 3 + iup/srcpplot/make_uname.bat | 4 + iup/srcview/Makefile | 9 + iup/srcview/config.mak | 59 + iup/srcview/iup_view.c | 851 ++ iup/srcview/iupview | 6 + iup/srcview/iupview.bat | 3 + iup/srcview/iupview.dep | 3 + iup/srcview/make_uname | 4 + iup/srcview/make_uname.bat | 26 + iup/tecmake_compact.mak | 1172 +++ iup/test/bigtest.c | 194 + iup/test/button.c | 411 + iup/test/canvas.c | 346 + iup/test/canvas_cddbuffer.c | 124 + iup/test/canvas_cdsimple.c | 91 + iup/test/canvas_scrollbar.c | 191 + iup/test/cells_checkboard.c | 83 + iup/test/cells_degrade.c | 150 + iup/test/cells_numbering.c | 102 + iup/test/class_conf.c | 278 + iup/test/clipboard.c | 53 + iup/test/colorbar.c | 162 + iup/test/colorbrowser.c | 91 + iup/test/config.mak | 115 + iup/test/dial.c | 111 + iup/test/dial.led | 49 + iup/test/dialog.c | 473 + iup/test/file_large.xbm | 14 + iup/test/frame.c | 68 + iup/test/gauge.c | 305 + iup/test/getcolor.c | 28 + iup/test/getparam.c | 98 + iup/test/glcanvas.c | 77 + iup/test/glcanvas_cube.c | 234 + iup/test/hbox.c | 114 + iup/test/idle.c | 55 + iup/test/iuptest.rc | 31 + iup/test/label.c | 217 + iup/test/list.c | 366 + iup/test/make_uname | 4 + iup/test/matrix.c | 115 + iup/test/matrix_cbmode.c | 85 + iup/test/matrix_cbs.c | 341 + iup/test/mdi.c | 150 + iup/test/menu.c | 396 + iup/test/ole.cpp | 108 + iup/test/pplot.c | 699 ++ iup/test/predialogs.c | 472 + iup/test/progressbar.c | 330 + iup/test/sample.c | 407 + iup/test/sbox.c | 46 + iup/test/scanf.c | 39 + iup/test/spin.c | 43 + iup/test/sysinfo.c | 60 + iup/test/tabs.c | 403 + iup/test/tecgraf.bmp | Bin 0 -> 6966 bytes iup/test/text.c | 433 + iup/test/text_spin.c | 74 + iup/test/timer.c | 70 + iup/test/toggle.c | 306 + iup/test/tray.c | 120 + iup/test/tree.c | 518 + iup/test/val.c | 199 + iup/test/vbox.c | 122 + iup/test/zbox.c | 98 + 1073 files changed, 202868 insertions(+) create mode 100755 iup/COPYRIGHT create mode 100755 iup/Makefile create mode 100755 iup/README create mode 100755 iup/dox/iup.dox create mode 100755 iup/etc/iup.manifest create mode 100755 iup/etc/iup.rc create mode 100755 iup/etc/iup64.manifest create mode 100755 iup/etc/pen.cur create mode 100755 iup/etc/tecgraf.ico create mode 100755 iup/fix_permission create mode 100755 iup/include/iup.h create mode 100755 iup/include/iup_pplot.h create mode 100755 iup/include/iupcb.h create mode 100755 iup/include/iupcbox.h create mode 100755 iup/include/iupcbs.h create mode 100755 iup/include/iupcells.h create mode 100755 iup/include/iupcolorbar.h create mode 100755 iup/include/iupcontrols.h create mode 100755 iup/include/iupdef.h create mode 100755 iup/include/iupdial.h create mode 100755 iup/include/iupgauge.h create mode 100755 iup/include/iupgc.h create mode 100755 iup/include/iupgetparam.h create mode 100755 iup/include/iupgl.h create mode 100755 iup/include/iupim.h create mode 100755 iup/include/iupkey.h create mode 100755 iup/include/iuplua.h create mode 100755 iup/include/iuplua_pplot.h create mode 100755 iup/include/iupluacontrols.h create mode 100755 iup/include/iupluagl.h create mode 100755 iup/include/iupluaim.h create mode 100755 iup/include/iupluaole.h create mode 100755 iup/include/iupmask.h create mode 100755 iup/include/iupmatrix.h create mode 100755 iup/include/iupole.h create mode 100755 iup/include/iupsbox.h create mode 100755 iup/include/iupspin.h create mode 100755 iup/include/iuptabs.h create mode 100755 iup/include/iuptree.h create mode 100755 iup/include/iupval.h create mode 100755 iup/mak.vc8/iup.sln create mode 100755 iup/mak.vc8/iup_pplot.vcproj create mode 100755 iup/mak.vc8/iupcd.vcproj create mode 100755 iup/mak.vc8/iupcontrols.vcproj create mode 100755 iup/mak.vc8/iupcore.vcproj create mode 100755 iup/mak.vc8/iupgl.vcproj create mode 100755 iup/mak.vc8/iupgtk.vcproj create mode 100755 iup/mak.vc8/iupim.vcproj create mode 100755 iup/mak.vc8/iupimglib.vcproj create mode 100755 iup/mak.vc8/iuplua3.vcproj create mode 100755 iup/mak.vc8/iuplua5.vcproj create mode 100755 iup/mak.vc8/iuplua_pplot3.vcproj create mode 100755 iup/mak.vc8/iuplua_pplot5.vcproj create mode 100755 iup/mak.vc8/iupluacd3.vcproj create mode 100755 iup/mak.vc8/iupluacd5.vcproj create mode 100755 iup/mak.vc8/iupluacontrols3.vcproj create mode 100755 iup/mak.vc8/iupluacontrols5.vcproj create mode 100755 iup/mak.vc8/iupluaexe3.vcproj create mode 100755 iup/mak.vc8/iupluaexe5.vcproj create mode 100755 iup/mak.vc8/iupluaexe5gtk.vcproj create mode 100755 iup/mak.vc8/iupluagl3.vcproj create mode 100755 iup/mak.vc8/iupluagl5.vcproj create mode 100755 iup/mak.vc8/iupluaim3.vcproj create mode 100755 iup/mak.vc8/iupluaim5.vcproj create mode 100755 iup/mak.vc8/iupluaimglib5.vcproj create mode 100755 iup/mak.vc8/iupluaole3.vcproj create mode 100755 iup/mak.vc8/iupluaole5.vcproj create mode 100755 iup/mak.vc8/iupmot.vcproj create mode 100755 iup/mak.vc8/iupole.vcproj create mode 100755 iup/mak.vc8/iupsample.vcproj create mode 100755 iup/mak.vc8/iupsamplegtk.vcproj create mode 100755 iup/mak.vc8/iuptest.vcproj create mode 100755 iup/mak.vc8/iuptestgtk.vcproj create mode 100755 iup/mak.vc8/iupview.vcproj create mode 100755 iup/mak.vc8/iupviewgtk.vcproj create mode 100755 iup/mak.vc8/iupwin.vcproj create mode 100755 iup/mak.vc8/ledc.vcproj create mode 100755 iup/mak.vc9/iup.sln create mode 100755 iup/mak.vc9/iup_pplot.vcproj create mode 100755 iup/mak.vc9/iupcd.vcproj create mode 100755 iup/mak.vc9/iupcontrols.vcproj create mode 100755 iup/mak.vc9/iupcore.vcproj create mode 100755 iup/mak.vc9/iupgl.vcproj create mode 100755 iup/mak.vc9/iupgtk.vcproj create mode 100755 iup/mak.vc9/iupim.vcproj create mode 100755 iup/mak.vc9/iupimglib.vcproj create mode 100755 iup/mak.vc9/iuplua3.vcproj create mode 100755 iup/mak.vc9/iuplua5.vcproj create mode 100755 iup/mak.vc9/iuplua_pplot3.vcproj create mode 100755 iup/mak.vc9/iuplua_pplot5.vcproj create mode 100755 iup/mak.vc9/iupluacd3.vcproj create mode 100755 iup/mak.vc9/iupluacd5.vcproj create mode 100755 iup/mak.vc9/iupluacontrols3.vcproj create mode 100755 iup/mak.vc9/iupluacontrols5.vcproj create mode 100755 iup/mak.vc9/iupluaexe3.vcproj create mode 100755 iup/mak.vc9/iupluaexe5.vcproj create mode 100755 iup/mak.vc9/iupluaexe5gtk.vcproj create mode 100755 iup/mak.vc9/iupluagl3.vcproj create mode 100755 iup/mak.vc9/iupluagl5.vcproj create mode 100755 iup/mak.vc9/iupluaim3.vcproj create mode 100755 iup/mak.vc9/iupluaim5.vcproj create mode 100755 iup/mak.vc9/iupluaimglib5.vcproj create mode 100755 iup/mak.vc9/iupluaole3.vcproj create mode 100755 iup/mak.vc9/iupluaole5.vcproj create mode 100755 iup/mak.vc9/iupmot.vcproj create mode 100755 iup/mak.vc9/iupole.vcproj create mode 100755 iup/mak.vc9/iupsample.vcproj create mode 100755 iup/mak.vc9/iupsamplegtk.vcproj create mode 100755 iup/mak.vc9/iuptest.vcproj create mode 100755 iup/mak.vc9/iuptestgtk.vcproj create mode 100755 iup/mak.vc9/iupview.vcproj create mode 100755 iup/mak.vc9/iupviewgtk.vcproj create mode 100755 iup/mak.vc9/iupwin.vcproj create mode 100755 iup/mak.vc9/ledc.vcproj create mode 100755 iup/make_uname create mode 100755 iup/make_uname.bat create mode 100755 iup/make_uname_lib.bat create mode 100755 iup/src/Makefile create mode 100755 iup/src/config.mak create mode 100755 iup/src/gtk/iupgtk_button.c create mode 100755 iup/src/gtk/iupgtk_canvas.c create mode 100755 iup/src/gtk/iupgtk_clipboard.c create mode 100755 iup/src/gtk/iupgtk_colordlg.c create mode 100755 iup/src/gtk/iupgtk_common.c create mode 100755 iup/src/gtk/iupgtk_dialog.c create mode 100755 iup/src/gtk/iupgtk_drv.h create mode 100755 iup/src/gtk/iupgtk_filedlg.c create mode 100755 iup/src/gtk/iupgtk_focus.c create mode 100755 iup/src/gtk/iupgtk_font.c create mode 100755 iup/src/gtk/iupgtk_fontdlg.c create mode 100755 iup/src/gtk/iupgtk_frame.c create mode 100755 iup/src/gtk/iupgtk_globalattrib.c create mode 100755 iup/src/gtk/iupgtk_help.c create mode 100755 iup/src/gtk/iupgtk_image.c create mode 100755 iup/src/gtk/iupgtk_key.c create mode 100755 iup/src/gtk/iupgtk_label.c create mode 100755 iup/src/gtk/iupgtk_list.c create mode 100755 iup/src/gtk/iupgtk_loop.c create mode 100755 iup/src/gtk/iupgtk_menu.c create mode 100755 iup/src/gtk/iupgtk_messagedlg.c create mode 100755 iup/src/gtk/iupgtk_open.c create mode 100755 iup/src/gtk/iupgtk_progressbar.c create mode 100755 iup/src/gtk/iupgtk_tabs.c create mode 100755 iup/src/gtk/iupgtk_text.c create mode 100755 iup/src/gtk/iupgtk_timer.c create mode 100755 iup/src/gtk/iupgtk_tips.c create mode 100755 iup/src/gtk/iupgtk_toggle.c create mode 100755 iup/src/gtk/iupgtk_tree.c create mode 100755 iup/src/gtk/iupgtk_val.c create mode 100755 iup/src/iup.c create mode 100755 iup/src/iup.def create mode 100644 iup/src/iup.dep create mode 100755 iup/src/iup_array.c create mode 100755 iup/src/iup_array.h create mode 100755 iup/src/iup_assert.c create mode 100755 iup/src/iup_assert.h create mode 100755 iup/src/iup_attrib.c create mode 100755 iup/src/iup_attrib.h create mode 100755 iup/src/iup_box.c create mode 100755 iup/src/iup_box.h create mode 100755 iup/src/iup_button.c create mode 100755 iup/src/iup_button.h create mode 100755 iup/src/iup_callback.c create mode 100755 iup/src/iup_canvas.c create mode 100755 iup/src/iup_canvas.h create mode 100755 iup/src/iup_cbox.c create mode 100755 iup/src/iup_childtree.c create mode 100755 iup/src/iup_childtree.h create mode 100755 iup/src/iup_class.c create mode 100755 iup/src/iup_class.h create mode 100755 iup/src/iup_classattrib.c create mode 100755 iup/src/iup_classbase.c create mode 100755 iup/src/iup_classbase.h create mode 100755 iup/src/iup_colordlg.c create mode 100755 iup/src/iup_dialog.c create mode 100755 iup/src/iup_dialog.h create mode 100755 iup/src/iup_dlglist.c create mode 100755 iup/src/iup_dlglist.h create mode 100755 iup/src/iup_dll.rc create mode 100755 iup/src/iup_drv.h create mode 100755 iup/src/iup_drvfont.h create mode 100755 iup/src/iup_drvinfo.h create mode 100755 iup/src/iup_filedlg.c create mode 100755 iup/src/iup_fill.c create mode 100755 iup/src/iup_focus.c create mode 100755 iup/src/iup_focus.h create mode 100755 iup/src/iup_font.c create mode 100755 iup/src/iup_fontdlg.c create mode 100755 iup/src/iup_frame.c create mode 100755 iup/src/iup_frame.h create mode 100755 iup/src/iup_func.c create mode 100755 iup/src/iup_func.h create mode 100755 iup/src/iup_getparam.c create mode 100755 iup/src/iup_globalattrib.c create mode 100755 iup/src/iup_globalattrib.h create mode 100755 iup/src/iup_hbox.c create mode 100755 iup/src/iup_image.c create mode 100755 iup/src/iup_image.h create mode 100755 iup/src/iup_key.c create mode 100755 iup/src/iup_key.h create mode 100755 iup/src/iup_label.c create mode 100755 iup/src/iup_label.h create mode 100755 iup/src/iup_layout.c create mode 100755 iup/src/iup_layout.h create mode 100755 iup/src/iup_ledlex.c create mode 100755 iup/src/iup_ledlex.h create mode 100755 iup/src/iup_ledparse.c create mode 100755 iup/src/iup_list.c create mode 100755 iup/src/iup_list.h create mode 100755 iup/src/iup_mask.c create mode 100755 iup/src/iup_mask.h create mode 100755 iup/src/iup_maskmatch.c create mode 100755 iup/src/iup_maskmatch.h create mode 100755 iup/src/iup_maskparse.c create mode 100755 iup/src/iup_maskparse.h create mode 100755 iup/src/iup_menu.c create mode 100755 iup/src/iup_menu.h create mode 100755 iup/src/iup_messagedlg.c create mode 100755 iup/src/iup_names.c create mode 100755 iup/src/iup_names.h create mode 100755 iup/src/iup_normalizer.c create mode 100755 iup/src/iup_object.c create mode 100755 iup/src/iup_object.h create mode 100755 iup/src/iup_open.c create mode 100755 iup/src/iup_predial.c create mode 100755 iup/src/iup_predial.h create mode 100755 iup/src/iup_progressbar.c create mode 100755 iup/src/iup_progressbar.h create mode 100755 iup/src/iup_radio.c create mode 100755 iup/src/iup_register.c create mode 100755 iup/src/iup_register.h create mode 100755 iup/src/iup_sbox.c create mode 100755 iup/src/iup_scanf.c create mode 100755 iup/src/iup_show.c create mode 100755 iup/src/iup_spin.c create mode 100755 iup/src/iup_stdcontrols.h create mode 100755 iup/src/iup_str.c create mode 100755 iup/src/iup_str.h create mode 100755 iup/src/iup_strmessage.c create mode 100755 iup/src/iup_strmessage.h create mode 100755 iup/src/iup_table.c create mode 100755 iup/src/iup_table.h create mode 100755 iup/src/iup_tabs.c create mode 100755 iup/src/iup_tabs.h create mode 100755 iup/src/iup_text.c create mode 100755 iup/src/iup_text.h create mode 100755 iup/src/iup_timer.c create mode 100755 iup/src/iup_timer.h create mode 100755 iup/src/iup_toggle.c create mode 100755 iup/src/iup_toggle.h create mode 100755 iup/src/iup_tree.c create mode 100755 iup/src/iup_tree.h create mode 100755 iup/src/iup_user.c create mode 100755 iup/src/iup_val.c create mode 100755 iup/src/iup_val.h create mode 100755 iup/src/iup_vbox.c create mode 100755 iup/src/iup_zbox.c create mode 100644 iup/src/iupgtk.dep create mode 100755 iup/src/iupstub.mak create mode 100755 iup/src/make_uname create mode 100755 iup/src/make_uname.bat create mode 100755 iup/src/mot/iupmot_button.c create mode 100755 iup/src/mot/iupmot_canvas.c create mode 100755 iup/src/mot/iupmot_clipboard.c create mode 100755 iup/src/mot/iupmot_color.c create mode 100755 iup/src/mot/iupmot_color.h create mode 100755 iup/src/mot/iupmot_colordlg.c create mode 100755 iup/src/mot/iupmot_common.c create mode 100755 iup/src/mot/iupmot_dialog.c create mode 100755 iup/src/mot/iupmot_drv.h create mode 100755 iup/src/mot/iupmot_filedlg.c create mode 100755 iup/src/mot/iupmot_focus.c create mode 100755 iup/src/mot/iupmot_font.c create mode 100755 iup/src/mot/iupmot_fontdlg.c create mode 100755 iup/src/mot/iupmot_frame.c create mode 100755 iup/src/mot/iupmot_globalattrib.c create mode 100755 iup/src/mot/iupmot_image.c create mode 100755 iup/src/mot/iupmot_key.c create mode 100755 iup/src/mot/iupmot_label.c create mode 100755 iup/src/mot/iupmot_list.c create mode 100755 iup/src/mot/iupmot_loop.c create mode 100755 iup/src/mot/iupmot_menu.c create mode 100755 iup/src/mot/iupmot_messagedlg.c create mode 100755 iup/src/mot/iupmot_open.c create mode 100755 iup/src/mot/iupmot_progressbar.c create mode 100755 iup/src/mot/iupmot_tabs.c create mode 100755 iup/src/mot/iupmot_text.c create mode 100755 iup/src/mot/iupmot_timer.c create mode 100755 iup/src/mot/iupmot_tips.c create mode 100755 iup/src/mot/iupmot_toggle.c create mode 100755 iup/src/mot/iupmot_tree.c create mode 100755 iup/src/mot/iupmot_val.c create mode 100755 iup/src/mot/iupunix_help.c create mode 100755 iup/src/mot/iupunix_info.c create mode 100755 iup/src/win/iupwin_brush.c create mode 100755 iup/src/win/iupwin_brush.h create mode 100755 iup/src/win/iupwin_button.c create mode 100755 iup/src/win/iupwin_canvas.c create mode 100755 iup/src/win/iupwin_clipboard.c create mode 100755 iup/src/win/iupwin_colordlg.c create mode 100755 iup/src/win/iupwin_common.c create mode 100755 iup/src/win/iupwin_dialog.c create mode 100755 iup/src/win/iupwin_draw.c create mode 100755 iup/src/win/iupwin_draw.h create mode 100755 iup/src/win/iupwin_drv.h create mode 100755 iup/src/win/iupwin_filedlg.c create mode 100755 iup/src/win/iupwin_focus.c create mode 100755 iup/src/win/iupwin_font.c create mode 100755 iup/src/win/iupwin_fontdlg.c create mode 100755 iup/src/win/iupwin_frame.c create mode 100755 iup/src/win/iupwin_globalattrib.c create mode 100755 iup/src/win/iupwin_handle.c create mode 100755 iup/src/win/iupwin_handle.h create mode 100755 iup/src/win/iupwin_image.c create mode 100755 iup/src/win/iupwin_info.c create mode 100755 iup/src/win/iupwin_info.h create mode 100755 iup/src/win/iupwin_key.c create mode 100755 iup/src/win/iupwin_label.c create mode 100755 iup/src/win/iupwin_list.c create mode 100755 iup/src/win/iupwin_loop.c create mode 100755 iup/src/win/iupwin_menu.c create mode 100755 iup/src/win/iupwin_messagedlg.c create mode 100755 iup/src/win/iupwin_open.c create mode 100755 iup/src/win/iupwin_progressbar.c create mode 100755 iup/src/win/iupwin_tabs.c create mode 100755 iup/src/win/iupwin_text.c create mode 100755 iup/src/win/iupwin_timer.c create mode 100755 iup/src/win/iupwin_tips.c create mode 100755 iup/src/win/iupwin_toggle.c create mode 100755 iup/src/win/iupwin_tree.c create mode 100755 iup/src/win/iupwin_val.c create mode 100755 iup/src/win/iupwindows_help.c create mode 100755 iup/src/win/iupwindows_info.c create mode 100755 iup/src/win/iupwindows_main.c create mode 100755 iup/srccd/Makefile create mode 100755 iup/srccd/config.mak create mode 100755 iup/srccd/iup_cd.c create mode 100755 iup/srccd/iupcd.def create mode 100644 iup/srccd/iupcd.dep create mode 100755 iup/srccd/make_uname create mode 100755 iup/srccd/make_uname.bat create mode 100755 iup/srcconsole/Makefile create mode 100755 iup/srcconsole/config.mak create mode 100755 iup/srcconsole/console3.lua create mode 100755 iup/srcconsole/console5.lua create mode 100755 iup/srcconsole/copy_all_so create mode 100755 iup/srcconsole/copy_dll.bat create mode 100755 iup/srcconsole/copy_dll_64.bat create mode 100755 iup/srcconsole/copy_so create mode 100755 iup/srcconsole/iup_lua3.c create mode 100755 iup/srcconsole/iup_lua51.c create mode 100644 iup/srcconsole/iuplua3.bat create mode 100755 iup/srcconsole/iuplua3.mak create mode 100755 iup/srcconsole/iuplua3.rc create mode 100755 iup/srcconsole/iuplua5.rc create mode 100755 iup/srcconsole/iuplua51 create mode 100644 iup/srcconsole/iuplua51.bat create mode 100644 iup/srcconsole/iuplua51.dep create mode 100755 iup/srcconsole/iuplua51mot create mode 100644 iup/srcconsole/iuplua51mot.dep create mode 100755 iup/srcconsole/loh/console3.loh create mode 100755 iup/srcconsole/loh/console3_be32.loh create mode 100755 iup/srcconsole/loh/console3_be64.loh create mode 100755 iup/srcconsole/loh/console3_le64.loh create mode 100755 iup/srcconsole/loh/console3_le64w.loh create mode 100755 iup/srcconsole/loh/console5.loh create mode 100755 iup/srcconsole/loh/console5_be32.loh create mode 100755 iup/srcconsole/loh/console5_be64.loh create mode 100755 iup/srcconsole/loh/console5_le64.loh create mode 100755 iup/srcconsole/loh/console5_le64w.loh create mode 100755 iup/srcconsole/lua.ico create mode 100755 iup/srcconsole/make_uname create mode 100755 iup/srcconsole/make_uname.bat create mode 100755 iup/srcconsole/wlua_dll8_x64.manifest create mode 100755 iup/srcconsole/wlua_dll8_x86.manifest create mode 100755 iup/srcconsole/wlua_dll9_x64.manifest create mode 100755 iup/srcconsole/wlua_dll9_x86.manifest create mode 100755 iup/srccontrols/Makefile create mode 100755 iup/srccontrols/color/iup_colorbrowser.c create mode 100755 iup/srccontrols/color/iup_colorbrowserdlg.c create mode 100755 iup/srccontrols/color/iup_colorhsi.c create mode 100755 iup/srccontrols/color/iup_colorhsi.h create mode 100755 iup/srccontrols/config.mak create mode 100755 iup/srccontrols/iup_cdutil.c create mode 100755 iup/srccontrols/iup_cdutil.h create mode 100755 iup/srccontrols/iup_cells.c create mode 100755 iup/srccontrols/iup_colorbar.c create mode 100755 iup/srccontrols/iup_controls.c create mode 100755 iup/srccontrols/iup_controls.h create mode 100755 iup/srccontrols/iup_dial.c create mode 100755 iup/srccontrols/iup_gauge.c create mode 100755 iup/srccontrols/iup_oldmask.c create mode 100755 iup/srccontrols/iup_oldtabs.c create mode 100755 iup/srccontrols/iup_oldval.c create mode 100755 iup/srccontrols/iupcontrols.def create mode 100644 iup/srccontrols/iupcontrols.dep create mode 100755 iup/srccontrols/make_uname create mode 100755 iup/srccontrols/make_uname.bat create mode 100755 iup/srccontrols/matrix/iupmat_aux.c create mode 100755 iup/srccontrols/matrix/iupmat_aux.h create mode 100755 iup/srccontrols/matrix/iupmat_cd.h create mode 100755 iup/srccontrols/matrix/iupmat_colres.c create mode 100755 iup/srccontrols/matrix/iupmat_colres.h create mode 100755 iup/srccontrols/matrix/iupmat_def.h create mode 100755 iup/srccontrols/matrix/iupmat_draw.c create mode 100755 iup/srccontrols/matrix/iupmat_draw.h create mode 100755 iup/srccontrols/matrix/iupmat_edit.c create mode 100755 iup/srccontrols/matrix/iupmat_edit.h create mode 100755 iup/srccontrols/matrix/iupmat_focus.c create mode 100755 iup/srccontrols/matrix/iupmat_focus.h create mode 100755 iup/srccontrols/matrix/iupmat_getset.c create mode 100755 iup/srccontrols/matrix/iupmat_getset.h create mode 100755 iup/srccontrols/matrix/iupmat_key.c create mode 100755 iup/srccontrols/matrix/iupmat_key.h create mode 100755 iup/srccontrols/matrix/iupmat_mark.c create mode 100755 iup/srccontrols/matrix/iupmat_mark.h create mode 100755 iup/srccontrols/matrix/iupmat_mem.c create mode 100755 iup/srccontrols/matrix/iupmat_mem.h create mode 100755 iup/srccontrols/matrix/iupmat_mouse.c create mode 100755 iup/srccontrols/matrix/iupmat_mouse.h create mode 100755 iup/srccontrols/matrix/iupmat_numlc.c create mode 100755 iup/srccontrols/matrix/iupmat_numlc.h create mode 100755 iup/srccontrols/matrix/iupmat_scroll.c create mode 100755 iup/srccontrols/matrix/iupmat_scroll.h create mode 100755 iup/srccontrols/matrix/iupmatrix.c create mode 100755 iup/srcgl/Makefile create mode 100755 iup/srcgl/config.mak create mode 100755 iup/srcgl/iup_glcanvas_win.c create mode 100755 iup/srcgl/iup_glcanvas_x.c create mode 100755 iup/srcgl/iupgl.def create mode 100644 iup/srcgl/iupgl.dep create mode 100755 iup/srcgl/make_uname create mode 100755 iup/srcgl/make_uname.bat create mode 100755 iup/srcim/Makefile create mode 100755 iup/srcim/config.mak create mode 100755 iup/srcim/iup_im.c create mode 100755 iup/srcim/iupim.def create mode 100644 iup/srcim/iupim.dep create mode 100755 iup/srcim/make_uname create mode 100755 iup/srcim/make_uname.bat create mode 100755 iup/srcimglib/Makefile create mode 100755 iup/srcimglib/config.mak create mode 100755 iup/srcimglib/iup_image_library.c create mode 100755 iup/srcimglib/iup_imglib_bitmaps.h create mode 100755 iup/srcimglib/iup_imglib_bitmaps8.h create mode 100755 iup/srcimglib/iup_imglib_bitmapsgtk.h create mode 100755 iup/srcimglib/iup_imglib_icons.h create mode 100755 iup/srcimglib/iup_imglib_icons8.h create mode 100755 iup/srcimglib/iup_imglib_logos.h create mode 100755 iup/srcimglib/iup_imglib_logos8.h create mode 100755 iup/srcimglib/iupimglib.def create mode 100644 iup/srcimglib/iupimglib.dep create mode 100755 iup/srcimglib/make_uname create mode 100755 iup/srcimglib/make_uname.bat create mode 100755 iup/srcledc/Makefile create mode 100755 iup/srcledc/config.mak create mode 100755 iup/srcledc/ledc create mode 100644 iup/srcledc/ledc.bat create mode 100755 iup/srcledc/ledc.c create mode 100644 iup/srcledc/ledc.dep create mode 100755 iup/srcledc/ledc.h create mode 100755 iup/srcledc/ledc.l create mode 100755 iup/srcledc/ledc.y create mode 100755 iup/srcledc/lex.yy.c create mode 100755 iup/srcledc/make_uname create mode 100755 iup/srcledc/make_uname.bat create mode 100755 iup/srcledc/y.tab.c create mode 100755 iup/srcledc/y.tab.h create mode 100755 iup/srclua3/Makefile create mode 100755 iup/srclua3/cells.lua create mode 100755 iup/srclua3/colorbar.lua create mode 100755 iup/srclua3/colorbrowser.lua create mode 100755 iup/srclua3/config.mak create mode 100755 iup/srclua3/constants.lua create mode 100755 iup/srclua3/dial.lua create mode 100755 iup/srclua3/gauge.lua create mode 100755 iup/srclua3/il.h create mode 100755 iup/srclua3/il_cbox.c create mode 100755 iup/srclua3/il_cells.c create mode 100755 iup/srclua3/il_colorbar.c create mode 100755 iup/srclua3/il_colorbrowser.c create mode 100755 iup/srclua3/il_controls.h create mode 100755 iup/srclua3/il_dial.c create mode 100755 iup/srclua3/il_gauge.c create mode 100755 iup/srclua3/il_getcolor.c create mode 100755 iup/srclua3/il_getparam.c create mode 100755 iup/srclua3/il_mask.c create mode 100755 iup/srclua3/il_matrix.c create mode 100755 iup/srclua3/il_sbox.c create mode 100755 iup/srclua3/il_scanf.c create mode 100755 iup/srclua3/il_spin.c create mode 100755 iup/srclua3/il_tabs.c create mode 100755 iup/srclua3/il_tree.c create mode 100755 iup/srclua3/il_val.c create mode 100755 iup/srclua3/iup_pplot.mak create mode 100755 iup/srclua3/iupcd.mak create mode 100755 iup/srclua3/iupcontrols.mak create mode 100755 iup/srclua3/iupgl.mak create mode 100755 iup/srclua3/iupim.mak create mode 100755 iup/srclua3/iuplua.c create mode 100755 iup/srclua3/iuplua.lua create mode 100755 iup/srclua3/iuplua3.def create mode 100755 iup/srclua3/iuplua_api.c create mode 100755 iup/srclua3/iuplua_cd.c create mode 100755 iup/srclua3/iuplua_controls.c create mode 100755 iup/srclua3/iuplua_glcanvas.c create mode 100755 iup/srclua3/iuplua_im.c create mode 100755 iup/srclua3/iuplua_olecontrol.c create mode 100755 iup/srclua3/iuplua_pplot.c create mode 100755 iup/srclua3/iuplua_pplot3.def create mode 100755 iup/srclua3/iuplua_widgets.c create mode 100755 iup/srclua3/iuplua_widgets.lua create mode 100755 iup/srclua3/iupluacd3.def create mode 100755 iup/srclua3/iupluacontrols3.def create mode 100755 iup/srclua3/iupluagl3.def create mode 100755 iup/srclua3/iupluaim3.def create mode 100755 iup/srclua3/iupluaole3.def create mode 100755 iup/srclua3/iupole.mak create mode 100755 iup/srclua3/loh/cells.loh create mode 100755 iup/srclua3/loh/cells_be32.loh create mode 100755 iup/srclua3/loh/cells_be64.loh create mode 100755 iup/srclua3/loh/cells_le64.loh create mode 100755 iup/srclua3/loh/cells_le64w.loh create mode 100755 iup/srclua3/loh/colorbar.loh create mode 100755 iup/srclua3/loh/colorbar_be32.loh create mode 100755 iup/srclua3/loh/colorbar_be64.loh create mode 100755 iup/srclua3/loh/colorbar_le64.loh create mode 100755 iup/srclua3/loh/colorbar_le64w.loh create mode 100755 iup/srclua3/loh/colorbrowser.loh create mode 100755 iup/srclua3/loh/colorbrowser_be32.loh create mode 100755 iup/srclua3/loh/colorbrowser_be64.loh create mode 100755 iup/srclua3/loh/colorbrowser_le64.loh create mode 100755 iup/srclua3/loh/colorbrowser_le64w.loh create mode 100755 iup/srclua3/loh/constants.loh create mode 100755 iup/srclua3/loh/constants_be32.loh create mode 100755 iup/srclua3/loh/constants_be64.loh create mode 100755 iup/srclua3/loh/constants_le64.loh create mode 100755 iup/srclua3/loh/constants_le64w.loh create mode 100755 iup/srclua3/loh/dial.loh create mode 100755 iup/srclua3/loh/dial_be32.loh create mode 100755 iup/srclua3/loh/dial_be64.loh create mode 100755 iup/srclua3/loh/dial_le64.loh create mode 100755 iup/srclua3/loh/dial_le64w.loh create mode 100755 iup/srclua3/loh/gauge.loh create mode 100755 iup/srclua3/loh/gauge_be32.loh create mode 100755 iup/srclua3/loh/gauge_be64.loh create mode 100755 iup/srclua3/loh/gauge_le64.loh create mode 100755 iup/srclua3/loh/gauge_le64w.loh create mode 100755 iup/srclua3/loh/iuplua.loh create mode 100755 iup/srclua3/loh/iuplua_be32.loh create mode 100755 iup/srclua3/loh/iuplua_be64.loh create mode 100755 iup/srclua3/loh/iuplua_le64.loh create mode 100755 iup/srclua3/loh/iuplua_le64w.loh create mode 100755 iup/srclua3/loh/iuplua_widgets.loh create mode 100755 iup/srclua3/loh/iuplua_widgets_be32.loh create mode 100755 iup/srclua3/loh/iuplua_widgets_be64.loh create mode 100755 iup/srclua3/loh/iuplua_widgets_le64.loh create mode 100755 iup/srclua3/loh/iuplua_widgets_le64w.loh create mode 100755 iup/srclua3/loh/matrix.loh create mode 100755 iup/srclua3/loh/matrix_be32.loh create mode 100755 iup/srclua3/loh/matrix_be64.loh create mode 100755 iup/srclua3/loh/matrix_le64.loh create mode 100755 iup/srclua3/loh/matrix_le64w.loh create mode 100755 iup/srclua3/loh/pplot.loh create mode 100755 iup/srclua3/loh/pplot_be32.loh create mode 100755 iup/srclua3/loh/pplot_be64.loh create mode 100755 iup/srclua3/loh/pplot_le64.loh create mode 100755 iup/srclua3/loh/pplot_le64w.loh create mode 100755 iup/srclua3/loh/sbox.loh create mode 100755 iup/srclua3/loh/sbox_be32.loh create mode 100755 iup/srclua3/loh/sbox_be64.loh create mode 100755 iup/srclua3/loh/sbox_le64.loh create mode 100755 iup/srclua3/loh/sbox_le64w.loh create mode 100755 iup/srclua3/loh/spin.loh create mode 100755 iup/srclua3/loh/spin_be32.loh create mode 100755 iup/srclua3/loh/spin_be64.loh create mode 100755 iup/srclua3/loh/spin_le64.loh create mode 100755 iup/srclua3/loh/spin_le64w.loh create mode 100755 iup/srclua3/loh/tabs.loh create mode 100755 iup/srclua3/loh/tabs_be32.loh create mode 100755 iup/srclua3/loh/tabs_be64.loh create mode 100755 iup/srclua3/loh/tabs_le64.loh create mode 100755 iup/srclua3/loh/tabs_le64w.loh create mode 100755 iup/srclua3/loh/tree.loh create mode 100755 iup/srclua3/loh/tree_be32.loh create mode 100755 iup/srclua3/loh/tree_be64.loh create mode 100755 iup/srclua3/loh/tree_le64.loh create mode 100755 iup/srclua3/loh/tree_le64w.loh create mode 100755 iup/srclua3/loh/val.loh create mode 100755 iup/srclua3/loh/val_be32.loh create mode 100755 iup/srclua3/loh/val_be64.loh create mode 100755 iup/srclua3/loh/val_le64.loh create mode 100755 iup/srclua3/loh/val_le64w.loh create mode 100755 iup/srclua3/make_uname create mode 100755 iup/srclua3/make_uname.bat create mode 100755 iup/srclua3/matrix.lua create mode 100755 iup/srclua3/pplot.lua create mode 100755 iup/srclua3/sbox.lua create mode 100755 iup/srclua3/spin.lua create mode 100755 iup/srclua3/tabs.lua create mode 100755 iup/srclua3/tree.lua create mode 100755 iup/srclua3/val.lua create mode 100755 iup/srclua5/Makefile create mode 100755 iup/srclua5/button.lua create mode 100755 iup/srclua5/canvas.lua create mode 100755 iup/srclua5/cbox.lua create mode 100755 iup/srclua5/cells.lua create mode 100755 iup/srclua5/clipboard.lua create mode 100755 iup/srclua5/colorbar.lua create mode 100755 iup/srclua5/colorbrowser.lua create mode 100755 iup/srclua5/colordlg.lua create mode 100755 iup/srclua5/config.mak create mode 100755 iup/srclua5/constants.lua create mode 100755 iup/srclua5/ctrl_template.lua create mode 100755 iup/srclua5/dial.lua create mode 100755 iup/srclua5/dialog.lua create mode 100755 iup/srclua5/filedlg.lua create mode 100755 iup/srclua5/fill.lua create mode 100755 iup/srclua5/fontdlg.lua create mode 100755 iup/srclua5/frame.lua create mode 100755 iup/srclua5/gauge.lua create mode 100755 iup/srclua5/generator.lua create mode 100755 iup/srclua5/glcanvas.lua create mode 100755 iup/srclua5/hbox.lua create mode 100755 iup/srclua5/il.h create mode 100755 iup/srclua5/il_button.c create mode 100755 iup/srclua5/il_canvas.c create mode 100755 iup/srclua5/il_cbox.c create mode 100755 iup/srclua5/il_cells.c create mode 100644 iup/srclua5/il_clipboard.c create mode 100755 iup/srclua5/il_colorbar.c create mode 100755 iup/srclua5/il_colorbrowser.c create mode 100755 iup/srclua5/il_colordlg.c create mode 100755 iup/srclua5/il_controls.h create mode 100755 iup/srclua5/il_dial.c create mode 100755 iup/srclua5/il_dialog.c create mode 100755 iup/srclua5/il_filedlg.c create mode 100755 iup/srclua5/il_fill.c create mode 100755 iup/srclua5/il_fontdlg.c create mode 100755 iup/srclua5/il_frame.c create mode 100755 iup/srclua5/il_gauge.c create mode 100755 iup/srclua5/il_getcolor.c create mode 100755 iup/srclua5/il_getparam.c create mode 100755 iup/srclua5/il_glcanvas.c create mode 100755 iup/srclua5/il_hbox.c create mode 100755 iup/srclua5/il_image.c create mode 100755 iup/srclua5/il_imagergb.c create mode 100755 iup/srclua5/il_imagergba.c create mode 100755 iup/srclua5/il_item.c create mode 100755 iup/srclua5/il_label.c create mode 100755 iup/srclua5/il_list.c create mode 100755 iup/srclua5/il_mask.c create mode 100755 iup/srclua5/il_matrix.c create mode 100755 iup/srclua5/il_matrix_aux.c create mode 100755 iup/srclua5/il_menu.c create mode 100755 iup/srclua5/il_messagedlg.c create mode 100755 iup/srclua5/il_multiline.c create mode 100755 iup/srclua5/il_normalizer.c create mode 100755 iup/srclua5/il_olecontrol.c create mode 100755 iup/srclua5/il_pplot.c create mode 100755 iup/srclua5/il_progressbar.c create mode 100755 iup/srclua5/il_radio.c create mode 100755 iup/srclua5/il_sbox.c create mode 100755 iup/srclua5/il_scanf.c create mode 100755 iup/srclua5/il_separator.c create mode 100755 iup/srclua5/il_spin.c create mode 100755 iup/srclua5/il_spinbox.c create mode 100755 iup/srclua5/il_submenu.c create mode 100755 iup/srclua5/il_tabs.c create mode 100755 iup/srclua5/il_text.c create mode 100755 iup/srclua5/il_timer.c create mode 100755 iup/srclua5/il_toggle.c create mode 100755 iup/srclua5/il_tree.c create mode 100755 iup/srclua5/il_tree_aux.c create mode 100755 iup/srclua5/il_user.c create mode 100755 iup/srclua5/il_val.c create mode 100755 iup/srclua5/il_vbox.c create mode 100755 iup/srclua5/il_zbox.c create mode 100755 iup/srclua5/image.lua create mode 100755 iup/srclua5/imagergb.lua create mode 100755 iup/srclua5/imagergba.lua create mode 100755 iup/srclua5/item.lua create mode 100755 iup/srclua5/iup_pplot.mak create mode 100755 iup/srclua5/iupcd.mak create mode 100755 iup/srclua5/iupcontrols.mak create mode 100755 iup/srclua5/iupgl.mak create mode 100755 iup/srclua5/iupim.mak create mode 100755 iup/srclua5/iupimglib.mak create mode 100755 iup/srclua5/iuplua.c create mode 100755 iup/srclua5/iuplua.lua create mode 100755 iup/srclua5/iuplua5.def create mode 100644 iup/srclua5/iuplua51.dep create mode 100755 iup/srclua5/iuplua_api.c create mode 100755 iup/srclua5/iuplua_cd.c create mode 100755 iup/srclua5/iuplua_controls.c create mode 100755 iup/srclua5/iuplua_glcanvas.c create mode 100755 iup/srclua5/iuplua_im.c create mode 100755 iup/srclua5/iuplua_imglib.c create mode 100755 iup/srclua5/iuplua_pplot.c create mode 100755 iup/srclua5/iuplua_pplot5.def create mode 100644 iup/srclua5/iuplua_pplot51.dep create mode 100755 iup/srclua5/iupluacd5.def create mode 100644 iup/srclua5/iupluacd51.dep create mode 100755 iup/srclua5/iupluacontrols5.def create mode 100644 iup/srclua5/iupluacontrols51.dep create mode 100755 iup/srclua5/iupluagl5.def create mode 100644 iup/srclua5/iupluagl51.dep create mode 100755 iup/srclua5/iupluaim5.def create mode 100644 iup/srclua5/iupluaim51.dep create mode 100755 iup/srclua5/iupluaimglib5.def create mode 100644 iup/srclua5/iupluaimglib51.dep create mode 100755 iup/srclua5/iupluaole5.def create mode 100755 iup/srclua5/iupole.mak create mode 100755 iup/srclua5/label.lua create mode 100755 iup/srclua5/list.lua create mode 100755 iup/srclua5/loh/button.loh create mode 100755 iup/srclua5/loh/button_be32.loh create mode 100755 iup/srclua5/loh/button_be64.loh create mode 100755 iup/srclua5/loh/button_le64.loh create mode 100755 iup/srclua5/loh/button_le64w.loh create mode 100755 iup/srclua5/loh/canvas.loh create mode 100755 iup/srclua5/loh/canvas_be32.loh create mode 100755 iup/srclua5/loh/canvas_be64.loh create mode 100755 iup/srclua5/loh/canvas_le64.loh create mode 100755 iup/srclua5/loh/canvas_le64w.loh create mode 100755 iup/srclua5/loh/cbox.loh create mode 100755 iup/srclua5/loh/cbox_be32.loh create mode 100755 iup/srclua5/loh/cbox_be64.loh create mode 100755 iup/srclua5/loh/cbox_le64.loh create mode 100755 iup/srclua5/loh/cbox_le64w.loh create mode 100755 iup/srclua5/loh/cells.loh create mode 100755 iup/srclua5/loh/cells_be32.loh create mode 100755 iup/srclua5/loh/cells_be64.loh create mode 100755 iup/srclua5/loh/cells_le64.loh create mode 100755 iup/srclua5/loh/cells_le64w.loh create mode 100644 iup/srclua5/loh/clipboard.loh create mode 100755 iup/srclua5/loh/clipboard_be32.loh create mode 100644 iup/srclua5/loh/clipboard_be64.loh create mode 100755 iup/srclua5/loh/clipboard_le64.loh create mode 100755 iup/srclua5/loh/colorbar.loh create mode 100755 iup/srclua5/loh/colorbar_be32.loh create mode 100755 iup/srclua5/loh/colorbar_be64.loh create mode 100755 iup/srclua5/loh/colorbar_le64.loh create mode 100755 iup/srclua5/loh/colorbar_le64w.loh create mode 100755 iup/srclua5/loh/colorbrowser.loh create mode 100755 iup/srclua5/loh/colorbrowser_be32.loh create mode 100755 iup/srclua5/loh/colorbrowser_be64.loh create mode 100755 iup/srclua5/loh/colorbrowser_le64.loh create mode 100755 iup/srclua5/loh/colorbrowser_le64w.loh create mode 100755 iup/srclua5/loh/colordlg.loh create mode 100755 iup/srclua5/loh/colordlg_be32.loh create mode 100755 iup/srclua5/loh/colordlg_be64.loh create mode 100755 iup/srclua5/loh/colordlg_le64.loh create mode 100755 iup/srclua5/loh/colordlg_le64w.loh create mode 100755 iup/srclua5/loh/constants.loh create mode 100755 iup/srclua5/loh/constants_be32.loh create mode 100755 iup/srclua5/loh/constants_be64.loh create mode 100755 iup/srclua5/loh/constants_le64.loh create mode 100755 iup/srclua5/loh/constants_le64w.loh create mode 100755 iup/srclua5/loh/dial.loh create mode 100755 iup/srclua5/loh/dial_be32.loh create mode 100755 iup/srclua5/loh/dial_be64.loh create mode 100755 iup/srclua5/loh/dial_le64.loh create mode 100755 iup/srclua5/loh/dial_le64w.loh create mode 100755 iup/srclua5/loh/dialog.loh create mode 100755 iup/srclua5/loh/dialog_be32.loh create mode 100755 iup/srclua5/loh/dialog_be64.loh create mode 100755 iup/srclua5/loh/dialog_le64.loh create mode 100755 iup/srclua5/loh/dialog_le64w.loh create mode 100755 iup/srclua5/loh/filedlg.loh create mode 100755 iup/srclua5/loh/filedlg_be32.loh create mode 100755 iup/srclua5/loh/filedlg_be64.loh create mode 100755 iup/srclua5/loh/filedlg_le64.loh create mode 100755 iup/srclua5/loh/filedlg_le64w.loh create mode 100755 iup/srclua5/loh/fill.loh create mode 100755 iup/srclua5/loh/fill_be32.loh create mode 100755 iup/srclua5/loh/fill_be64.loh create mode 100755 iup/srclua5/loh/fill_le64.loh create mode 100755 iup/srclua5/loh/fill_le64w.loh create mode 100755 iup/srclua5/loh/fontdlg.loh create mode 100755 iup/srclua5/loh/fontdlg_be32.loh create mode 100755 iup/srclua5/loh/fontdlg_be64.loh create mode 100755 iup/srclua5/loh/fontdlg_le64.loh create mode 100755 iup/srclua5/loh/fontdlg_le64w.loh create mode 100755 iup/srclua5/loh/frame.loh create mode 100755 iup/srclua5/loh/frame_be32.loh create mode 100755 iup/srclua5/loh/frame_be64.loh create mode 100755 iup/srclua5/loh/frame_le64.loh create mode 100755 iup/srclua5/loh/frame_le64w.loh create mode 100755 iup/srclua5/loh/gauge.loh create mode 100755 iup/srclua5/loh/gauge_be32.loh create mode 100755 iup/srclua5/loh/gauge_be64.loh create mode 100755 iup/srclua5/loh/gauge_le64.loh create mode 100755 iup/srclua5/loh/gauge_le64w.loh create mode 100755 iup/srclua5/loh/glcanvas.loh create mode 100755 iup/srclua5/loh/glcanvas_be32.loh create mode 100755 iup/srclua5/loh/glcanvas_be64.loh create mode 100755 iup/srclua5/loh/glcanvas_le64.loh create mode 100755 iup/srclua5/loh/glcanvas_le64w.loh create mode 100755 iup/srclua5/loh/hbox.loh create mode 100755 iup/srclua5/loh/hbox_be32.loh create mode 100755 iup/srclua5/loh/hbox_be64.loh create mode 100755 iup/srclua5/loh/hbox_le64.loh create mode 100755 iup/srclua5/loh/hbox_le64w.loh create mode 100755 iup/srclua5/loh/image.loh create mode 100755 iup/srclua5/loh/image_be32.loh create mode 100755 iup/srclua5/loh/image_be64.loh create mode 100755 iup/srclua5/loh/image_le64.loh create mode 100755 iup/srclua5/loh/image_le64w.loh create mode 100755 iup/srclua5/loh/imagergb.loh create mode 100755 iup/srclua5/loh/imagergb_be32.loh create mode 100755 iup/srclua5/loh/imagergb_be64.loh create mode 100755 iup/srclua5/loh/imagergb_le64.loh create mode 100755 iup/srclua5/loh/imagergb_le64w.loh create mode 100755 iup/srclua5/loh/imagergba.loh create mode 100755 iup/srclua5/loh/imagergba_be32.loh create mode 100755 iup/srclua5/loh/imagergba_be64.loh create mode 100755 iup/srclua5/loh/imagergba_le64.loh create mode 100755 iup/srclua5/loh/imagergba_le64w.loh create mode 100755 iup/srclua5/loh/item.loh create mode 100755 iup/srclua5/loh/item_be32.loh create mode 100755 iup/srclua5/loh/item_be64.loh create mode 100755 iup/srclua5/loh/item_le64.loh create mode 100755 iup/srclua5/loh/item_le64w.loh create mode 100755 iup/srclua5/loh/iuplua.loh create mode 100755 iup/srclua5/loh/iuplua_be32.loh create mode 100755 iup/srclua5/loh/iuplua_be64.loh create mode 100755 iup/srclua5/loh/iuplua_le64.loh create mode 100755 iup/srclua5/loh/iuplua_le64w.loh create mode 100755 iup/srclua5/loh/label.loh create mode 100755 iup/srclua5/loh/label_be32.loh create mode 100755 iup/srclua5/loh/label_be64.loh create mode 100755 iup/srclua5/loh/label_le64.loh create mode 100755 iup/srclua5/loh/label_le64w.loh create mode 100755 iup/srclua5/loh/list.loh create mode 100755 iup/srclua5/loh/list_be32.loh create mode 100755 iup/srclua5/loh/list_be64.loh create mode 100755 iup/srclua5/loh/list_le64.loh create mode 100755 iup/srclua5/loh/list_le64w.loh create mode 100755 iup/srclua5/loh/matrix.loh create mode 100755 iup/srclua5/loh/matrix_be32.loh create mode 100755 iup/srclua5/loh/matrix_be64.loh create mode 100755 iup/srclua5/loh/matrix_le64.loh create mode 100755 iup/srclua5/loh/matrix_le64w.loh create mode 100755 iup/srclua5/loh/menu.loh create mode 100755 iup/srclua5/loh/menu_be32.loh create mode 100755 iup/srclua5/loh/menu_be64.loh create mode 100755 iup/srclua5/loh/menu_le64.loh create mode 100755 iup/srclua5/loh/menu_le64w.loh create mode 100755 iup/srclua5/loh/messagedlg.loh create mode 100755 iup/srclua5/loh/messagedlg_be32.loh create mode 100755 iup/srclua5/loh/messagedlg_be64.loh create mode 100755 iup/srclua5/loh/messagedlg_le64.loh create mode 100755 iup/srclua5/loh/messagedlg_le64w.loh create mode 100755 iup/srclua5/loh/multiline.loh create mode 100755 iup/srclua5/loh/multiline_be32.loh create mode 100755 iup/srclua5/loh/multiline_be64.loh create mode 100755 iup/srclua5/loh/multiline_le64.loh create mode 100755 iup/srclua5/loh/multiline_le64w.loh create mode 100755 iup/srclua5/loh/normalizer.loh create mode 100755 iup/srclua5/loh/normalizer_be32.loh create mode 100755 iup/srclua5/loh/normalizer_be64.loh create mode 100755 iup/srclua5/loh/normalizer_le64.loh create mode 100755 iup/srclua5/loh/normalizer_le64w.loh create mode 100755 iup/srclua5/loh/olecontrol.loh create mode 100755 iup/srclua5/loh/olecontrol_be64.loh create mode 100755 iup/srclua5/loh/olecontrol_le64w.loh create mode 100755 iup/srclua5/loh/pplot.loh create mode 100755 iup/srclua5/loh/pplot_be32.loh create mode 100755 iup/srclua5/loh/pplot_be64.loh create mode 100755 iup/srclua5/loh/pplot_le64.loh create mode 100755 iup/srclua5/loh/pplot_le64w.loh create mode 100755 iup/srclua5/loh/progressbar.loh create mode 100755 iup/srclua5/loh/progressbar_be32.loh create mode 100755 iup/srclua5/loh/progressbar_be64.loh create mode 100755 iup/srclua5/loh/progressbar_le64.loh create mode 100755 iup/srclua5/loh/progressbar_le64w.loh create mode 100755 iup/srclua5/loh/radio.loh create mode 100755 iup/srclua5/loh/radio_be32.loh create mode 100755 iup/srclua5/loh/radio_be64.loh create mode 100755 iup/srclua5/loh/radio_le64.loh create mode 100755 iup/srclua5/loh/radio_le64w.loh create mode 100755 iup/srclua5/loh/sbox.loh create mode 100755 iup/srclua5/loh/sbox_be32.loh create mode 100755 iup/srclua5/loh/sbox_be64.loh create mode 100755 iup/srclua5/loh/sbox_le64.loh create mode 100755 iup/srclua5/loh/sbox_le64w.loh create mode 100755 iup/srclua5/loh/separator.loh create mode 100755 iup/srclua5/loh/separator_be32.loh create mode 100755 iup/srclua5/loh/separator_be64.loh create mode 100755 iup/srclua5/loh/separator_le64.loh create mode 100755 iup/srclua5/loh/separator_le64w.loh create mode 100755 iup/srclua5/loh/spin.loh create mode 100755 iup/srclua5/loh/spin_be32.loh create mode 100755 iup/srclua5/loh/spin_be64.loh create mode 100755 iup/srclua5/loh/spin_le64.loh create mode 100755 iup/srclua5/loh/spin_le64w.loh create mode 100755 iup/srclua5/loh/spinbox.loh create mode 100755 iup/srclua5/loh/spinbox_be32.loh create mode 100755 iup/srclua5/loh/spinbox_be64.loh create mode 100755 iup/srclua5/loh/spinbox_le64.loh create mode 100755 iup/srclua5/loh/spinbox_le64w.loh create mode 100755 iup/srclua5/loh/submenu.loh create mode 100755 iup/srclua5/loh/submenu_be32.loh create mode 100755 iup/srclua5/loh/submenu_be64.loh create mode 100755 iup/srclua5/loh/submenu_le64.loh create mode 100755 iup/srclua5/loh/submenu_le64w.loh create mode 100755 iup/srclua5/loh/tabs.loh create mode 100755 iup/srclua5/loh/tabs_be32.loh create mode 100755 iup/srclua5/loh/tabs_be64.loh create mode 100755 iup/srclua5/loh/tabs_le64.loh create mode 100755 iup/srclua5/loh/tabs_le64w.loh create mode 100755 iup/srclua5/loh/text.loh create mode 100755 iup/srclua5/loh/text_be32.loh create mode 100755 iup/srclua5/loh/text_be64.loh create mode 100755 iup/srclua5/loh/text_le64.loh create mode 100755 iup/srclua5/loh/text_le64w.loh create mode 100755 iup/srclua5/loh/timer.loh create mode 100755 iup/srclua5/loh/timer_be32.loh create mode 100755 iup/srclua5/loh/timer_be64.loh create mode 100755 iup/srclua5/loh/timer_le64.loh create mode 100755 iup/srclua5/loh/timer_le64w.loh create mode 100755 iup/srclua5/loh/toggle.loh create mode 100755 iup/srclua5/loh/toggle_be32.loh create mode 100755 iup/srclua5/loh/toggle_be64.loh create mode 100755 iup/srclua5/loh/toggle_le64.loh create mode 100755 iup/srclua5/loh/toggle_le64w.loh create mode 100755 iup/srclua5/loh/tree.loh create mode 100755 iup/srclua5/loh/tree_be32.loh create mode 100755 iup/srclua5/loh/tree_be64.loh create mode 100755 iup/srclua5/loh/tree_le64.loh create mode 100755 iup/srclua5/loh/tree_le64w.loh create mode 100755 iup/srclua5/loh/user.loh create mode 100755 iup/srclua5/loh/user_be32.loh create mode 100755 iup/srclua5/loh/user_be64.loh create mode 100755 iup/srclua5/loh/user_le64.loh create mode 100755 iup/srclua5/loh/user_le64w.loh create mode 100755 iup/srclua5/loh/val.loh create mode 100755 iup/srclua5/loh/val_be32.loh create mode 100755 iup/srclua5/loh/val_be64.loh create mode 100755 iup/srclua5/loh/val_le64.loh create mode 100755 iup/srclua5/loh/val_le64w.loh create mode 100755 iup/srclua5/loh/vbox.loh create mode 100755 iup/srclua5/loh/vbox_be32.loh create mode 100755 iup/srclua5/loh/vbox_be64.loh create mode 100755 iup/srclua5/loh/vbox_le64.loh create mode 100755 iup/srclua5/loh/vbox_le64w.loh create mode 100755 iup/srclua5/loh/zbox.loh create mode 100755 iup/srclua5/loh/zbox_be32.loh create mode 100755 iup/srclua5/loh/zbox_be64.loh create mode 100755 iup/srclua5/loh/zbox_le64.loh create mode 100755 iup/srclua5/loh/zbox_le64w.loh create mode 100755 iup/srclua5/make_uname create mode 100755 iup/srclua5/make_uname.bat create mode 100755 iup/srclua5/matrix.lua create mode 100755 iup/srclua5/menu.lua create mode 100755 iup/srclua5/messagedlg.lua create mode 100755 iup/srclua5/multiline.lua create mode 100755 iup/srclua5/normalizer.lua create mode 100755 iup/srclua5/olecontrol.lua create mode 100755 iup/srclua5/pplot.lua create mode 100755 iup/srclua5/progressbar.lua create mode 100755 iup/srclua5/radio.lua create mode 100755 iup/srclua5/sbox.lua create mode 100755 iup/srclua5/separator.lua create mode 100755 iup/srclua5/spin.lua create mode 100755 iup/srclua5/spinbox.lua create mode 100755 iup/srclua5/submenu.lua create mode 100755 iup/srclua5/tabs.lua create mode 100755 iup/srclua5/text.lua create mode 100755 iup/srclua5/timer.lua create mode 100755 iup/srclua5/toggle.lua create mode 100755 iup/srclua5/tree.lua create mode 100755 iup/srclua5/user.lua create mode 100755 iup/srclua5/val.lua create mode 100755 iup/srclua5/vbox.lua create mode 100755 iup/srclua5/zbox.lua create mode 100755 iup/srcole/config.mak create mode 100755 iup/srcole/iup_olecontrol.cpp create mode 100755 iup/srcole/iupole.def create mode 100755 iup/srcole/make_uname.bat create mode 100755 iup/srcole/tAmbientProperties.cpp create mode 100755 iup/srcole/tAmbientProperties.h create mode 100755 iup/srcole/tDispatch.cpp create mode 100755 iup/srcole/tDispatch.h create mode 100755 iup/srcole/tLegacy.cpp create mode 100755 iup/srcole/tLegacy.h create mode 100755 iup/srcole/tOleClientSite.cpp create mode 100755 iup/srcole/tOleClientSite.h create mode 100755 iup/srcole/tOleControlSite.cpp create mode 100755 iup/srcole/tOleControlSite.h create mode 100755 iup/srcole/tOleHandler.cpp create mode 100755 iup/srcole/tOleHandler.h create mode 100755 iup/srcole/tOleInPlaceFrame.cpp create mode 100755 iup/srcole/tOleInPlaceFrame.h create mode 100755 iup/srcole/tOleInPlaceSite.cpp create mode 100755 iup/srcole/tOleInPlaceSite.h create mode 100755 iup/srcpplot/Makefile create mode 100755 iup/srcpplot/config.mak create mode 100755 iup/srcpplot/iupPPlot.cpp create mode 100755 iup/srcpplot/iupPPlot.h create mode 100755 iup/srcpplot/iupPPlotInteraction.cpp create mode 100755 iup/srcpplot/iupPPlotInteraction.h create mode 100755 iup/srcpplot/iup_pplot.cpp create mode 100755 iup/srcpplot/iup_pplot.def create mode 100644 iup/srcpplot/iup_pplot.dep create mode 100755 iup/srcpplot/iuppplot.hpp create mode 100755 iup/srcpplot/make_uname create mode 100755 iup/srcpplot/make_uname.bat create mode 100755 iup/srcview/Makefile create mode 100755 iup/srcview/config.mak create mode 100755 iup/srcview/iup_view.c create mode 100755 iup/srcview/iupview create mode 100644 iup/srcview/iupview.bat create mode 100644 iup/srcview/iupview.dep create mode 100755 iup/srcview/make_uname create mode 100755 iup/srcview/make_uname.bat create mode 100755 iup/tecmake_compact.mak create mode 100755 iup/test/bigtest.c create mode 100755 iup/test/button.c create mode 100755 iup/test/canvas.c create mode 100755 iup/test/canvas_cddbuffer.c create mode 100755 iup/test/canvas_cdsimple.c create mode 100755 iup/test/canvas_scrollbar.c create mode 100755 iup/test/cells_checkboard.c create mode 100755 iup/test/cells_degrade.c create mode 100755 iup/test/cells_numbering.c create mode 100755 iup/test/class_conf.c create mode 100755 iup/test/clipboard.c create mode 100755 iup/test/colorbar.c create mode 100755 iup/test/colorbrowser.c create mode 100755 iup/test/config.mak create mode 100755 iup/test/dial.c create mode 100755 iup/test/dial.led create mode 100755 iup/test/dialog.c create mode 100755 iup/test/file_large.xbm create mode 100755 iup/test/frame.c create mode 100755 iup/test/gauge.c create mode 100755 iup/test/getcolor.c create mode 100755 iup/test/getparam.c create mode 100755 iup/test/glcanvas.c create mode 100755 iup/test/glcanvas_cube.c create mode 100755 iup/test/hbox.c create mode 100755 iup/test/idle.c create mode 100755 iup/test/iuptest.rc create mode 100755 iup/test/label.c create mode 100755 iup/test/list.c create mode 100755 iup/test/make_uname create mode 100755 iup/test/matrix.c create mode 100755 iup/test/matrix_cbmode.c create mode 100755 iup/test/matrix_cbs.c create mode 100755 iup/test/mdi.c create mode 100755 iup/test/menu.c create mode 100755 iup/test/ole.cpp create mode 100755 iup/test/pplot.c create mode 100755 iup/test/predialogs.c create mode 100755 iup/test/progressbar.c create mode 100755 iup/test/sample.c create mode 100755 iup/test/sbox.c create mode 100755 iup/test/scanf.c create mode 100755 iup/test/spin.c create mode 100755 iup/test/sysinfo.c create mode 100755 iup/test/tabs.c create mode 100755 iup/test/tecgraf.bmp create mode 100755 iup/test/text.c create mode 100755 iup/test/text_spin.c create mode 100755 iup/test/timer.c create mode 100755 iup/test/toggle.c create mode 100755 iup/test/tray.c create mode 100755 iup/test/tree.c create mode 100755 iup/test/val.c create mode 100755 iup/test/vbox.c create mode 100755 iup/test/zbox.c (limited to 'iup') diff --git a/iup/COPYRIGHT b/iup/COPYRIGHT new file mode 100755 index 0000000..dd31d6c --- /dev/null +++ b/iup/COPYRIGHT @@ -0,0 +1,32 @@ +IUP License +----------- + +IUP is licensed under the terms of the MIT license reproduced below. +This means that IUP is free software and can be used for both academic +and commercial purposes at absolutely no cost. + +=============================================================================== + +Copyright (C) 1994-2009 Tecgraf, PUC-Rio. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without lIUPitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IUPPLIED, INCLUDING BUT NOT LIUPITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIUP, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +=============================================================================== + +(end of COPYRIGHT) diff --git a/iup/Makefile b/iup/Makefile new file mode 100755 index 0000000..1bcb9c7 --- /dev/null +++ b/iup/Makefile @@ -0,0 +1,29 @@ + +.PHONY: do_all iup iupgtk iupcd iupcontrols iupgl iup_pplot iupim iupimglib ledc iupview iuplua3 iuplua5 iupconsole +#do_all: iup iupgtk iupcd iupcontrols iupgl iup_pplot iupim iupimglib ledc iupview iuplua3 iuplua5 iupconsole +do_all: iup iupgtk iupcd iupcontrols iupgl iup_pplot iupim iupimglib ledc iupview iuplua5 iupconsole + +iup iupgtk: + @$(MAKE) --no-print-directory -C ./src/ $@ +iupcd: + @$(MAKE) --no-print-directory -C ./srccd/ +iupcontrols: + @$(MAKE) --no-print-directory -C ./srccontrols/ +iup_pplot: + @$(MAKE) --no-print-directory -C ./srcpplot/ +iupgl: + @$(MAKE) --no-print-directory -C ./srcgl/ +iupim: + @$(MAKE) --no-print-directory -C ./srcim/ +iupimglib: + @$(MAKE) --no-print-directory -C ./srcimglib/ +iuplua3: + @$(MAKE) --no-print-directory -C ./srclua3/ +iuplua5: + @$(MAKE) --no-print-directory -C ./srclua5/ +iupconsole: + @$(MAKE) --no-print-directory -C ./srcconsole/ +ledc: + @$(MAKE) --no-print-directory -C ./srcledc/ +iupview: iupcontrols iup + @$(MAKE) --no-print-directory -C ./srcview/ diff --git a/iup/README b/iup/README new file mode 100755 index 0000000..9e96928 --- /dev/null +++ b/iup/README @@ -0,0 +1,12 @@ +README for IUP + + IUP is a portable toolkit for building graphical user interfaces. It offers a configuration API in three basic languages: C, Lua and LED. IUP's purpose is to allow a program to be executed in different systems without any modification, therefore it is highly portable. Its main advantages are: + * high performance, due to the fact that it uses native interface elements. + * fast learning by the user, due to the simplicity of its API. + + Build instructions and usage are available in the IUP documentation. + + For complete information, visit IUP's web site at http://www.tecgraf.puc-rio.br/iup + or access its documentation in the HTML folder. + +(end of README) diff --git a/iup/dox/iup.dox b/iup/dox/iup.dox new file mode 100755 index 0000000..f20c7c3 --- /dev/null +++ b/iup/dox/iup.dox @@ -0,0 +1,264 @@ +# Doxyfile 1.5.7.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = IUP +PROJECT_NUMBER = 3.0 +OUTPUT_DIRECTORY = ../html +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = NO +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = YES +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +SYMBOL_CACHE_SIZE = 0 +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = NO +GENERATE_TESTLIST = NO +GENERATE_BUGLIST = NO +GENERATE_DEPRECATEDLIST= NO +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../src +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.h \ + iup.c +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = NO +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = doxygen/ +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +HTML_DYNAMIC_SECTIONS = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHG_LOCATION = +DISABLE_INDEX = YES +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = FRAME +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = ../include/ +INCLUDE_FILE_PATTERNS = +PREDEFINED = IUP_ASSERT +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +DOT_FONTNAME = FreeSans +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/iup/etc/iup.manifest b/iup/etc/iup.manifest new file mode 100755 index 0000000..2988531 --- /dev/null +++ b/iup/etc/iup.manifest @@ -0,0 +1,22 @@ + + + +Iup Application + + + + + + diff --git a/iup/etc/iup.rc b/iup/etc/iup.rc new file mode 100755 index 0000000..eab8cf5 --- /dev/null +++ b/iup/etc/iup.rc @@ -0,0 +1,44 @@ +TECGRAF_ICON ICON "tecgraf.ico" + +1 VERSIONINFO + FILEVERSION 3,0,0,0 + PRODUCTVERSION 3,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0" + VALUE "CompanyName", "Tecgraf/PUC-Rio\0" + VALUE "FileDescription", "IUP - Portable User Interface\0" + VALUE "FileVersion", "3.0.0\0" + VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0" + VALUE "OriginalFilename", "iup.dll\0" + VALUE "ProductName", "IUP for Windows\0" + VALUE "ProductVersion", "3.0.0\0" + END + END +END + +CURSOR_PEN CURSOR "pen.cur" + +/* To avoid the inclusion of */ +#define WS_CHILD 0x40000000L +#define WS_VISIBLE 0x10000000L +#define WS_CLIPSIBLINGS 0x04000000L +#define DS_3DLOOK 0x0004L +#define DS_CONTROL 0x0400L +#define SS_OWNERDRAW 0x0000000DL +#define WS_EX_STATICEDGE 0x00020000L + +#define IUP_PREVIEWCANVAS 3000 + +iupPreviewDlg DIALOG DISCARDABLE 0, 0, 250, 95 +STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE +END + +/* The following line will enable Windows XP Visual Styles */ +1 24 "iup.manifest" diff --git a/iup/etc/iup64.manifest b/iup/etc/iup64.manifest new file mode 100755 index 0000000..e399771 --- /dev/null +++ b/iup/etc/iup64.manifest @@ -0,0 +1,22 @@ + + + +Iup Application + + + + + + diff --git a/iup/etc/pen.cur b/iup/etc/pen.cur new file mode 100755 index 0000000..5912b15 Binary files /dev/null and b/iup/etc/pen.cur differ diff --git a/iup/etc/tecgraf.ico b/iup/etc/tecgraf.ico new file mode 100755 index 0000000..0db610e Binary files /dev/null and b/iup/etc/tecgraf.ico differ diff --git a/iup/fix_permission b/iup/fix_permission new file mode 100755 index 0000000..453aead --- /dev/null +++ b/iup/fix_permission @@ -0,0 +1 @@ +find . -name make_\* -type f -exec chmod ug+x {} \; diff --git a/iup/include/iup.h b/iup/include/iup.h new file mode 100755 index 0000000..9913329 --- /dev/null +++ b/iup/include/iup.h @@ -0,0 +1,363 @@ +/** \file + * \brief User API + * IUP - A Portable User Interface Toolkit + * Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil + * http://www.tecgraf.puc-rio.br/iup mailto:iup@tecgraf.puc-rio.br + * + * See Copyright Notice at the end of this file + */ + +#ifndef __IUP_H +#define __IUP_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +#define IUP_NAME "IUP - Portable User Interface" +#define IUP_COPYRIGHT "Copyright (C) 1994-2009 Tecgraf, PUC-Rio." +#define IUP_DESCRIPTION "Portable toolkit for building graphical user interfaces." +#define IUP_VERSION "3.0" /* bug fixes are reported only by IupVersion functions */ +#define IUP_VERSION_NUMBER 300000 +#define IUP_VERSION_DATE "2009/10/02" + +typedef struct Ihandle_ Ihandle; +typedef int (*Icallback)(Ihandle*); + +/************************************************************************/ +/* Main API */ +/************************************************************************/ + +int IupOpen (int *argc, char ***argv); +void IupClose (void); +void IupImageLibOpen (void); + +int IupMainLoop (void); +int IupLoopStep (void); +int IupMainLoopLevel (void); +void IupFlush (void); +void IupExitLoop (void); + +void IupUpdate (Ihandle* ih); +void IupUpdateChildren(Ihandle* ih); +void IupRedraw (Ihandle* ih, int children); +void IupRefresh (Ihandle* ih); + +char* IupMapFont (const char *iupfont); +char* IupUnMapFont (const char *driverfont); +int IupHelp (const char* url); +char* IupLoad (const char *filename); +char* IupLoadBuffer (const char *buffer); + +char* IupVersion (void); +char* IupVersionDate (void); +int IupVersionNumber (void); +void IupSetLanguage (const char *lng); +char* IupGetLanguage (void); + +void IupDestroy (Ihandle* ih); +void IupDetach (Ihandle* child); +Ihandle* IupAppend (Ihandle* ih, Ihandle* child); +Ihandle* IupInsert (Ihandle* ih, Ihandle* ref_child, Ihandle* child); +Ihandle* IupGetChild (Ihandle* ih, int pos); +int IupGetChildPos (Ihandle* ih, Ihandle* child); +int IupGetChildCount(Ihandle* ih); +Ihandle* IupGetNextChild (Ihandle* ih, Ihandle* child); +Ihandle* IupGetBrother (Ihandle* ih); +Ihandle* IupGetParent (Ihandle* ih); +Ihandle* IupGetDialog (Ihandle* ih); +Ihandle* IupGetDialogChild(Ihandle* ih, const char* name); +int IupReparent (Ihandle* ih, Ihandle* new_parent); + +int IupPopup (Ihandle* ih, int x, int y); +int IupShow (Ihandle* ih); +int IupShowXY (Ihandle* ih, int x, int y); +int IupHide (Ihandle* ih); +int IupMap (Ihandle* ih); +void IupUnmap (Ihandle *ih); + +void IupSetAttribute (Ihandle* ih, const char* name, const char* value); +void IupStoreAttribute(Ihandle* ih, const char* name, const char* value); +Ihandle* IupSetAttributes (Ihandle* ih, const char *str); +char* IupGetAttribute (Ihandle* ih, const char* name); +char* IupGetAttributes (Ihandle* ih); +int IupGetInt (Ihandle* ih, const char* name); +int IupGetInt2 (Ihandle* ih, const char* name); +int IupGetIntInt (Ihandle *ih, const char* name, int *i1, int *i2); +float IupGetFloat (Ihandle* ih, const char* name); +void IupSetfAttribute (Ihandle* ih, const char* name, const char* format, ...); +int IupGetAllAttributes(Ihandle* ih, char** names, int n); +Ihandle* IupSetAtt(const char* handle_name, Ihandle* ih, const char* name, ...); + +void IupSetGlobal (const char* name, const char* value); +void IupStoreGlobal (const char* name, const char* value); +char* IupGetGlobal (const char* name); + +Ihandle* IupSetFocus (Ihandle* ih); +Ihandle* IupGetFocus (void); +Ihandle* IupPreviousField (Ihandle* ih); +Ihandle* IupNextField (Ihandle* ih); + +Icallback IupGetCallback(Ihandle* ih, const char *name); +Icallback IupSetCallback(Ihandle* ih, const char *name, Icallback func); +Ihandle* IupSetCallbacks(Ihandle* ih, const char *name, Icallback func, ...); + +Icallback IupGetFunction (const char *name); +Icallback IupSetFunction (const char *name, Icallback func); +const char* IupGetActionName (void); + +Ihandle* IupGetHandle (const char *name); +Ihandle* IupSetHandle (const char *name, Ihandle* ih); +int IupGetAllNames (char** names, int n); +int IupGetAllDialogs (char** names, int n); +char* IupGetName (Ihandle* ih); + +void IupSetAttributeHandle(Ihandle* ih, const char* name, Ihandle* ih_named); +Ihandle* IupGetAttributeHandle(Ihandle* ih, const char* name); + +char* IupGetClassName(Ihandle* ih); +char* IupGetClassType(Ihandle* ih); +int IupGetClassAttributes(const char* classname, char** names, int n); +void IupSaveClassAttributes(Ihandle* ih); +void IupSetClassDefaultAttribute(const char* classname, const char *name, const char* value); + +Ihandle* IupCreate (const char *classname); +Ihandle* IupCreatev(const char *classname, void* *params); +Ihandle* IupCreatep(const char *classname, void *first, ...); + +/************************************************************************/ +/* Elements */ +/************************************************************************/ + +Ihandle* IupFill (void); +Ihandle* IupRadio (Ihandle* child); +Ihandle* IupVbox (Ihandle* child, ...); +Ihandle* IupVboxv (Ihandle* *children); +Ihandle* IupZbox (Ihandle* child, ...); +Ihandle* IupZboxv (Ihandle* *children); +Ihandle* IupHbox (Ihandle* child,...); +Ihandle* IupHboxv (Ihandle* *children); + +Ihandle* IupNormalizer (Ihandle* ih_first, ...); +Ihandle* IupNormalizerv(Ihandle* *ih_list); + +Ihandle* IupCbox (Ihandle* child, ...); +Ihandle* IupCboxv (Ihandle* *children); +Ihandle* IupSbox (Ihandle *child); + +Ihandle* IupFrame (Ihandle* child); + +Ihandle* IupImage (int width, int height, const unsigned char *pixmap); +Ihandle* IupImageRGB (int width, int height, const unsigned char *pixmap); +Ihandle* IupImageRGBA (int width, int height, const unsigned char *pixmap); + +Ihandle* IupItem (const char* title, const char* action); +Ihandle* IupSubmenu (const char* title, Ihandle* child); +Ihandle* IupSeparator (void); +Ihandle* IupMenu (Ihandle* child,...); +Ihandle* IupMenuv (Ihandle* *children); + +Ihandle* IupButton (const char* title, const char* action); +Ihandle* IupCanvas (const char* action); +Ihandle* IupDialog (Ihandle* child); +Ihandle* IupUser (void); +Ihandle* IupLabel (const char* title); +Ihandle* IupList (const char* action); +Ihandle* IupText (const char* action); +Ihandle* IupMultiLine (const char* action); +Ihandle* IupToggle (const char* title, const char* action); +Ihandle* IupTimer (void); +Ihandle* IupClipboard (void); +Ihandle* IupProgressBar(void); +Ihandle* IupVal (const char *type); +Ihandle* IupTabs (Ihandle* child, ...); +Ihandle* IupTabsv (Ihandle* *children); +Ihandle* IupTree (void); + +Ihandle* IupSpin (void); +Ihandle* IupSpinbox (Ihandle* child); + + +/* IupImage utility */ +int IupSaveImageAsText(Ihandle* ih, const char* file_name, const char* format, const char* name); + +/* IupText utilities */ +void IupTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos); +void IupTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col); + +/* IupText, IupList and IupTree utility */ +int IupConvertXYToPos(Ihandle* ih, int x, int y); + +/* IupTree utilities */ +int IupTreeSetUserId(Ihandle* ih, int id, void* userid); +void* IupTreeGetUserId(Ihandle* ih, int id); +int IupTreeGetId(Ihandle* ih, void *userid); + +void IupTreeSetAttribute (Ihandle* ih, const char* name, int id, char* value); +void IupTreeStoreAttribute(Ihandle* ih, const char* name, int id, char* value); +char* IupTreeGetAttribute (Ihandle* ih, const char* name, int id); +int IupTreeGetInt (Ihandle* ih, const char* name, int id); +float IupTreeGetFloat (Ihandle* ih, const char* name, int id); +void IupTreeSetfAttribute (Ihandle* ih, const char* name, int id, char* format, ...); + + +/************************************************************************/ +/* Pre-definided dialogs */ +/************************************************************************/ + +Ihandle* IupFileDlg(void); +Ihandle* IupMessageDlg(void); +Ihandle* IupColorDlg(void); +Ihandle* IupFontDlg(void); + +int IupGetFile(char *arq); +void IupMessage(const char *title, const char *msg); +void IupMessagef(const char *title, const char *format, ...); +int IupAlarm(const char *title, const char *msg, const char *b1, const char *b2, const char *b3); +int IupScanf(const char *format, ...); +int IupListDialog(int type, const char *title, int size, const char** list, + int op, int max_col, int max_lin, int* marks); +int IupGetText(const char* title, char* text); +int IupGetColor(int x, int y, unsigned char* r, unsigned char* g, unsigned char* b); + +typedef int (*Iparamcb)(Ihandle* dialog, int param_index, void* user_data); +int IupGetParam(const char* title, Iparamcb action, void* user_data, const char* format,...); +int IupGetParamv(const char* title, Iparamcb action, void* user_data, const char* format, int param_count, int param_extra, void** param_data); + + + +#ifdef __cplusplus +} +#endif + +/************************************************************************/ +/* Common Return Values */ +/************************************************************************/ +#define IUP_ERROR 1 +#define IUP_NOERROR 0 +#define IUP_OPENED -1 +#define IUP_INVALID -1 + +/************************************************************************/ +/* Callback Return Values */ +/************************************************************************/ +#define IUP_IGNORE -1 +#define IUP_DEFAULT -2 +#define IUP_CLOSE -3 +#define IUP_CONTINUE -4 + +/************************************************************************/ +/* IupPopup and IupShowXY Parameter Values */ +/************************************************************************/ +#define IUP_CENTER 0xFFFF /* 65535 */ +#define IUP_LEFT 0xFFFE /* 65534 */ +#define IUP_RIGHT 0xFFFD /* 65533 */ +#define IUP_MOUSEPOS 0xFFFC /* 65532 */ +#define IUP_CURRENT 0xFFFB /* 65531 */ +#define IUP_CENTERPARENT 0xFFFA /* 65530 */ +#define IUP_TOP IUP_LEFT +#define IUP_BOTTOM IUP_RIGHT + +/************************************************************************/ +/* SHOW_CB Callback Values */ +/************************************************************************/ +enum{IUP_SHOW, IUP_RESTORE, IUP_MINIMIZE, IUP_MAXIMIZE, IUP_HIDE}; + +/************************************************************************/ +/* SCROLL_CB Callback Values */ +/************************************************************************/ +enum{IUP_SBUP, IUP_SBDN, IUP_SBPGUP, IUP_SBPGDN, IUP_SBPOSV, IUP_SBDRAGV, + IUP_SBLEFT, IUP_SBRIGHT, IUP_SBPGLEFT, IUP_SBPGRIGHT, IUP_SBPOSH, IUP_SBDRAGH}; + +/************************************************************************/ +/* Mouse Button Values and Macros */ +/************************************************************************/ +#define IUP_BUTTON1 '1' +#define IUP_BUTTON2 '2' +#define IUP_BUTTON3 '3' +#define IUP_BUTTON4 '4' +#define IUP_BUTTON5 '5' + +#define iup_isshift(_s) (_s[0]=='S') +#define iup_iscontrol(_s) (_s[1]=='C') +#define iup_isbutton1(_s) (_s[2]=='1') +#define iup_isbutton2(_s) (_s[3]=='2') +#define iup_isbutton3(_s) (_s[4]=='3') +#define iup_isdouble(_s) (_s[5]=='D') +#define iup_isalt(_s) (_s[6]=='A') +#define iup_issys(_s) (_s[7]=='Y') +#define iup_isbutton4(_s) (_s[8]=='4') +#define iup_isbutton5(_s) (_s[9]=='5') + +/* Old definitions for backward compatibility */ +#define isshift iup_isshift +#define iscontrol iup_iscontrol +#define isbutton1 iup_isbutton1 +#define isbutton2 iup_isbutton2 +#define isbutton3 iup_isbutton3 +#define isdouble iup_isdouble +#define isalt iup_isalt +#define issys iup_issys +#define isbutton4 iup_isbutton4 +#define isbutton5 iup_isbutton5 + + +/************************************************************************/ +/* Pre-Defined Masks */ +/************************************************************************/ +#define IUP_MASK_FLOAT "[+/-]?(/d+/.?/d*|/./d+)" +#define IUP_MASK_UFLOAT "(/d+/.?/d*|/./d+)" +#define IUP_MASK_EFLOAT "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?" +#define IUP_MASK_INT "[+/-]?/d+" +#define IUP_MASK_UINT "/d+" + +/* Old definitions for backward compatibility */ +#define IUPMASK_FLOAT IUP_MASK_FLOAT +#define IUPMASK_UFLOAT IUP_MASK_UFLOAT +#define IUPMASK_EFLOAT IUP_MASK_EFLOAT +#define IUPMASK_INT IUP_MASK_INT +#define IUPMASK_UINT IUP_MASK_UINT + + +/************************************************************************/ +/* Replacement for the WinMain in Windows, */ +/* this allows the application to start from "main". */ +/* Used only for Watcom. */ +/************************************************************************/ +#if defined (__WATCOMC__) +#ifdef __cplusplus +extern "C" { +int IupMain (int argc, char** argv); /* In C++ we have to declare the prototype */ +} +#endif +#define main IupMain /* this is the trick for Watcom and MetroWerks */ +#endif + +/****************************************************************************** +* Copyright (C) 1994-2009 Tecgraf, PUC-Rio. +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************************/ + +#endif diff --git a/iup/include/iup_pplot.h b/iup/include/iup_pplot.h new file mode 100755 index 0000000..59c3453 --- /dev/null +++ b/iup/include/iup_pplot.h @@ -0,0 +1,40 @@ +/** \file + * \brief PPlot component for Iup. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPPPLOT_H +#define __IUPPPLOT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Initialize PPlot widget class */ +void IupPPlotOpen(void); + +/* Create an PPlot widget instance */ +Ihandle* IupPPlot(void); + +/* Add dataset to plot */ +void IupPPlotBegin(Ihandle *ih, int strXdata); +void IupPPlotAdd(Ihandle *ih, float x, float y); +void IupPPlotAddStr(Ihandle *ih, const char* x, float y); +int IupPPlotEnd(Ihandle *ih); + +void IupPPlotInsertStr(Ihandle *ih, int index, int sample_index, const char* x, float y); +void IupPPlotInsert(Ihandle *ih, int index, int sample_index, float x, float y); + +/* convert from plot coordinates to pixels */ +void IupPPlotTransform(Ihandle* ih, float x, float y, int *ix, int *iy); + +/* Plot on the given device. Uses a "cdCanvas*". */ +void IupPPlotPaintTo(Ihandle *ih, void *cnv); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupcb.h b/iup/include/iupcb.h new file mode 100755 index 0000000..1285b04 --- /dev/null +++ b/iup/include/iupcb.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupcbox.h b/iup/include/iupcbox.h new file mode 100755 index 0000000..5ae1901 --- /dev/null +++ b/iup/include/iupcbox.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupcbs.h b/iup/include/iupcbs.h new file mode 100755 index 0000000..f33166b --- /dev/null +++ b/iup/include/iupcbs.h @@ -0,0 +1,43 @@ +/** \file + * \brief Contains all function pointer typedefs. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPCBS_H +#define __IUPCBS_H + +typedef int (*IFidle)(void); /* idle */ + +typedef int (*IFn)(Ihandle*); /* default definition, same as Icallback (ncols_cb, nlines_cb)*/ +typedef int (*IFni)(Ihandle*, int); /* k_any, show_cb, toggle_action, spin_cb, branchopen_cb, branchclose_cb, executeleaf_cb, showrename_cb, rightclick_cb, extended_cb, height_cb, width_cb */ +typedef int (*IFnii)(Ihandle*, int, int); /* resize_cb, caret_cb, matrix_mousemove_cb, enteritem_cb, leaveitem_cb, scrolltop_cb, dropcheck_cb, selection_cb, select_cb, switch_cb, scrolling_cb, vspan_cb, hspan_cb */ +typedef int (*IFniii)(Ihandle*, int, int, int); /* trayclick_cb, edition_cb */ +typedef int (*IFniiii)(Ihandle*, int, int, int, int); /* dragdrop_cb */ +typedef int (*IFniiiiii)(Ihandle*, int, int, int, int, int, int); /* draw_cb */ + +typedef int (*IFnff)(Ihandle*, float, float); /* canvas_action */ +typedef int (*IFniff)(Ihandle*,int,float,float); /* scroll_cb */ +typedef int (*IFnfiis)(Ihandle*,float,int,int,char*); /* wheel_cb */ + +typedef int (*IFnnii)(Ihandle*, Ihandle*, int, int); /* drop_cb */ +typedef int (*IFnnn)(Ihandle*, Ihandle*, Ihandle*); /* tabchange_cb */ +typedef int (*IFnss)(Ihandle*, char *, char *); /* file_cb */ +typedef int (*IFns)(Ihandle*, char *); /* multiselect_cb */ +typedef int (*IFnis)(Ihandle*, int, char *); /* text_action, multiline_action, edit_cb, renamenode_cb, rename_cb */ +typedef int (*IFnsii)(Ihandle*, char*, int, int); /* list_action */ +typedef int (*IFnsiii)(Ihandle*, char*, int, int, int); /* dropfiles_cb */ +typedef int (*IFniis)(Ihandle*, int, int, char*); /* motion_cb, click_cb, value_edit_cb */ +typedef int (*IFniiiis)(Ihandle*, int, int, int, int, char*); /* button_cb, matrix_action, mousemotion_cb */ +typedef int (*IFniiiiiis)(Ihandle*, int, int, int, int, int, int, char*); /* mouseclick_cb */ + +typedef int (*IFnIi)(Ihandle*, int*, int); /* multiselection_cb, multiselection_cb */ +typedef int (*IFnd)(Ihandle*, double); /* mousemove_cb, button_press_cb, button_release_cb */ +typedef int (*IFniiIII)(Ihandle*, int, int, int*, int*, int*); /* fgcolor_cb, bgcolor_cb */ +typedef int (*IFniinsii)(Ihandle*, int, int, Ihandle*, char*, int, int); /* dropselect_cb */ +typedef int (*IFnccc)(Ihandle*, unsigned char, unsigned char, unsigned char); /* drag_cb, change_cb */ + +typedef char* (*sIFnii)(Ihandle*, int, int); /* value_cb */ +typedef char* (*sIFni)(Ihandle*, int); /* cell_cb */ + +#endif diff --git a/iup/include/iupcells.h b/iup/include/iupcells.h new file mode 100755 index 0000000..1285b04 --- /dev/null +++ b/iup/include/iupcells.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupcolorbar.h b/iup/include/iupcolorbar.h new file mode 100755 index 0000000..1285b04 --- /dev/null +++ b/iup/include/iupcolorbar.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupcontrols.h b/iup/include/iupcontrols.h new file mode 100755 index 0000000..c7bc566 --- /dev/null +++ b/iup/include/iupcontrols.h @@ -0,0 +1,46 @@ +/** \file + * \brief initializes dial, gauge, colorbrowser, colorbar controls. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPCONTROLS_H +#define __IUPCONTROLS_H + +#ifdef __cplusplus +extern "C" { +#endif + + +int IupControlsOpen(void); +void IupControlsClose(void); /* for backward compatibility only, does nothing since IUP 3 */ + +void IupOldValOpen(void); +void IupOldTabsOpen(void); + +Ihandle* IupColorbar(void); +Ihandle* IupCells(void); +Ihandle *IupColorBrowser(void); +Ihandle *IupColorBrowser(void); +Ihandle *IupGauge(void); +Ihandle *IupDial(const char* type); +Ihandle* IupMatrix(const char *action); + +/* IupMatrix utilities */ +void IupMatSetAttribute (Ihandle* ih, const char* name, int lin, int col, char* value); +void IupMatStoreAttribute(Ihandle* ih, const char* name, int lin, int col, char* value); +char* IupMatGetAttribute (Ihandle* ih, const char* name, int lin, int col); +int IupMatGetInt (Ihandle* ih, const char* name, int lin, int col); +float IupMatGetFloat (Ihandle* ih, const char* name, int lin, int col); +void IupMatSetfAttribute (Ihandle* ih, const char* name, int lin, int col, char* format, ...); + +/* Used by IupColorbar */ +#define IUP_PRIMARY -1 +#define IUP_SECONDARY -2 + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupdef.h b/iup/include/iupdef.h new file mode 100755 index 0000000..e8f436e --- /dev/null +++ b/iup/include/iupdef.h @@ -0,0 +1,725 @@ +/** \file + * \brief Callbacks, Attributes and Attribute Values definitions. + * Avoid using these definitions. Use the strings instead. + * + * See Copyright Notice in iup.h + */ + +#ifndef __IUPDEF_H +#define __IUPDEF_H + +/* OLD definitions */ +/* Avoid using these definitions. Use the strings instead. */ +/* Define __IUPDEF_H to avoid the inclusion of this header */ + +#define IUP_RUN "RUN" +#define IUP_ENGLISH "ENGLISH" +#define IUP_PORTUGUESE "PORTUGUESE" +#define IUP_SBH "SBH" +#define IUP_SBV "SBV" + +/************************************************************************/ +/* Callbacks */ +/************************************************************************/ + +#define IUP_DEFAULT_ACTION "DEFAULT_ACTION" +#define IUP_IDLE_ACTION "IDLE_ACTION" + +#define IUP_ACTION "ACTION" +#define IUP_GETFOCUS_CB "GETFOCUS_CB" +#define IUP_KILLFOCUS_CB "KILLFOCUS_CB" +#define IUP_K_ANY "K_ANY" +#define IUP_KEYPRESS_CB "KEYPRESS_CB" +#define IUP_HELP_CB "HELP_CB" + +#define IUP_SCROLL_CB "SCROLL_CB" +#define IUP_RESIZE_CB "RESIZE_CB" +#define IUP_MOTION_CB "MOTION_CB" +#define IUP_BUTTON_CB "BUTTON_CB" +#define IUP_ENTERWINDOW_CB "ENTERWINDOW_CB" +#define IUP_LEAVEWINDOW_CB "LEAVEWINDOW_CB" +#define IUP_WHEEL_CB "WHEEL_CB" + +#define IUP_MASK_CB "MASK_CB" +#define IUP_OPEN_CB "OPEN_CB" +#define IUP_HIGHLIGHT_CB "HIGHLIGHT_CB" +#define IUP_MENUCLOSE_CB "MENUCLOSE_CB" + +#define IUP_MAP_CB "MAP_CB" +#define IUP_CLOSE_CB "CLOSE_CB" +#define IUP_SHOW_CB "SHOW_CB" + +#define IUP_DROPFILES_CB "DROPFILES_CB" +#define IUP_WOM_CB "WOM_CB" + +/************************************************************************/ +/* Attributes */ +/************************************************************************/ + +#define IUP_DIRECTION "DIRECTION" +#define IUP_ACTIVE "ACTIVE" +#define IUP_BGCOLOR "BGCOLOR" +#define IUP_FRAMECOLOR "FRAMECOLOR" +#define IUP_FGCOLOR "FGCOLOR" +#define IUP_COLOR "COLOR" +#define IUP_WID "WID" +#define IUP_SIZE "SIZE" +#define IUP_RASTERSIZE "RASTERSIZE" +#define IUP_TITLE "TITLE" +#define IUP_VALUE "VALUE" +#define IUP_VISIBLE "VISIBLE" +#define IUP_FONT "FONT" +#define IUP_TIP "TIP" +#define IUP_EXPAND "EXPAND" +#define IUP_SEPARATOR "SEPARATOR" + +#define IUP_HOTSPOT "HOTSPOT" +#define IUP_HEIGHT "HEIGHT" +#define IUP_WIDTH "WIDTH" + +#define IUP_KEY "KEY" + +#define IUP_MULTIPLE "MULTIPLE" +#define IUP_DROPDOWN "DROPDOWN" +#define IUP_VISIBLE_ITEMS "VISIBLE_ITEMS" + +#define IUP_MARGIN "MARGIN" +#define IUP_GAP "GAP" +#define IUP_ALIGNMENT "ALIGNMENT" + +#define IUP_IMAGE "IMAGE" +#define IUP_IMINACTIVE "IMINACTIVE" +#define IUP_IMPRESS "IMPRESS" +#define IUP_WIN_SAVEBITS "WIN_SAVEBITS" + +#define IUP_NC "NC" +#define IUP_MASK "MASK" + +#define IUP_APPEND "APPEND" +#define IUP_BORDER "BORDER" + +#define IUP_CARET "CARET" +#define IUP_SELECTION "SELECTION" +#define IUP_SELECTEDTEXT "SELECTEDTEXT" +#define IUP_INSERT "INSERT" + +#define IUP_CONID "CONID" +#define IUP_CURSOR "CURSOR" + +#define IUP_ICON "ICON" +#define IUP_MENUBOX "MENUBOX" +#define IUP_MINBOX "MINBOX" +#define IUP_MAXBOX "MAXBOX" +#define IUP_RESIZE "RESIZE" +#define IUP_MENU "MENU" +#define IUP_STARTFOCUS "STARTFOCUS" +#define IUP_PARENTDIALOG "PARENTDIALOG" +#define IUP_SHRINK "SHRINK" +#define IUP_DEFAULTENTER "DEFAULTENTER" +#define IUP_DEFAULTESC "DEFAULTESC" +#define IUP_X "X" +#define IUP_Y "Y" +#define IUP_TOOLBOX "TOOLBOX" +#define IUP_CONTROL "CONTROL" +#define IUP_READONLY "READONLY" + +#define IUP_SCROLLBAR "SCROLLBAR" +#define IUP_POSY "POSY" +#define IUP_POSX "POSX" +#define IUP_DX "DX" +#define IUP_DY "DY" +#define IUP_XMAX "XMAX" +#define IUP_XMIN "XMIN" +#define IUP_YMAX "YMAX" +#define IUP_YMIN "YMIN" + +#define IUP_RED "255 0 0" +#define IUP_GREEN "0 255 0" +#define IUP_BLUE "0 0 255" + +#define IUP_MIN "MIN" +#define IUP_MAX "MAX" + +#define IUP_TIME "TIME" +#define IUP_DRAG "DRAG" +#define IUP_DROP "DROP" +#define IUP_REPAINT "REPAINT" +#define IUP_TOPMOST "TOPMOST" +#define IUP_CLIPCHILDREN "CLIPCHILDREN" + +#define IUP_DIALOGTYPE "DIALOGTYPE" +#define IUP_FILE "FILE" +#define IUP_MULTIPLEFILES "MULTIPLEFILES" +#define IUP_FILTER "FILTER" +#define IUP_FILTERUSED "FILTERUSED" +#define IUP_FILTERINFO "FILTERINFO" +#define IUP_EXTFILTER "EXTFILTER" +#define IUP_DIRECTORY "DIRECTORY" +#define IUP_ALLOWNEW "ALLOWNEW" +#define IUP_NOOVERWRITEPROMPT "NOOVERWRITEPROMPT" +#define IUP_NOCHANGEDIR "NOCHANGEDIR" +#define IUP_FILEEXIST "FILEEXIST" +#define IUP_STATUS "STATUS" + +#define IUP_LOCKLOOP "LOCKLOOP" +#define IUP_SYSTEM "SYSTEM" +#define IUP_DRIVER "DRIVER" +#define IUP_SCREENSIZE "SCREENSIZE" +#define IUP_SYSTEMLANGUAGE "SYSTEMLANGUAGE" +#define IUP_COMPUTERNAME "COMPUTERNAME" +#define IUP_USERNAME "USERNAME" + +#define IUP_OPEN "OPEN" +#define IUP_SAVE "SAVE" +#define IUP_DIR "DIR" + +#define IUP_HORIZONTAL "HORIZONTAL" +#define IUP_VERTICAL "VERTICAL" + +/************************************************************************/ +/* Attribute Values */ +/************************************************************************/ + +#define IUP_YES "YES" +#define IUP_NO "NO" +#define IUP_ON "ON" +#define IUP_OFF "OFF" + +#define IUP_ACENTER "ACENTER" +#define IUP_ALEFT "ALEFT" +#define IUP_ARIGHT "ARIGHT" +#define IUP_ATOP "ATOP" +#define IUP_ABOTTOM "ABOTTOM" + +#define IUP_NORTH "NORTH" +#define IUP_SOUTH "SOUTH" +#define IUP_WEST "WEST" +#define IUP_EAST "EAST" +#define IUP_NE "NE" +#define IUP_SE "SE" +#define IUP_NW "NW" +#define IUP_SW "SW" + +#define IUP_FULLSCREEN "FULLSCREEN" +#define IUP_FULL "FULL" +#define IUP_HALF "HALF" +#define IUP_THIRD "THIRD" +#define IUP_QUARTER "QUARTER" +#define IUP_EIGHTH "EIGHTH" + +#define IUP_ARROW "ARROW" +#define IUP_BUSY "BUSY" +#define IUP_RESIZE_N "RESIZE_N" +#define IUP_RESIZE_S "RESIZE_S" +#define IUP_RESIZE_E "RESIZE_E" +#define IUP_RESIZE_W "RESIZE_W" +#define IUP_RESIZE_NE "RESIZE_NE" +#define IUP_RESIZE_NW "RESIZE_NW" +#define IUP_RESIZE_SE "RESIZE_SE" +#define IUP_RESIZE_SW "RESIZE_SW" +#define IUP_MOVE "MOVE" +#define IUP_HAND "HAND" +#define IUP_NONE "NONE" +#define IUP_IUP "IUP" +#define IUP_CROSS "CROSS" +#define IUP_PEN "PEN" +#define IUP_TEXT "TEXT" +#define IUP_RESIZE_C "RESIZE_C" +#define IUP_OPENHAND "OPENHAND" + +/*****************/ +/* Fonts */ +/*****************/ + +#define IUP_HELVETICA_NORMAL_8 "HELVETICA_NORMAL_8" +#define IUP_HELVETICA_ITALIC_8 "HELVETICA_ITALIC_8" +#define IUP_HELVETICA_BOLD_8 "HELVETICA_BOLD_8" +#define IUP_HELVETICA_NORMAL_10 "HELVETICA_NORMAL_10" +#define IUP_HELVETICA_ITALIC_10 "HELVETICA_ITALIC_10" +#define IUP_HELVETICA_BOLD_10 "HELVETICA_BOLD_10" +#define IUP_HELVETICA_NORMAL_12 "HELVETICA_NORMAL_12" +#define IUP_HELVETICA_ITALIC_12 "HELVETICA_ITALIC_12" +#define IUP_HELVETICA_BOLD_12 "HELVETICA_BOLD_12" +#define IUP_HELVETICA_NORMAL_14 "HELVETICA_NORMAL_14" +#define IUP_HELVETICA_ITALIC_14 "HELVETICA_ITALIC_14" +#define IUP_HELVETICA_BOLD_14 "HELVETICA_BOLD_14" +#define IUP_COURIER_NORMAL_8 "COURIER_NORMAL_8" +#define IUP_COURIER_ITALIC_8 "COURIER_ITALIC_8" +#define IUP_COURIER_BOLD_8 "COURIER_BOLD_8" +#define IUP_COURIER_NORMAL_10 "COURIER_NORMAL_10" +#define IUP_COURIER_ITALIC_10 "COURIER_ITALIC_10" +#define IUP_COURIER_BOLD_10 "COURIER_BOLD_10" +#define IUP_COURIER_NORMAL_12 "COURIER_NORMAL_12" +#define IUP_COURIER_ITALIC_12 "COURIER_ITALIC_12" +#define IUP_COURIER_BOLD_12 "COURIER_BOLD_12" +#define IUP_COURIER_NORMAL_14 "COURIER_NORMAL_14" +#define IUP_COURIER_ITALIC_14 "COURIER_ITALIC_14" +#define IUP_COURIER_BOLD_14 "COURIER_BOLD_14" +#define IUP_TIMES_NORMAL_8 "TIMES_NORMAL_8" +#define IUP_TIMES_ITALIC_8 "TIMES_ITALIC_8" +#define IUP_TIMES_BOLD_8 "TIMES_BOLD_8" +#define IUP_TIMES_NORMAL_10 "TIMES_NORMAL_10" +#define IUP_TIMES_ITALIC_10 "TIMES_ITALIC_10" +#define IUP_TIMES_BOLD_10 "TIMES_BOLD_10" +#define IUP_TIMES_NORMAL_12 "TIMES_NORMAL_12" +#define IUP_TIMES_ITALIC_12 "TIMES_ITALIC_12" +#define IUP_TIMES_BOLD_12 "TIMES_BOLD_12" +#define IUP_TIMES_NORMAL_14 "TIMES_NORMAL_14" +#define IUP_TIMES_ITALIC_14 "TIMES_ITALIC_14" +#define IUP_TIMES_BOLD_14 "TIMES_BOLD_14" + +/************************************************************************/ +/* Keys */ +/************************************************************************/ + +#define IUP_K_exclam "K_exclam" +#define IUP_K_quotedbl "K_quotedbl" +#define IUP_K_numbersign "K_numbersign" +#define IUP_K_dollar "K_dollar" +#define IUP_K_percent "K_percent" +#define IUP_K_ampersand "K_ampersand" +#define IUP_K_quoteright "K_quoteright" +#define IUP_K_parentleft "K_parentleft" +#define IUP_K_parentright "K_parentright" +#define IUP_K_asterisk "K_asterisk" +#define IUP_K_plus "K_plus" +#define IUP_K_comma "K_comma" +#define IUP_K_minus "K_minus" +#define IUP_K_period "K_period" +#define IUP_K_slash "K_slash" +#define IUP_K_0 "K_0" +#define IUP_K_1 "K_1" +#define IUP_K_2 "K_2" +#define IUP_K_3 "K_3" +#define IUP_K_4 "K_4" +#define IUP_K_5 "K_5" +#define IUP_K_6 "K_6" +#define IUP_K_7 "K_7" +#define IUP_K_8 "K_8" +#define IUP_K_9 "K_9" +#define IUP_K_colon "K_colon" +#define IUP_K_semicolon "K_semicolon " +#define IUP_K_less "K_less" +#define IUP_K_equal "K_equal" +#define IUP_K_greater "K_greater" +#define IUP_K_question "K_question" +#define IUP_K_at "K_at" +#define IUP_K_A "K_A" +#define IUP_K_B "K_B" +#define IUP_K_C "K_C" +#define IUP_K_D "K_D" +#define IUP_K_E "K_E" +#define IUP_K_F "K_F" +#define IUP_K_G "K_G" +#define IUP_K_H "K_H" +#define IUP_K_I "K_I" +#define IUP_K_J "K_J" +#define IUP_K_K "K_K" +#define IUP_K_L "K_L" +#define IUP_K_M "K_M" +#define IUP_K_N "K_N" +#define IUP_K_O "K_O" +#define IUP_K_P "K_P" +#define IUP_K_Q "K_Q" +#define IUP_K_R "K_R" +#define IUP_K_S "K_S" +#define IUP_K_T "K_T" +#define IUP_K_U "K_U" +#define IUP_K_V "K_V" +#define IUP_K_W "K_W" +#define IUP_K_X "K_X" +#define IUP_K_Y "K_Y" +#define IUP_K_Z "K_Z" +#define IUP_K_bracketleft "K_bracketleft" +#define IUP_K_backslash "K_backslash" +#define IUP_K_bracketright "K_bracketright" +#define IUP_K_circum "K_circum" +#define IUP_K_underscore "K_underscore" +#define IUP_K_quoteleft "K_quoteleft" +#define IUP_K_a "K_a" +#define IUP_K_b "K_b" +#define IUP_K_c "K_c" +#define IUP_K_d "K_d" +#define IUP_K_e "K_e" +#define IUP_K_f "K_f" +#define IUP_K_g "K_g" +#define IUP_K_h "K_h" +#define IUP_K_i "K_i" +#define IUP_K_j "K_j" +#define IUP_K_k "K_k" +#define IUP_K_l "K_l" +#define IUP_K_m "K_m" +#define IUP_K_n "K_n" +#define IUP_K_o "K_o" +#define IUP_K_p "K_p" +#define IUP_K_q "K_q" +#define IUP_K_r "K_r" +#define IUP_K_s "K_s" +#define IUP_K_t "K_t" +#define IUP_K_u "K_u" +#define IUP_K_v "K_v" +#define IUP_K_w "K_w" +#define IUP_K_x "K_x" +#define IUP_K_y "K_y" +#define IUP_K_z "K_z" +#define IUP_K_braceleft "K_braceleft" +#define IUP_K_bar "K_bar" +#define IUP_K_braceright "K_braceright" +#define IUP_K_tilde "K_tilde" + +#define IUP_K_cA "K_cA" +#define IUP_K_cB "K_cB" +#define IUP_K_cC "K_cC" +#define IUP_K_cD "K_cD" +#define IUP_K_cE "K_cE" +#define IUP_K_cF "K_cF" +#define IUP_K_cG "K_cG" +#define IUP_K_cJ "K_cJ" +#define IUP_K_cK "K_cK" +#define IUP_K_cL "K_cL" +#define IUP_K_cN "K_cN" +#define IUP_K_cO "K_cO" +#define IUP_K_cP "K_cP" +#define IUP_K_cQ "K_cQ" +#define IUP_K_cR "K_cR" +#define IUP_K_cS "K_cS" +#define IUP_K_cT "K_cT" +#define IUP_K_cU "K_cU" +#define IUP_K_cV "K_cV" +#define IUP_K_cW "K_cW" +#define IUP_K_cX "K_cX" +#define IUP_K_cY "K_cY" +#define IUP_K_cZ "K_cZ" +#define IUP_K_mA "K_mA" +#define IUP_K_mB "K_mB" +#define IUP_K_mC "K_mC" +#define IUP_K_mD "K_mD" +#define IUP_K_mE "K_mE" +#define IUP_K_mF "K_mF" +#define IUP_K_mG "K_mG" +#define IUP_K_mH "K_mH" +#define IUP_K_mI "K_mI" +#define IUP_K_mJ "K_mJ" +#define IUP_K_mK "K_mK" +#define IUP_K_mL "K_mL" +#define IUP_K_mM "K_mM" +#define IUP_K_mN "K_mN" +#define IUP_K_mO "K_mO" +#define IUP_K_mP "K_mP" +#define IUP_K_mQ "K_mQ" +#define IUP_K_mR "K_mR" +#define IUP_K_mS "K_mS" +#define IUP_K_mT "K_mT" +#define IUP_K_mU "K_mU" +#define IUP_K_mV "K_mV" +#define IUP_K_mW "K_mW" +#define IUP_K_mX "K_mX" +#define IUP_K_mY "K_mY" +#define IUP_K_mZ "K_mZ" +#define IUP_K_BS "K_BS" +#define IUP_K_TAB "K_TAB" +#define IUP_K_CR "K_CR" +#define IUP_K_SP "K_SP" +#define IUP_K_ESC "K_ESC" +#define IUP_K_sCR "K_sCR" +#define IUP_K_sTAB "K_sTAB" +#define IUP_K_cTAB "K_cTAB" +#define IUP_K_mTAB "K_mTAB" +#define IUP_K_HOME "K_HOME" +#define IUP_K_UP "K_UP" +#define IUP_K_PGUP "K_PGUP" +#define IUP_K_LEFT "K_LEFT" +#define IUP_K_RIGHT "K_RIGHT" +#define IUP_K_END "K_END" +#define IUP_K_DOWN "K_DOWN" +#define IUP_K_PGDN "K_PGDN" +#define IUP_K_MIDDLE "K_MIDDLE" +#define IUP_K_INS "K_INS" +#define IUP_K_DEL "K_DEL" +#define IUP_K_sHOME "K_sHOME" +#define IUP_K_sUP "K_sUP" +#define IUP_K_sPGUP "K_sPGUP" +#define IUP_K_sLEFT "K_sLEFT" +#define IUP_K_sRIGHT "K_sRIGHT" +#define IUP_K_sEND "K_sEND" +#define IUP_K_sDOWN "K_sDOWN" +#define IUP_K_sPGDN "K_sPGDN" +#define IUP_K_cHOME "K_cHOME" +#define IUP_K_cPGUP "K_cPGUP" +#define IUP_K_cLEFT "K_cLEFT" +#define IUP_K_cRIGHT "K_cRIGHT" +#define IUP_K_cEND "K_cEND" +#define IUP_K_cPGDN "K_cPGDN" +#define IUP_K_cUP "K_cUP" +#define IUP_K_cDOWN "K_cDOWN" +#define IUP_K_cMIDDLE "K_cMIDDLE" +#define IUP_K_cINS "K_cINS" +#define IUP_K_cDEL "K_cDEL" +#define IUP_K_mHOME "K_mHOME" +#define IUP_K_mPGUP "K_mPGUP" +#define IUP_K_mLEFT "K_mLEFT" +#define IUP_K_mRIGHT "K_mRIGHT" +#define IUP_K_mEND "K_mEND" +#define IUP_K_mPGDN "K_mPGDN" +#define IUP_K_mUP "K_mUP" +#define IUP_K_mDOWN "K_mDOWN" +#define IUP_K_mINS "K_mINS" +#define IUP_K_mDEL "K_mDEL" +#define IUP_K_F1 "K_F1" +#define IUP_K_F2 "K_F2" +#define IUP_K_F3 "K_F3" +#define IUP_K_F4 "K_F4" +#define IUP_K_F5 "K_F5" +#define IUP_K_F6 "K_F6" +#define IUP_K_F7 "K_F7" +#define IUP_K_F8 "K_F8" +#define IUP_K_F9 "K_F9" +#define IUP_K_F10 "K_F10" +#define IUP_K_F11 "K_F11" +#define IUP_K_F12 "K_F12" +#define IUP_K_sF1 "K_sF1" +#define IUP_K_sF2 "K_sF2" +#define IUP_K_sF3 "K_sF3" +#define IUP_K_sF4 "K_sF4" +#define IUP_K_sF5 "K_sF5" +#define IUP_K_sF6 "K_sF6" +#define IUP_K_sF7 "K_sF7" +#define IUP_K_sF8 "K_sF8" +#define IUP_K_sF9 "K_sF9" +#define IUP_K_sF10 "K_sF10" +#define IUP_K_sF11 "K_sF11" +#define IUP_K_sF12 "K_sF12" +#define IUP_K_cF1 "K_cF1" +#define IUP_K_cF2 "K_cF2" +#define IUP_K_cF3 "K_cF3" +#define IUP_K_cF4 "K_cF4" +#define IUP_K_cF5 "K_cF5" +#define IUP_K_cF6 "K_cF6" +#define IUP_K_cF7 "K_cF7" +#define IUP_K_cF8 "K_cF8" +#define IUP_K_cF9 "K_cF9" +#define IUP_K_cF10 "K_cF10" +#define IUP_K_cF11 "K_cF11" +#define IUP_K_cF12 "K_cF12" +#define IUP_K_mF1 "K_mF1" +#define IUP_K_mF2 "K_mF2" +#define IUP_K_mF3 "K_mF3" +#define IUP_K_mF4 "K_mF4" +#define IUP_K_mF5 "K_mF5" +#define IUP_K_mF6 "K_mF6" +#define IUP_K_mF7 "K_mF7" +#define IUP_K_mF8 "K_mF8" +#define IUP_K_mF9 "K_mF9" +#define IUP_K_mF10 "K_mF10" +#define IUP_K_m1 "K_m1" +#define IUP_K_m2 "K_m2" +#define IUP_K_m3 "K_m3" +#define IUP_K_m4 "K_m4" +#define IUP_K_m5 "K_m5" +#define IUP_K_m6 "K_m6" +#define IUP_K_m7 "K_m7" +#define IUP_K_m8 "K_m8" +#define IUP_K_m9 "K_m9" +#define IUP_K_m0 "K_m0" + +/************/ +/* Colorbar */ +/************/ + +#define IUP_NUM_PARTS "NUM_PARTS" +#define IUP_NUM_CELLS "NUM_CELLS" +#define IUP_CELL "CELL" +#define IUP_PREVIEW_SIZE "PREVIEW_SIZE" +#define IUP_SHOW_PREVIEW "SHOW_PREVIEW" +#define IUP_SHOW_SECONDARY "SHOW_SECONDARY" +#define IUP_PRIMARY_CELL "PRIMARY_CELL" +#define IUP_SECONDARY_CELL "SECONDARY_CELL" +#define IUP_ORIENTATION "ORIENTATION" +#define IUP_SQUARED "SQUARED" +#define IUP_SHADOWED "SHADOWED" +#define IUP_BUFFERIZE "BUFFERIZE" +#define IUP_TRANSPARENCY "TRANSPARENCY" +#define IUP_CELL_CB "CELL_CB" +#define IUP_EXTENDED_CB "EXTENDED_CB" +#define IUP_SELECT_CB "SELECT_CB" +#define IUP_SWITCH_CB "SWITCH_CB" +#define IUP_VERTICAL "VERTICAL" +#define IUP_HORIZONTAL "HORIZONTAL" + +/************/ +/* Cells */ +/************/ + +#define IUP_ALL "ALL" +#define IUP_BOXED "BOXED" +#define IUP_CLIPPED "CLIPPED" +#define IUP_TRANSPARENT "TRANSPARENT" +#define IUP_NON_SCROLLABLE_LINES "NON_SCROLLABLE_LINES" +#define IUP_NON_SCROLLABLE_COLS "NON_SCROLLABLE_COLS" +#define IUP_ORIGIN "ORIGIN" +#define IUP_NO_COLOR "NO_COLOR" +#define IUP_FIRST_LINE "FIRST_LINE" +#define IUP_FIRST_COL "FIRST_COL" +#define IUP_DOUBLE_BUFFER "DOUBLE_BUFFER" +#define IUP_LIMITS "LIMITS" +#define IUP_CANVAS "CANVAS" +#define IUP_IMAGE_CANVAS "IMAGE_CANVAS" +#define IUP_FULL_VISIBLE "FULL_VISIBLE" +#define IUP_MOUSECLICK_CB "MOUSECLICK_CB" +#define IUP_MOUSEMOTION_CB "MOUSEMOTION_CB" +#define IUP_DRAW_CB "DRAW_CB" +#define IUP_WIDTH_CB "WIDTH_CB" +#define IUP_HEIGHT_CB "HEIGHT_CB" +#define IUP_NLINES_CB "NLINES_CB" +#define IUP_NCOLS_CB "NCOLS_CB" +#define IUP_HSPAN_CB "HSPAN_CB" +#define IUP_VSPAN_CB "VSPAN_CB" +#define IUP_SCROLLING_CB "SCROLLING_CB" + +/*****************/ +/* ColorBrowser */ +/*****************/ + +#define IUP_RGB "RGB" +#define IUP_CHANGE_CB "CHANGE_CB" +#define IUP_DRAG_CB "DRAG_CB" + +/*****************/ +/* Val */ +/*****************/ + +#define ICTL_MOUSEMOVE_CB "MOUSEMOVE_CB" +#define ICTL_BUTTON_PRESS_CB "BUTTON_PRESS_CB" +#define ICTL_BUTTON_RELEASE_CB "BUTTON_RELEASE_CB" +#define ICTL_HORIZONTAL "HORIZONTAL" +#define ICTL_VERTICAL "VERTICAL" +#define ICTL_SHOWTICKS "SHOWTICKS" + +/*****************/ +/* Tabs */ +/*****************/ + +#define ICTL_TOP "TOP" +#define ICTL_BOTTOM "BOTTOM" +#define ICTL_LEFT "LEFT" +#define ICTL_RIGHT "RIGHT" +#define ICTL_TABTYPE "TABTYPE" +#define ICTL_TABTITLE "TABTITLE" +#define ICTL_TABSIZE "TABSIZE" +#define ICTL_TABCHANGE_CB "TABCHANGE_CB" +#define ICTL_FONT "FONT" +#define ICTL_FONT_ACTIVE "FONT_ACTIVE" +#define ICTL_FONT_INACTIVE "FONT_INACTIVE" + +/*****************/ +/* Gauge */ +/*****************/ + +#define ICTL_SHOW_TEXT "SHOW_TEXT" +#define ICTL_DASHED "DASHED" +#define ICTL_MARGIN "MARGIN" +#define ICTL_TEXT "TEXT" + +/*****************/ +/* Dial */ +/*****************/ + +#define ICTL_DENSITY "DENSITY" +#define ICTL_HORIZONTAL "HORIZONTAL" +#define ICTL_VERTICAL "VERTICAL" +#define ICTL_CIRCULAR "CIRCULAR" +#define ICTL_UNIT "UNIT" + +/*****************/ +/* Matrix */ +/*****************/ + +#define IUP_ENTERITEM_CB "ENTERITEM_CB" +#define IUP_LEAVEITEM_CB "LEAVEITEM_CB" +#define IUP_EDITION_CB "EDITION_CB" +#define IUP_CLICK_CB "CLICK_CB" +#define IUP_DROP_CB "DROP_CB" +#define IUP_DROPSELECT_CB "DROPSELECT_CB" +#define IUP_DROPCHECK_CB "DROPCHECK_CB" +#define IUP_SCROLL_CB "SCROLL_CB" +#define IUP_VALUE_CB "VALUE_CB" +#define IUP_VALUE_EDIT_CB "VALUE_EDIT_CB" +#define IUP_FIELD_CB "FIELD_CB" +#define IUP_RESIZEMATRIX "RESIZEMATRIX" +#define IUP_ADDLIN "ADDLIN" +#define IUP_ADDCOL "ADDCOL" +#define IUP_DELLIN "DELLIN" +#define IUP_DELCOL "DELCOL" +#define IUP_NUMLIN "NUMLIN" +#define IUP_NUMCOL "NUMCOL" +#define IUP_NUMLIN_VISIBLE "NUMLIN_VISIBLE" +#define IUP_NUMCOL_VISIBLE "NUMCOL_VISIBLE" +#define IUP_MARKED "MARKED" +#define IUP_WIDTHDEF "WIDTHDEF" +#define IUP_HEIGHTDEF "HEIGHTDEF" +#define IUP_AREA "AREA" +#define IUP_MARK_MODE "MARK_MODE" +#define IUP_LIN "LIN" +#define IUP_COL "COL" +#define IUP_LINCOL "LINCOL" +#define IUP_CELL "CELL" +#define IUP_EDIT_MODE "EDIT_MODE" +#define IUP_FOCUS_CELL "FOCUS_CELL" +#define IUP_ORIGIN "ORIGIN" +#define IUP_REDRAW "REDRAW" +#define IUP_PREVIOUSVALUE "PREVIOUSVALUE" +#define IUP_MOUSEMOVE_CB "MOUSEMOVE_CB" + +/*****************/ +/* Tree */ +/*****************/ + +#define IUP_ADDLEAF "ADDLEAF" +#define IUP_ADDBRANCH "ADDBRANCH" +#define IUP_DELNODE "DELNODE" +#define IUP_IMAGELEAF "IMAGELEAF" +#define IUP_IMAGEBRANCHCOLLAPSED "IMAGEBRANCHCOLLAPSED" +#define IUP_IMAGEBRANCHEXPANDED "IMAGEBRANCHEXPANDED" +#define IUP_IMAGEEXPANDED "IMAGEEXPANDED" +#define IUP_KIND "KIND" +#define IUP_PARENT "PARENT" +#define IUP_DEPTH "DEPTH" +#define IUP_MARKED "MARKED" +#define IUP_ADDEXPANDED "ADDEXPANDED" +#define IUP_CTRL "CTRL" +#define IUP_SHIFT "SHIFT" +#define IUP_STATE "STATE" +#define IUP_STARTING "STARTING" +#define IUP_LEAF "LEAF" +#define IUP_BRANCH "BRANCH" +#define IUP_SELECTED "SELECTED" +#define IUP_CHILDREN "CHILDREN" +#define IUP_MARKED "MARKED" +#define IUP_ROOT "ROOT" +#define IUP_LAST "LAST" +#define IUP_PGUP "PGUP" +#define IUP_PGDN "PGDN" +#define IUP_NEXT "NEXT" +#define IUP_PREVIOUS "PREVIOUS" +#define IUP_INVERT "INVERT" +#define IUP_BLOCK "BLOCK" +#define IUP_CLEARALL "CLEARALL" +#define IUP_MARKALL "MARKALL" +#define IUP_INVERTALL "INVERTALL" +#define IUP_REDRAW "REDRAW" +#define IUP_COLLAPSED "COLLAPSED" +#define IUP_EXPANDED "EXPANDED" +#define IUP_SELECTION_CB "SELECTION_CB" +#define IUP_BRANCHOPEN_CB "BRANCHOPEN_CB" +#define IUP_BRANCHCLOSE_CB "BRANCHCLOSE_CB" +#define IUP_RIGHTCLICK_CB "RIGHTCLICK_CB" +#define IUP_EXECUTELEAF_CB "EXECUTELEAF_CB" +#define IUP_RENAMENODE_CB "RENAMENODE_CB" +#define IUP_IMGLEAF "IMGLEAF" +#define IUP_IMGCOLLAPSED "IMGCOLLAPSED" +#define IUP_IMGEXPANDED "IMGEXPANDED" +#define IUP_IMGBLANK "IMGBLANK" +#define IUP_IMGPAPER "IMGPAPER" + +#endif + diff --git a/iup/include/iupdial.h b/iup/include/iupdial.h new file mode 100755 index 0000000..1285b04 --- /dev/null +++ b/iup/include/iupdial.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupgauge.h b/iup/include/iupgauge.h new file mode 100755 index 0000000..1285b04 --- /dev/null +++ b/iup/include/iupgauge.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupgc.h b/iup/include/iupgc.h new file mode 100755 index 0000000..5ae1901 --- /dev/null +++ b/iup/include/iupgc.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupgetparam.h b/iup/include/iupgetparam.h new file mode 100755 index 0000000..5ae1901 --- /dev/null +++ b/iup/include/iupgetparam.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupgl.h b/iup/include/iupgl.h new file mode 100755 index 0000000..2f258c7 --- /dev/null +++ b/iup/include/iupgl.h @@ -0,0 +1,96 @@ +/** \file + * \brief OpenGL canvas for Iup. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPGL_H +#define __IUPGL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Attributes +** To set the appropriate visual (pixel format) the following +** attributes may be specified. Their values should be set +** before the canvas is mapped to the scrren. +** After mapping, changing their values has no effect. +*/ +#ifndef IUP_BUFFER /* IUP_SINGLE (defaut) or IUP_DOUBLE */ +#define IUP_BUFFER "BUFFER" +#endif +#ifndef IUP_STEREO /* IUP_NO (defaut) or IUP_YES */ +#define IUP_STEREO "STEREO" +#endif +#ifndef IUP_BUFFER_SIZE /* Number of bits if index mode */ +#define IUP_BUFFER_SIZE "BUFFER_SIZE" +#endif +#ifndef IUP_RED_SIZE /* Number of red bits */ +#define IUP_RED_SIZE "RED_SIZE" +#endif +#ifndef IUP_GREEN_SIZE /* Number of green bits */ +#define IUP_GREEN_SIZE "GREEN_SIZE" +#endif +#ifndef IUP_BLUE_SIZE /* Number of blue bits */ +#define IUP_BLUE_SIZE "BLUE_SIZE" +#endif +#ifndef IUP_ALPHA_SIZE /* Number of alpha bits */ +#define IUP_ALPHA_SIZE "ALPHA_SIZE" +#endif +#ifndef IUP_DEPTH_SIZE /* Number of bits in depth buffer */ +#define IUP_DEPTH_SIZE "DEPTH_SIZE" +#endif +#ifndef IUP_STENCIL_SIZE /* Number of bits in stencil buffer */ +#define IUP_STENCIL_SIZE "STENCIL_SIZE" +#endif +#ifndef IUP_ACCUM_RED_SIZE /* Number of red bits in accum. buffer */ +#define IUP_ACCUM_RED_SIZE "ACCUM_RED_SIZE" +#endif +#ifndef IUP_ACCUM_GREEN_SIZE /* Number of green bits in accum. buffer */ +#define IUP_ACCUM_GREEN_SIZE "ACCUM_GREEN_SIZE" +#endif +#ifndef IUP_ACCUM_BLUE_SIZE /* Number of blue bits in accum. buffer */ +#define IUP_ACCUM_BLUE_SIZE "ACCUM_BLUE_SIZE" +#endif +#ifndef IUP_ACCUM_ALPHA_SIZE /* Number of alpha bits in accum. buffer */ +#define IUP_ACCUM_ALPHA_SIZE "ACCUM_ALPHA_SIZE" +#endif + + +/* Attribute values */ +#ifndef IUP_DOUBLE +#define IUP_DOUBLE "DOUBLE" +#endif +#ifndef IUP_SINGLE +#define IUP_SINGLE "SINGLE" +#endif +#ifndef IUP_INDEX +#define IUP_INDEX "INDEX" +#endif +#ifndef IUP_RGBA +#define IUP_RGBA "RGBA" +#endif +#ifndef IUP_YES +#define IUP_YES "YES" +#endif +#ifndef IUP_NO +#define IUP_NO "NO" +#endif + +void IupGLCanvasOpen(void); + +Ihandle *IupGLCanvas(const char *action); + +void IupGLMakeCurrent(Ihandle* ih); +int IupGLIsCurrent(Ihandle* ih); +void IupGLSwapBuffers(Ihandle* ih); +void IupGLPalette(Ihandle* ih, int index, float r, float g, float b); +void IupGLUseFont(Ihandle* ih, int first, int count, int list_base); +void IupGLWait(int gl); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupim.h b/iup/include/iupim.h new file mode 100755 index 0000000..03b712c --- /dev/null +++ b/iup/include/iupim.h @@ -0,0 +1,27 @@ +/** \file + * \brief Utilities using IM + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPIM_H +#define __IUPIM_H + +#if defined(__cplusplus) +extern "C" { +#endif + +Ihandle* IupLoadImage(const char* file_name); +int IupSaveImage(Ihandle* ih, const char* file_name, const char* format); + +#ifdef __IM_IMAGE_H +imImage* IupGetNativeHandleImage(void* handle); +void* IupGetImageNativeHandle(imImage* image); +#endif + + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/iup/include/iupkey.h b/iup/include/iupkey.h new file mode 100755 index 0000000..b80c47e --- /dev/null +++ b/iup/include/iupkey.h @@ -0,0 +1,457 @@ +/** \file + * \brief Keyboard Keys definitions. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPKEY_H +#define __IUPKEY_H + +/* from 32 to 126, all character sets are equal, + the key code i the same as the character code. */ + +#define K_SP ' ' /* 32 (0x20) */ +#define K_exclam '!' /* 33 */ +#define K_quotedbl '\"' /* 34 */ +#define K_numbersign '#' /* 35 */ +#define K_dollar '$' /* 36 */ +#define K_percent '%' /* 37 */ +#define K_ampersand '&' /* 38 */ +#define K_apostrophe '\'' /* 39 */ +#define K_parentleft '(' /* 40 */ +#define K_parentright ')' /* 41 */ +#define K_asterisk '*' /* 42 */ +#define K_plus '+' /* 43 */ +#define K_comma ',' /* 44 */ +#define K_minus '-' /* 45 */ +#define K_period '.' /* 46 */ +#define K_slash '/' /* 47 */ +#define K_0 '0' /* 48 (0x30) */ +#define K_1 '1' /* 49 */ +#define K_2 '2' /* 50 */ +#define K_3 '3' /* 51 */ +#define K_4 '4' /* 52 */ +#define K_5 '5' /* 53 */ +#define K_6 '6' /* 54 */ +#define K_7 '7' /* 55 */ +#define K_8 '8' /* 56 */ +#define K_9 '9' /* 57 */ +#define K_colon ':' /* 58 */ +#define K_semicolon ';' /* 59 */ +#define K_less '<' /* 60 */ +#define K_equal '=' /* 61 */ +#define K_greater '>' /* 62 */ +#define K_question '?' /* 63 */ +#define K_at '@' /* 64 */ +#define K_A 'A' /* 65 (0x41) */ +#define K_B 'B' /* 66 */ +#define K_C 'C' /* 67 */ +#define K_D 'D' /* 68 */ +#define K_E 'E' /* 69 */ +#define K_F 'F' /* 70 */ +#define K_G 'G' /* 71 */ +#define K_H 'H' /* 72 */ +#define K_I 'I' /* 73 */ +#define K_J 'J' /* 74 */ +#define K_K 'K' /* 75 */ +#define K_L 'L' /* 76 */ +#define K_M 'M' /* 77 */ +#define K_N 'N' /* 78 */ +#define K_O 'O' /* 79 */ +#define K_P 'P' /* 80 */ +#define K_Q 'Q' /* 81 */ +#define K_R 'R' /* 82 */ +#define K_S 'S' /* 83 */ +#define K_T 'T' /* 84 */ +#define K_U 'U' /* 85 */ +#define K_V 'V' /* 86 */ +#define K_W 'W' /* 87 */ +#define K_X 'X' /* 88 */ +#define K_Y 'Y' /* 89 */ +#define K_Z 'Z' /* 90 */ +#define K_bracketleft '[' /* 91 */ +#define K_backslash '\\' /* 92 */ +#define K_bracketright ']' /* 93 */ +#define K_circum '^' /* 94 */ +#define K_underscore '_' /* 95 */ +#define K_grave '`' /* 96 */ +#define K_a 'a' /* 97 (0x61) */ +#define K_b 'b' /* 98 */ +#define K_c 'c' /* 99 */ +#define K_d 'd' /* 100 */ +#define K_e 'e' /* 101 */ +#define K_f 'f' /* 102 */ +#define K_g 'g' /* 103 */ +#define K_h 'h' /* 104 */ +#define K_i 'i' /* 105 */ +#define K_j 'j' /* 106 */ +#define K_k 'k' /* 107 */ +#define K_l 'l' /* 108 */ +#define K_m 'm' /* 109 */ +#define K_n 'n' /* 110 */ +#define K_o 'o' /* 111 */ +#define K_p 'p' /* 112 */ +#define K_q 'q' /* 113 */ +#define K_r 'r' /* 114 */ +#define K_s 's' /* 115 */ +#define K_t 't' /* 116 */ +#define K_u 'u' /* 117 */ +#define K_v 'v' /* 118 */ +#define K_w 'w' /* 119 */ +#define K_x 'x' /* 120 */ +#define K_y 'y' /* 121 */ +#define K_z 'z' /* 122 */ +#define K_braceleft '{' /* 123 */ +#define K_bar '|' /* 124 */ +#define K_braceright '}' /* 125 */ +#define K_tilde '~' /* 126 */ + +#define iup_isprint(_c) ((_c) > 31 && (_c) < 127) + +/* also define the escape sequences that have keys associated */ + +#define K_BS '\b' /* 8 */ +#define K_TAB '\t' /* 9 */ +#define K_LF '\n' /* 10 (0x0A) not a real key, is a combination of CR with a modifier, just to document */ +#define K_CR '\r' /* 13 (0x0D) */ + +/* backward compatible definitions */ + +#define K_quoteleft K_grave +#define K_quoteright K_apostrophe +#define isxkey iup_isXkey + +/* IUP Extended Key Codes, range start at 128 */ +/* Modifiers use 256 interval */ +/* These key code definitions are specific to IUP */ + +#define iup_isXkey(_c) ((_c) > 128) +#define iup_isShiftXkey(_c) (((_c) > 256) && ((_c) < 512)) +#define iup_isCtrlXkey(_c) (((_c) > 512) && ((_c) < 768)) +#define iup_isAltXkey(_c) (((_c) > 768) && ((_c) < 1024)) +#define iup_isSysXkey(_c) (((_c) > 1024) && ((_c) < 1280)) + +#define IUPxCODE(_c) ((_c) + 128) /* Normal (must be above 128) */ +#define IUPsxCODE(_c) ((_c) + 256) /* Shift (must have range to include the standard keys and the normal extended keys, so must be above 256 */ +#define IUPcxCODE(_c) ((_c) + 512) /* Ctrl */ +#define IUPmxCODE(_c) ((_c) + 768) /* Alt */ +#define IUPyxCODE(_c) ((_c) + 1024) /* Sys (Win or Apple) */ + +#define IUP_NUMMAXCODES 1280 /* 5*256=1280 Normal+Shift+Ctrl+Alt+Sys */ + +#define K_HOME IUPxCODE(1) +#define K_UP IUPxCODE(2) +#define K_PGUP IUPxCODE(3) +#define K_LEFT IUPxCODE(4) +#define K_MIDDLE IUPxCODE(5) +#define K_RIGHT IUPxCODE(6) +#define K_END IUPxCODE(7) +#define K_DOWN IUPxCODE(8) +#define K_PGDN IUPxCODE(9) +#define K_INS IUPxCODE(10) +#define K_DEL IUPxCODE(11) +#define K_PAUSE IUPxCODE(12) +#define K_ESC IUPxCODE(13) +#define K_ccedilla IUPxCODE(14) +#define K_F1 IUPxCODE(15) +#define K_F2 IUPxCODE(16) +#define K_F3 IUPxCODE(17) +#define K_F4 IUPxCODE(18) +#define K_F5 IUPxCODE(19) +#define K_F6 IUPxCODE(20) +#define K_F7 IUPxCODE(21) +#define K_F8 IUPxCODE(22) +#define K_F9 IUPxCODE(23) +#define K_F10 IUPxCODE(24) +#define K_F11 IUPxCODE(25) +#define K_F12 IUPxCODE(26) +#define K_Print IUPxCODE(27) +#define K_Menu IUPxCODE(28) + +#define K_acute IUPxCODE(29) /* no Shift/Ctrl/Alt */ + +#define K_sHOME IUPsxCODE(K_HOME ) +#define K_sUP IUPsxCODE(K_UP ) +#define K_sPGUP IUPsxCODE(K_PGUP ) +#define K_sLEFT IUPsxCODE(K_LEFT ) +#define K_sMIDDLE IUPsxCODE(K_MIDDLE ) +#define K_sRIGHT IUPsxCODE(K_RIGHT ) +#define K_sEND IUPsxCODE(K_END ) +#define K_sDOWN IUPsxCODE(K_DOWN ) +#define K_sPGDN IUPsxCODE(K_PGDN ) +#define K_sINS IUPsxCODE(K_INS ) +#define K_sDEL IUPsxCODE(K_DEL ) +#define K_sSP IUPsxCODE(K_SP ) +#define K_sTAB IUPsxCODE(K_TAB ) +#define K_sCR IUPsxCODE(K_CR ) +#define K_sBS IUPsxCODE(K_BS ) +#define K_sPAUSE IUPsxCODE(K_PAUSE ) +#define K_sESC IUPsxCODE(K_ESC ) +#define K_Ccedilla IUPsxCODE(K_ccedilla) +#define K_sF1 IUPsxCODE(K_F1 ) +#define K_sF2 IUPsxCODE(K_F2 ) +#define K_sF3 IUPsxCODE(K_F3 ) +#define K_sF4 IUPsxCODE(K_F4 ) +#define K_sF5 IUPsxCODE(K_F5 ) +#define K_sF6 IUPsxCODE(K_F6 ) +#define K_sF7 IUPsxCODE(K_F7 ) +#define K_sF8 IUPsxCODE(K_F8 ) +#define K_sF9 IUPsxCODE(K_F9 ) +#define K_sF10 IUPsxCODE(K_F10 ) +#define K_sF11 IUPsxCODE(K_F11 ) +#define K_sF12 IUPsxCODE(K_F12 ) +#define K_sPrint IUPsxCODE(K_Print ) +#define K_sMenu IUPsxCODE(K_Menu ) + +#define K_cHOME IUPcxCODE(K_HOME ) +#define K_cUP IUPcxCODE(K_UP ) +#define K_cPGUP IUPcxCODE(K_PGUP ) +#define K_cLEFT IUPcxCODE(K_LEFT ) +#define K_cMIDDLE IUPcxCODE(K_MIDDLE ) +#define K_cRIGHT IUPcxCODE(K_RIGHT ) +#define K_cEND IUPcxCODE(K_END ) +#define K_cDOWN IUPcxCODE(K_DOWN ) +#define K_cPGDN IUPcxCODE(K_PGDN ) +#define K_cINS IUPcxCODE(K_INS ) +#define K_cDEL IUPcxCODE(K_DEL ) +#define K_cSP IUPcxCODE(K_SP ) +#define K_cTAB IUPcxCODE(K_TAB ) +#define K_cCR IUPcxCODE(K_CR ) +#define K_cBS IUPcxCODE(K_BS ) +#define K_cPAUSE IUPcxCODE(K_PAUSE ) +#define K_cESC IUPcxCODE(K_ESC ) +#define K_cCcedilla IUPcxCODE(K_ccedilla) +#define K_cF1 IUPcxCODE(K_F1 ) +#define K_cF2 IUPcxCODE(K_F2 ) +#define K_cF3 IUPcxCODE(K_F3 ) +#define K_cF4 IUPcxCODE(K_F4 ) +#define K_cF5 IUPcxCODE(K_F5 ) +#define K_cF6 IUPcxCODE(K_F6 ) +#define K_cF7 IUPcxCODE(K_F7 ) +#define K_cF8 IUPcxCODE(K_F8 ) +#define K_cF9 IUPcxCODE(K_F9 ) +#define K_cF10 IUPcxCODE(K_F10 ) +#define K_cF11 IUPcxCODE(K_F11 ) +#define K_cF12 IUPcxCODE(K_F12 ) +#define K_cPrint IUPcxCODE(K_Print ) +#define K_cMenu IUPcxCODE(K_Menu ) + +#define K_mHOME IUPmxCODE(K_HOME ) +#define K_mUP IUPmxCODE(K_UP ) +#define K_mPGUP IUPmxCODE(K_PGUP ) +#define K_mLEFT IUPmxCODE(K_LEFT ) +#define K_mMIDDLE IUPmxCODE(K_MIDDLE ) +#define K_mRIGHT IUPmxCODE(K_RIGHT ) +#define K_mEND IUPmxCODE(K_END ) +#define K_mDOWN IUPmxCODE(K_DOWN ) +#define K_mPGDN IUPmxCODE(K_PGDN ) +#define K_mINS IUPmxCODE(K_INS ) +#define K_mDEL IUPmxCODE(K_DEL ) +#define K_mSP IUPmxCODE(K_SP ) +#define K_mTAB IUPmxCODE(K_TAB ) +#define K_mCR IUPmxCODE(K_CR ) +#define K_mBS IUPmxCODE(K_BS ) +#define K_mPAUSE IUPmxCODE(K_PAUSE ) +#define K_mESC IUPmxCODE(K_ESC ) +#define K_mCcedilla IUPmxCODE(K_ccedilla) +#define K_mF1 IUPmxCODE(K_F1 ) +#define K_mF2 IUPmxCODE(K_F2 ) +#define K_mF3 IUPmxCODE(K_F3 ) +#define K_mF4 IUPmxCODE(K_F4 ) +#define K_mF5 IUPmxCODE(K_F5 ) +#define K_mF6 IUPmxCODE(K_F6 ) +#define K_mF7 IUPmxCODE(K_F7 ) +#define K_mF8 IUPmxCODE(K_F8 ) +#define K_mF9 IUPmxCODE(K_F9 ) +#define K_mF10 IUPmxCODE(K_F10 ) +#define K_mF11 IUPmxCODE(K_F11 ) +#define K_mF12 IUPmxCODE(K_F12 ) +#define K_mPrint IUPmxCODE(K_Print ) +#define K_mMenu IUPmxCODE(K_Menu ) + +#define K_yHOME IUPyxCODE(K_HOME ) +#define K_yUP IUPyxCODE(K_UP ) +#define K_yPGUP IUPyxCODE(K_PGUP ) +#define K_yLEFT IUPyxCODE(K_LEFT ) +#define K_yMIDDLE IUPyxCODE(K_MIDDLE ) +#define K_yRIGHT IUPyxCODE(K_RIGHT ) +#define K_yEND IUPyxCODE(K_END ) +#define K_yDOWN IUPyxCODE(K_DOWN ) +#define K_yPGDN IUPyxCODE(K_PGDN ) +#define K_yINS IUPyxCODE(K_INS ) +#define K_yDEL IUPyxCODE(K_DEL ) +#define K_ySP IUPyxCODE(K_SP ) +#define K_yTAB IUPyxCODE(K_TAB ) +#define K_yCR IUPyxCODE(K_CR ) +#define K_yBS IUPyxCODE(K_BS ) +#define K_yPAUSE IUPyxCODE(K_PAUSE ) +#define K_yESC IUPyxCODE(K_ESC ) +#define K_yCcedilla IUPyxCODE(K_ccedilla) +#define K_yF1 IUPyxCODE(K_F1 ) +#define K_yF2 IUPyxCODE(K_F2 ) +#define K_yF3 IUPyxCODE(K_F3 ) +#define K_yF4 IUPyxCODE(K_F4 ) +#define K_yF5 IUPyxCODE(K_F5 ) +#define K_yF6 IUPyxCODE(K_F6 ) +#define K_yF7 IUPyxCODE(K_F7 ) +#define K_yF8 IUPyxCODE(K_F8 ) +#define K_yF9 IUPyxCODE(K_F9 ) +#define K_yF10 IUPyxCODE(K_F10 ) +#define K_yF11 IUPyxCODE(K_F11 ) +#define K_yF12 IUPyxCODE(K_F12 ) +#define K_yPrint IUPyxCODE(K_Print ) +#define K_yMenu IUPyxCODE(K_Menu ) + +#define K_sPlus IUPsxCODE(K_plus ) +#define K_sComma IUPsxCODE(K_comma ) +#define K_sMinus IUPsxCODE(K_minus ) +#define K_sPeriod IUPsxCODE(K_period ) +#define K_sSlash IUPsxCODE(K_slash ) +#define K_sAsterisk IUPsxCODE(K_asterisk) + +#define K_cA IUPcxCODE(K_A) +#define K_cB IUPcxCODE(K_B) +#define K_cC IUPcxCODE(K_C) +#define K_cD IUPcxCODE(K_D) +#define K_cE IUPcxCODE(K_E) +#define K_cF IUPcxCODE(K_F) +#define K_cG IUPcxCODE(K_G) +#define K_cH IUPcxCODE(K_H) +#define K_cI IUPcxCODE(K_I) +#define K_cJ IUPcxCODE(K_J) +#define K_cK IUPcxCODE(K_K) +#define K_cL IUPcxCODE(K_L) +#define K_cM IUPcxCODE(K_M) +#define K_cN IUPcxCODE(K_N) +#define K_cO IUPcxCODE(K_O) +#define K_cP IUPcxCODE(K_P) +#define K_cQ IUPcxCODE(K_Q) +#define K_cR IUPcxCODE(K_R) +#define K_cS IUPcxCODE(K_S) +#define K_cT IUPcxCODE(K_T) +#define K_cU IUPcxCODE(K_U) +#define K_cV IUPcxCODE(K_V) +#define K_cW IUPcxCODE(K_W) +#define K_cX IUPcxCODE(K_X) +#define K_cY IUPcxCODE(K_Y) +#define K_cZ IUPcxCODE(K_Z) +#define K_c1 IUPcxCODE(K_1) +#define K_c2 IUPcxCODE(K_2) +#define K_c3 IUPcxCODE(K_3) +#define K_c4 IUPcxCODE(K_4) +#define K_c5 IUPcxCODE(K_5) +#define K_c6 IUPcxCODE(K_6) +#define K_c7 IUPcxCODE(K_7) +#define K_c8 IUPcxCODE(K_8) +#define K_c9 IUPcxCODE(K_9) +#define K_c0 IUPcxCODE(K_0) +#define K_cPlus IUPcxCODE(K_plus ) +#define K_cComma IUPcxCODE(K_comma ) +#define K_cMinus IUPcxCODE(K_minus ) +#define K_cPeriod IUPcxCODE(K_period ) +#define K_cSlash IUPcxCODE(K_slash ) +#define K_cSemicolon IUPcxCODE(K_semicolon ) +#define K_cEqual IUPcxCODE(K_equal ) +#define K_cBracketleft IUPcxCODE(K_bracketleft ) +#define K_cBracketright IUPcxCODE(K_bracketright) +#define K_cBackslash IUPcxCODE(K_backslash ) +#define K_cAsterisk IUPcxCODE(K_asterisk ) + +#define K_mA IUPmxCODE(K_A) +#define K_mB IUPmxCODE(K_B) +#define K_mC IUPmxCODE(K_C) +#define K_mD IUPmxCODE(K_D) +#define K_mE IUPmxCODE(K_E) +#define K_mF IUPmxCODE(K_F) +#define K_mG IUPmxCODE(K_G) +#define K_mH IUPmxCODE(K_H) +#define K_mI IUPmxCODE(K_I) +#define K_mJ IUPmxCODE(K_J) +#define K_mK IUPmxCODE(K_K) +#define K_mL IUPmxCODE(K_L) +#define K_mM IUPmxCODE(K_M) +#define K_mN IUPmxCODE(K_N) +#define K_mO IUPmxCODE(K_O) +#define K_mP IUPmxCODE(K_P) +#define K_mQ IUPmxCODE(K_Q) +#define K_mR IUPmxCODE(K_R) +#define K_mS IUPmxCODE(K_S) +#define K_mT IUPmxCODE(K_T) +#define K_mU IUPmxCODE(K_U) +#define K_mV IUPmxCODE(K_V) +#define K_mW IUPmxCODE(K_W) +#define K_mX IUPmxCODE(K_X) +#define K_mY IUPmxCODE(K_Y) +#define K_mZ IUPmxCODE(K_Z) +#define K_m1 IUPmxCODE(K_1) +#define K_m2 IUPmxCODE(K_2) +#define K_m3 IUPmxCODE(K_3) +#define K_m4 IUPmxCODE(K_4) +#define K_m5 IUPmxCODE(K_5) +#define K_m6 IUPmxCODE(K_6) +#define K_m7 IUPmxCODE(K_7) +#define K_m8 IUPmxCODE(K_8) +#define K_m9 IUPmxCODE(K_9) +#define K_m0 IUPmxCODE(K_0) +#define K_mPlus IUPmxCODE(K_plus ) +#define K_mComma IUPmxCODE(K_comma ) +#define K_mMinus IUPmxCODE(K_minus ) +#define K_mPeriod IUPmxCODE(K_period ) +#define K_mSlash IUPmxCODE(K_slash ) +#define K_mSemicolon IUPmxCODE(K_semicolon ) +#define K_mEqual IUPmxCODE(K_equal ) +#define K_mBracketleft IUPmxCODE(K_bracketleft ) +#define K_mBracketright IUPmxCODE(K_bracketright) +#define K_mBackslash IUPmxCODE(K_backslash ) +#define K_mAsterisk IUPmxCODE(K_asterisk ) + +#define K_yA IUPyxCODE(K_A) +#define K_yB IUPyxCODE(K_B) +#define K_yC IUPyxCODE(K_C) +#define K_yD IUPyxCODE(K_D) +#define K_yE IUPyxCODE(K_E) +#define K_yF IUPyxCODE(K_F) +#define K_yG IUPyxCODE(K_G) +#define K_yH IUPyxCODE(K_H) +#define K_yI IUPyxCODE(K_I) +#define K_yJ IUPyxCODE(K_J) +#define K_yK IUPyxCODE(K_K) +#define K_yL IUPyxCODE(K_L) +#define K_yM IUPyxCODE(K_M) +#define K_yN IUPyxCODE(K_N) +#define K_yO IUPyxCODE(K_O) +#define K_yP IUPyxCODE(K_P) +#define K_yQ IUPyxCODE(K_Q) +#define K_yR IUPyxCODE(K_R) +#define K_yS IUPyxCODE(K_S) +#define K_yT IUPyxCODE(K_T) +#define K_yU IUPyxCODE(K_U) +#define K_yV IUPyxCODE(K_V) +#define K_yW IUPyxCODE(K_W) +#define K_yX IUPyxCODE(K_X) +#define K_yY IUPyxCODE(K_Y) +#define K_yZ IUPyxCODE(K_Z) +#define K_y1 IUPyxCODE(K_1) +#define K_y2 IUPyxCODE(K_2) +#define K_y3 IUPyxCODE(K_3) +#define K_y4 IUPyxCODE(K_4) +#define K_y5 IUPyxCODE(K_5) +#define K_y6 IUPyxCODE(K_6) +#define K_y7 IUPyxCODE(K_7) +#define K_y8 IUPyxCODE(K_8) +#define K_y9 IUPyxCODE(K_9) +#define K_y0 IUPyxCODE(K_0) +#define K_yPlus IUPyxCODE(K_plus ) +#define K_yComma IUPyxCODE(K_comma ) +#define K_yMinus IUPyxCODE(K_minus ) +#define K_yPeriod IUPyxCODE(K_period ) +#define K_ySlash IUPyxCODE(K_slash ) +#define K_ySemicolon IUPyxCODE(K_semicolon ) +#define K_yEqual IUPyxCODE(K_equal ) +#define K_yBracketleft IUPyxCODE(K_bracketleft ) +#define K_yBracketright IUPyxCODE(K_bracketright) +#define K_yBackslash IUPyxCODE(K_backslash ) +#define K_yAsterisk IUPyxCODE(K_asterisk ) + + +#endif diff --git a/iup/include/iuplua.h b/iup/include/iuplua.h new file mode 100755 index 0000000..dc660b5 --- /dev/null +++ b/iup/include/iuplua.h @@ -0,0 +1,41 @@ +/** \file + * \brief IUP Binding for Lua. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPLUA_H +#define __IUPLUA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LUA_NOOBJECT /* Lua 3 */ +int iuplua_open (void); +int iupkey_open (void); + +/* utilities */ +Ihandle* iuplua_checkihandle(int pos); +void iuplua_pushihandle(Ihandle *n); +int iuplua_dofile (char *filename); +#endif + +#ifdef LUA_TNONE /* Lua 5 */ +int iuplua_open(lua_State *L); +int iupkey_open(lua_State *L); +int iuplua_close(lua_State * L); + +/* utilities */ +Ihandle* iuplua_checkihandle(lua_State *L, int pos); +void iuplua_pushihandle(lua_State *L, Ihandle *n); +int iuplua_dofile(lua_State *L, const char *filename); +int iuplua_dostring(lua_State *L, const char *string, const char *chunk_name); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iuplua_pplot.h b/iup/include/iuplua_pplot.h new file mode 100755 index 0000000..522941b --- /dev/null +++ b/iup/include/iuplua_pplot.h @@ -0,0 +1,26 @@ +/** \file + * \brief iup_pplot Binding for Lua. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPLUA_PPLOT_H +#define __IUPLUA_PPLOT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LUA_NOOBJECT /* Lua 3 */ +int iup_pplotlua_open (void); +#endif + +#ifdef LUA_TNONE /* Lua 5 */ +int iup_pplotlua_open (lua_State * L); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupluacontrols.h b/iup/include/iupluacontrols.h new file mode 100755 index 0000000..174192e --- /dev/null +++ b/iup/include/iupluacontrols.h @@ -0,0 +1,27 @@ +/** \file + * \brief iupcontrols Binding for Lua. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPLUACONTROLS_H +#define __IUPLUACONTROLS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LUA_NOOBJECT /* Lua 3 */ +int iupcontrolslua_open (void); +#endif + +#ifdef LUA_TNONE /* Lua 5 */ +int iupcontrolslua_open (lua_State * L); +int iupcontrolslua_close(lua_State * L); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupluagl.h b/iup/include/iupluagl.h new file mode 100755 index 0000000..8b65f6b --- /dev/null +++ b/iup/include/iupluagl.h @@ -0,0 +1,26 @@ +/** \file + * \brief Binding of iupglcanvas to Lua. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPLUAGL_H +#define __IUPLUAGL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LUA_NOOBJECT /* Lua 3 */ +int iupgllua_open(void); +#endif + +#ifdef LUA_TNONE /* Lua 5 */ +int iupgllua_open (lua_State * L); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupluaim.h b/iup/include/iupluaim.h new file mode 100755 index 0000000..2544057 --- /dev/null +++ b/iup/include/iupluaim.h @@ -0,0 +1,26 @@ +/** \file + * \brief Bindig of iupim functions to Lua. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPLUAIM_H +#define __IUPLUAIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LUA_NOOBJECT /* Lua 3 */ +void iupimlua_open(void); +#endif + +#ifdef LUA_TNONE /* Lua 5 */ +int iupimlua_open(lua_State * L); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupluaole.h b/iup/include/iupluaole.h new file mode 100755 index 0000000..9a0ad08 --- /dev/null +++ b/iup/include/iupluaole.h @@ -0,0 +1,26 @@ +/** \file + * \brief Binding of iupolecontrol to Lua. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPLUAOLE_H +#define __IUPLUAOLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LUA_NOOBJECT /* Lua 3 */ +int iupolelua_open(void); +#endif + +#ifdef LUA_TNONE /* Lua 5 */ +int iupolelua_open (lua_State * L); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupmask.h b/iup/include/iupmask.h new file mode 100755 index 0000000..faf71d7 --- /dev/null +++ b/iup/include/iupmask.h @@ -0,0 +1,41 @@ +/** \file + * \brief iupmask functions. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_OLDMASK_H +#define __IUP_OLDMASK_H + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma message("Warning: Using OLD iupMask definitions, use the MASK attribute in IupText or IupMatrix.") + +/* OLD definitions, use the MASK attribute in IupText or IupMatrix */ +int iupmaskSet (Ihandle *h, const char *mask, int autofill, int casei); +int iupmaskSetInt (Ihandle *h, int autofill, int min , int max); +int iupmaskSetFloat(Ihandle *h, int autofill, float min , float max); +void iupmaskRemove (Ihandle *h); +int iupmaskCheck (Ihandle *h); +int iupmaskGet (Ihandle *h, char **val); +int iupmaskGetFloat (Ihandle *h, float *fval); +int iupmaskGetDouble(Ihandle *h, double *dval); +int iupmaskGetInt (Ihandle *h, int *ival); +int iupmaskMatSet (Ihandle *h, const char *mask, int autofill, int casei, int lin, int col); +int iupmaskMatSetInt (Ihandle *h, int autofill, int min, int max, int lin, int col); +int iupmaskMatSetFloat(Ihandle *h, int autofill, float min, float max, int lin, int col); +void iupmaskMatRemove (Ihandle *h, int lin, int col); +int iupmaskMatCheck (Ihandle *h, int lin, int col); +int iupmaskMatGet (Ihandle *h, char **val, int lin, int col); +int iupmaskMatGetFloat (Ihandle *h, float *fval, int lin, int col); +int iupmaskMatGetDouble(Ihandle *h, double *dval, int lin, int col); +int iupmaskMatGetInt (Ihandle *h, int *ival, int lin, int col); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupmatrix.h b/iup/include/iupmatrix.h new file mode 100755 index 0000000..1285b04 --- /dev/null +++ b/iup/include/iupmatrix.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupole.h b/iup/include/iupole.h new file mode 100755 index 0000000..8c7d4ba --- /dev/null +++ b/iup/include/iupole.h @@ -0,0 +1,24 @@ +/** \file + * \brief Ole control. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPOLE_H +#define __IUPOLE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +Ihandle *IupOleControl(const char* progid); + +int IupOleControlOpen(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/include/iupsbox.h b/iup/include/iupsbox.h new file mode 100755 index 0000000..5ae1901 --- /dev/null +++ b/iup/include/iupsbox.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupspin.h b/iup/include/iupspin.h new file mode 100755 index 0000000..5ae1901 --- /dev/null +++ b/iup/include/iupspin.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iuptabs.h b/iup/include/iuptabs.h new file mode 100755 index 0000000..5ae1901 --- /dev/null +++ b/iup/include/iuptabs.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iuptree.h b/iup/include/iuptree.h new file mode 100755 index 0000000..1285b04 --- /dev/null +++ b/iup/include/iuptree.h @@ -0,0 +1 @@ +#include diff --git a/iup/include/iupval.h b/iup/include/iupval.h new file mode 100755 index 0000000..5ae1901 --- /dev/null +++ b/iup/include/iupval.h @@ -0,0 +1 @@ +#include diff --git a/iup/mak.vc8/iup.sln b/iup/mak.vc8/iup.sln new file mode 100755 index 0000000..c0fe994 --- /dev/null +++ b/iup/mak.vc8/iup.sln @@ -0,0 +1,347 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcore", "iupcore.vcproj", "{2C7E83B9-7FE8-432A-97BA-FCF4D0728408}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgtk", "iupgtk.vcproj", "{2C7E83B9-7FE8-5555-97BA-FCF4D0728408}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupmot", "iupmot.vcproj", "{2C7E83B9-1234-432A-97BA-FCF4D0728408}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptest", "iuptest.vcproj", "{2F92EC58-D94C-40BF-8C82-77607C72E1E3}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptestgtk", "iuptestgtk.vcproj", "{2F92EC58-1234-40BF-5678-77607C72E1E3}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupwin", "iupwin.vcproj", "{2C7E83B9-123A-BCDF-97BA-FCF4D0728408}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgl", "iupgl.vcproj", "{E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcontrols", "iupcontrols.vcproj", "{5EEFE977-C56D-462F-BDEE-12A5452EB8CC}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iup_pplot", "iup_pplot.vcproj", "{5A42018B-95AC-A789-E4E4-59A692649DCA}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupole", "iupole.vcproj", "{0C80BBEE-1B00-4567-1234-067292C84EDB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupimglib", "iupimglib.vcproj", "{E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcd", "iupcd.vcproj", "{BE7472E1-E76E-4969-A35F-054614F5884E}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupim", "iupim.vcproj", "{E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3", "iuplua3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3_exe", "iupluaexe3.vcproj", "{A60D658D-766C-40DB-BAFF-59AB884D86FB}" + ProjectSection(ProjectDependencies) = postProject + {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {1EBC7A53-4677-4C3A-8DFF-269001F17D85} + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5", "iuplua5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5_exe", "iupluaexe5.vcproj", "{A60D658D-766C-40DB-BAE4-59AB884D86FB}" + ProjectSection(ProjectDependencies) = postProject + {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985} + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} + {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85} + {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85} + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} + {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {B4823266-DF8C-4EFB-91C0-C7688C234EAC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ledc", "ledc.vcproj", "{0F789DF8-22CC-4392-98DB-AC3960FAD4EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupview", "iupview.vcproj", "{2F92EC58-D94C-40BF-4444-77607C72E1E3}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim5", "iupluaim5.vcproj", "{1EBC7A53-4677-ADF1-8D4A-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim3", "iupluaim3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-269001F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols5", "iupluacontrols5.vcproj", "{1EBC7A53-4677-75D7-8D4A-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols3", "iupluacontrols3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl5", "iupluagl5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301157985}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl3", "iupluagl3.vcproj", "{1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole3", "iupluaole3.vcproj", "{1EBC7A53-33FF-7890-7890-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole5", "iupluaole5.vcproj", "{1EBC7A53-4677-5555-2222-49D301157985}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot5", "iuplua_pplot5.vcproj", "{1EBC7A53-4677-AAAA-1234-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot3", "iuplua_pplot3.vcproj", "{1EBC7A53-4677-1234-DDDD-49DFF4417D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd3", "iupluacd3.vcproj", "{B4823266-DF8C-4EFB-91C0-C7E78C234EAC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd5", "iupluacd5.vcproj", "{B4823266-DF8C-4EFB-91C0-C7688C234EAC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua5", "Lua5", "{1CBEAA34-BA34-497D-A775-B9AF6F905696}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua3", "Lua3", "{11041D08-354A-4300-9624-41277E67DE34}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaimglib5", "iupluaimglib5.vcproj", "{1EBC7A53-4677-FFFF-1234-49D301F17D85}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{FC52B7B5-744E-45D6-815C-3502F9D965E7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsample", "iupsample.vcproj", "{9462FDEA-3E53-4250-8710-DD50AF48607C}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsamplegtk", "iupsamplegtk.vcproj", "{C684B76D-52EC-49CE-84F2-B031509419A5}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupviewgtk", "iupviewgtk.vcproj", "{E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5gtk_exe", "iupluaexe5gtk.vcproj", "{389DF3C9-A628-4F6D-8C52-8924FA01DE66}" + ProjectSection(ProjectDependencies) = postProject + {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985} + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} + {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85} + {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85} + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32 + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32 + {2C7E83B9-1234-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32 + {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32 + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32 + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.ActiveCfg = Debug|Win32 + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.Build.0 = Debug|Win32 + {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.ActiveCfg = Debug|Win32 + {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.Build.0 = Debug|Win32 + {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.ActiveCfg = Debug|Win32 + {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.Build.0 = Debug|Win32 + {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32 + {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.ActiveCfg = Debug|Win32 + {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.Build.0 = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32 + {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32 + {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32 + {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.Build.0 = Debug|Win32 + {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.Build.0 = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.ActiveCfg = Debug|Win32 + {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.Build.0 = Debug|Win32 + {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.ActiveCfg = Debug|Win32 + {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.Build.0 = Debug|Win32 + {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.ActiveCfg = Debug|Win32 + {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.Build.0 = Debug|Win32 + {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.ActiveCfg = Debug|Win32 + {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.Build.0 = Debug|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2C7E83B9-1234-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2F92EC58-1234-40BF-5678-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {2F92EC58-D94C-40BF-8C82-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {9462FDEA-3E53-4250-8710-DD50AF48607C} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {C684B76D-52EC-49CE-84F2-B031509419A5} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {A60D658D-766C-40DB-BAFF-59AB884D86FB} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-33FF-7890-7890-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-1234-DDDD-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34} + {B4823266-DF8C-4EFB-91C0-C7E78C234EAC} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {A60D658D-766C-40DB-BAE4-59AB884D86FB} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-5555-2222-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-FFFF-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {389DF3C9-A628-4F6D-8C52-8924FA01DE66} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection +EndGlobal diff --git a/iup/mak.vc8/iup_pplot.vcproj b/iup/mak.vc8/iup_pplot.vcproj new file mode 100755 index 0000000..0a4e7a2 --- /dev/null +++ b/iup/mak.vc8/iup_pplot.vcproj @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupcd.vcproj b/iup/mak.vc8/iupcd.vcproj new file mode 100755 index 0000000..8b4fcf2 --- /dev/null +++ b/iup/mak.vc8/iupcd.vcproj @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupcontrols.vcproj b/iup/mak.vc8/iupcontrols.vcproj new file mode 100755 index 0000000..a780f89 --- /dev/null +++ b/iup/mak.vc8/iupcontrols.vcproj @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupcore.vcproj b/iup/mak.vc8/iupcore.vcproj new file mode 100755 index 0000000..4b5b4a3 --- /dev/null +++ b/iup/mak.vc8/iupcore.vcproj @@ -0,0 +1,600 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupgl.vcproj b/iup/mak.vc8/iupgl.vcproj new file mode 100755 index 0000000..3cdeb89 --- /dev/null +++ b/iup/mak.vc8/iupgl.vcproj @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupgtk.vcproj b/iup/mak.vc8/iupgtk.vcproj new file mode 100755 index 0000000..5d0a8e2 --- /dev/null +++ b/iup/mak.vc8/iupgtk.vcproj @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupim.vcproj b/iup/mak.vc8/iupim.vcproj new file mode 100755 index 0000000..62a26b2 --- /dev/null +++ b/iup/mak.vc8/iupim.vcproj @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupimglib.vcproj b/iup/mak.vc8/iupimglib.vcproj new file mode 100755 index 0000000..17711a3 --- /dev/null +++ b/iup/mak.vc8/iupimglib.vcproj @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iuplua3.vcproj b/iup/mak.vc8/iuplua3.vcproj new file mode 100755 index 0000000..2e5e78f --- /dev/null +++ b/iup/mak.vc8/iuplua3.vcproj @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iuplua5.vcproj b/iup/mak.vc8/iuplua5.vcproj new file mode 100755 index 0000000..0c62f76 --- /dev/null +++ b/iup/mak.vc8/iuplua5.vcproj @@ -0,0 +1,462 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iuplua_pplot3.vcproj b/iup/mak.vc8/iuplua_pplot3.vcproj new file mode 100755 index 0000000..810f451 --- /dev/null +++ b/iup/mak.vc8/iuplua_pplot3.vcproj @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iuplua_pplot5.vcproj b/iup/mak.vc8/iuplua_pplot5.vcproj new file mode 100755 index 0000000..95b5d91 --- /dev/null +++ b/iup/mak.vc8/iuplua_pplot5.vcproj @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluacd3.vcproj b/iup/mak.vc8/iupluacd3.vcproj new file mode 100755 index 0000000..0ef35f5 --- /dev/null +++ b/iup/mak.vc8/iupluacd3.vcproj @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluacd5.vcproj b/iup/mak.vc8/iupluacd5.vcproj new file mode 100755 index 0000000..118f1a4 --- /dev/null +++ b/iup/mak.vc8/iupluacd5.vcproj @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluacontrols3.vcproj b/iup/mak.vc8/iupluacontrols3.vcproj new file mode 100755 index 0000000..d482502 --- /dev/null +++ b/iup/mak.vc8/iupluacontrols3.vcproj @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluacontrols5.vcproj b/iup/mak.vc8/iupluacontrols5.vcproj new file mode 100755 index 0000000..2458549 --- /dev/null +++ b/iup/mak.vc8/iupluacontrols5.vcproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaexe3.vcproj b/iup/mak.vc8/iupluaexe3.vcproj new file mode 100755 index 0000000..d63e803 --- /dev/null +++ b/iup/mak.vc8/iupluaexe3.vcproj @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaexe5.vcproj b/iup/mak.vc8/iupluaexe5.vcproj new file mode 100755 index 0000000..854191e --- /dev/null +++ b/iup/mak.vc8/iupluaexe5.vcproj @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaexe5gtk.vcproj b/iup/mak.vc8/iupluaexe5gtk.vcproj new file mode 100755 index 0000000..4d729fa --- /dev/null +++ b/iup/mak.vc8/iupluaexe5gtk.vcproj @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluagl3.vcproj b/iup/mak.vc8/iupluagl3.vcproj new file mode 100755 index 0000000..ccf7465 --- /dev/null +++ b/iup/mak.vc8/iupluagl3.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluagl5.vcproj b/iup/mak.vc8/iupluagl5.vcproj new file mode 100755 index 0000000..12822d6 --- /dev/null +++ b/iup/mak.vc8/iupluagl5.vcproj @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaim3.vcproj b/iup/mak.vc8/iupluaim3.vcproj new file mode 100755 index 0000000..f928818 --- /dev/null +++ b/iup/mak.vc8/iupluaim3.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaim5.vcproj b/iup/mak.vc8/iupluaim5.vcproj new file mode 100755 index 0000000..e596071 --- /dev/null +++ b/iup/mak.vc8/iupluaim5.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaimglib5.vcproj b/iup/mak.vc8/iupluaimglib5.vcproj new file mode 100755 index 0000000..1a09336 --- /dev/null +++ b/iup/mak.vc8/iupluaimglib5.vcproj @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaole3.vcproj b/iup/mak.vc8/iupluaole3.vcproj new file mode 100755 index 0000000..f37e980 --- /dev/null +++ b/iup/mak.vc8/iupluaole3.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupluaole5.vcproj b/iup/mak.vc8/iupluaole5.vcproj new file mode 100755 index 0000000..c8abb2f --- /dev/null +++ b/iup/mak.vc8/iupluaole5.vcproj @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupmot.vcproj b/iup/mak.vc8/iupmot.vcproj new file mode 100755 index 0000000..aedd67e --- /dev/null +++ b/iup/mak.vc8/iupmot.vcproj @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupole.vcproj b/iup/mak.vc8/iupole.vcproj new file mode 100755 index 0000000..f6afc87 --- /dev/null +++ b/iup/mak.vc8/iupole.vcproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupsample.vcproj b/iup/mak.vc8/iupsample.vcproj new file mode 100755 index 0000000..bddc4f6 --- /dev/null +++ b/iup/mak.vc8/iupsample.vcproj @@ -0,0 +1,1172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupsamplegtk.vcproj b/iup/mak.vc8/iupsamplegtk.vcproj new file mode 100755 index 0000000..b4792dd --- /dev/null +++ b/iup/mak.vc8/iupsamplegtk.vcproj @@ -0,0 +1,791 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iuptest.vcproj b/iup/mak.vc8/iuptest.vcproj new file mode 100755 index 0000000..375d83f --- /dev/null +++ b/iup/mak.vc8/iuptest.vcproj @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iuptestgtk.vcproj b/iup/mak.vc8/iuptestgtk.vcproj new file mode 100755 index 0000000..46d9e49 --- /dev/null +++ b/iup/mak.vc8/iuptestgtk.vcproj @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupview.vcproj b/iup/mak.vc8/iupview.vcproj new file mode 100755 index 0000000..9a61127 --- /dev/null +++ b/iup/mak.vc8/iupview.vcproj @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupviewgtk.vcproj b/iup/mak.vc8/iupviewgtk.vcproj new file mode 100755 index 0000000..9276b02 --- /dev/null +++ b/iup/mak.vc8/iupviewgtk.vcproj @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/iupwin.vcproj b/iup/mak.vc8/iupwin.vcproj new file mode 100755 index 0000000..c1e2434 --- /dev/null +++ b/iup/mak.vc8/iupwin.vcproj @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc8/ledc.vcproj b/iup/mak.vc8/ledc.vcproj new file mode 100755 index 0000000..766db48 --- /dev/null +++ b/iup/mak.vc8/ledc.vcproj @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iup.sln b/iup/mak.vc9/iup.sln new file mode 100755 index 0000000..898c75f --- /dev/null +++ b/iup/mak.vc9/iup.sln @@ -0,0 +1,347 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcore", "iupcore.vcproj", "{2C7E83B9-7FE8-432A-97BA-FCF4D0728408}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgtk", "iupgtk.vcproj", "{2C7E83B9-7FE8-5555-97BA-FCF4D0728408}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupmot", "iupmot.vcproj", "{2C7E83B9-1234-432A-97BA-FCF4D0728408}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptest", "iuptest.vcproj", "{2F92EC58-D94C-40BF-8C82-77607C72E1E3}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuptestgtk", "iuptestgtk.vcproj", "{2F92EC58-1234-40BF-5678-77607C72E1E3}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupwin", "iupwin.vcproj", "{2C7E83B9-123A-BCDF-97BA-FCF4D0728408}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupgl", "iupgl.vcproj", "{E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcontrols", "iupcontrols.vcproj", "{5EEFE977-C56D-462F-BDEE-12A5452EB8CC}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iup_pplot", "iup_pplot.vcproj", "{5A42018B-95AC-A789-E4E4-59A692649DCA}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupole", "iupole.vcproj", "{0C80BBEE-1B00-4567-1234-067292C84EDB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupimglib", "iupimglib.vcproj", "{E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupcd", "iupcd.vcproj", "{BE7472E1-E76E-4969-A35F-054614F5884E}" + ProjectSection(ProjectDependencies) = postProject + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupim", "iupim.vcproj", "{E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3", "iuplua3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua3_exe", "iupluaexe3.vcproj", "{A60D658D-766C-40DB-BAFF-59AB884D86FB}" + ProjectSection(ProjectDependencies) = postProject + {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {1EBC7A53-4677-4C3A-8DFF-269001F17D85} + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5", "iuplua5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5_exe", "iupluaexe5.vcproj", "{A60D658D-766C-40DB-BAE4-59AB884D86FB}" + ProjectSection(ProjectDependencies) = postProject + {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985} + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} + {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85} + {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85} + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} + {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {B4823266-DF8C-4EFB-91C0-C7688C234EAC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ledc", "ledc.vcproj", "{0F789DF8-22CC-4392-98DB-AC3960FAD4EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupview", "iupview.vcproj", "{2F92EC58-D94C-40BF-4444-77607C72E1E3}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim5", "iupluaim5.vcproj", "{1EBC7A53-4677-ADF1-8D4A-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaim3", "iupluaim3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-269001F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols5", "iupluacontrols5.vcproj", "{1EBC7A53-4677-75D7-8D4A-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacontrols3", "iupluacontrols3.vcproj", "{1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl5", "iupluagl5.vcproj", "{1EBC7A53-4677-4C3A-8D4A-49D301157985}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluagl3", "iupluagl3.vcproj", "{1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole3", "iupluaole3.vcproj", "{1EBC7A53-33FF-7890-7890-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaole5", "iupluaole5.vcproj", "{1EBC7A53-4677-5555-2222-49D301157985}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot5", "iuplua_pplot5.vcproj", "{1EBC7A53-4677-AAAA-1234-49D301F17D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua_pplot3", "iuplua_pplot3.vcproj", "{1EBC7A53-4677-1234-DDDD-49DFF4417D85}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd3", "iupluacd3.vcproj", "{B4823266-DF8C-4EFB-91C0-C7E78C234EAC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluacd5", "iupluacd5.vcproj", "{B4823266-DF8C-4EFB-91C0-C7688C234EAC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua5", "Lua5", "{1CBEAA34-BA34-497D-A775-B9AF6F905696}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lua3", "Lua3", "{11041D08-354A-4300-9624-41277E67DE34}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupluaimglib5", "iupluaimglib5.vcproj", "{1EBC7A53-4677-FFFF-1234-49D301F17D85}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{FC52B7B5-744E-45D6-815C-3502F9D965E7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsample", "iupsample.vcproj", "{9462FDEA-3E53-4250-8710-DD50AF48607C}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupsamplegtk", "iupsamplegtk.vcproj", "{C684B76D-52EC-49CE-84F2-B031509419A5}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iupviewgtk", "iupviewgtk.vcproj", "{E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}" + ProjectSection(ProjectDependencies) = postProject + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iuplua5gtk_exe", "iupluaexe5gtk.vcproj", "{389DF3C9-A628-4F6D-8C52-8924FA01DE66}" + ProjectSection(ProjectDependencies) = postProject + {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1EBC7A53-4677-4C3A-8D4A-49D301157985} + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} + {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1EBC7A53-4677-AAAA-1234-49D301F17D85} + {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1EBC7A53-4677-75D7-8D4A-49D301F17D85} + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} = {5EEFE977-C56D-462F-BDEE-12A5452EB8CC} + {5A42018B-95AC-A789-E4E4-59A692649DCA} = {5A42018B-95AC-A789-E4E4-59A692649DCA} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} + {BE7472E1-E76E-4969-A35F-054614F5884E} = {BE7472E1-E76E-4969-A35F-054614F5884E} + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA} + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} = {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32 + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32 + {2C7E83B9-1234-432A-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-D94C-40BF-8C82-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32 + {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-1234-40BF-5678-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32 + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408}.Debug|Win32.Build.0 = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-2509ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32 + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.ActiveCfg = Debug|Win32 + {5EEFE977-C56D-462F-BDEE-12A5452EB8CC}.Debug|Win32.Build.0 = Debug|Win32 + {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.ActiveCfg = Debug|Win32 + {5A42018B-95AC-A789-E4E4-59A692649DCA}.Debug|Win32.Build.0 = Debug|Win32 + {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.ActiveCfg = Debug|Win32 + {0C80BBEE-1B00-4567-1234-067292C84EDB}.Debug|Win32.Build.0 = Debug|Win32 + {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {E251B4F4-0B0A-482B-BB33-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32 + {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.ActiveCfg = Debug|Win32 + {BE7472E1-E76E-4969-A35F-054614F5884E}.Debug|Win32.Build.0 = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {E251B4F4-0B0A-482B-BA18-1234ADC4B6AA}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32 + {A60D658D-766C-40DB-BAFF-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.ActiveCfg = Debug|Win32 + {A60D658D-766C-40DB-BAE4-59AB884D86FB}.Debug|Win32.Build.0 = Debug|Win32 + {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {0F789DF8-22CC-4392-98DB-AC3960FAD4EA}.Debug|Win32.Build.0 = Debug|Win32 + {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F92EC58-D94C-40BF-4444-77607C72E1E3}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-269001F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-75D7-8D4A-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-4C3A-8D4A-49D301157985}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-33FF-7890-7890-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-5555-2222-49D301157985}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-AAAA-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-1234-DDDD-49DFF4417D85}.Debug|Win32.Build.0 = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7E78C234EAC}.Debug|Win32.Build.0 = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.ActiveCfg = Debug|Win32 + {B4823266-DF8C-4EFB-91C0-C7688C234EAC}.Debug|Win32.Build.0 = Debug|Win32 + {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.ActiveCfg = Debug|Win32 + {1EBC7A53-4677-FFFF-1234-49D301F17D85}.Debug|Win32.Build.0 = Debug|Win32 + {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.ActiveCfg = Debug|Win32 + {9462FDEA-3E53-4250-8710-DD50AF48607C}.Debug|Win32.Build.0 = Debug|Win32 + {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.ActiveCfg = Debug|Win32 + {C684B76D-52EC-49CE-84F2-B031509419A5}.Debug|Win32.Build.0 = Debug|Win32 + {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.ActiveCfg = Debug|Win32 + {E7D19356-B0AB-44AD-ACCB-5FFFCC4837BE}.Debug|Win32.Build.0 = Debug|Win32 + {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.ActiveCfg = Debug|Win32 + {389DF3C9-A628-4F6D-8C52-8924FA01DE66}.Debug|Win32.Build.0 = Debug|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2C7E83B9-7FE8-5555-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2C7E83B9-1234-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2C7E83B9-123A-BCDF-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2C7E83B9-7FE8-432A-97BA-FCF4D0728408} = {B7B3CB79-CA94-4ED3-9DCA-EC12458C2EBD} + {2F92EC58-1234-40BF-5678-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {2F92EC58-D94C-40BF-8C82-77607C72E1E3} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {9462FDEA-3E53-4250-8710-DD50AF48607C} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {C684B76D-52EC-49CE-84F2-B031509419A5} = {FC52B7B5-744E-45D6-815C-3502F9D965E7} + {A60D658D-766C-40DB-BAFF-59AB884D86FB} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-4C3A-8DFF-269001F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-4C3A-8DFF-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-33FF-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-33FF-7890-7890-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-1234-DDDD-49DFF4417D85} = {11041D08-354A-4300-9624-41277E67DE34} + {B4823266-DF8C-4EFB-91C0-C7E78C234EAC} = {11041D08-354A-4300-9624-41277E67DE34} + {1EBC7A53-4677-4C3A-8DFF-49D301F17D85} = {11041D08-354A-4300-9624-41277E67DE34} + {A60D658D-766C-40DB-BAE4-59AB884D86FB} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-ADF1-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-75D7-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-4C3A-8D4A-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-5555-2222-49D301157985} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-AAAA-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {B4823266-DF8C-4EFB-91C0-C7688C234EAC} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-4C3A-8D4A-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {1EBC7A53-4677-FFFF-1234-49D301F17D85} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + {389DF3C9-A628-4F6D-8C52-8924FA01DE66} = {1CBEAA34-BA34-497D-A775-B9AF6F905696} + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection + GlobalSection(DevPartner) = postSolution + EndGlobalSection +EndGlobal diff --git a/iup/mak.vc9/iup_pplot.vcproj b/iup/mak.vc9/iup_pplot.vcproj new file mode 100755 index 0000000..8887000 --- /dev/null +++ b/iup/mak.vc9/iup_pplot.vcproj @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupcd.vcproj b/iup/mak.vc9/iupcd.vcproj new file mode 100755 index 0000000..ddc990f --- /dev/null +++ b/iup/mak.vc9/iupcd.vcproj @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupcontrols.vcproj b/iup/mak.vc9/iupcontrols.vcproj new file mode 100755 index 0000000..6a452af --- /dev/null +++ b/iup/mak.vc9/iupcontrols.vcproj @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupcore.vcproj b/iup/mak.vc9/iupcore.vcproj new file mode 100755 index 0000000..fbe0017 --- /dev/null +++ b/iup/mak.vc9/iupcore.vcproj @@ -0,0 +1,600 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupgl.vcproj b/iup/mak.vc9/iupgl.vcproj new file mode 100755 index 0000000..e8d7b71 --- /dev/null +++ b/iup/mak.vc9/iupgl.vcproj @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupgtk.vcproj b/iup/mak.vc9/iupgtk.vcproj new file mode 100755 index 0000000..17281f1 --- /dev/null +++ b/iup/mak.vc9/iupgtk.vcproj @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupim.vcproj b/iup/mak.vc9/iupim.vcproj new file mode 100755 index 0000000..103a318 --- /dev/null +++ b/iup/mak.vc9/iupim.vcproj @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupimglib.vcproj b/iup/mak.vc9/iupimglib.vcproj new file mode 100755 index 0000000..0a21853 --- /dev/null +++ b/iup/mak.vc9/iupimglib.vcproj @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iuplua3.vcproj b/iup/mak.vc9/iuplua3.vcproj new file mode 100755 index 0000000..9993c1c --- /dev/null +++ b/iup/mak.vc9/iuplua3.vcproj @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iuplua5.vcproj b/iup/mak.vc9/iuplua5.vcproj new file mode 100755 index 0000000..17d9a55 --- /dev/null +++ b/iup/mak.vc9/iuplua5.vcproj @@ -0,0 +1,470 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iuplua_pplot3.vcproj b/iup/mak.vc9/iuplua_pplot3.vcproj new file mode 100755 index 0000000..9965d01 --- /dev/null +++ b/iup/mak.vc9/iuplua_pplot3.vcproj @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iuplua_pplot5.vcproj b/iup/mak.vc9/iuplua_pplot5.vcproj new file mode 100755 index 0000000..0666045 --- /dev/null +++ b/iup/mak.vc9/iuplua_pplot5.vcproj @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluacd3.vcproj b/iup/mak.vc9/iupluacd3.vcproj new file mode 100755 index 0000000..59a0d02 --- /dev/null +++ b/iup/mak.vc9/iupluacd3.vcproj @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluacd5.vcproj b/iup/mak.vc9/iupluacd5.vcproj new file mode 100755 index 0000000..83aeede --- /dev/null +++ b/iup/mak.vc9/iupluacd5.vcproj @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluacontrols3.vcproj b/iup/mak.vc9/iupluacontrols3.vcproj new file mode 100755 index 0000000..b2babd2 --- /dev/null +++ b/iup/mak.vc9/iupluacontrols3.vcproj @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluacontrols5.vcproj b/iup/mak.vc9/iupluacontrols5.vcproj new file mode 100755 index 0000000..bc1d6fe --- /dev/null +++ b/iup/mak.vc9/iupluacontrols5.vcproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaexe3.vcproj b/iup/mak.vc9/iupluaexe3.vcproj new file mode 100755 index 0000000..3ed6105 --- /dev/null +++ b/iup/mak.vc9/iupluaexe3.vcproj @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaexe5.vcproj b/iup/mak.vc9/iupluaexe5.vcproj new file mode 100755 index 0000000..db6804a --- /dev/null +++ b/iup/mak.vc9/iupluaexe5.vcproj @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaexe5gtk.vcproj b/iup/mak.vc9/iupluaexe5gtk.vcproj new file mode 100755 index 0000000..038790d --- /dev/null +++ b/iup/mak.vc9/iupluaexe5gtk.vcproj @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluagl3.vcproj b/iup/mak.vc9/iupluagl3.vcproj new file mode 100755 index 0000000..f920704 --- /dev/null +++ b/iup/mak.vc9/iupluagl3.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluagl5.vcproj b/iup/mak.vc9/iupluagl5.vcproj new file mode 100755 index 0000000..d8d08e4 --- /dev/null +++ b/iup/mak.vc9/iupluagl5.vcproj @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaim3.vcproj b/iup/mak.vc9/iupluaim3.vcproj new file mode 100755 index 0000000..ee5ce8e --- /dev/null +++ b/iup/mak.vc9/iupluaim3.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaim5.vcproj b/iup/mak.vc9/iupluaim5.vcproj new file mode 100755 index 0000000..f5c7a79 --- /dev/null +++ b/iup/mak.vc9/iupluaim5.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaimglib5.vcproj b/iup/mak.vc9/iupluaimglib5.vcproj new file mode 100755 index 0000000..8dc8a4d --- /dev/null +++ b/iup/mak.vc9/iupluaimglib5.vcproj @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaole3.vcproj b/iup/mak.vc9/iupluaole3.vcproj new file mode 100755 index 0000000..dc60ae0 --- /dev/null +++ b/iup/mak.vc9/iupluaole3.vcproj @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupluaole5.vcproj b/iup/mak.vc9/iupluaole5.vcproj new file mode 100755 index 0000000..bd86330 --- /dev/null +++ b/iup/mak.vc9/iupluaole5.vcproj @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupmot.vcproj b/iup/mak.vc9/iupmot.vcproj new file mode 100755 index 0000000..9bbfa5c --- /dev/null +++ b/iup/mak.vc9/iupmot.vcproj @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupole.vcproj b/iup/mak.vc9/iupole.vcproj new file mode 100755 index 0000000..c1277a5 --- /dev/null +++ b/iup/mak.vc9/iupole.vcproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupsample.vcproj b/iup/mak.vc9/iupsample.vcproj new file mode 100755 index 0000000..144f3ba --- /dev/null +++ b/iup/mak.vc9/iupsample.vcproj @@ -0,0 +1,1179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupsamplegtk.vcproj b/iup/mak.vc9/iupsamplegtk.vcproj new file mode 100755 index 0000000..24da672 --- /dev/null +++ b/iup/mak.vc9/iupsamplegtk.vcproj @@ -0,0 +1,798 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iuptest.vcproj b/iup/mak.vc9/iuptest.vcproj new file mode 100755 index 0000000..213431c --- /dev/null +++ b/iup/mak.vc9/iuptest.vcproj @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iuptestgtk.vcproj b/iup/mak.vc9/iuptestgtk.vcproj new file mode 100755 index 0000000..4cbc9da --- /dev/null +++ b/iup/mak.vc9/iuptestgtk.vcproj @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupview.vcproj b/iup/mak.vc9/iupview.vcproj new file mode 100755 index 0000000..440fbde --- /dev/null +++ b/iup/mak.vc9/iupview.vcproj @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupviewgtk.vcproj b/iup/mak.vc9/iupviewgtk.vcproj new file mode 100755 index 0000000..e622956 --- /dev/null +++ b/iup/mak.vc9/iupviewgtk.vcproj @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/iupwin.vcproj b/iup/mak.vc9/iupwin.vcproj new file mode 100755 index 0000000..15578a9 --- /dev/null +++ b/iup/mak.vc9/iupwin.vcproj @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/mak.vc9/ledc.vcproj b/iup/mak.vc9/ledc.vcproj new file mode 100755 index 0000000..8925c10 --- /dev/null +++ b/iup/mak.vc9/ledc.vcproj @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iup/make_uname b/iup/make_uname new file mode 100755 index 0000000..2f0a48f --- /dev/null +++ b/iup/make_uname @@ -0,0 +1,49 @@ +#This builds all the libraries for 1 uname + +cd src +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srccd +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srccontrols +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srcgl +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srcpplot +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srcim +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srcimglib +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srcledc +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srcview +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +#cd srclua3 +#./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +#cd .. + +cd srclua5 +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. + +cd srcconsole +./make_uname $1 $2 $3 $4 $5 $6 $7 $8 +cd .. diff --git a/iup/make_uname.bat b/iup/make_uname.bat new file mode 100755 index 0000000..71d36d7 --- /dev/null +++ b/iup/make_uname.bat @@ -0,0 +1,5 @@ +@echo off +REM This builds all the libraries for 1 uname + +REM FOR %%u IN (src srccd srccontrols srcpplot srcgl srcim srcole srcledc srcview srclua3 srclua5 srcconsole) DO call make_uname_lib.bat %%u %1 %2 %3 %4 %5 %6 %7 %8 %9 +FOR %%u IN (src srccd srccontrols srcpplot srcgl srcim srcimglib srcole srcledc srcview srclua5 srcconsole) DO call make_uname_lib.bat %%u %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/iup/make_uname_lib.bat b/iup/make_uname_lib.bat new file mode 100755 index 0000000..f155f22 --- /dev/null +++ b/iup/make_uname_lib.bat @@ -0,0 +1,6 @@ +@echo off +REM This builds 1 library for 1 uname + +cd %1 +call make_uname %2 %3 %4 %5 %6 %7 +cd .. diff --git a/iup/src/Makefile b/iup/src/Makefile new file mode 100755 index 0000000..028047f --- /dev/null +++ b/iup/src/Makefile @@ -0,0 +1,9 @@ + +.PHONY: do_all iup iupgtk +do_all: iup iupgtk + +iup: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak + +iupgtk: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak USE_GTK=Yes diff --git a/iup/src/config.mak b/iup/src/config.mak new file mode 100755 index 0000000..e857643 --- /dev/null +++ b/iup/src/config.mak @@ -0,0 +1,118 @@ +PROJNAME = iup +LIBNAME = iup +OPT = YES + +#ifdef DBG + DEFINES += IUP_ASSERT +#endif + +INCLUDES = ../include . + +SRC = iup_array.c iup_callback.c iup_dlglist.c iup_attrib.c iup_focus.c iup_font.c \ + iup_globalattrib.c iup_object.c iup_key.c iup_layout.c iup_ledlex.c iup_names.c iup_open.c \ + iup_ledparse.c iup_predial.c iup_register.c iup_scanf.c iup_show.c iup_str.c iup_table.c \ + iup_func.c iup_childtree.c iup.c iup_classattrib.c iup_dialog.c iup_assert.c iup_canvas.c \ + iup_messagedlg.c iup_timer.c iup_image.c iup_label.c iup_fill.c iup_zbox.c \ + iup_colordlg.c iup_fontdlg.c iup_filedlg.c iup_strmessage.c iup_menu.c iup_frame.c \ + iup_user.c iup_button.c iup_radio.c iup_toggle.c iup_progressbar.c iup_text.c iup_val.c \ + iup_box.c iup_hbox.c iup_vbox.c iup_cbox.c iup_class.c iup_classbase.c iup_maskmatch.c \ + iup_mask.c iup_maskparse.c iup_tabs.c iup_spin.c iup_list.c iup_getparam.c \ + iup_sbox.c iup_normalizer.c iup_tree.c + +ifdef USE_GTK + ifndef GTK_DEFAULT + # Build GTK version in IRIX,SunOS,AIX,Win32 + LIBNAME := iupgtk + endif + + DEFINES += GTK_DISABLE_DEPRECATED + INCLUDES += gtk + SRC += gtk/iupgtk_common.c gtk/iupgtk_focus.c gtk/iupgtk_font.c gtk/iupgtk_clipboard.c \ + gtk/iupgtk_globalattrib.c gtk/iupgtk_key.c gtk/iupgtk_tips.c \ + gtk/iupgtk_loop.c gtk/iupgtk_open.c gtk/iupgtk_messagedlg.c \ + gtk/iupgtk_dialog.c gtk/iupgtk_timer.c gtk/iupgtk_image.c gtk/iupgtk_label.c \ + gtk/iupgtk_colordlg.c gtk/iupgtk_fontdlg.c gtk/iupgtk_filedlg.c \ + gtk/iupgtk_button.c gtk/iupgtk_toggle.c gtk/iupgtk_progressbar.c \ + gtk/iupgtk_text.c gtk/iupgtk_val.c gtk/iupgtk_frame.c gtk/iupgtk_canvas.c \ + gtk/iupgtk_tabs.c gtk/iupgtk_menu.c gtk/iupgtk_list.c gtk/iupgtk_tree.c + + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + DEFINES += _WIN32_WINNT=0x0500 _WIN32_IE=0x0500 WINVER=0x0500 NOTREEVIEW + SRC += win/iupwindows_main.c win/iupwindows_help.c win/iupwindows_info.c + else + SRC += gtk/iupgtk_help.c mot/iupunix_info.c + endif + + ifdef USE_HILDON + DEFINES += HILDON + INCLUDES += /usr/include/hildon-1 + LIBS += hildon-1 + endif +else + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + + SRC += win/iupwin_common.c win/iupwin_brush.c win/iupwin_focus.c win/iupwin_font.c \ + win/iupwin_globalattrib.c win/iupwin_handle.c win/iupwin_key.c \ + win/iupwin_loop.c win/iupwin_open.c win/iupwin_tips.c win/iupwin_info.c \ + win/iupwin_dialog.c win/iupwin_messagedlg.c win/iupwin_timer.c \ + win/iupwin_image.c win/iupwin_label.c win/iupwin_canvas.c win/iupwin_frame.c \ + win/iupwin_colordlg.c win/iupwin_fontdlg.c win/iupwin_filedlg.c \ + win/iupwin_button.c win/iupwin_draw.c win/iupwin_toggle.c win/iupwin_clipboard.c \ + win/iupwin_progressbar.c win/iupwin_text.c win/iupwin_val.c \ + win/iupwin_tabs.c win/iupwin_menu.c win/iupwin_list.c win/iupwin_tree.c + + SRC += win/iupwindows_main.c win/iupwindows_help.c win/iupwindows_info.c + + INCLUDES += win + DEFINES += _WIN32_WINNT=0x0500 _WIN32_IE=0x0500 WINVER=0x0500 NOTREEVIEW + else + ifdef GTK_DEFAULT + # Build Motif version in Linux,Darwin,FreeBSD + LIBNAME := iupmot + endif + + SRC += mot/iupmot_common.c mot/iupmot_color.c mot/iupmot_focus.c mot/iupmot_font.c \ + mot/iupmot_key.c mot/iupmot_loop.c mot/iupmot_open.c mot/iupmot_tips.c \ + mot/iupmot_globalattrib.c mot/iupmot_dialog.c mot/iupmot_messagedlg.c \ + mot/iupmot_timer.c mot/iupmot_image.c mot/iupmot_label.c mot/iupmot_canvas.c \ + mot/iupmot_colordlg.c mot/iupmot_fontdlg.c mot/iupmot_filedlg.c mot/iupmot_frame.c \ + mot/iupmot_button.c mot/iupmot_toggle.c mot/iupmot_progressbar.c mot/iupmot_clipboard.c \ + mot/iupmot_text.c mot/iupmot_val.c mot/iupmot_tabs.c mot/iupmot_menu.c \ + mot/iupmot_list.c mot/iupmot_tree.c + + SRC += mot/iupunix_help.c mot/iupunix_info.c + + INCLUDES += mot + USE_MOTIF=Yes + endif +endif + +ifeq "$(TEC_SYSNAME)" "SunOS" + # Necessary or the fileopen will not work in SunOS (needs to be retested) + #DEFINES += NO_PATH_MODE_RELATIVE +endif + +ifneq ($(findstring dll, $(TEC_UNAME)), ) + DEFINES += IUP_DLL + SRC += iup_dll.rc + DEF_FILE = iup.def +endif + +ifeq "$(TEC_UNAME)" "vc6" + # Necessary because VC6 has an old WinSDK + #WINSDK = d:/lng/vc7/PlatformSDK + #INCLUDES += $(WINSDK)/include + #LDIR = $(WINSDK)/lib +endif + +ifeq "$(TEC_UNAME)" "dll" + # Necessary because VC6 has an old WinSDK + #WINSDK = d:/lng/vc7/PlatformSDK + #INCLUDES += $(WINSDK)/include + #LDIR = $(WINSDK)/lib +endif + +ifeq "$(TEC_UNAME)" "owc1" + # Necessary or IUP will not work in Open Watcom + DBG=Yes +endif diff --git a/iup/src/gtk/iupgtk_button.c b/iup/src/gtk/iupgtk_button.c new file mode 100755 index 0000000..18be87c --- /dev/null +++ b/iup/src/gtk/iupgtk_button.c @@ -0,0 +1,477 @@ +/** \file + * \brief Button Control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_button.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_image.h" +#include "iup_key.h" + +#include "iupgtk_drv.h" + + +#if !GTK_CHECK_VERSION(2, 6, 0) +static void gtk_button_set_image(GtkButton *button, GtkWidget *image) +{ +} +static GtkWidget* gtk_button_get_image(GtkButton *button) +{ + return NULL; +} +#endif + +void iupdrvButtonAddBorders(int *x, int *y) +{ +#ifdef WIN32 + int border_size = 2*5; +#else +#ifdef HILDON + int border_size = 2*7+1; /* borders are not symetric */ +#else + int border_size = 2*5+1; /* borders are not symetric */ +#endif +#endif + (*x) += border_size; + (*y) += border_size; +} + +static void gtk_button_children_callback(GtkWidget *widget, gpointer client_data) +{ + if (GTK_IS_LABEL(widget)) + { + GtkLabel **label = (GtkLabel**) client_data; + *label = (GtkLabel*)widget; + } +} + +static GtkLabel* gtkButtonGetLabel(Ihandle* ih) +{ + if (ih->data->type == IUP_BUTTON_TEXT) /* text only */ + return (GtkLabel*)gtk_bin_get_child((GtkBin*)ih->handle); + else if (ih->data->type == IUP_BUTTON_BOTH) /* both */ + { + /* when both is set, button contains an GtkAlignment, + that contains a GtkBox, that contains a label and an image */ + GtkContainer *container = (GtkContainer*)gtk_bin_get_child((GtkBin*)gtk_bin_get_child((GtkBin*)ih->handle)); + GtkLabel* label = NULL; + gtk_container_foreach(container, gtk_button_children_callback, &label); + return label; + } + return NULL; +} + +static int gtkButtonSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type != IUP_BUTTON_IMAGE) /* text or both */ + { + GtkLabel* label = gtkButtonGetLabel(ih); + iupgtkSetMnemonicTitle(ih, label, value); + return 1; + } + + return 0; +} + +static int gtkButtonSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + GtkButton* button = (GtkButton*)ih->handle; + PangoAlignment alignment; + float xalign, yalign; + char value1[30]="", value2[30]=""; + + iupStrToStrStr(value, value1, value2, ':'); + + if (iupStrEqualNoCase(value1, "ARIGHT")) + { + xalign = 1.0f; + alignment = PANGO_ALIGN_RIGHT; + } + else if (iupStrEqualNoCase(value1, "ACENTER")) + { + xalign = 0.5f; + alignment = PANGO_ALIGN_CENTER; + } + else /* "ALEFT" */ + { + xalign = 0; + alignment = PANGO_ALIGN_LEFT; + } + + if (iupStrEqualNoCase(value2, "ABOTTOM")) + yalign = 1.0f; + else if (iupStrEqualNoCase(value2, "ATOP")) + yalign = 0; + else /* ACENTER (default) */ + yalign = 0.5f; + + gtk_button_set_alignment(button, xalign, yalign); + + if (ih->data->type == IUP_BUTTON_TEXT && !GTK_IS_COLOR_BUTTON(ih->handle)) /* text only */ + { + PangoLayout* layout = gtk_label_get_layout(gtkButtonGetLabel(ih)); + if (layout) pango_layout_set_alignment(layout, alignment); + } + + return 1; +} + +static int gtkButtonSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle) + { + if (ih->data->type == IUP_BUTTON_TEXT) /* text only */ + { + GtkMisc* misc = (GtkMisc*)gtk_bin_get_child((GtkBin*)ih->handle); + gtk_misc_set_padding(misc, ih->data->horiz_padding, ih->data->vert_padding); + } + else + { + GtkAlignment* alignment = (GtkAlignment*)gtk_bin_get_child((GtkBin*)ih->handle); + gtk_alignment_set_padding(alignment, ih->data->vert_padding, ih->data->vert_padding, + ih->data->horiz_padding, ih->data->horiz_padding); + } + } + return 0; +} + +#ifdef WIN32 +static int gtkButtonSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_BUTTON_TEXT && GTK_IS_COLOR_BUTTON(ih->handle)) + { + GdkColor color; + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgdkColorSet(&color, r, g, b); + gtk_color_button_set_color((GtkColorButton*)ih->handle, &color); + return 1; + } + + return iupdrvBaseSetBgColorAttrib(ih, value); +} +#endif + +static int gtkButtonSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + GtkLabel* label = gtkButtonGetLabel(ih); + if (!label) return 0; + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetFgColor((GtkWidget*)label, r, g, b); + + return 1; +} + +static int gtkButtonSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + + if (ih->handle) + { + GtkLabel* label = gtkButtonGetLabel(ih); + if (!label) return 1; + + gtk_widget_modify_font((GtkWidget*)label, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih)); + if (ih->data->type == IUP_BUTTON_TEXT && !GTK_IS_COLOR_BUTTON(ih->handle)) /* text only */ + iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout(label)); + } + return 1; +} + +static void gtkButtonSetPixbuf(Ihandle* ih, const char* name, int make_inactive) +{ + GtkButton* button = (GtkButton*)ih->handle; + GtkImage* image = (GtkImage*)gtk_button_get_image(button); + + if (name && image) + { + GdkPixbuf* pixbuf = iupImageGetImage(name, ih, make_inactive); + GdkPixbuf* old_pixbuf = gtk_image_get_pixbuf(image); + if (pixbuf != old_pixbuf) + gtk_image_set_from_pixbuf(image, pixbuf); + return; + } + + /* if not defined */ +#if GTK_CHECK_VERSION(2, 8, 0) + if (image) + gtk_image_clear(image); +#endif +} + +static int gtkButtonSetImageAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */ + { + if (iupdrvIsActive(ih)) + gtkButtonSetPixbuf(ih, value, 0); + else + { + if (!iupAttribGet(ih, "IMINACTIVE")) + { + /* if not active and IMINACTIVE is not defined + then automaticaly create one based on IMAGE */ + gtkButtonSetPixbuf(ih, value, 1); /* make_inactive */ + } + } + return 1; + } + else + return 0; +} + +static int gtkButtonSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */ + { + if (!iupdrvIsActive(ih)) + { + if (value) + gtkButtonSetPixbuf(ih, value, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + char* name = iupAttribGet(ih, "IMAGE"); + gtkButtonSetPixbuf(ih, name, 1); /* make_inactive */ + } + } + return 1; + } + else + return 0; +} + +static int gtkButtonSetActiveAttrib(Ihandle* ih, const char* value) +{ + /* update the inactive image if necessary */ + if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */ + { + if (!iupStrBoolean(value)) + { + char* name = iupAttribGet(ih, "IMINACTIVE"); + if (name) + gtkButtonSetPixbuf(ih, name, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + name = iupAttribGet(ih, "IMAGE"); + gtkButtonSetPixbuf(ih, name, 1); /* make_inactive */ + } + } + else + { + /* must restore the normal image */ + char* name = iupAttribGet(ih, "IMAGE"); + gtkButtonSetPixbuf(ih, name, 0); + } + } + + return iupBaseSetActiveAttrib(ih, value); +} + +static int gtkButtonSetFocusOnClickAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + gtk_button_set_focus_on_click((GtkButton*)ih->handle, TRUE); + else + gtk_button_set_focus_on_click((GtkButton*)ih->handle, FALSE); + return 1; +} + +static gboolean gtkButtonEnterLeaveEvent(GtkWidget *widget, GdkEventCrossing *evt, Ihandle *ih) +{ + iupgtkEnterLeaveEvent(widget, evt, ih); + (void)widget; + + if (evt->type == GDK_ENTER_NOTIFY) + gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NORMAL); + else if (evt->type == GDK_LEAVE_NOTIFY) + gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NONE); + + return FALSE; +} + +static gboolean gtkButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih) +{ + if (iupgtkButtonEvent(widget, evt, ih)==TRUE) + return TRUE; + + if (ih->data->type != IUP_BUTTON_TEXT) /* image or both */ + { + char* name = iupAttribGet(ih, "IMPRESS"); + if (name) + { + if (evt->type == GDK_BUTTON_PRESS) + gtkButtonSetPixbuf(ih, name, 0); + else + { + name = iupAttribGet(ih, "IMAGE"); + gtkButtonSetPixbuf(ih, name, 0); + } + } + } + + return FALSE; +} + +static void gtkButtonClicked(GtkButton *widget, Ihandle* ih) +{ + Icallback cb = IupGetCallback(ih, "ACTION"); + if (cb) + { + if (cb(ih) == IUP_CLOSE) + IupExitLoop(); + } + (void)widget; +} + +static int gtkButtonMapMethod(Ihandle* ih) +{ + int impress; + char* value; + + ih->handle = gtk_button_new(); + if (!ih->handle) + return IUP_ERROR; + + value = iupAttribGet(ih, "IMAGE"); + if (value) + { + gtk_button_set_image((GtkButton*)ih->handle, gtk_image_new()); + ih->data->type = IUP_BUTTON_IMAGE; + + value = iupAttribGet(ih, "TITLE"); + if (value) + { + GtkSettings* settings = gtk_widget_get_settings(ih->handle); + g_object_set(settings, "gtk-button-images", (int)TRUE, NULL); + + gtk_button_set_label((GtkButton*)ih->handle, value); + ih->data->type |= IUP_BUTTON_TEXT; + +#if GTK_CHECK_VERSION(2, 10, 0) + gtk_button_set_image_position((GtkButton*)ih->handle, ih->data->img_position); /* IUP and GTK have the same Ids */ +#endif + } + } + else + { + char* title = iupAttribGet(ih, "TITLE"); + if (!title) + { +#ifdef WIN32 + if (iupAttribGet(ih, "BGCOLOR")) + { + gtk_widget_destroy(ih->handle); + ih->handle = gtk_color_button_new(); + } + else + gtk_button_set_label((GtkButton*)ih->handle, ""); +#else + gtk_button_set_label((GtkButton*)ih->handle, ""); +#endif + } + else + gtk_button_set_label((GtkButton*)ih->handle, title); + ih->data->type = IUP_BUTTON_TEXT; + } + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + + value = iupAttribGet(ih, "IMPRESS"); + impress = (ih->data->type & IUP_BUTTON_IMAGE && value)? 1: 0; + if (!impress && iupAttribGetBoolean(ih, "FLAT")) + { + gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NONE); + + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(gtkButtonEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(gtkButtonEnterLeaveEvent), ih); + } + else + { + if (impress && !iupAttribGetStr(ih, "IMPRESSBORDER")) + gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NONE); + else + gtk_button_set_relief((GtkButton*)ih->handle, GTK_RELIEF_NORMAL); + + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + } + + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + g_signal_connect(G_OBJECT(ih->handle), "clicked", G_CALLBACK(gtkButtonClicked), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkButtonEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkButtonEvent), ih); + + gtk_widget_realize(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvButtonInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkButtonMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkButtonSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, gtkButtonSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + + /* Visual */ +#ifdef WIN32 + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkButtonSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); +#else + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); +#endif + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkButtonSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", NULL, gtkButtonSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupButton only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkButtonSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkButtonSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, gtkButtonSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FOCUSONCLICK", NULL, gtkButtonSetFocusOnClickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "PADDING", iupButtonGetPaddingAttrib, gtkButtonSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "MARKUP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT); +} diff --git a/iup/src/gtk/iupgtk_canvas.c b/iup/src/gtk/iupgtk_canvas.c new file mode 100755 index 0000000..daae4ad --- /dev/null +++ b/iup/src/gtk/iupgtk_canvas.c @@ -0,0 +1,624 @@ +/** \file + * \brief Canvas Control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_drvfont.h" +#include "iup_canvas.h" +#include "iup_key.h" + +#include "iupgtk_drv.h" + + +static int gtkCanvasScroll2Iup(GtkScrollType scroll, int vert) +{ + switch(scroll) + { + case GTK_SCROLL_STEP_UP: + return IUP_SBUP; + case GTK_SCROLL_STEP_DOWN: + return IUP_SBDN; + case GTK_SCROLL_PAGE_UP: + return IUP_SBPGUP; + case GTK_SCROLL_PAGE_DOWN: + return IUP_SBPGDN; + case GTK_SCROLL_STEP_LEFT: + return IUP_SBLEFT; + case GTK_SCROLL_STEP_RIGHT: + return IUP_SBRIGHT; + case GTK_SCROLL_PAGE_LEFT: + return IUP_SBPGLEFT; + case GTK_SCROLL_PAGE_RIGHT: + return IUP_SBPGRIGHT; + case GTK_SCROLL_STEP_BACKWARD: + return vert? IUP_SBUP: IUP_SBLEFT; + case GTK_SCROLL_STEP_FORWARD: + return vert? IUP_SBDN: IUP_SBRIGHT; + case GTK_SCROLL_PAGE_BACKWARD: + return vert? IUP_SBPGUP: IUP_SBPGLEFT; + case GTK_SCROLL_PAGE_FORWARD: + return vert? IUP_SBPGDN: IUP_SBPGRIGHT; + case GTK_SCROLL_JUMP: + case GTK_SCROLL_START: + case GTK_SCROLL_END: + return vert? IUP_SBPOSV: IUP_SBPOSH; + case GTK_SCROLL_NONE: + return -1; + } + + /* No IUP_SBDRAGV or IUP_SBDRAGH support in GTK */ + + return -1; +} + +static gboolean gtkCanvasHChangeValue(GtkRange *range, GtkScrollType scroll, double value, Ihandle *ih) +{ + double posx, posy; + IFniff cb; + + double xmin = iupAttribGetFloat(ih, "XMIN"); + double xmax = iupAttribGetFloat(ih, "XMAX"); + double dx = iupAttribGetFloat(ih, "DX"); + if (value < xmin) value = xmin; + if (value > xmax-dx) value = xmax-dx; + + posx = value; + ih->data->posx = (float)posx; + posy = ih->data->posy; + + cb = (IFniff)IupGetCallback(ih,"SCROLL_CB"); + if (cb) + { + int op = gtkCanvasScroll2Iup(scroll, 0); + if (op == -1) + return FALSE; + + cb(ih, op, (float)posx, (float)posy); + } + else + { + IFnff cb = (IFnff)IupGetCallback(ih,"ACTION"); + if (cb) + cb (ih, (float)posx, (float)posy); + } + + (void)range; + return FALSE; +} + +static gboolean gtkCanvasVChangeValue(GtkRange *range, GtkScrollType scroll, double value, Ihandle *ih) +{ + double posx, posy; + IFniff cb; + + double ymin = iupAttribGetFloat(ih, "YMIN"); + double ymax = iupAttribGetFloat(ih, "YMAX"); + double dy = iupAttribGetFloat(ih, "DY"); + if (value < ymin) value = ymin; + if (value > ymax-dy) value = ymax-dy; + + posy = value; + ih->data->posy = (float)posy; + posx = ih->data->posx; + + cb = (IFniff)IupGetCallback(ih,"SCROLL_CB"); + if (cb) + { + int op = gtkCanvasScroll2Iup(scroll, 1); + if (op == -1) + return FALSE; + + cb(ih, op, (float)posx, (float)posy); + } + else + { + IFnff cb = (IFnff)IupGetCallback(ih,"ACTION"); + if (cb) + cb (ih, (float)posx, (float)posy); + } + + (void)range; + return FALSE; +} + +static gboolean gtkCanvasScrollEvent(GtkWidget *widget, GdkEventScroll *evt, Ihandle *ih) +{ + IFnfiis wcb = (IFnfiis)IupGetCallback(ih, "WHEEL_CB"); + if (wcb) + { + int delta = evt->direction==GDK_SCROLL_UP||evt->direction==GDK_SCROLL_LEFT? 1: -1; + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + int button = evt->direction==GDK_SCROLL_UP||evt->direction==GDK_SCROLL_LEFT? 4: 5; + iupgtkButtonKeySetStatus(evt->state, button, status, 0); + + wcb(ih, (float)delta, (int)evt->x, (int)evt->y, status); + } + else + { + IFniff scb = (IFniff)IupGetCallback(ih,"SCROLL_CB"); + int delta = evt->direction==GDK_SCROLL_UP||evt->direction==GDK_SCROLL_LEFT? 1: -1; + + if (evt->direction==GDK_SCROLL_UP || evt->direction==GDK_SCROLL_DOWN) + { + float posy = ih->data->posy; + posy -= delta*iupAttribGetFloat(ih, "DY")/10.0f; + IupSetfAttribute(ih, "POSY", "%g", posy); + } + else + { + float posx = ih->data->posx; + posx -= delta*iupAttribGetFloat(ih, "DX")/10.0f; + IupSetfAttribute(ih, "POSX", "%g", posx); + } + + if (scb) + { + int scroll_gtk2iup[4] = {IUP_SBUP, IUP_SBDN, IUP_SBLEFT, IUP_SBRIGHT}; + int op = scroll_gtk2iup[evt->direction]; + scb(ih,op,ih->data->posx,ih->data->posy); + } + } + (void)widget; + return TRUE; +} + +static gboolean gtkCanvasButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih) +{ + if (evt->type == GDK_BUTTON_PRESS) + { + /* Force focus on canvas click */ + if (iupAttribGetBoolean(ih, "CANFOCUS")) + gtk_widget_grab_focus(ih->handle); + } + + return iupgtkButtonEvent(widget, evt, ih); +} + +static int gtkCanvasSetBgColorAttrib(Ihandle* ih, const char* value); + +static gboolean gtkCanvasExposeEvent(GtkWidget *widget, GdkEventExpose *evt, Ihandle *ih) +{ + IFnff cb = (IFnff)IupGetCallback(ih,"ACTION"); + if (cb) + { + if (!iupAttribGet(ih, "_IUPGTK_NO_BGCOLOR")) + gtkCanvasSetBgColorAttrib(ih, iupAttribGetStr(ih, "BGCOLOR")); /* reset to update window attributes */ + + iupAttribSetStrf(ih, "CLIPRECT", "%d %d %d %d", evt->area.x, evt->area.y, evt->area.x+evt->area.width-1, evt->area.y+evt->area.height-1); + cb(ih,ih->data->posx,ih->data->posy); + iupAttribSetStr(ih, "CLIPRECT", NULL); + } + + (void)widget; + return TRUE; /* stop other handlers */ +} + +static gboolean gtkCanvasConfigureEvent(GtkWidget *widget, GdkEventConfigure *evt, Ihandle *ih) +{ + IFnii cb = (IFnii)IupGetCallback(ih,"RESIZE_CB"); + if (cb) + cb(ih,evt->width,evt->height); + + (void)widget; + return FALSE; +} + +static GtkScrolledWindow* gtkCanvasGetScrolledWindow(Ihandle* ih) +{ + return (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); +} + +static int gtkCanvasSetXAutoHideAttrib(Ihandle* ih, const char *value) +{ + GtkPolicyType vscrollbar_policy; + gtk_scrolled_window_get_policy(gtkCanvasGetScrolledWindow(ih), NULL, &vscrollbar_policy); + + if (ih->data->sb & IUP_SB_HORIZ) + { + GtkPolicyType hscrollbar_policy; + + if (iupStrBoolean(value)) + hscrollbar_policy = GTK_POLICY_AUTOMATIC; + else + hscrollbar_policy = GTK_POLICY_ALWAYS; + + gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), hscrollbar_policy, vscrollbar_policy); + } + else + gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), GTK_POLICY_NEVER, vscrollbar_policy); + + return 1; +} + +static int gtkCanvasSetYAutoHideAttrib(Ihandle* ih, const char *value) +{ + GtkPolicyType hscrollbar_policy; + gtk_scrolled_window_get_policy(gtkCanvasGetScrolledWindow(ih), &hscrollbar_policy, NULL); + + if (ih->data->sb & IUP_SB_VERT) + { + GtkPolicyType vscrollbar_policy; + + if (iupStrBoolean(value)) + vscrollbar_policy = GTK_POLICY_AUTOMATIC; + else + vscrollbar_policy = GTK_POLICY_ALWAYS; + + gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), hscrollbar_policy, vscrollbar_policy); + } + else + gtk_scrolled_window_set_policy(gtkCanvasGetScrolledWindow(ih), hscrollbar_policy, GTK_POLICY_NEVER); + + return 1; +} + +static int gtkCanvasCheckScroll(double min, double max, double *page, double *pos) +{ + double old_pos = *pos; + double range = max-min; + if (*page > range) *page = range; + if (*page <= 0) *page = range/10.; + + if (*pos < min) *pos = min; + if (*pos > (max - *page)) *pos = max - *page; + + if (old_pos == *pos) + return 0; + else + return 1; +} + +static int gtkCanvasSetDXAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_HORIZ) + { + double xmin, xmax, linex; + float dx; + int value_changed; + GtkAdjustment* sb_horiz = gtk_scrolled_window_get_hadjustment(gtkCanvasGetScrolledWindow(ih)); + if (!sb_horiz) return 1; + + if (!iupStrToFloat(value, &dx)) + return 1; + + xmin = iupAttribGetFloat(ih, "XMIN"); + xmax = iupAttribGetFloat(ih, "XMAX"); + + if (!iupAttribGet(ih,"LINEX")) + { + linex = dx/10; + if (linex==0) + linex = 1; + } + else + linex = iupAttribGetFloat(ih,"LINEX"); + + sb_horiz->lower = xmin; + sb_horiz->upper = xmax; + sb_horiz->step_increment = linex; + sb_horiz->page_size = dx; + + value_changed = gtkCanvasCheckScroll(xmin, xmax, &sb_horiz->page_size, &sb_horiz->value); + sb_horiz->page_increment = sb_horiz->page_size; + + gtk_adjustment_changed(sb_horiz); + + if (value_changed) + gtk_adjustment_value_changed(sb_horiz); + } + return 1; +} + +static int gtkCanvasSetDYAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_VERT) + { + double ymin, ymax, liney; + float dy; + int value_changed; + GtkAdjustment* sb_vert = gtk_scrolled_window_get_vadjustment(gtkCanvasGetScrolledWindow(ih)); + if (!sb_vert) return 1; + + if (!iupStrToFloat(value, &dy)) + return 1; + + ymin = iupAttribGetFloat(ih, "YMIN"); + ymax = iupAttribGetFloat(ih, "YMAX"); + + if (!iupAttribGet(ih,"LINEY")) + { + liney = dy/10; + if (liney==0) + liney = 1; + } + else + liney = iupAttribGetFloat(ih,"LINEY"); + + sb_vert->lower = ymin; + sb_vert->upper = ymax; + sb_vert->step_increment = liney; + sb_vert->page_size = dy; + + value_changed = gtkCanvasCheckScroll(ymin, ymax, &sb_vert->page_size, &sb_vert->value); + sb_vert->page_increment = sb_vert->page_size; + + gtk_adjustment_changed(sb_vert); + + if (value_changed) + gtk_adjustment_value_changed(sb_vert); + } + return 1; +} + +static int gtkCanvasSetPosXAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_HORIZ) + { + float posx, xmin, xmax, dx; + GtkAdjustment* sb_horiz = gtk_scrolled_window_get_hadjustment(gtkCanvasGetScrolledWindow(ih)); + if (!sb_horiz) return 1; + + if (!iupStrToFloat(value, &posx)) + return 1; + + xmin = iupAttribGetFloat(ih, "XMIN"); + xmax = iupAttribGetFloat(ih, "XMAX"); + dx = iupAttribGetFloat(ih, "DX"); + + if (posx < xmin) posx = xmin; + if (posx > (xmax - dx)) posx = xmax - dx; + ih->data->posx = posx; + + gtk_adjustment_set_value(sb_horiz, posx); + } + return 1; +} + +static int gtkCanvasSetPosYAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_VERT) + { + float posy, ymin, ymax, dy; + GtkAdjustment* sb_vert = gtk_scrolled_window_get_vadjustment(gtkCanvasGetScrolledWindow(ih)); + if (!sb_vert) return 1; + + if (!iupStrToFloat(value, &posy)) + return 1; + + ymin = iupAttribGetFloat(ih, "YMIN"); + ymax = iupAttribGetFloat(ih, "YMAX"); + dy = iupAttribGetFloat(ih, "DY"); + + if (posy < ymin) posy = ymin; + if (posy > (ymax - dy)) posy = ymax - dy; + ih->data->posy = posy; + + gtk_adjustment_set_value(sb_vert, posy); + } + return 1; +} + +static int gtkCanvasSetBgColorAttrib(Ihandle* ih, const char* value) +{ + GtkScrolledWindow* scrolled_window = gtkCanvasGetScrolledWindow(ih); + unsigned char r, g, b; + + /* ignore given value, must use only from parent for the scrollbars */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + if (iupStrToRGB(parent_value, &r, &g, &b)) + { + GtkWidget* sb; + + iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b); + +#if GTK_CHECK_VERSION(2, 8, 0) + sb = gtk_scrolled_window_get_hscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); + sb = gtk_scrolled_window_get_vscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); +#endif + } + + if (!IupGetCallback(ih, "ACTION")) + { + /* enable automatic double buffering */ + gtk_widget_set_double_buffered(ih->handle, TRUE); + gtk_widget_set_double_buffered((GtkWidget*)scrolled_window, TRUE); + return iupdrvBaseSetBgColorAttrib(ih, value); + } + else + { + /* disable automatic double buffering */ + gtk_widget_set_double_buffered(ih->handle, FALSE); + gtk_widget_set_double_buffered((GtkWidget*)scrolled_window, FALSE); + gdk_window_set_back_pixmap(ih->handle->window, NULL, FALSE); + iupAttribSetStr(ih, "_IUPGTK_NO_BGCOLOR", "1"); + return 1; + } +} + +static char* gtkCanvasGetDrawableAttrib(Ihandle* ih) +{ + return (char*)ih->handle->window; +} + +static void gtkCanvasDummyLogFunc(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) +{ + /* does nothing */ + (void)log_domain; + (void)log_level; + (void)message; + (void)user_data; +} + +static int gtkCanvasMapMethod(Ihandle* ih) +{ + GtkScrolledWindow* scrolled_window; + void* visual; + + if (!ih->parent) + return IUP_ERROR; + + ih->data->sb = iupBaseGetScrollbar(ih); + + visual = (void*)IupGetAttribute(ih, "VISUAL"); /* defined by the OpenGL Canvas in X11 or NULL */ + if (visual) + iupgtkPushVisualAndColormap(visual, (void*)iupAttribGet(ih, "COLORMAP")); + + ih->handle = gtk_drawing_area_new(); + + if (visual) + gtk_widget_pop_colormap(); + + if (!ih->handle) + return IUP_ERROR; + + scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL); + if (!scrolled_window) + return IUP_ERROR; + + { + /* to avoid the "cannot add non scrollable widget" warning */ +#if GTK_CHECK_VERSION(2, 6, 0) + GLogFunc def_func = g_log_set_default_handler(gtkCanvasDummyLogFunc, NULL); +#endif + gtk_container_add((GtkContainer*)scrolled_window, ih->handle); +#if GTK_CHECK_VERSION(2, 6, 0) + g_log_set_default_handler(def_func, NULL); +#endif + } + + gtk_widget_show((GtkWidget*)scrolled_window); + + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window); + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(iupgtkKeyReleaseEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + g_signal_connect(G_OBJECT(ih->handle), "expose-event", G_CALLBACK(gtkCanvasExposeEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkCanvasButtonEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkCanvasButtonEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "scroll-event",G_CALLBACK(gtkCanvasScrollEvent), ih); + +#if GTK_CHECK_VERSION(2, 8, 0) + g_signal_connect(G_OBJECT(gtk_scrolled_window_get_hscrollbar(scrolled_window)), "change-value",G_CALLBACK(gtkCanvasHChangeValue), ih); + g_signal_connect(G_OBJECT(gtk_scrolled_window_get_vscrollbar(scrolled_window)), "change-value",G_CALLBACK(gtkCanvasVChangeValue), ih); +#endif + + /* To receive mouse events on a drawing area, you will need to enable them. */ + gtk_widget_add_events(ih->handle, GDK_EXPOSURE_MASK| + GDK_POINTER_MOTION_MASK|GDK_BUTTON_MOTION_MASK| + GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK| + GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK| + GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK| + GDK_FOCUS_CHANGE_MASK|GDK_STRUCTURE_MASK); + + /* To receive keyboard events, you will need to set the GTK_CAN_FOCUS flag on the drawing area. */ + if (ih->iclass->is_interactive) + { + if (iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) |= GTK_CAN_FOCUS; + } + + if (iupAttribGetBoolean(ih, "BORDER")) + gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN); + else + gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_NONE); + + gtk_widget_realize((GtkWidget*)scrolled_window); + gtk_widget_realize(ih->handle); + + /* must be connected after realize or a RESIZE_CB will happen before MAP_CB + works only for the GtkDrawingArea. */ + g_signal_connect(G_OBJECT(ih->handle), "configure-event", G_CALLBACK(gtkCanvasConfigureEvent), ih); + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + /* update a mnemonic in a label if necessary */ + iupgtkUpdateMnemonic(ih); + + /* configure scrollbar */ + if (ih->data->sb) + { + GtkPolicyType hscrollbar_policy = GTK_POLICY_NEVER, vscrollbar_policy = GTK_POLICY_NEVER; + if (ih->data->sb & IUP_SB_HORIZ) + hscrollbar_policy = GTK_POLICY_AUTOMATIC; + if (ih->data->sb & IUP_SB_VERT) + vscrollbar_policy = GTK_POLICY_AUTOMATIC; + gtk_scrolled_window_set_policy(scrolled_window, hscrollbar_policy, vscrollbar_policy); + } + else + gtk_scrolled_window_set_policy(scrolled_window, GTK_POLICY_NEVER, GTK_POLICY_NEVER); + + /* force the update of BGCOLOR here, to let derived classes ignore it if ACTION is defined */ + gtkCanvasSetBgColorAttrib(ih, iupAttribGetStr(ih, "BGCOLOR")); + + return IUP_NOERROR; +} + +void iupdrvCanvasInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkCanvasMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkCanvasSetBgColorAttrib, "255 255 255", NULL, IUPAF_DEFAULT); /* force new default value */ + + /* IupCanvas only */ + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAWSIZE", iupdrvBaseGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "DX", NULL, gtkCanvasSetDXAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "DY", NULL, gtkCanvasSetDYAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "POSX", iupCanvasGetPosXAttrib, gtkCanvasSetPosXAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "POSY", iupCanvasGetPosYAttrib, gtkCanvasSetPosYAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "XAUTOHIDE", NULL, gtkCanvasSetXAutoHideAttrib, "YES", NULL, IUPAF_DEFAULT); /* force new default value */ + iupClassRegisterAttribute(ic, "YAUTOHIDE", NULL, gtkCanvasSetYAutoHideAttrib, "YES", NULL, IUPAF_DEFAULT); /* force new default value */ + + iupClassRegisterAttribute(ic, "DRAWABLE", gtkCanvasGetDrawableAttrib, NULL, NULL, NULL, IUPAF_NO_STRING); + //iupClassRegisterAttribute(ic, "CD_GDK", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + + /* IupCanvas Windows or X only */ +#ifdef WIN32 + iupClassRegisterAttribute(ic, "HWND", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT); +#else + iupClassRegisterAttribute(ic, "XWINDOW", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "XDISPLAY", (IattribGetFunc)iupdrvGetDisplay, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); +#endif +} + diff --git a/iup/src/gtk/iupgtk_clipboard.c b/iup/src/gtk/iupgtk_clipboard.c new file mode 100755 index 0000000..f07a3e6 --- /dev/null +++ b/iup/src/gtk/iupgtk_clipboard.c @@ -0,0 +1,125 @@ +/** \file + * \brief Clipboard for the GTK Driver. + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" + +#include "iupgtk_drv.h" + + +static int gtkClipboardSetTextAttrib(Ihandle *ih, const char *value) +{ + GtkClipboard *clipboard = gtk_clipboard_get_for_display(gdk_display_get_default(), gdk_atom_intern("CLIPBOARD", FALSE)); + gtk_clipboard_set_text(clipboard, value, -1); + (void)ih; + return 0; +} + +static char* gtkClipboardGetTextAttrib(Ihandle *ih) +{ + GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE)); + (void)ih; + return iupgtkStrConvertFromUTF8(gtk_clipboard_wait_for_text(clipboard)); +} + +static int gtkClipboardSetImageAttrib(Ihandle *ih, const char *value) +{ +#if GTK_CHECK_VERSION(2, 6, 0) + GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE)); + GdkPixbuf *pixbuf = (GdkPixbuf*)iupImageGetImage(value, ih, 0); + if (pixbuf) + gtk_clipboard_set_image (clipboard, pixbuf); +#endif + return 0; +} + +static int gtkClipboardSetNativeImageAttrib(Ihandle *ih, const char *value) +{ +#if GTK_CHECK_VERSION(2, 6, 0) + GtkClipboard *clipboard; + (void)ih; + + if (!value) + return 0; + + clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE)); + + gtk_clipboard_set_image (clipboard, (GdkPixbuf*)value); +#endif + return 0; +} + +static char* gtkClipboardGetNativeImageAttrib(Ihandle *ih) +{ +#if GTK_CHECK_VERSION(2, 6, 0) + GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE)); + (void)ih; + return (char*)gtk_clipboard_wait_for_image (clipboard); +#else + return NULL; +#endif +} + +static char* gtkClipboardGetTextAvailableAttrib(Ihandle *ih) +{ + GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE)); + (void)ih; + if (gtk_clipboard_wait_is_text_available(clipboard)) + return "YES"; + else + return "NO"; +} + +static char* gtkClipboardGetImageAvailableAttrib(Ihandle *ih) +{ +#if GTK_CHECK_VERSION(2, 6, 0) + GtkClipboard *clipboard = gtk_clipboard_get (gdk_atom_intern("CLIPBOARD", FALSE)); + (void)ih; + if (gtk_clipboard_wait_is_image_available(clipboard)) + return "YES"; + else + return "NO"; +#else + return NULL; +#endif +} + +/******************************************************************************/ + +Ihandle* IupClipboard(void) +{ + return IupCreate("clipboard"); +} + +Iclass* iupClipboardGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "clipboard"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Attribute functions */ + iupClassRegisterAttribute(ic, "TEXT", gtkClipboardGetTextAttrib, gtkClipboardSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NATIVEIMAGE", gtkClipboardGetNativeImageAttrib, gtkClipboardSetNativeImageAttrib, NULL, NULL, IUPAF_NO_STRING|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkClipboardSetImageAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TEXTAVAILABLE", gtkClipboardGetTextAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEAVAILABLE", gtkClipboardGetImageAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/gtk/iupgtk_colordlg.c b/iup/src/gtk/iupgtk_colordlg.c new file mode 100755 index 0000000..9177f91 --- /dev/null +++ b/iup/src/gtk/iupgtk_colordlg.c @@ -0,0 +1,211 @@ +/** \file + * \brief IupColorDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" + +#include "iupgtk_drv.h" + + +static char* gtkColorDlgPaletteToString(const char* palette) +{ + char iup_str[20], *gtk_str, *palette_p; + char* str = iupStrGetMemory(300); + int off = 0, inc; + GdkColor color; + + gtk_str = iupStrDup(palette); + iupStrReplace(gtk_str, ':', 0); + + while (palette && *palette) + { + if (!gdk_color_parse (gtk_str, &color)) + return NULL; + + inc = sprintf(iup_str, "%d %d %d;", (int)iupCOLOR16TO8(color.red), (int)iupCOLOR16TO8(color.green), (int)iupCOLOR16TO8(color.blue)); + memcpy(str+off, iup_str, inc); + off += inc; + palette_p = strchr(palette, ':'); + if (palette_p) + { + palette_p++; + gtk_str += palette_p-palette; + } + palette = palette_p; + } + str[off-1] = 0; /* remove last separator */ + return str; +} + +static void gtkColorDlgGetPalette(Ihandle* ih, GtkColorSelection* colorsel) +{ + char *palette, *str; + + GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(colorsel)); + g_object_get(settings, "gtk-color-palette", &palette, NULL); + + str = gtkColorDlgPaletteToString(palette); + if (str) iupAttribStoreStr(ih, "COLORTABLE", str); + g_free(palette); +} + +static char* gtkColorDlgStringToPalette(const char* str) +{ + char gtk_str[20]; + char* palette = iupStrGetMemory(200); + int off = 0; + unsigned char r, g, b; + + while (str && *str) + { + if (!iupStrToRGB(str, &r, &g, &b)) + return NULL; + + sprintf(gtk_str, "#%02X%02X%02X:", (int)r, (int)g, (int)b); + memcpy(palette+off, gtk_str, 8); + off += 8; + str = strchr(str, ';'); + if (str) str++; + } + palette[off-1] = 0; /* remove last separator */ + return palette; +} + +static void gtkColorDlgSetPalette(GtkColorSelection* colorsel, char* str) +{ + GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(colorsel)); + gchar* palette = gtkColorDlgStringToPalette(str); + if (palette) + gtk_settings_set_string_property(settings, + "gtk-color-palette", + palette, + "gtk_color_selection_palette_to_string"); +} + +static int gtkColorDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + GtkColorSelectionDialog* dialog; + GtkColorSelection* colorsel; + GdkColor color; + char *value; + unsigned char r = 0, g = 0, b = 0, a = 255; + int response, ret; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + dialog = (GtkColorSelectionDialog*)gtk_color_selection_dialog_new(iupgtkStrConvertToUTF8(iupAttribGet(ih, "TITLE"))); + if (!dialog) + return IUP_ERROR; + + if (parent) + gtk_window_set_transient_for((GtkWindow*)dialog, (GtkWindow*)parent); + + ret = iupStrToRGBA(iupAttribGet(ih, "VALUE"), &r, &g, &b, &a); + + colorsel = (GtkColorSelection*)dialog->colorsel; + iupgdkColorSet(&color, r, g, b); + gtk_color_selection_set_current_color(colorsel, &color); + + value = iupAttribGetStr(ih, "ALPHA"); + if (value) + { + int alpha; + if (iupStrToInt(value, &alpha)) + { + if (alpha<0) alpha=0; + if (alpha>255) alpha=255; + gtk_color_selection_set_has_opacity_control(colorsel, TRUE); + gtk_color_selection_set_current_alpha(colorsel, iupCOLOR8TO16(alpha)); + } + } + else if (iupAttribGetBoolean(ih, "SHOWALPHA") || ret == 4) + { + gtk_color_selection_set_has_opacity_control(colorsel, TRUE); + gtk_color_selection_set_current_alpha(colorsel, iupCOLOR8TO16(a)); + } + else + gtk_color_selection_set_has_opacity_control(colorsel, FALSE); + + value = iupAttribGetStr(ih, "COLORTABLE"); + if (value) + { + gtk_color_selection_set_has_palette (colorsel, TRUE); + gtkColorDlgSetPalette(colorsel, value); + } + else if (iupAttribGetBoolean(ih, "SHOWCOLORTABLE")) + gtk_color_selection_set_has_palette (colorsel, TRUE); + else + gtk_color_selection_set_has_palette (colorsel, FALSE); + + if (IupGetCallback(ih, "HELP_CB")) + gtk_widget_show(dialog->help_button); + + /* initialize the widget */ + gtk_widget_realize(GTK_WIDGET(dialog)); + + ih->handle = GTK_WIDGET(dialog); + iupDialogUpdatePosition(ih); + ih->handle = NULL; + + do + { + response = gtk_dialog_run(GTK_DIALOG(dialog)); + + if (response == GTK_RESPONSE_HELP) + { + Icallback cb = IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + response = GTK_RESPONSE_CANCEL; + } + } while (response == GTK_RESPONSE_HELP); + + if (response == GTK_RESPONSE_OK) + { + GdkColor color; + gtk_color_selection_get_current_color(colorsel, &color); + IupSetAttribute(ih, "STATUS", "1"); + + if (gtk_color_selection_get_has_opacity_control(colorsel)) + { + int alpha = gtk_color_selection_get_current_alpha(colorsel); + iupAttribSetInt(ih, "ALPHA", (int)iupCOLOR16TO8(alpha)); + iupAttribSetStrf(ih, "VALUE", "%d %d %d %d", (int)iupCOLOR16TO8(color.red), (int)iupCOLOR16TO8(color.green), (int)iupCOLOR16TO8(color.blue), (int)iupCOLOR16TO8(alpha)); + } + else + iupAttribSetStrf(ih, "VALUE", "%d %d %d", (int)iupCOLOR16TO8(color.red), (int)iupCOLOR16TO8(color.green), (int)iupCOLOR16TO8(color.blue)); + + if (gtk_color_selection_get_has_palette(colorsel)) + gtkColorDlgGetPalette(ih, colorsel); + } + else + { + iupAttribSetStr(ih, "ALPHA", NULL); + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "COLORTABLE", NULL); + iupAttribSetStr(ih, "STATUS", NULL); + } + + gtk_widget_destroy(GTK_WIDGET(dialog)); + + return IUP_NOERROR; +} + +void iupdrvColorDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = gtkColorDlgPopup; +} diff --git a/iup/src/gtk/iupgtk_common.c b/iup/src/gtk/iupgtk_common.c new file mode 100755 index 0000000..40368f2 --- /dev/null +++ b/iup/src/gtk/iupgtk_common.c @@ -0,0 +1,830 @@ +/** \file + * \brief GTK Base Functions + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_key.h" +#include "iup_str.h" +#include "iup_class.h" +#include "iup_attrib.h" +#include "iup_focus.h" +#include "iup_key.h" +#include "iup_image.h" +#include "iup_drv.h" + +#include "iupgtk_drv.h" + + +/* WARNING: in GTK there are many controls that are not native windows, + so "->window" will NOT return a native window exclusive of that control, + in fact it can return a base native window shared by many controls. + IupCanvas is a special case that uses an exclusive native window. */ + +/* GTK only has abssolute positioning using a GtkFixed container, + so all elements returned by iupChildTreeGetNativeParentHandle should be a GtkFixed. + If not looks in the native parent. */ +static GtkFixed* gtkGetFixedParent(Ihandle* ih) +{ + GtkWidget* widget = iupChildTreeGetNativeParentHandle(ih); + while (widget && !GTK_IS_FIXED(widget)) + widget = gtk_widget_get_parent(widget); + return (GtkFixed*)widget; +} + +void iupgtkUpdateMnemonic(Ihandle* ih) +{ + GtkLabel* label = (GtkLabel*)iupAttribGet(ih, "_IUPGTK_LABELMNEMONIC"); + if (label) gtk_label_set_mnemonic_widget(label, ih->handle); +} + +void iupdrvActivate(Ihandle* ih) +{ + gtk_widget_activate(ih->handle); +} + +void iupdrvReparent(Ihandle* ih) +{ + GtkFixed* fixed = gtkGetFixedParent(ih); + GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + gtk_widget_reparent(widget, (GtkWidget*)fixed); +} + +void iupgtkBaseAddToParent(Ihandle* ih) +{ + GtkFixed* fixed = gtkGetFixedParent(ih); + GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + gtk_fixed_put(fixed, widget, 0, 0); +} + +void iupdrvBaseLayoutUpdateMethod(Ihandle *ih) +{ + GtkFixed* fixed = gtkGetFixedParent(ih); + GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + gtk_fixed_move(fixed, widget, ih->x, ih->y); + gtk_widget_set_size_request(widget, ih->currentwidth, ih->currentheight); +} + +void iupdrvBaseUnMapMethod(Ihandle* ih) +{ + GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + gtk_widget_unrealize(widget); + gtk_widget_destroy(widget); /* To match the call to gtk_*****_new */ +} + +void iupdrvDisplayUpdate(Ihandle *ih) +{ + /* Post a REDRAW */ + gtk_widget_queue_draw(ih->handle); +} + +void iupdrvDisplayRedraw(Ihandle *ih) +{ + GdkWindow* window = ih->handle->window; + /* Post a REDRAW */ + gtk_widget_queue_draw(ih->handle); + /* Force a REDRAW */ + if (window) + gdk_window_process_updates(window, FALSE); +} + +void iupdrvScreenToClient(Ihandle* ih, int *x, int *y) +{ + gint win_x = 0, win_y = 0; + GdkWindow* window = ih->handle->window; + if (window) + gdk_window_get_origin(window, &win_x, &win_y); + *x = *x - win_x; + *y = *y - win_y; +} + +gboolean iupgtkShowHelp(GtkWidget *widget, GtkWidgetHelpType *arg1, Ihandle *ih) +{ + Icallback cb; + (void)widget; + (void)arg1; + + cb = IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + IupExitLoop(); + + return FALSE; +} + +gboolean iupgtkEnterLeaveEvent(GtkWidget *widget, GdkEventCrossing *evt, Ihandle *ih) +{ + Icallback cb = NULL; + (void)widget; + + if (evt->type == GDK_ENTER_NOTIFY) + cb = IupGetCallback(ih, "ENTERWINDOW_CB"); + else if (evt->type == GDK_LEAVE_NOTIFY) + cb = IupGetCallback(ih, "LEAVEWINDOW_CB"); + + if (cb) + cb(ih); + + return FALSE; +} + +int iupgtkSetMnemonicTitle(Ihandle* ih, GtkLabel* label, const char* value) +{ + char c = '_'; + char* str; + + if (!value) + value = ""; + + str = iupStrProcessMnemonic(value, &c, 1); /* replace & by c, the returned value of c is ignored in GTK */ + if (str != value) + { + gtk_label_set_text_with_mnemonic(label, iupgtkStrConvertToUTF8(str)); + free(str); + return 1; + } + else + { + if (iupAttribGetBoolean(ih, "MARKUP")) + gtk_label_set_markup(label, iupgtkStrConvertToUTF8(str)); + else + gtk_label_set_text(label, iupgtkStrConvertToUTF8(str)); + } + return 0; +} + +int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value) +{ + if (iupdrvIsVisible(ih)) + { + GdkWindow* window = ih->handle->window; + if (iupStrEqualNoCase(value, "TOP")) + gdk_window_raise(window); + else + gdk_window_lower(window); + } + + return 0; +} + +void iupdrvSetVisible(Ihandle* ih, int visible) +{ + GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (visible) + { + if (container) gtk_widget_show(container); + gtk_widget_show(ih->handle); + } + else + { + if (container) gtk_widget_hide(container); + gtk_widget_hide(ih->handle); + } +} + +int iupdrvIsVisible(Ihandle* ih) +{ + if (GTK_WIDGET_VISIBLE(ih->handle)) + { + /* if marked as visible, since we use gtk_widget_hide and NOT gtk_widget_hide_all + must check its parents. */ + Ihandle* parent = ih->parent; + while (parent) + { + if (parent->iclass->nativetype != IUP_TYPEVOID) + { + if (!GTK_WIDGET_VISIBLE(parent->handle)) + return 0; + } + + parent = parent->parent; + } + return 1; + } + else + return 0; +} + +int iupdrvIsActive(Ihandle *ih) +{ + return (GTK_WIDGET_IS_SENSITIVE(ih->handle)); +} + +void iupdrvSetActive(Ihandle* ih, int enable) +{ + GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (container) gtk_widget_set_sensitive(container, enable); + gtk_widget_set_sensitive(ih->handle, enable); +} + +char* iupdrvBaseGetXAttrib(Ihandle *ih) +{ + GdkWindow* window = ih->handle->window; + GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (container) window = container->window; + + if (window) + { + char* str = iupStrGetMemory(20); + int x, y; + gdk_window_get_origin(window, &x, &y); + x += ih->handle->allocation.x; + sprintf(str, "%d", x); + return str; + } + else + return NULL; +} + +char* iupdrvBaseGetYAttrib(Ihandle *ih) +{ + GdkWindow* window = ih->handle->window; + GtkWidget* container = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (container) window = container->window; + + if (window) + { + char* str = iupStrGetMemory(20); + int x, y; + gdk_window_get_origin(window, &x, &y); + y += ih->handle->allocation.y; + sprintf(str, "%d", y); + return str; + } + else + return NULL; +} + +char* iupdrvBaseGetClientSizeAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + int w, h; + GdkWindow* window = ih->handle->window; + + if (window) + gdk_drawable_get_size(window, &w, &h); + else + return NULL; + + sprintf(str, "%dx%d", w, h); + return str; +} + +static GdkColor gtkDarkerColor(GdkColor *color) +{ + GdkColor dark_color = {0L,0,0,0}; + + dark_color.red = (color->red*9)/10; + dark_color.green = (color->green*9)/10; + dark_color.blue = (color->blue*9)/10; + + return dark_color; +} + +static guint16 gtkCROP16(int x) +{ + if (x > 65535) return 65535; + return (guint16)x; +} + +static GdkColor gtkLighterColor(GdkColor *color) +{ + GdkColor light_color = {0L,0,0,0}; + + light_color.red = gtkCROP16(((int)color->red*11)/10); + light_color.green = gtkCROP16(((int)color->green*11)/10); + light_color.blue = gtkCROP16(((int)color->blue*11)/10); + + return light_color; +} + +void iupgtkBaseSetBgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b) +{ + GtkRcStyle *rc_style; + GdkColor color; + + iupgdkColorSet(&color, r, g, b); + + rc_style = gtk_widget_get_modifier_style(handle); + rc_style->base[GTK_STATE_NORMAL] = rc_style->bg[GTK_STATE_NORMAL] = rc_style->bg[GTK_STATE_INSENSITIVE] = color; + rc_style->bg[GTK_STATE_ACTIVE] = rc_style->base[GTK_STATE_ACTIVE] = gtkDarkerColor(&color); + rc_style->base[GTK_STATE_PRELIGHT] = rc_style->bg[GTK_STATE_PRELIGHT] = rc_style->base[GTK_STATE_INSENSITIVE] = gtkLighterColor(&color); + + rc_style->color_flags[GTK_STATE_NORMAL] |= GTK_RC_BASE | GTK_RC_BG; + rc_style->color_flags[GTK_STATE_ACTIVE] |= GTK_RC_BASE | GTK_RC_BG; + rc_style->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_BASE | GTK_RC_BG; + rc_style->color_flags[GTK_STATE_INSENSITIVE] |= GTK_RC_BASE | GTK_RC_BG; + + gtk_widget_modify_style(handle, rc_style); +} + +int iupdrvBaseSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetBgColor(ih->handle, r, g, b); + + /* DO NOT NEED TO UPDATE GTK IMAGES SINCE THEY DO NOT DEPEND ON BGCOLOR */ + + return 1; +} + +void iupgtkBaseSetFgGdkColor(InativeHandle* handle, GdkColor *color) +{ + GtkRcStyle *rc_style; + + rc_style = gtk_widget_get_modifier_style(handle); + rc_style->fg[GTK_STATE_ACTIVE] = rc_style->fg[GTK_STATE_NORMAL] = rc_style->fg[GTK_STATE_PRELIGHT] = *color; + rc_style->text[GTK_STATE_ACTIVE] = rc_style->text[GTK_STATE_NORMAL] = rc_style->text[GTK_STATE_PRELIGHT] = *color; + rc_style->color_flags[GTK_STATE_NORMAL] |= GTK_RC_TEXT | GTK_RC_FG; + rc_style->color_flags[GTK_STATE_ACTIVE] |= GTK_RC_TEXT | GTK_RC_FG; + rc_style->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_TEXT | GTK_RC_FG; + + /* do not set at CHILD_CONTAINER */ + gtk_widget_modify_style(handle, rc_style); +} + +void iupgtkBaseSetFgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b) +{ + GdkColor color; + iupgdkColorSet(&color, r, g, b); + iupgtkBaseSetFgGdkColor(handle, &color); +} + +int iupdrvBaseSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetFgColor(ih->handle, r, g, b); + + return 1; +} + +static GdkCursor* gtkEmptyCursor(Ihandle* ih) +{ + /* creates an empty cursor */ + GdkColor cursor_color = {0L,0,0,0}; + char bitsnull[1] = {0x00}; + + GdkWindow* window = ih->handle->window; + GdkPixmap* pixmapnull = gdk_bitmap_create_from_data( + (GdkDrawable*)window, + bitsnull, + 1,1); + GdkCursor* cur = gdk_cursor_new_from_pixmap( + pixmapnull, + pixmapnull, + &cursor_color, + &cursor_color, + 0,0); + + g_object_unref(pixmapnull); + + return cur; +} + +static GdkCursor* gtkGetCursor(Ihandle* ih, const char* name) +{ + static struct { + const char* iupname; + int sysname; + } table[] = { + { "NONE", 0}, + { "NULL", 0}, + { "ARROW", GDK_LEFT_PTR}, + { "BUSY", GDK_WATCH}, + { "CROSS", GDK_CROSSHAIR}, + { "HAND", GDK_HAND2}, + { "HELP", GDK_QUESTION_ARROW}, + { "IUP", GDK_QUESTION_ARROW}, + { "MOVE", GDK_FLEUR}, + { "PEN", GDK_PENCIL}, + { "RESIZE_N", GDK_TOP_SIDE}, + { "RESIZE_S", GDK_BOTTOM_SIDE}, + { "RESIZE_NS", GDK_SB_V_DOUBLE_ARROW}, + { "RESIZE_W", GDK_LEFT_SIDE}, + { "RESIZE_E", GDK_RIGHT_SIDE}, + { "RESIZE_WE", GDK_SB_H_DOUBLE_ARROW}, + { "RESIZE_NE", GDK_TOP_RIGHT_CORNER}, + { "RESIZE_SE", GDK_BOTTOM_RIGHT_CORNER}, + { "RESIZE_NW", GDK_TOP_LEFT_CORNER}, + { "RESIZE_SW", GDK_BOTTOM_LEFT_CORNER}, + { "TEXT", GDK_XTERM}, + { "UPARROW", GDK_CENTER_PTR} + }; + + GdkCursor* cur; + char str[50]; + int i, count = sizeof(table)/sizeof(table[0]); + + /* check the cursor cache first (per control)*/ + sprintf(str, "_IUPGTK_CURSOR_%s", name); + cur = (GdkCursor*)iupAttribGet(ih, str); + if (cur) + return cur; + + /* check the pre-defined IUP names first */ + for (i = 0; i < count; i++) + { + if (iupStrEqualNoCase(name, table[i].iupname)) + { + if (table[i].sysname) + cur = gdk_cursor_new(table[i].sysname); + else + cur = gtkEmptyCursor(ih); + + break; + } + } + + if (i == count) + { + /* check for a name defined cursor */ + cur = iupImageGetCursor(name); + } + + /* save the cursor in cache */ + iupAttribSetStr(ih, str, (char*)cur); + + return cur; +} + +int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value) +{ + GdkCursor* cur = gtkGetCursor(ih, value); + if (cur) + { + GdkWindow* window = ih->handle->window; + if (window) + gdk_window_set_cursor(window, cur); + return 1; + } + return 0; +} + +void iupgdkColorSet(GdkColor* color, unsigned char r, unsigned char g, unsigned char b) +{ + color->red = iupCOLOR8TO16(r); + color->green = iupCOLOR8TO16(g); + color->blue = iupCOLOR8TO16(b); + color->pixel = 0; +} + +static void gtkDragDataReceived(GtkWidget* w, GdkDragContext* context, int x, int y, + GtkSelectionData* seldata, guint info, guint time, Ihandle* ih) +{ + gchar **uris = NULL; + int i, count; + + IFnsiii cb = (IFnsiii)IupGetCallback(ih, "DROPFILES_CB"); + if (!cb) return; + +#if GTK_CHECK_VERSION(2, 6, 0) + uris = g_uri_list_extract_uris((char*)seldata->data); +#endif + + if (!uris) + return; + + count = 0; + while (uris[count]) + count++; + + for (i=0; ihandle, GTK_DEST_DEFAULT_ALL, dragtypes, + sizeof(dragtypes) / sizeof(dragtypes[0]), GDK_ACTION_COPY); + g_signal_connect(G_OBJECT(ih->handle), "drag_data_received", G_CALLBACK(gtkDragDataReceived), ih); + } + else + { + gtk_drag_dest_unset(ih->handle); + } + return 1; +} + +int iupdrvGetScrollbarSize(void) +{ + static int size = 0; + + if (size == 0) + { + GtkRequisition requisition; + GtkWidget* win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget* sb = gtk_vscrollbar_new(NULL); + gtk_container_add((GtkContainer*)win, sb); + gtk_widget_realize(win); + gtk_widget_size_request(sb, &requisition); + size = requisition.width; + gtk_widget_destroy(win); + } + + return size; +} + +void iupdrvDrawFocusRect(Ihandle* ih, void* _gc, int x, int y, int w, int h) +{ + GdkWindow* window = ih->handle->window; + GtkStyle *style = gtk_widget_get_style(ih->handle); + (void)_gc; + + gtk_paint_focus(style, window, GTK_WIDGET_STATE(ih->handle), NULL, ih->handle, NULL, x, y, w, h); +} + +void iupdrvBaseRegisterCommonAttrib(Iclass* ic) +{ +#ifdef WIN32 + iupClassRegisterAttribute(ic, "HFONT", iupgtkGetFontIdAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); +#else + iupClassRegisterAttribute(ic, "XFONTID", iupgtkGetFontIdAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); +#endif + iupClassRegisterAttribute(ic, "PANGOFONTDESC", iupgtkGetPangoFontDescAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); +} + +static int gtkStrIsAscii(const char* str) +{ + while(*str) + { + int c = *str; + if (c < 0) + return 0; + str++; + } + return 1; +} + +static char* gtkStrToUTF8(const char *str, const char* charset) +{ + return g_convert(str, -1, "UTF-8", charset, NULL, NULL, NULL); +} + +static char* gtkStrFromUTF8(const char *str, const char* charset) +{ + return g_convert(str, -1, charset, "UTF-8", NULL, NULL, NULL); +} + +static char* gktLastConvertUTF8 = NULL; + +void iupgtkReleaseConvertUTF8(void) +{ + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); +} + +char* iupgtkStrConvertToUTF8(const char* str) /* From IUP to GTK */ +{ + if (!str || *str == 0) + return (char*)str; + + if (iupgtk_utf8autoconvert) /* this means str is in current locale */ + { + const char *charset = NULL; + if (g_get_charset(&charset)==TRUE) /* current locale is already UTF-8 */ + { + if (g_utf8_validate(str, -1, NULL)) + return (char*)str; + else + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrToUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */ + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + else + { + if (gtkStrIsAscii(str) || !charset) + return (char*)str; + else if (charset) + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrToUTF8(str, charset); + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + } + return (char*)str; +} + +char* iupgtkStrConvertFromUTF8(const char* str) /* From GTK to IUP */ +{ + if (!str || *str == 0) + return (char*)str; + + if (iupgtk_utf8autoconvert) /* this means str is in current locale */ + { + const gchar *charset = NULL; + if (g_get_charset(&charset)==TRUE) /* current locale is already UTF-8 */ + { + if (g_utf8_validate(str, -1, NULL)) + return (char*)str; + else + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrFromUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */ + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + else + { + if (gtkStrIsAscii(str) || !charset) + return (char*)str; + else if (charset) + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrFromUTF8(str, charset); + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + } + return (char*)str; +} + +static gboolean gtkGetFilenameCharset(const gchar **filename_charset) +{ + const gchar **charsets = NULL; + gboolean is_utf8 = FALSE; + +#if GTK_CHECK_VERSION(2, 6, 0) + is_utf8 = g_get_filename_charsets (&charsets); +#endif + + if (filename_charset && charsets) + *filename_charset = charsets[0]; + + return is_utf8; +} + +char* iupgtkStrConvertToFilename(const char* str) /* From IUP to Filename */ +{ + if (!str || *str == 0) + return (char*)str; + + if (iupgtk_utf8autoconvert) /* this means str is in current locale */ + return (char*)str; + else + { + const gchar *charset = NULL; + if (gtkGetFilenameCharset(&charset)==TRUE) /* current locale is already UTF-8 */ + { + if (g_utf8_validate(str, -1, NULL)) + return (char*)str; + else + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrFromUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */ + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + else + { + if (gtkStrIsAscii(str) || !charset) + return (char*)str; + else if (charset) + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrFromUTF8(str, charset); + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + } + return (char*)str; +} + +char* iupgtkStrConvertFromFilename(const char* str) /* From Filename to IUP */ +{ + if (!str || *str == 0) + return (char*)str; + + if (iupgtk_utf8autoconvert) /* this means str is in current locale */ + return (char*)str; + else + { + const char *charset = NULL; + if (gtkGetFilenameCharset(&charset)==TRUE) /* current locale is already UTF-8 */ + { + if (g_utf8_validate(str, -1, NULL)) + return (char*)str; + else + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrToUTF8(str, "ISO8859-1"); /* if string is not UTF-8, assume ISO8859-1 */ + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + else + { + if (gtkStrIsAscii(str) || !charset) + return (char*)str; + else if (charset) + { + if (gktLastConvertUTF8) + g_free(gktLastConvertUTF8); + gktLastConvertUTF8 = gtkStrToUTF8(str, charset); + if (!gktLastConvertUTF8) return (char*)str; + return gktLastConvertUTF8; + } + } + } + return (char*)str; +} + +gboolean iupgtkMotionNotifyEvent(GtkWidget *widget, GdkEventMotion *evt, Ihandle *ih) +{ + IFniis cb = (IFniis)IupGetCallback(ih,"MOTION_CB"); + if (cb) + { + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + iupgtkButtonKeySetStatus(evt->state, 0, status, 0); + cb(ih, (int)evt->x, (int)evt->y, status); + } + + (void)widget; + return FALSE; +} + +gboolean iupgtkButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih) +{ + IFniiiis cb = (IFniiiis)IupGetCallback(ih,"BUTTON_CB"); + if (cb) + { + int doubleclick = 0, ret, press = 1; + int b = IUP_BUTTON1+(evt->button-1); + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + + if (evt->type == GDK_BUTTON_RELEASE) + press = 0; + + if (evt->type == GDK_2BUTTON_PRESS) + doubleclick = 1; + + iupgtkButtonKeySetStatus(evt->state, evt->button, status, doubleclick); + + ret = cb(ih, b, press, (int)evt->x, (int)evt->y, status); + if (ret==IUP_CLOSE) + IupExitLoop(); + else if (ret==IUP_IGNORE) + return TRUE; + } + + (void)widget; + return FALSE; +} diff --git a/iup/src/gtk/iupgtk_dialog.c b/iup/src/gtk/iupgtk_dialog.c new file mode 100755 index 0000000..46c0ce1 --- /dev/null +++ b/iup/src/gtk/iupgtk_dialog.c @@ -0,0 +1,1023 @@ +/** \file + * \brief IupDialog class + * + * See Copyright Notice in "iup.h" + */ + +#include + +#ifdef HILDON +#include +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_class.h" +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_dlglist.h" +#include "iup_attrib.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_drvinfo.h" +#include "iup_focus.h" +#include "iup_str.h" +#define _IUPDLG_PRIVATE +#include "iup_dialog.h" +#include "iup_image.h" + +#include "iupgtk_drv.h" + + +static void gtkDialogSetMinMax(Ihandle* ih, int min_w, int min_h, int max_w, int max_h); + +/**************************************************************** + Utilities +****************************************************************/ + +int iupdrvDialogIsVisible(Ihandle* ih) +{ + return iupdrvIsVisible(ih); +} + +void iupdrvDialogUpdateSize(Ihandle* ih) +{ + int width, height; + gtk_window_get_size((GtkWindow*)ih->handle, &width, &height); + ih->currentwidth = width; + ih->currentheight = height; +} + +void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h) +{ + int width, height; + gtk_window_get_size((GtkWindow*)handle, &width, &height); + if (w) *w = width; + if (h) *h = height; +} + +void iupdrvDialogSetVisible(Ihandle* ih, int visible) +{ + if (visible) + gtk_widget_show(ih->handle); + else + gtk_widget_hide(ih->handle); +} + +void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y) +{ + gtk_window_get_position((GtkWindow*)handle, x, y); +} + +void iupdrvDialogSetPosition(Ihandle *ih, int x, int y) +{ + gtk_window_move((GtkWindow*)ih->handle, x, y); +} + +static int gtkDialogGetMenuSize(Ihandle* ih) +{ +#ifdef HILDON + return 0; +#else + if (ih->data->menu) + return iupdrvMenuGetMenuBarSize(ih->data->menu); + else + return 0; +#endif +} + +static int gtkDialogGetWindowDecor(Ihandle* ih, int *win_border, int *win_caption) +{ + int x, y, frame_x, frame_y; + gdk_window_get_origin(ih->handle->window, &x, &y); + gdk_window_get_root_origin(ih->handle->window, &frame_x, &frame_y); + *win_border = x-frame_x; + *win_caption = y-frame_y-*win_border; + return 1; /* just for compatibility with iupdrvGetWindowDecor */ +} + +void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu) +{ +#ifdef HILDON + /* In Hildon, borders have fixed dimensions, but are drawn as part + of the client area! */ + if (border) + *border = (iupAttribGetBoolean(ih, "HILDONWINDOW") && !iupAttribGetBoolean(ih, "FULLSCREEN")) ? 12 : 0; + if (caption) + *caption = 0; + if (menu) + *menu = 0; +#else + static int native_border = 0; + static int native_caption = 0; + + int has_caption = iupAttribGetBoolean(ih, "MAXBOX") || + iupAttribGetBoolean(ih, "MINBOX") || + iupAttribGetBoolean(ih, "MENUBOX") || + IupGetAttribute(ih, "TITLE"); /* must use IupGetAttribute to check from the native implementation */ + + int has_border = has_caption || + iupAttribGetBoolean(ih, "RESIZE") || + iupAttribGetBoolean(ih, "BORDER"); + + *menu = gtkDialogGetMenuSize(ih); + + if (ih->handle && iupdrvIsVisible(ih)) + { + int win_border, win_caption; + + if (gtkDialogGetWindowDecor(ih, &win_border, &win_caption)) + { +#ifdef WIN32 + if (*menu) + win_caption -= *menu; +#endif + + *border = 0; + if (has_border) + *border = win_border; + + *caption = 0; + if (has_caption) + *caption = win_caption; + + if (!native_border && *border) + native_border = win_border; + + if (!native_caption && *caption) + native_caption = win_caption; + } + } + + /* I could not set the size of the window including the decorations when the dialog is hidden */ + /* So we have to estimate the size of borders and caption when the dialog is hidden */ + + *border = 0; + if (has_border) + { + if (native_border) + *border = native_border; + else + *border = 5; + } + + *caption = 0; + if (has_caption) + { + if (native_caption) + *caption = native_caption; + else + *caption = 20; + } +#endif +} + +int iupdrvDialogSetPlacement(Ihandle* ih) +{ + char* placement; + int old_state = ih->data->show_state; + ih->data->show_state = IUP_SHOW; + + if (iupAttribGetBoolean(ih, "FULLSCREEN")) + { + gtk_window_fullscreen((GtkWindow*)ih->handle); + return 1; + } + + placement = iupAttribGet(ih, "PLACEMENT"); + if (!placement) + { + if (old_state == IUP_MAXIMIZE || old_state == IUP_MINIMIZE) + ih->data->show_state = IUP_RESTORE; + + gtk_window_unmaximize((GtkWindow*)ih->handle); + gtk_window_deiconify((GtkWindow*)ih->handle); + return 0; + } + + if (iupStrEqualNoCase(placement, "MINIMIZED")) + { + ih->data->show_state = IUP_MINIMIZE; + gtk_window_iconify((GtkWindow*)ih->handle); + } + else if (iupStrEqualNoCase(placement, "MAXIMIZED")) + { + ih->data->show_state = IUP_MAXIMIZE; + gtk_window_maximize((GtkWindow*)ih->handle); + } + else if (iupStrEqualNoCase(placement, "FULL")) + { + int width, height, x, y; + int border, caption, menu; + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + /* position the decoration outside the screen */ + x = -(border); + y = -(border+caption+menu); + + /* the dialog client area will cover the task bar */ + iupdrvGetFullSize(&width, &height); + + height += menu; /* menu is inside the client area. */ + + /* set the new size and position */ + /* The resize evt will update the layout */ + gtk_window_move((GtkWindow*)ih->handle, x, y); + gtk_window_resize((GtkWindow*)ih->handle, width, height); + + if (old_state == IUP_MAXIMIZE || old_state == IUP_MINIMIZE) + ih->data->show_state = IUP_RESTORE; + } + + iupAttribSetStr(ih, "PLACEMENT", NULL); /* reset to NORMAL */ + + return 1; +} + + +/**************************************************************** + Callbacks and Events +****************************************************************/ + + +gboolean iupgtkDialogDeleteEvent(GtkWidget *widget, GdkEvent *evt, Ihandle *ih) +{ + Icallback cb; + (void)widget; + (void)evt; + + /* even when ACTIVE=NO the dialog gets this evt */ + if (!iupdrvIsActive(ih)) + return TRUE; + + cb = IupGetCallback(ih, "CLOSE_CB"); + if (cb) + { + int ret = cb(ih); + if (ret == IUP_IGNORE) + return TRUE; + if (ret == IUP_CLOSE) + IupExitLoop(); + } + + IupHide(ih); /* default: close the window */ + + return TRUE; /* do not propagate */ +} + +static gboolean gtkDialogConfigureEvent(GtkWidget *widget, GdkEventConfigure *evt, Ihandle *ih) +{ + int old_width, old_height, old_x, old_y; + gint x, y; + (void)widget; + +#ifndef HILDON + /* In hildon the menu is not a menubar */ + if (ih->data->menu && ih->data->menu->handle) + gtk_widget_set_size_request(ih->data->menu->handle, evt->width, -1); +#endif + + if (ih->data->ignore_resize) return FALSE; + + old_width = iupAttribGetInt(ih, "_IUPGTK_OLD_WIDTH"); + old_height = iupAttribGetInt(ih, "_IUPGTK_OLD_HEIGHT"); + + /* Check the size change, because configure is called also for position changes */ + if (evt->width != old_width || evt->height != old_height) + { + IFnii cb; + int border, caption, menu; + iupAttribSetInt(ih, "_IUPGTK_OLD_WIDTH", evt->width); + iupAttribSetInt(ih, "_IUPGTK_OLD_HEIGHT", evt->height); + + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + /* update dialog size */ +#ifdef HILDON + /* In Hildon, the configure event contains the window size, not the client area size */ + ih->currentwidth = evt->width; + ih->currentheight = evt->height; +#else + ih->currentwidth = evt->width + 2*border; + ih->currentheight = evt->height + 2*border + caption; /* menu is inside the window client area */ +#endif + + cb = (IFnii)IupGetCallback(ih, "RESIZE_CB"); + if (!cb || cb(ih, evt->width, evt->height - menu)!=IUP_IGNORE) /* width and height here are for the client area */ + { + ih->data->ignore_resize = 1; + IupRefresh(ih); + ih->data->ignore_resize = 0; + } + } + + old_x = iupAttribGetInt(ih, "_IUPGTK_OLD_X"); + old_y = iupAttribGetInt(ih, "_IUPGTK_OLD_Y"); + gtk_window_get_position((GtkWindow*)ih->handle, &x, &y); /* ignore evt->x and evt->y because they are the clientpos and not X/Y */ + + /* Check the position change, because configure is called also for size changes */ + if (x != old_x || y != old_y) + { + IFnii cb; + iupAttribSetInt(ih, "_IUPGTK_OLD_X", x); + iupAttribSetInt(ih, "_IUPGTK_OLD_Y", y); + + cb = (IFnii)IupGetCallback(ih, "MOVE_CB"); + if (cb) + cb(ih, x, y); + } + + return FALSE; +} + +static gboolean gtkDialogWindowStateEvent(GtkWidget *widget, GdkEventWindowState *evt, Ihandle *ih) +{ + int state = -1; + (void)widget; + + if ((evt->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) && /* if flag changed and */ + (evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) && /* is now set */ + !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)) /* is visible */ + state = IUP_MAXIMIZE; + else if ((evt->changed_mask & GDK_WINDOW_STATE_ICONIFIED) && + (evt->new_window_state & GDK_WINDOW_STATE_ICONIFIED) && + !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)) + state = IUP_MINIMIZE; + else if ((evt->changed_mask & GDK_WINDOW_STATE_ICONIFIED) && + (evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) && + !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)) + state = IUP_MAXIMIZE; + else if (((evt->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) && /* maximized changed */ + !(evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) && /* not maximized */ + !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN) && /* is visible */ + !(evt->new_window_state & GDK_WINDOW_STATE_ICONIFIED)) /* not minimized */ + || /* OR */ + ((evt->changed_mask & GDK_WINDOW_STATE_ICONIFIED) && /* minimized changed */ + !(evt->new_window_state & GDK_WINDOW_STATE_ICONIFIED) && /* not minimized */ + !(evt->new_window_state & GDK_WINDOW_STATE_WITHDRAWN) && /* is visible */ + !(evt->new_window_state & GDK_WINDOW_STATE_MAXIMIZED))) /* not maximized */ + state = IUP_RESTORE; + + if (state < 0) + return FALSE; + + if (ih->data->show_state != state) + { + IFni cb; + ih->data->show_state = state; + + cb = (IFni)IupGetCallback(ih, "SHOW_CB"); + if (cb && cb(ih, state) == IUP_CLOSE) + IupExitLoop(); + } + + return FALSE; +} + +static gboolean gtkDialogChildDestroyEvent(GtkWidget *widget, Ihandle *ih) +{ + /* It seems that the documentation for this callback is not correct */ + /* The second parameter must be the user_data or it will fail. */ + (void)widget; + + /* If the IUP dialog was not destroyed, destroy it here. */ + if (iupObjectCheck(ih)) + IupDestroy(ih); + + /* this callback is usefull to destroy children dialogs when the parent is destroyed. */ + /* The application is responsable for destroying the children before this happen. */ + + return FALSE; +} + + +/**************************************************************** + Idialog Methods +****************************************************************/ + + +/* replace the common dialog SetChildrenPosition method because of + the menu that it is inside the dialog. */ +static void gtkDialogSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + int menu_h = gtkDialogGetMenuSize(ih); + (void)x; + (void)y; + + /* Child coordinates are relative to client left-top corner. */ + iupBaseSetPosition(ih->firstchild, 0, menu_h); +} + +static void* gtkDialogGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child) +{ + (void)child; + return (void*)gtk_bin_get_child((GtkBin*)ih->handle); +} + +static int gtkDialogMapMethod(Ihandle* ih) +{ + int decorations = 0; + int functions = 0; + InativeHandle* parent; + GtkWidget* fixed; + +#ifdef HILDON + if (iupAttribGetBoolean(ih, "HILDONWINDOW")) + { + HildonProgram *program = HILDON_PROGRAM(hildon_program_get_instance()); + ih->handle = hildon_window_new(); + if (ih->handle) + hildon_program_add_window(program, HILDON_WINDOW(ih->handle)); + } + else + { + iupAttribSetStr(ih, "DIALOGHINT", "YES"); /* otherwise not displayed correctly */ + ih->handle = gtk_window_new(GTK_WINDOW_TOPLEVEL); + } +#else + ih->handle = gtk_window_new(GTK_WINDOW_TOPLEVEL); +#endif + if (!ih->handle) + return IUP_ERROR; + + parent = iupDialogGetNativeParent(ih); + if (parent) + { + gtk_window_set_transient_for((GtkWindow*)ih->handle, (GtkWindow*)parent); + + /* manually remove child windows when parent is destroyed */ + g_signal_connect(G_OBJECT(parent), "destroy", G_CALLBACK(gtkDialogChildDestroyEvent), ih); + } + + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + /* The iupgtkKeyPressEvent of the control with the focus will propagate the key up to the dialog. */ + /* Inside iupgtkKeyPressEvent we test this to avoid duplicate calls. */ + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + + g_signal_connect(G_OBJECT(ih->handle), "configure-event", G_CALLBACK(gtkDialogConfigureEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "window-state-event", G_CALLBACK(gtkDialogWindowStateEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "delete-event", G_CALLBACK(iupgtkDialogDeleteEvent), ih); + + gtk_window_set_default_size((GtkWindow*)ih->handle, 100, 100); /* set this to avoid size calculation problems */ + + if (iupAttribGetBoolean(ih, "DIALOGHINT")) + gtk_window_set_type_hint(GTK_WINDOW(ih->handle), GDK_WINDOW_TYPE_HINT_DIALOG); + + /* the container that will receive the child element. */ + fixed = gtk_fixed_new(); + gtk_container_add((GtkContainer*)ih->handle, fixed); + gtk_widget_show(fixed); + + /* initialize the widget */ + gtk_widget_realize(ih->handle); + + if (iupAttribGetBoolean(ih, "DIALOGFRAME")) { + iupAttribSetStr(ih, "RESIZE", "NO"); + } + + if (!iupAttribGetBoolean(ih, "RESIZE")) { + iupAttribSetStr(ih, "MAXBOX", "NO"); /* Must also remove these, so RESIZE=NO can work */ + iupAttribSetStr(ih, "MINBOX", "NO"); + } + + if (IupGetAttribute(ih, "TITLE")) { /* must use IupGetAttribute to check from the native implementation */ + functions |= GDK_FUNC_MOVE; + decorations |= GDK_DECOR_TITLE; + } + + if (iupAttribGetBoolean(ih, "MENUBOX")) { + functions |= GDK_FUNC_CLOSE; + decorations |= GDK_DECOR_MENU; + } + + if (iupAttribGetBoolean(ih, "MINBOX")) { + functions |= GDK_FUNC_MINIMIZE; + decorations |= GDK_DECOR_MINIMIZE; + } + + if (iupAttribGetBoolean(ih, "MAXBOX")) { + functions |= GDK_FUNC_MAXIMIZE; + decorations |= GDK_DECOR_MAXIMIZE; + } + + if (iupAttribGetBoolean(ih, "RESIZE")) { + functions |= GDK_FUNC_RESIZE; + decorations |= GDK_DECOR_RESIZEH; + } + + if (iupAttribGetBoolean(ih, "BORDER")) + decorations |= GDK_DECOR_BORDER; + + if (decorations == 0) + gtk_window_set_decorated((GtkWindow*)ih->handle, FALSE); + else + { + GdkWindow* window = ih->handle->window; + if (window) + { + gdk_window_set_decorations(window, (GdkWMDecoration)decorations); + gdk_window_set_functions(window, (GdkWMFunction)functions); + } + } + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + { + /* Reset the DLGBGCOLOR global attribute + if it is the first time a dialog is created. + The value returned by gtk_style_new is not accurate. */ + GtkStyle* style = gtk_widget_get_style(ih->handle); + if (style && IupGetGlobal("_IUP_RESET_GLOBALCOLORS")) + { + iupgtkUpdateGlobalColors(style); + IupSetGlobal("_IUP_RESET_GLOBALCOLORS", NULL); + } + } + + /* configure the size range */ + gtkDialogSetMinMax(ih, 1, 1, 65535, 65535); /* MINSIZE and MAXSIZE default values */ + + /* Ignore VISIBLE before mapping */ + iupAttribSetStr(ih, "VISIBLE", NULL); + + return IUP_NOERROR; +} + +static void gtkDialogUnMapMethod(Ihandle* ih) +{ + GtkWidget* fixed; +#if GTK_CHECK_VERSION(2, 10, 0) + GtkStatusIcon* status_icon; +#endif + + if (ih->data->menu) + { + ih->data->menu->handle = NULL; /* the dialog will destroy the native menu */ + IupDestroy(ih->data->menu); + } + +#if GTK_CHECK_VERSION(2, 10, 0) + status_icon = (GtkStatusIcon*)iupAttribGet(ih, "_IUPDLG_STATUSICON"); + if (status_icon) + g_object_unref(status_icon); +#endif + + fixed = gtk_bin_get_child((GtkBin*)ih->handle); + gtk_widget_unrealize(fixed); + gtk_widget_destroy(fixed); + + gtk_widget_unrealize(ih->handle); /* To match the call to gtk_widget_realize */ + gtk_widget_destroy(ih->handle); /* To match the call to gtk_window_new */ +} + +static void gtkDialogLayoutUpdateMethod(Ihandle *ih) +{ + int border, caption, menu; + int width, height; + + if (ih->data->ignore_resize || + iupAttribGet(ih, "_IUPGTK_FS_STYLE")) + return; + + /* for dialogs the position is not updated here */ + ih->data->ignore_resize = 1; + + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + /* set size excluding the border */ + width = ih->currentwidth - 2*border; + height = ih->currentheight - 2*border - caption; /* menu is inside the client area. */ + gtk_window_resize((GtkWindow*)ih->handle, width, height); + + if (!iupAttribGetBoolean(ih, "RESIZE")) + { + GdkGeometry geometry; + geometry.min_width = width; + geometry.min_height = height; + geometry.max_width = width; + geometry.max_height = height; + gtk_window_set_geometry_hints((GtkWindow*)ih->handle, ih->handle, + &geometry, (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE)); + } + + ih->data->ignore_resize = 0; +} + + +/**************************************************************************** + Attributes +****************************************************************************/ + +static void gtkDialogSetMinMax(Ihandle* ih, int min_w, int min_h, int max_w, int max_h) +{ + /* The minmax size restricts the client area */ + GdkGeometry geometry; + int decorwidth = 0, decorheight = 0; + iupDialogGetDecorSize(ih, &decorwidth, &decorheight); + + geometry.min_width = 1; + if (min_w > decorwidth) + geometry.min_width = min_w-decorwidth; + + geometry.min_height = 1; + if (min_h > decorheight) + geometry.min_height = min_h-decorheight; + + geometry.max_width = 65535; + if (max_w > decorwidth && max_w > geometry.min_width) + geometry.max_width = max_w-decorwidth; + + geometry.max_height = 65535; + if (max_h > decorheight && max_w > geometry.min_height) + geometry.max_height = max_h-decorheight; + + gtk_window_set_geometry_hints((GtkWindow*)ih->handle, ih->handle, + &geometry, (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE)); +} + +static int gtkDialogSetMinSizeAttrib(Ihandle* ih, const char* value) +{ + int min_w = 1, min_h = 1; /* MINSIZE default value */ + int max_w = 65535, max_h = 65535; /* MAXSIZE default value */ + iupStrToIntInt(value, &min_w, &min_h, 'x'); + + /* if MAXSIZE also set, must be also updated here */ + iupStrToIntInt(iupAttribGet(ih, "MAXSIZE"), &max_w, &max_h, 'x'); + + gtkDialogSetMinMax(ih, min_w, min_h, max_w, max_h); + return 1; +} + +static int gtkDialogSetMaxSizeAttrib(Ihandle* ih, const char* value) +{ + int min_w = 1, min_h = 1; /* MINSIZE default value */ + int max_w = 65535, max_h = 65535; /* MAXSIZE default value */ + iupStrToIntInt(value, &max_w, &max_h, 'x'); + + /* if MINSIZE also set, must be also updated here */ + iupStrToIntInt(iupAttribGet(ih, "MINSIZE"), &min_w, &min_h, 'x'); + + gtkDialogSetMinMax(ih, min_w, min_h, max_w, max_h); + return 1; +} + +static char* gtkDialogGetXAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + + gint x = 0; + gtk_window_get_position((GtkWindow*)ih->handle, &x, NULL); + + sprintf(str, "%d", x); + return str; +} + +static char* gtkDialogGetYAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + + gint y = 0; + gtk_window_get_position((GtkWindow*)ih->handle, NULL, &y); + + sprintf(str, "%d", y); + return str; +} + +static int gtkDialogSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = ""; + gtk_window_set_title((GtkWindow*)ih->handle, iupgtkStrConvertToUTF8(value)); + return 0; +} + +static char* gtkDialogGetTitleAttrib(Ihandle* ih) +{ + const char* title = gtk_window_get_title((GtkWindow*)ih->handle); + + if (!title || title[0] == 0) + return NULL; + else + return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(title)); +} + +static char* gtkDialogGetClientSizeAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + + int width, height; + gtk_window_get_size((GtkWindow*)ih->handle, &width, &height); + height -= gtkDialogGetMenuSize(ih); + + sprintf(str, "%dx%d", width, height); + return str; +} + +static int gtkDialogSetFullScreenAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + { + if (!iupAttribGet(ih, "_IUPGTK_FS_STYLE")) + { + /* save the previous decoration attributes */ + /* during fullscreen these attributes can be consulted by the application */ + iupAttribStoreStr(ih, "_IUPGTK_FS_MAXBOX", iupAttribGet(ih, "MAXBOX")); + iupAttribStoreStr(ih, "_IUPGTK_FS_MINBOX", iupAttribGet(ih, "MINBOX")); + iupAttribStoreStr(ih, "_IUPGTK_FS_MENUBOX",iupAttribGet(ih, "MENUBOX")); + iupAttribStoreStr(ih, "_IUPGTK_FS_RESIZE", iupAttribGet(ih, "RESIZE")); + iupAttribStoreStr(ih, "_IUPGTK_FS_BORDER", iupAttribGet(ih, "BORDER")); + iupAttribStoreStr(ih, "_IUPGTK_FS_TITLE", IupGetAttribute(ih, "TITLE")); /* must use IupGetAttribute to check from the native implementation */ + + /* remove the decorations attributes */ + iupAttribSetStr(ih, "MAXBOX", "NO"); + iupAttribSetStr(ih, "MINBOX", "NO"); + iupAttribSetStr(ih, "MENUBOX", "NO"); + IupSetAttribute(ih, "TITLE", NULL); iupAttribSetStr(ih, "TITLE", NULL); /* remove from the hash table if we are during IupMap */ + iupAttribSetStr(ih, "RESIZE", "NO"); + iupAttribSetStr(ih, "BORDER", "NO"); + + if (iupdrvIsVisible(ih)) + gtk_window_fullscreen((GtkWindow*)ih->handle); + + iupAttribSetStr(ih, "_IUPGTK_FS_STYLE", "YES"); + } + } + else + { + char* fs_style = iupAttribGet(ih, "_IUPGTK_FS_STYLE"); + if (fs_style) + { + iupAttribSetStr(ih, "_IUPGTK_FS_STYLE", NULL); + + /* restore the decorations attributes */ + iupAttribStoreStr(ih, "MAXBOX", iupAttribGet(ih, "_IUPGTK_FS_MAXBOX")); + iupAttribStoreStr(ih, "MINBOX", iupAttribGet(ih, "_IUPGTK_FS_MINBOX")); + iupAttribStoreStr(ih, "MENUBOX",iupAttribGet(ih, "_IUPGTK_FS_MENUBOX")); + IupSetAttribute(ih, "TITLE", iupAttribGet(ih, "_IUPGTK_FS_TITLE")); /* must use IupSetAttribute to update the native implementation */ + iupAttribStoreStr(ih, "RESIZE", iupAttribGet(ih, "_IUPGTK_FS_RESIZE")); + iupAttribStoreStr(ih, "BORDER", iupAttribGet(ih, "_IUPGTK_FS_BORDER")); + + if (iupdrvIsVisible(ih)) + gtk_window_unfullscreen((GtkWindow*)ih->handle); + + /* remove auxiliar attributes */ + iupAttribSetStr(ih, "_IUPGTK_FS_MAXBOX", NULL); + iupAttribSetStr(ih, "_IUPGTK_FS_MINBOX", NULL); + iupAttribSetStr(ih, "_IUPGTK_FS_MENUBOX",NULL); + iupAttribSetStr(ih, "_IUPGTK_FS_RESIZE", NULL); + iupAttribSetStr(ih, "_IUPGTK_FS_BORDER", NULL); + iupAttribSetStr(ih, "_IUPGTK_FS_TITLE", NULL); + } + } + return 1; +} + +static int gtkDialogSetTopMostAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + gtk_window_set_keep_above((GtkWindow*)ih->handle, TRUE); + else + gtk_window_set_keep_above((GtkWindow*)ih->handle, FALSE); + return 1; +} + +#if GTK_CHECK_VERSION(2, 12, 0) +static int gtkDialogSetOpacityAttrib(Ihandle *ih, const char *value) +{ + int opacity; + if (!iupStrToInt(value, &opacity)) + return 0; + + gtk_window_set_opacity((GtkWindow*)ih->handle, (double)opacity/255.0); + return 1; +} +#endif + +static int gtkDialogSetIconAttrib(Ihandle* ih, const char *value) +{ + if (!value) + gtk_window_set_icon((GtkWindow*)ih->handle, NULL); + else + { + GdkPixbuf* icon = (GdkPixbuf*)iupImageGetIcon(value); + if (icon) + gtk_window_set_icon((GtkWindow*)ih->handle, icon); + } + return 1; +} + +static int gtkDialogSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + if (iupdrvBaseSetBgColorAttrib(ih, value)) + { + GtkStyle *style = gtk_widget_get_style(ih->handle); + if (style->bg_pixmap[GTK_STATE_NORMAL]) + { + style = gtk_style_copy(style); + style->bg_pixmap[GTK_STATE_NORMAL] = NULL; + gtk_widget_set_style(ih->handle, style); + } + return 1; + } + else + { + GdkPixbuf* pixbuf = iupImageGetImage(value, ih, 0); + if (pixbuf) + { + GdkPixmap* pixmap; + GtkStyle *style; + + gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap, NULL, 255); + + style = gtk_style_copy(gtk_widget_get_style(ih->handle)); + style->bg_pixmap[GTK_STATE_NORMAL] = pixmap; + gtk_widget_set_style(ih->handle, style); + + return 1; + } + } + + return 0; +} + +#if GTK_CHECK_VERSION(2, 10, 0) +static int gtkDialogTaskDoubleClick(int button) +{ + static int last_button = -1; + static GTimer* timer = NULL; + if (last_button == -1 || last_button != button) + { + last_button = button; + if (timer) + g_timer_destroy(timer); + timer = g_timer_new(); + return 0; + } + else + { + double seconds; + + if (!timer) /* just in case */ + return 0; + + seconds = g_timer_elapsed(timer, NULL); + if (seconds < 0.4) + { + /* reset state */ + g_timer_destroy(timer); + timer = NULL; + last_button = -1; + return 1; + } + else + { + g_timer_reset(timer); + return 0; + } + } +} + +static void gtkDialogTaskAction(GtkStatusIcon *status_icon, Ihandle *ih) +{ + /* from GTK source code it is called only when button==1 and pressed==1 */ + int button = 1; + int pressed = 1; + int dclick = gtkDialogTaskDoubleClick(button); + IFniii cb = (IFniii)IupGetCallback(ih, "TRAYCLICK_CB"); + if (cb && cb(ih, button, pressed, dclick) == IUP_CLOSE) + IupExitLoop(); + (void)status_icon; +} + +static void gtkDialogTaskPopupMenu(GtkStatusIcon *status_icon, guint gbutton, guint activate_time, Ihandle *ih) +{ + /* from GTK source code it is called only when button==3 and pressed==1 */ + int button = 3; + int pressed = 1; + int dclick = gtkDialogTaskDoubleClick(button); + IFniii cb = (IFniii)IupGetCallback(ih, "TRAYCLICK_CB"); + if (cb && cb(ih, button, pressed, dclick) == IUP_CLOSE) + IupExitLoop(); + (void)activate_time; + (void)gbutton; + (void)status_icon; +} + +static GtkStatusIcon* gtkDialogGetStatusIcon(Ihandle *ih) +{ + GtkStatusIcon* status_icon = (GtkStatusIcon*)iupAttribGet(ih, "_IUPDLG_STATUSICON"); + if (!status_icon) + { + status_icon = gtk_status_icon_new(); + + g_signal_connect(G_OBJECT(status_icon), "activate", G_CALLBACK(gtkDialogTaskAction), ih); + g_signal_connect(G_OBJECT(status_icon), "popup-menu", G_CALLBACK(gtkDialogTaskPopupMenu), ih); + + iupAttribSetStr(ih, "_IUPDLG_STATUSICON", (char*)status_icon); + } + return status_icon; +} + +static int gtkDialogSetTrayAttrib(Ihandle *ih, const char *value) +{ + GtkStatusIcon* status_icon = gtkDialogGetStatusIcon(ih); + gtk_status_icon_set_visible(status_icon, iupStrBoolean(value)); + return 1; +} + +static int gtkDialogSetTrayTipAttrib(Ihandle *ih, const char *value) +{ + GtkStatusIcon* status_icon = gtkDialogGetStatusIcon(ih); +#if GTK_CHECK_VERSION(2, 16, 0) + if (value) + { + gtk_status_icon_set_has_tooltip(status_icon, TRUE); + gtk_status_icon_set_tooltip_text(status_icon, value); + } + else + gtk_status_icon_set_has_tooltip(status_icon, FALSE); +#else + gtk_status_icon_set_tooltip(status_icon, value); +#endif + return 1; +} + +static int gtkDialogSetTrayImageAttrib(Ihandle *ih, const char *value) +{ + GtkStatusIcon* status_icon = gtkDialogGetStatusIcon(ih); + GdkPixbuf* icon = (GdkPixbuf*)iupImageGetIcon(value); + gtk_status_icon_set_from_pixbuf(status_icon, icon); + return 1; +} +#endif /* GTK_CHECK_VERSION(2, 10, 0) */ + +void iupdrvDialogInitClass(Iclass* ic) +{ + /* Driver Dependent Class methods */ + ic->Map = gtkDialogMapMethod; + ic->UnMap = gtkDialogUnMapMethod; + ic->LayoutUpdate = gtkDialogLayoutUpdateMethod; + ic->GetInnerNativeContainerHandle = gtkDialogGetInnerNativeContainerHandleMethod; + ic->SetChildrenPosition = gtkDialogSetChildrenPositionMethod; + + /* Callback Windows and GTK Only */ + iupClassRegisterCallback(ic, "TRAYCLICK_CB", "iii"); + + /* Driver Dependent Attribute functions */ + +#ifdef WIN32 + iupClassRegisterAttribute(ic, "HWND", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT); +#else + iupClassRegisterAttribute(ic, "XWINDOW", iupgtkGetNativeWindowHandle, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING); +#endif + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, "DLGBGCOLOR", NULL, IUPAF_DEFAULT); /* force new default value */ + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "X", gtkDialogGetXAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "Y", gtkDialogGetYAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + + /* Base Container */ + iupClassRegisterAttribute(ic, "CLIENTSIZE", gtkDialogGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + + /* Special */ + iupClassRegisterAttribute(ic, "TITLE", gtkDialogGetTitleAttrib, gtkDialogSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupDialog only */ + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, gtkDialogSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ICON", NULL, gtkDialogSetIconAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FULLSCREEN", NULL, gtkDialogSetFullScreenAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MINSIZE", NULL, gtkDialogSetMinSizeAttrib, IUPAF_SAMEASSYSTEM, "1x1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MAXSIZE", NULL, gtkDialogSetMaxSizeAttrib, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SAVEUNDER", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); /* saveunder not supported in GTK */ + + /* IupDialog Windows and GTK Only */ + iupClassRegisterAttribute(ic, "TOPMOST", NULL, gtkDialogSetTopMostAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DIALOGHINT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +#if GTK_CHECK_VERSION(2, 12, 0) + iupClassRegisterAttribute(ic, "OPACITY", NULL, gtkDialogSetOpacityAttrib, NULL, NULL, IUPAF_NO_INHERIT); +#endif +#if GTK_CHECK_VERSION(2, 10, 0) + iupClassRegisterAttribute(ic, "TRAY", NULL, gtkDialogSetTrayAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TRAYIMAGE", NULL, gtkDialogSetTrayImageAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TRAYTIP", NULL, gtkDialogSetTrayTipAttrib, NULL, NULL, IUPAF_NO_INHERIT); +#endif +} diff --git a/iup/src/gtk/iupgtk_drv.h b/iup/src/gtk/iupgtk_drv.h new file mode 100755 index 0000000..ade2a4a --- /dev/null +++ b/iup/src/gtk/iupgtk_drv.h @@ -0,0 +1,82 @@ +/** \file + * \brief GTK Driver + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPGTK_DRV_H +#define __IUPGTK_DRV_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* global variables, declared in iupgtk_globalattrib.c */ +extern int iupgtk_utf8autoconvert; + + +/* common */ +gboolean iupgtkEnterLeaveEvent(GtkWidget *widget, GdkEventCrossing *evt, Ihandle* ih); +gboolean iupgtkShowHelp(GtkWidget *widget, GtkWidgetHelpType *arg1, Ihandle* ih); +GtkFixed* iupgtkBaseGetFixed(Ihandle* ih); +void iupgtkBaseAddToParent(Ihandle* ih); +void iupgdkColorSet(GdkColor* color, unsigned char r, unsigned char g, unsigned char b); +int iupgtkSetDragDropAttrib(Ihandle* ih, const char* value); +int iupgtkSetMnemonicTitle(Ihandle* ih, GtkLabel* label, const char* value); +char* iupgtkStrConvertToUTF8(const char* str); +char* iupgtkStrConvertFromUTF8(const char* str); +void iupgtkReleaseConvertUTF8(void); +char* iupgtkStrConvertFromFilename(const char* str); +char* iupgtkStrConvertToFilename(const char* str); +void iupgtkUpdateMnemonic(Ihandle* ih); +gboolean iupgtkMotionNotifyEvent(GtkWidget *widget, GdkEventMotion *evt, Ihandle *ih); +gboolean iupgtkButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih); +void iupgtkBaseSetBgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b); +void iupgtkBaseSetFgColor(InativeHandle* handle, unsigned char r, unsigned char g, unsigned char b); +void iupgtkBaseSetFgGdkColor(InativeHandle* handle, GdkColor *color); + + +/* focus */ +gboolean iupgtkFocusInOutEvent(GtkWidget *widget, GdkEventFocus *evt, Ihandle* ih); + + +/* key */ +gboolean iupgtkKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle* ih); +gboolean iupgtkKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle* ih); +void iupgtkButtonKeySetStatus(guint state, unsigned int but, char* status, int doubleclick); +void iupgtkKeyEncode(int key, guint *keyval, guint *state); + + +/* font */ +char* iupgtkGetPangoFontDescAttrib(Ihandle *ih); +char* iupgtkGetFontIdAttrib(Ihandle *ih); +PangoFontDescription* iupgtkGetPangoFontDesc(const char* value); +char* iupgtkFindPangoFontDesc(PangoFontDescription* fontdesc); +void iupgtkFontUpdatePangoLayout(Ihandle* ih, PangoLayout* layout); +void iupgtkFontUpdateObjectPangoLayout(Ihandle* ih, gpointer object); + +/* There are PANGO_SCALE Pango units in one device unit. + For an output backend where a device unit is a pixel, + a size value of 10 * PANGO_SCALE gives 10 pixels. */ +#define IUPGTK_PANGOUNITS2PIXELS(_x) (((_x) + PANGO_SCALE/2) / PANGO_SCALE) +#define IUPGTK_PIXELS2PANGOUNITS(_x) ((_x) * PANGO_SCALE) + + +/* open */ +char* iupgtkGetNativeWindowHandle(Ihandle* ih); +void iupgtkPushVisualAndColormap(void* visual, void* colormap); +void* iupgtkGetNativeGraphicsContext(GtkWidget* widget); +void iupgtkReleaseNativeGraphicsContext(GtkWidget* widget, void* gc); +void iupgtkUpdateGlobalColors(GtkStyle* style); + + +/* dialog */ +gboolean iupgtkDialogDeleteEvent(GtkWidget *widget, GdkEvent *evt, Ihandle *ih); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/gtk/iupgtk_filedlg.c b/iup/src/gtk/iupgtk_filedlg.c new file mode 100755 index 0000000..5426910 --- /dev/null +++ b/iup/src/gtk/iupgtk_filedlg.c @@ -0,0 +1,536 @@ +/** \file + * \brief IupFileDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drvinfo.h" +#include "iup_dialog.h" +#include "iup_strmessage.h" +#include "iup_array.h" +#include "iup_drvinfo.h" + +#include "iupgtk_drv.h" + + +static void iupStrRemoveChar(char* str, char c) +{ + char* p = str; + while (*str) + { + if (*str != c) + { + *p = *str; + p++; + } + + str++; + } + *p = 0; +} + +static void gtkFileDlgGetNextFilter(char** str, char** name, char** pattern) +{ + int len; + *name = *str; + + len = strlen(*name); + *pattern = (*name)+len+1; + + len = strlen(*pattern); + *str = (*pattern)+len+1; + + iupStrReplace(*pattern, ';', 0); /* remove other patterns */ +} + +static void gtkFileDlgGetMultipleFiles(Ihandle* ih, GSList* list) +{ + int len, cur_len, dir_len = -1; + char *filename, *all_names; + Iarray* names_array = iupArrayCreate(1024, 1); /* just set an initial size, but count is 0 */ + + while (list) + { + filename = (char*)list->data; + len = strlen(filename); + + if (dir_len == -1) + { + dir_len = len; + + while (dir_len && (filename[dir_len] != '/' && filename[dir_len] != '\\')) + dir_len--; + + cur_len = iupArrayCount(names_array); + all_names = iupArrayAdd(names_array, dir_len+1); + memcpy(all_names+cur_len, filename, dir_len); + all_names[cur_len+dir_len] = '|'; + + dir_len++; /* skip separator */ + } + len -= dir_len; /* remove directory */ + + cur_len = iupArrayCount(names_array); + all_names = iupArrayAdd(names_array, len+1); + memcpy(all_names+cur_len, filename+dir_len, len); + all_names[cur_len+len] = '|'; + + g_free(filename); + list = list->next; + } + + cur_len = iupArrayCount(names_array); + all_names = iupArrayInc(names_array); + all_names[cur_len+1] = 0; + + iupAttribStoreStr(ih, "VALUE", iupgtkStrConvertFromFilename(all_names)); + + iupArrayDestroy(names_array); +} + +#ifdef WIN32 +#include +#else +#include +#endif + +static void gtkFileDlgUpdatePreviewGLCanvas(Ihandle* ih) +{ + Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS"); + if (glcanvas) + { +#ifdef WIN32 + iupAttribSetStr(glcanvas, "HWND", iupAttribGet(ih, "HWND")); +#else + iupAttribSetStr(glcanvas, "XWINDOW", iupAttribGet(ih, "XWINDOW")); +#endif + glcanvas->iclass->Map(glcanvas); + } +} + +static void gtkFileDlgPreviewRealize(GtkWidget *widget, Ihandle *ih) +{ + iupAttribSetStr(ih, "PREVIEWDC", iupgtkGetNativeGraphicsContext(widget)); + iupAttribSetStr(ih, "WID", (char*)widget); + +#ifdef WIN32 + iupAttribSetStr(ih, "HWND", (char*)GDK_WINDOW_HWND(widget->window)); +#else + iupAttribSetStr(ih, "XWINDOW", (char*)GDK_WINDOW_XID(widget->window)); + iupAttribSetStr(ih, "XDISPLAY", (char*)iupdrvGetDisplay()); +#endif + gtkFileDlgUpdatePreviewGLCanvas(ih); +} + +static void gtkFileDlgRealize(GtkWidget *widget, Ihandle *ih) +{ + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + cb(ih, NULL, "INIT"); + + (void)widget; +} + +static gboolean gtkFileDlgPreviewConfigureEvent(GtkWidget *widget, GdkEventConfigure *evt, Ihandle *ih) +{ + iupAttribSetInt(ih, "PREVIEWWIDTH", evt->width); + iupAttribSetInt(ih, "PREVIEWHEIGHT", evt->height); + + (void)widget; + return FALSE; +} + +static gboolean gtkFileDlgPreviewExposeEvent(GtkWidget *widget, GdkEventExpose *evt, Ihandle *ih) +{ + GtkFileChooser *file_chooser = (GtkFileChooser*)iupAttribGet(ih, "_IUPDLG_FILE_CHOOSER"); + char *filename = gtk_file_chooser_get_preview_filename(file_chooser); + + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + if (iupdrvIsFile(filename)) + cb(ih, iupgtkStrConvertFromFilename(filename), "PAINT"); + else + cb(ih, NULL, "PAINT"); + + g_free (filename); + + (void)evt; + (void)widget; + return TRUE; /* stop other handlers */ +} + +static void gtkFileDlgUpdatePreview(GtkFileChooser *file_chooser, Ihandle* ih) +{ + char *filename = gtk_file_chooser_get_preview_filename(file_chooser); + + if (iupdrvIsFile(filename)) + { + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + cb(ih, iupgtkStrConvertFromFilename(filename), "SELECT"); + } + + g_free (filename); + + gtk_file_chooser_set_preview_widget_active(file_chooser, TRUE); +} + +static int gtkFileDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + GtkWidget* dialog; + GtkWidget* preview_canvas = NULL; + GtkFileChooserAction action; + IFnss file_cb; + char* value; + int response, filter_count = 0; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + value = iupAttribGetStr(ih, "DIALOGTYPE"); + if (iupStrEqualNoCase(value, "SAVE")) + action = GTK_FILE_CHOOSER_ACTION_SAVE; + else if (iupStrEqualNoCase(value, "DIR")) + action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; + else + action = GTK_FILE_CHOOSER_ACTION_OPEN; + + value = iupAttribGet(ih, "TITLE"); + if (!value) + { + GtkStockItem item; + + if (action == GTK_FILE_CHOOSER_ACTION_SAVE) + value = GTK_STOCK_SAVE_AS; + else + value = GTK_STOCK_OPEN; + + gtk_stock_lookup(value, &item); + value = item.label; + + iupAttribStoreStr(ih, "TITLE", iupgtkStrConvertFromUTF8(value)); + value = iupAttribGet(ih, "TITLE"); + iupStrRemoveChar(value, '_'); + } + + dialog = gtk_file_chooser_dialog_new(iupgtkStrConvertToUTF8(value), (GtkWindow*)parent, action, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + NULL); + if (!dialog) + return IUP_ERROR; + + if (action == GTK_FILE_CHOOSER_ACTION_SAVE) + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_SAVE, GTK_RESPONSE_OK); + else if (action == GTK_FILE_CHOOSER_ACTION_OPEN) + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OPEN, GTK_RESPONSE_OK); + else + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK); + + if (IupGetCallback(ih, "HELP_CB")) + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP); + +#if GTK_CHECK_VERSION(2, 6, 0) + if (iupAttribGetBoolean(ih, "SHOWHIDDEN")) + gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE); +#endif + + if (iupAttribGetBoolean(ih, "MULTIPLEFILES") && action == GTK_FILE_CHOOSER_ACTION_OPEN) + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE); + +#if GTK_CHECK_VERSION(2, 8, 0) + if (!iupAttribGetBoolean(ih, "NOOVERWRITEPROMPT") && action == GTK_FILE_CHOOSER_ACTION_SAVE) + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); +#endif + + /* just check for the path inside FILE */ + value = iupAttribGet(ih, "FILE"); + if (value && (value[0] == '/' || value[1] == ':')) + { + char* dir = iupStrFileGetPath(value); + int len = strlen(dir); + iupAttribStoreStr(ih, "DIRECTORY", dir); + free(dir); + iupAttribStoreStr(ih, "FILE", value+len); + } + + value = iupAttribGet(ih, "DIRECTORY"); + if (value) + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), iupgtkStrConvertToFilename(value)); + + value = iupAttribGet(ih, "FILE"); + if (value) + { + if (action == GTK_FILE_CHOOSER_ACTION_SAVE) + gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), iupgtkStrConvertToFilename(value)); + else + { + if (iupdrvIsFile(value)) /* check if file exists */ + gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), iupgtkStrConvertToFilename(value)); + } + } + + value = iupAttribGet(ih, "EXTFILTER"); + if (value) + { + char *name, *pattern, *filters = iupStrDup(value), *p; + char atrib[30]; + int i; + int filter_index = iupAttribGetInt(ih, "FILTERUSED"); + if (!filter_index) + filter_index = 1; + + filter_count = iupStrReplace(filters, '|', 0) / 2; + + p = filters; + for (i=0; ihandle = GTK_WIDGET(dialog); + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + + do + { + response = gtk_dialog_run(GTK_DIALOG(dialog)); + + if (response == GTK_RESPONSE_HELP) + { + Icallback cb = IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + response = GTK_RESPONSE_CANCEL; + } + else if (response == GTK_RESPONSE_OK) + { + char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + int file_exist = iupdrvIsFile(filename); + int dir_exist = iupdrvIsDirectory(filename); + g_free(filename); + + if (action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) + { + if (!dir_exist) + { + iupStrMessageShowError(ih, "IUP_INVALIDDIR"); + response = GTK_RESPONSE_HELP; /* to leave the dialog open */ + continue; + } + } + else if (!iupAttribGetBoolean(ih, "MULTIPLEFILES")) + { + if (dir_exist) + { + iupStrMessageShowError(ih, "IUP_FILEISDIR"); + response = GTK_RESPONSE_HELP; /* to leave the dialog open */ + continue; + } + + if (!file_exist) /* if do not exist check ALLOWNEW */ + { + value = iupAttribGet(ih, "ALLOWNEW"); + if (!value) + { + if (action == GTK_FILE_CHOOSER_ACTION_SAVE) + value = "YES"; + else + value = "NO"; + } + + if (!iupStrBoolean(value)) + { + iupStrMessageShowError(ih, "IUP_FILENOTEXIST"); + response = GTK_RESPONSE_HELP; /* to leave the dialog open */ + continue; + } + } + + if (file_cb) + { + char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + int ret = file_cb(ih, iupgtkStrConvertFromFilename(filename), "OK"); + g_free(filename); + + if (ret == IUP_IGNORE) + { + response = GTK_RESPONSE_HELP; /* to leave the dialog open */ + continue; + } + } + } + } + } while (response == GTK_RESPONSE_HELP); + + if (file_cb) + { + if (iupAttribGetBoolean(ih, "SHOWPREVIEW")) + iupgtkReleaseNativeGraphicsContext(preview_canvas, (void*)iupAttribGet(ih, "PREVIEWDC")); + + file_cb(ih, NULL, "FINISH"); + } + + if (response == GTK_RESPONSE_OK) + { + int file_exist, dir_exist; + + if (filter_count) + { + int i; + char atrib[30]; + GtkFileFilter* filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(dialog)); + + for (i=0; inext) /* if more than one file */ + gtkFileDlgGetMultipleFiles(ih, file_list); + else + { + char* filename = (char*)file_list->data; + iupAttribStoreStr(ih, "VALUE", iupgtkStrConvertFromFilename(filename)); + g_free(filename); + } + + g_slist_free(file_list); + file_exist = 1; + dir_exist = 0; + } + else + { + char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + iupAttribStoreStr(ih, "VALUE", iupgtkStrConvertFromFilename(filename)); + file_exist = iupdrvIsFile(filename); + dir_exist = iupdrvIsDirectory(filename); + g_free(filename); + } + + if (dir_exist) + { + iupAttribSetStr(ih, "FILEEXIST", NULL); + iupAttribSetStr(ih, "STATUS", "0"); + } + else + { + if (file_exist) /* check if file exists */ + { + iupAttribSetStr(ih, "FILEEXIST", "YES"); + iupAttribSetStr(ih, "STATUS", "0"); + } + else + { + iupAttribSetStr(ih, "FILEEXIST", "NO"); + iupAttribSetStr(ih, "STATUS", "1"); + } + } + + if (action != GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER && !iupAttribGetBoolean(ih, "NOCHANGEDIR")) /* do change the current directory */ + { + /* GtkFileChooser does not change the current directory */ + char* dir = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog)); + if (dir) iupdrvSetCurrentDirectory(dir); + g_free(dir); + } + } + else + { + iupAttribSetStr(ih, "FILTERUSED", NULL); + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "FILEEXIST", NULL); + iupAttribSetStr(ih, "STATUS", "-1"); + } + + gtk_widget_destroy(GTK_WIDGET(dialog)); + + return IUP_NOERROR; +} + +void iupdrvFileDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = gtkFileDlgPopup; + + /* IupFileDialog Windows and GTK Only */ + iupClassRegisterAttribute(ic, "EXTFILTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILTERINFO", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILTERUSED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MULTIPLEFILES", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/gtk/iupgtk_focus.c b/iup/src/gtk/iupgtk_focus.c new file mode 100755 index 0000000..fa596ba --- /dev/null +++ b/iup/src/gtk/iupgtk_focus.c @@ -0,0 +1,44 @@ +/** \file + * \brief GTK Focus + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_focus.h" +#include "iup_attrib.h" +#include "iup_drv.h" +#include "iup_assert.h" +#include "iup_drv.h" + +#include "iupgtk_drv.h" + + +void iupdrvSetFocus(Ihandle *ih) +{ + gtk_widget_grab_focus(ih->handle); +} + +gboolean iupgtkFocusInOutEvent(GtkWidget *widget, GdkEventFocus *evt, Ihandle *ih) +{ + (void)widget; + + if (evt->in) + { + /* even when ACTIVE=NO the dialog gets this evt */ + if (!iupdrvIsActive(ih)) + return TRUE; + + iupCallGetFocusCb(ih); + } + else + iupCallKillFocusCb(ih); + + return FALSE; +} diff --git a/iup/src/gtk/iupgtk_font.c b/iup/src/gtk/iupgtk_font.c new file mode 100755 index 0000000..f7ff348 --- /dev/null +++ b/iup/src/gtk/iupgtk_font.c @@ -0,0 +1,413 @@ +/** \file + * \brief GTK Font mapping + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_attrib.h" +#include "iup_array.h" +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_assert.h" + +#include "iupgtk_drv.h" + + +typedef struct _IgtkFont +{ + char standardfont[200]; + PangoFontDescription* fontdesc; + PangoAttribute* strikethrough; + PangoAttribute* underline; + PangoLayout* layout; + int charwidth, charheight; +} IgtkFont; + +static Iarray* gtk_fonts = NULL; +static PangoContext *gtk_fonts_context = NULL; + +static void gtkFontUpdate(IgtkFont* gtkfont) +{ + PangoAttrList *attrs; + + pango_layout_set_font_description(gtkfont->layout, gtkfont->fontdesc); + + attrs = pango_layout_get_attributes(gtkfont->layout); + if (!attrs) + { + attrs = pango_attr_list_new(); + pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->strikethrough)); + pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->underline)); + pango_layout_set_attributes(gtkfont->layout, attrs); + } + else + { + pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->strikethrough)); + pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->underline)); + } +} + +static IgtkFont* gtkFindFont(const char *standardfont) +{ + PangoFontMetrics* metrics; + PangoFontDescription* fontdesc; + int i, + is_underline = 0, + is_strikeout = 0, + count = iupArrayCount(gtk_fonts); + + IgtkFont* fonts = (IgtkFont*)iupArrayGetData(gtk_fonts); + + /* Check if the standardfont already exists in cache */ + for (i = 0; i < count; i++) + { + if (iupStrEqualNoCase(standardfont, fonts[i].standardfont)) + return &fonts[i]; + } + + /* not found, create a new one */ + { + int size = 0, is_pango = 0; + int is_bold = 0, + is_italic = 0; + char typeface[1024]; + const char* mapped_name; + + /* parse the old Windows format first */ + if (!iupFontParseWin(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout)) + { + if (!iupFontParseX(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout)) + { + if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout)) + return NULL; + else + is_pango = 1; + } + } + + mapped_name = iupFontGetPangoName(typeface); + if (mapped_name) + strcpy(typeface, mapped_name); + + if (is_pango && !is_underline && !is_strikeout && size>0) + fontdesc = pango_font_description_from_string(standardfont); + else + { + char new_standardfont[200]; + if (size<0) + { + double res = ((double)gdk_screen_get_width(gdk_screen_get_default()) / (double)gdk_screen_get_width_mm(gdk_screen_get_default())); /* pixels/mm */ + /* 1 point = 1/72 inch 1 inch = 25.4 mm */ + /* pixel = ((point/72)*25.4)*pixel/mm */ + size = (int)((-size/res)*2.83464567 + 0.5); /* from pixels to points */ + } + + sprintf(new_standardfont, "%s, %s%s%d", typeface, is_bold?"Bold ":"", is_italic?"Italic ":"", size); + + fontdesc = pango_font_description_from_string(new_standardfont); + } + } + + if (!fontdesc) + return NULL; + + /* create room in the array */ + fonts = (IgtkFont*)iupArrayInc(gtk_fonts); + + strcpy(fonts[i].standardfont, standardfont); + fonts[i].fontdesc = fontdesc; + fonts[i].strikethrough = pango_attr_strikethrough_new(is_strikeout? TRUE: FALSE); + fonts[i].underline = pango_attr_underline_new(is_underline? PANGO_UNDERLINE_SINGLE: PANGO_UNDERLINE_NONE); + fonts[i].layout = pango_layout_new(gtk_fonts_context); + + metrics = pango_context_get_metrics(gtk_fonts_context, fontdesc, pango_context_get_language(gtk_fonts_context)); + fonts[i].charheight = pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics); + fonts[i].charheight = IUPGTK_PANGOUNITS2PIXELS(fonts[i].charheight); + fonts[i].charwidth = pango_font_metrics_get_approximate_char_width(metrics); + fonts[i].charwidth = IUPGTK_PANGOUNITS2PIXELS(fonts[i].charwidth); + pango_font_metrics_unref(metrics); + + gtkFontUpdate(&(fonts[i])); + + return &fonts[i]; +} + +static PangoLayout* gtkFontGetWidgetPangoLayout(Ihandle *ih) +{ + int inherit; + char *def_value; + /* only check the native implementation */ + return (PangoLayout*)iupClassObjectGetAttribute(ih, "PANGOLAYOUT", &def_value, &inherit); +} + +static IgtkFont* gtkFontCreateNativeFont(Ihandle* ih, const char* value) +{ + IgtkFont *gtkfont = gtkFindFont(value); + if (!gtkfont) + { + iupERROR1("Failed to create Font: %s", value); + return NULL; + } + + iupAttribSetStr(ih, "_IUP_GTKFONT", (char*)gtkfont); + return gtkfont; +} + +static IgtkFont* gtkFontGet(Ihandle *ih) +{ + IgtkFont* gtkfont = (IgtkFont*)iupAttribGet(ih, "_IUP_GTKFONT"); + if (!gtkfont) + gtkfont = gtkFontCreateNativeFont(ih, iupGetFontAttrib(ih)); + return gtkfont; +} + +void iupgtkFontUpdatePangoLayout(Ihandle* ih, PangoLayout* layout) +{ + IgtkFont* gtkfont; + PangoAttrList *attrs; + + if (!layout) + return; + + gtkfont = gtkFontGet(ih); + if (!gtkfont) + return; + + attrs = pango_layout_get_attributes(layout); + if (!attrs) + { + attrs = pango_attr_list_new(); + pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->strikethrough)); + pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->underline)); + pango_layout_set_attributes(layout, attrs); + } + else + { + pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->strikethrough)); + pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->underline)); + } +} + +void iupgtkFontUpdateObjectPangoLayout(Ihandle* ih, gpointer object) +{ + PangoAttrList *attrs; + + IgtkFont* gtkfont = gtkFontGet(ih); + if (!gtkfont) + return; + + g_object_get(object, "attributes", &attrs, NULL); + if (!attrs) + { + attrs = pango_attr_list_new(); + pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->strikethrough)); + pango_attr_list_insert(attrs, pango_attribute_copy(gtkfont->underline)); + g_object_set(object, "attributes", attrs, NULL); + } + else + { + pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->strikethrough)); + pango_attr_list_change(attrs, pango_attribute_copy(gtkfont->underline)); + } +} + +char* iupdrvGetSystemFont(void) +{ + static char systemfont[200] = ""; + GtkStyle* style; + GtkWidget* widget = gtk_invisible_new(); + gtk_widget_realize(widget); + style = gtk_widget_get_style(widget); + if (!style || !style->font_desc) + strcpy(systemfont, "Sans, 10"); + else + { + char* desc = pango_font_description_to_string(style->font_desc); + strcpy(systemfont, desc); + g_free(desc); + } + gtk_widget_unrealize(widget); + gtk_widget_destroy(widget); + return systemfont; +} + +char* iupgtkFindPangoFontDesc(PangoFontDescription* fontdesc) +{ + int i, count = iupArrayCount(gtk_fonts); + IgtkFont* fonts = (IgtkFont*)iupArrayGetData(gtk_fonts); + + /* Check if the standardfont already exists in cache */ + for (i = 0; i < count; i++) + { + if (pango_font_description_equal(fontdesc, fonts[i].fontdesc)) + return fonts[i].standardfont; + } + + return NULL; +} + +PangoFontDescription* iupgtkGetPangoFontDesc(const char* value) +{ + IgtkFont *gtkfont = gtkFindFont(value); + if (!gtkfont) + { + iupERROR1("Failed to create Font: %s", value); + return NULL; + } + return gtkfont->fontdesc; +} + +char* iupgtkGetPangoFontDescAttrib(Ihandle *ih) +{ + IgtkFont* gtkfont = gtkFontGet(ih); + if (!gtkfont) + return NULL; + else + return (char*)gtkfont->fontdesc; +} + +char* iupgtkGetFontIdAttrib(Ihandle *ih) +{ + IgtkFont* gtkfont = gtkFontGet(ih); + if (!gtkfont) + return NULL; + else + { + GdkFont* gdk_font = gdk_font_from_description(gtkfont->fontdesc); + return (char*)gdk_font_id(gdk_font); /* In UNIX will return an X Font ID, in Win32 will return an HFONT */ + } +} + +int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + IgtkFont* gtkfont = gtkFontCreateNativeFont(ih, value); + if (!gtkfont) + return 1; + + /* If FONT is changed, must update the SIZE attribute */ + iupBaseUpdateSizeFromFont(ih); + + /* FONT attribute must be able to be set before mapping, + so the font is enable for size calculation. */ + if (ih->handle && (ih->iclass->nativetype != IUP_TYPEVOID)) + { + gtk_widget_modify_font(ih->handle, gtkfont->fontdesc); + iupgtkFontUpdatePangoLayout(ih, gtkFontGetWidgetPangoLayout(ih)); + } + + return 1; +} + +void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h) +{ + int max_w; + + IgtkFont* gtkfont = gtkFontGet(ih); + if (!gtkfont) + { + if (w) *w = 0; + if (h) *h = 0; + return; + } + + if (!str) + { + if (w) *w = 0; + if (h) *h = gtkfont->charheight * 1; + return; + } + + max_w = 0; + if (str[0]) + { + int dummy_h; + + pango_layout_set_attributes(gtkfont->layout, NULL); + + if (iupAttribGetBoolean(ih, "MARKUP")) + pango_layout_set_markup(gtkfont->layout, iupgtkStrConvertToUTF8(str), -1); + else + pango_layout_set_text(gtkfont->layout, iupgtkStrConvertToUTF8(str), -1); + + pango_layout_get_pixel_size(gtkfont->layout, &max_w, &dummy_h); + } + + if (w) *w = max_w; + if (h) *h = gtkfont->charheight * iupStrLineCount(str); +} + +int iupdrvFontGetStringWidth(Ihandle* ih, const char* str) +{ + IgtkFont* gtkfont; + int len, w; + char* line_end; + + if (!str || str[0]==0) + return 0; + + gtkfont = gtkFontGet(ih); + if (!gtkfont) + return 0; + + line_end = strchr(str, '\n'); + if (line_end) + len = line_end-str; + else + len = strlen(str); + + if (iupAttribGetBoolean(ih, "MARKUP")) + pango_layout_set_markup(gtkfont->layout, iupgtkStrConvertToUTF8(str), len); + else + pango_layout_set_text(gtkfont->layout, iupgtkStrConvertToUTF8(str), len); + + pango_layout_get_pixel_size(gtkfont->layout, &w, NULL); + return w; +} + +void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight) +{ + IgtkFont* gtkfont = gtkFontGet(ih); + if (!gtkfont) + { + if (charwidth) *charwidth = 0; + if (charheight) *charheight = 0; + return; + } + + if (charheight) + *charheight = gtkfont->charheight; + + if (charwidth) + *charwidth = gtkfont->charwidth; +} + +void iupdrvFontInit(void) +{ + gtk_fonts = iupArrayCreate(50, sizeof(IgtkFont)); + gtk_fonts_context = gdk_pango_context_get(); + pango_context_set_language(gtk_fonts_context, gtk_get_default_language()); +} + +void iupdrvFontFinish(void) +{ + int i, count = iupArrayCount(gtk_fonts); + IgtkFont* fonts = (IgtkFont*)iupArrayGetData(gtk_fonts); + for (i = 0; i < count; i++) + { + pango_font_description_free(fonts[i].fontdesc); + pango_attribute_destroy(fonts[i].strikethrough); + pango_attribute_destroy(fonts[i].underline); + } + iupArrayDestroy(gtk_fonts); + g_object_unref(gtk_fonts_context); +} diff --git a/iup/src/gtk/iupgtk_fontdlg.c b/iup/src/gtk/iupgtk_fontdlg.c new file mode 100755 index 0000000..5769cbc --- /dev/null +++ b/iup/src/gtk/iupgtk_fontdlg.c @@ -0,0 +1,91 @@ +/** \file + * \brief IupFontDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" + +#include "iupgtk_drv.h" + + +static int gtkFontDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + GtkFontSelectionDialog* dialog; + int response; + char* preview_text; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + dialog = (GtkFontSelectionDialog*)gtk_font_selection_dialog_new(iupgtkStrConvertToUTF8(iupAttribGet(ih, "TITLE"))); + if (!dialog) + return IUP_ERROR; + + if (parent) + gtk_window_set_transient_for((GtkWindow*)dialog, (GtkWindow*)parent); + + gtk_font_selection_dialog_set_font_name(dialog, iupAttribGet(ih, "VALUE")); + + preview_text = iupAttribGet(ih, "PREVIEWTEXT"); + if (preview_text) + gtk_font_selection_dialog_set_preview_text(dialog, preview_text); + + if (IupGetCallback(ih, "HELP_CB")) + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP); + + /* initialize the widget */ + gtk_widget_realize(GTK_WIDGET(dialog)); + + ih->handle = GTK_WIDGET(dialog); + iupDialogUpdatePosition(ih); + ih->handle = NULL; + + do + { + response = gtk_dialog_run(GTK_DIALOG(dialog)); + + if (response == GTK_RESPONSE_HELP) + { + Icallback cb = IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + response = GTK_RESPONSE_CANCEL; + } + } while (response == GTK_RESPONSE_HELP); + + if (response == GTK_RESPONSE_OK) + { + char* fontname = gtk_font_selection_dialog_get_font_name(dialog); + iupAttribStoreStr(ih, "VALUE", fontname); + g_free(fontname); + iupAttribSetStr(ih, "STATUS", "1"); + } + else + { + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "STATUS", NULL); + } + + gtk_widget_destroy(GTK_WIDGET(dialog)); + + return IUP_NOERROR; +} + +void iupdrvFontDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = gtkFontDlgPopup; + + /* IupFontDialog GTK Only */ + iupClassRegisterAttribute(ic, "PREVIEWTEXT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/gtk/iupgtk_frame.c b/iup/src/gtk/iupgtk_frame.c new file mode 100755 index 0000000..022c6c7 --- /dev/null +++ b/iup/src/gtk/iupgtk_frame.c @@ -0,0 +1,155 @@ +/** \file + * \brief Frame Control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" + +#include "iupgtk_drv.h" + + +void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y) +{ + (void)ih; + *x = 0; + *y = 0; +} + +static char* gtkFrameGetTitleAttrib(Ihandle* ih) +{ + GtkFrame* frame = (GtkFrame*)ih->handle; + return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_frame_get_label(frame))); +} + +static int gtkFrameSetTitleAttrib(Ihandle* ih, const char* value) +{ + GtkFrame* frame = (GtkFrame*)ih->handle; + gtk_frame_set_label(frame, iupgtkStrConvertToUTF8(value)); + return 0; +} + +static int gtkFrameSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + GtkWidget* label = gtk_frame_get_label_widget((GtkFrame*)ih->handle); + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + if (label) + iupgtkBaseSetBgColor(label, r, g, b); + + iupgtkBaseSetBgColor(ih->handle, r, g, b); + + return 1; +} + +static int gtkFrameSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + GtkWidget* label = gtk_frame_get_label_widget((GtkFrame*)ih->handle); + if (!label) return 0; + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetFgColor(label, r, g, b); + + return 1; +} + +static int gtkFrameSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + + if (ih->handle) + { + GtkWidget* label = gtk_frame_get_label_widget((GtkFrame*)ih->handle); + if (!label) return 1; + + gtk_widget_modify_font(label, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih)); + iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)label)); + } + return 1; +} + +static void* gtkFrameGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child) +{ + (void)child; + return (void*)gtk_bin_get_child((GtkBin*)ih->handle); +} + +static int gtkFrameMapMethod(Ihandle* ih) +{ + char *value, *title; + GtkWidget *fixed; + + if (!ih->parent) + return IUP_ERROR; + + title = iupAttribGet(ih, "TITLE"); + + ih->handle = gtk_frame_new(NULL); + if (!ih->handle) + return IUP_ERROR; + + if (title) + iupAttribSetStr(ih, "_IUPFRAME_HAS_TITLE", "1"); + else + { + value = iupAttribGetStr(ih, "SUNKEN"); + if (iupStrBoolean(value)) + gtk_frame_set_shadow_type((GtkFrame*)ih->handle, GTK_SHADOW_IN); + else + gtk_frame_set_shadow_type((GtkFrame*)ih->handle, GTK_SHADOW_ETCHED_IN); + } + + /* the container that will receive the child element. */ + fixed = gtk_fixed_new(); + gtk_container_add((GtkContainer*)ih->handle, fixed); + gtk_widget_show(fixed); + + /* Add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + gtk_widget_realize(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvFrameInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkFrameMapMethod; + ic->GetInnerNativeContainerHandle = gtkFrameGetInnerNativeContainerHandleMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkFrameSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkFrameSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkFrameSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", gtkFrameGetTitleAttrib, gtkFrameSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); +} diff --git a/iup/src/gtk/iupgtk_globalattrib.c b/iup/src/gtk/iupgtk_globalattrib.c new file mode 100755 index 0000000..eebe799 --- /dev/null +++ b/iup/src/gtk/iupgtk_globalattrib.c @@ -0,0 +1,211 @@ +/** \file + * \brief GTK Driver iupdrvSetGlobal + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_strmessage.h" + +#include "iupgtk_drv.h" + + +int iupgtk_utf8autoconvert = 1; + +static void gtkGlobalSendKey(int key, int press) +{ + Ihandle* focus; + gint nkeys = 0; + GdkKeymapKey *keys; + GdkEventKey evt; + memset(&evt, 0, sizeof(GdkEventKey)); + evt.send_event = TRUE; + + focus = IupGetFocus(); + if (!focus) + return; + evt.window = focus->handle->window; + + iupgtkKeyEncode(key, &evt.keyval, &evt.state); + if (!evt.keyval) + return; + + if (!gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), evt.keyval, &keys, &nkeys)) + return; + evt.hardware_keycode = (guint16)keys[0].keycode; + evt.group = (guint8)keys[0].group; + + if (press & 0x01) + { + evt.type = GDK_KEY_PRESS; + gdk_display_put_event(gdk_display_get_default(), (GdkEvent*)&evt); + } + + if (press & 0x02) + { + evt.type = GDK_KEY_RELEASE; + gdk_display_put_event(gdk_display_get_default(), (GdkEvent*)&evt); + } +} + +int iupdrvSetGlobal(const char *name, const char *value) +{ + if (iupStrEqual(name, "LANGUAGE")) + { + iupStrMessageUpdateLanguage(value); + return 1; + } + if (iupStrEqual(name, "CURSORPOS")) + { +#if GTK_CHECK_VERSION(2, 8, 0) + int x, y; + if (iupStrToIntInt(value, &x, &y, 'x') == 2) + gdk_display_warp_pointer(gdk_display_get_default(), gdk_screen_get_default(), x, y); +#endif + return 0; + } + if (iupStrEqual(name, "UTF8AUTOCONVERT")) + { + if (!value || iupStrBoolean(value)) + iupgtk_utf8autoconvert = 1; + else + iupgtk_utf8autoconvert = 0; + return 0; + } + if (iupStrEqual(name, "KEYPRESS")) + { + int key; + if (iupStrToInt(value, &key)) + gtkGlobalSendKey(key, 0x01); + return 0; + } + if (iupStrEqual(name, "KEYRELEASE")) + { + int key; + if (iupStrToInt(value, &key)) + gtkGlobalSendKey(key, 0x02); + return 0; + } + if (iupStrEqual(name, "KEY")) + { + int key; + if (iupStrToInt(value, &key)) + gtkGlobalSendKey(key, 0x03); + return 0; + } + return 1; +} + +char *iupdrvGetGlobal(const char *name) +{ + if (iupStrEqual(name, "CURSORPOS")) + { + char *str = iupStrGetMemory(50); + int x, y; + iupdrvGetCursorPos(&x, &y); + sprintf(str, "%dx%d", (int)x, (int)y); + return str; + } + if (iupStrEqual(name, "SHIFTKEY")) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[0] == 'S') + return "ON"; + else + return "OFF"; + } + if (iupStrEqual(name, "CONTROLKEY")) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[1] == 'C') + return "ON"; + else + return "OFF"; + } + if (iupStrEqual(name, "MODKEYSTATE")) + { + char *str = iupStrGetMemory(5); + iupdrvGetKeyState(str); + return str; + } + if (iupStrEqual(name, "SCREENSIZE")) + { + char *str = iupStrGetMemory(50); + int w, h; + iupdrvGetScreenSize(&w, &h); + sprintf(str, "%dx%d", w, h); + return str; + } + if (iupStrEqual(name, "FULLSIZE")) + { + char *str = iupStrGetMemory(50); + int w, h; + iupdrvGetFullSize(&w, &h); + sprintf(str, "%dx%d", w, h); + return str; + } + if (iupStrEqual(name, "SCREENDEPTH")) + { + char *str = iupStrGetMemory(50); + int bpp = iupdrvGetScreenDepth(); + sprintf(str, "%d", bpp); + return str; + } + if (iupStrEqual(name, "VIRTUALSCREEN")) + { + char *str = iupStrGetMemory(50); + GdkScreen *screen = gdk_screen_get_default(); + GdkWindow *root = gdk_screen_get_root_window(gdk_screen_get_default()); + int x = 0; + int y = 0; + int w = gdk_screen_get_width(screen); + int h = gdk_screen_get_height(screen); + gdk_window_get_root_origin(root, &x, &y); + sprintf(str, "%d %d %d %d", x, y, w, h); + return str; + } + if (iupStrEqual(name, "MONITORSINFO")) + { + int i; + GdkScreen *screen = gdk_screen_get_default(); + int monitors_count = gdk_screen_get_n_monitors(screen); + char *str = iupStrGetMemory(monitors_count*50); + char* pstr = str; + GdkRectangle rect; + + for (i=0; i < monitors_count; i++) + { + gdk_screen_get_monitor_geometry(screen, i, &rect); + pstr += sprintf(pstr, "%d %d %d %d\n", rect.x, rect.y, rect.width, rect.height); + } + + return str; + } + if (iupStrEqual(name, "TRUECOLORCANVAS")) + { + if (gdk_visual_get_best_depth() > 8) + return "YES"; + else + return "NO"; + } + if (iupStrEqual(name, "UTF8AUTOCONVERT")) + { + if (iupgtk_utf8autoconvert) + return "YES"; + else + return "NO"; + } + return NULL; +} diff --git a/iup/src/gtk/iupgtk_help.c b/iup/src/gtk/iupgtk_help.c new file mode 100755 index 0000000..270677f --- /dev/null +++ b/iup/src/gtk/iupgtk_help.c @@ -0,0 +1,52 @@ +/** \file + * \brief GTK Driver IupHelp for non Windows systems + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include + +#include "iup.h" + +#include "iup_str.h" + +int IupHelp(const char *url) +{ + GError *error = NULL; + gchar *argv[3]; + int ret; + char *browser = getenv("IUP_HELPAPP"); + if (!browser) + browser = IupGetGlobal("HELPAPP"); + + if (!browser) + { + char* system = IupGetGlobal("SYSTEM"); + if (iupStrEqualNoCase(system, "Linux") || + iupStrEqualNoCase(system, "FreeBSD")) + browser = "firefox"; + else if (iupStrEqualNoCase(system, "Darwin")) + browser = "safari"; + else if (iupStrEqualPartial(system, "CYGWIN")) + browser = "iexplore"; + else + browser = "netscape"; + } + + argv[0] = browser; + argv[1] = (gchar*)url; + argv[2] = NULL; + + ret = g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error); + + if (error) + g_error_free(error); + + if (!ret) + return -1; + return 1; +} diff --git a/iup/src/gtk/iupgtk_image.c b/iup/src/gtk/iupgtk_image.c new file mode 100755 index 0000000..b261974 --- /dev/null +++ b/iup/src/gtk/iupgtk_image.c @@ -0,0 +1,430 @@ +/** \file + * \brief Image Resource. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_drvinfo.h" + +#include "iupgtk_drv.h" + + +void iupdrvImageGetRawData(void* handle, unsigned char* imgdata) +{ + GdkPixbuf* pixbuf = (GdkPixbuf*)handle; + int w, h, y, x, bpp; + guchar *pixdata, *pixline_data; + int rowstride, channels, planesize; + unsigned char *r, *g, *b, *a; + + if (!iupdrvImageGetInfo(handle, &w, &h, &bpp)) + return; + + if (bpp==8) + return; + + pixdata = gdk_pixbuf_get_pixels(pixbuf); + rowstride = gdk_pixbuf_get_rowstride(pixbuf); + channels = gdk_pixbuf_get_n_channels(pixbuf); + + /* planes are separated in imgdata */ + planesize = w*h; + r = imgdata; + g = imgdata+planesize; + b = imgdata+2*planesize; + a = imgdata+3*planesize; + for (y=0; yr; + *g = c->g; + *b = c->b; + } + } + } + else /* bpp == 32 or bpp == 24 */ + { + /* planes are separated in imgdata */ + int planesize = width*height; + unsigned char *r = imgdata, + *g = imgdata+planesize, + *b = imgdata+2*planesize, + *a = imgdata+3*planesize; + for (y=0; ycurrentwidth, ih->currentheight); + if (!pixbuf) + return NULL; + + pixdata = gdk_pixbuf_get_pixels(pixbuf); + rowstride = gdk_pixbuf_get_rowstride(pixbuf); + channels = gdk_pixbuf_get_n_channels(pixbuf); + imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + + if (make_inactive) + iupStrToRGB(bgcolor, &bg_r, &bg_g, &bg_b); + + if (bpp == 8) + { + if (make_inactive) + { + for (i=0;icurrentheight; y++) + { + pixline_data = pixdata + y * rowstride; + line_data = imgdata + y * ih->currentwidth; + + for (x=0; xcurrentwidth; x++) + { + unsigned char index = line_data[x]; + iupColor* c = &colors[index]; + guchar *r = &pixline_data[channels*x], + *g = r+1, + *b = g+1, + *a = b+1; + + *r = c->r; + *g = c->g; + *b = c->b; + + if (has_alpha) + *a = c->a; + } + } + } + else /* bpp == 32 or bpp == 24 */ + { + for (y=0; ycurrentheight; y++) + { + pixline_data = pixdata + y * rowstride; + line_data = imgdata + y * ih->currentwidth*channels; + + memcpy(pixline_data, line_data, ih->currentwidth*channels); + + if (make_inactive) + { + for (x=0; xcurrentwidth; x++) + { + guchar *r = &pixline_data[channels*x], + *g = r+1, + *b = g+1, + *a = b+1; + + if (has_alpha) + { + if (*a != 255) + { + *r = iupALPHABLEND(*r, bg_r, *a); + *g = iupALPHABLEND(*g, bg_g, *a); + *b = iupALPHABLEND(*b, bg_b, *a); + } + else + *a = 255; + } + + iupImageColorMakeInactive(r, g, b, + bg_r, bg_g, bg_b); + } + } + } + } + + return pixbuf; +} + +void* iupdrvImageCreateIcon(Ihandle *ih) +{ + return iupdrvImageCreateImage(ih, NULL, 0); +} + +void* iupdrvImageCreateCursor(Ihandle *ih) +{ + GdkCursor *cursor; + int hx, hy, bpp; + + hx=0; hy=0; + iupStrToIntInt(iupAttribGet(ih, "HOTSPOT"), &hx, &hy, ':'); + + bpp = iupAttribGetInt(ih, "BPP"); + + if (bpp == 8 && !iupAttribGet(ih, "3")) + { + GdkPixmap *source, *mask; + GdkColor fg, bg; + unsigned char r, g, b; + char *sbits, *mbits, *sb, *mb; + int y, x, line_size = (ih->currentwidth+7)/8; + int size_bytes = line_size*ih->currentheight; + unsigned char* imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + + r = 255; g = 255; b = 255; + iupStrToRGB(iupAttribGet(ih, "1"), &r, &g, &b ); + iupgdkColorSet(&fg, r, g, b); + + r = 0; g = 0; b = 0; + iupStrToRGB(iupAttribGet(ih, "2"), &r, &g, &b ); + iupgdkColorSet(&bg, r, g, b); + + sbits = (char*)malloc(2*size_bytes); + if (!sbits) return NULL; + memset(sbits, 0, 2*size_bytes); + mbits = sbits + size_bytes; + + sb = sbits; + mb = mbits; + for (y=0; ycurrentheight; y++) + { + for (x=0; xcurrentwidth; x++) + { + int byte = x/8; + int bit = x%8; + int index = (int)imgdata[y*ih->currentwidth+x]; + /* index==0 is transparent */ + if (index == 1) + sb[byte] = (char)(sb[byte] | (1<currentwidth, ih->currentheight); + mask = gdk_bitmap_create_from_data(NULL, mbits, ih->currentwidth, ih->currentheight); + + cursor = gdk_cursor_new_from_pixmap(source, mask, &fg, &bg, hx, hy); + + gdk_pixmap_unref(source); + gdk_pixmap_unref(mask); + free(sbits); + } + else + { + GdkPixbuf* pixbuf = iupdrvImageCreateImage(ih, NULL, 0); + cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), pixbuf, hx, hy); + g_object_unref(pixbuf); + } + + return cursor; +} + +void* iupdrvImageCreateMask(Ihandle *ih) +{ + int bpp; + GdkPixmap *mask; + char *bits, *sb; + int y, x, line_size = (ih->currentwidth+7)/8; + int size_bytes = line_size*ih->currentheight; + unsigned char* imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + unsigned char colors[256]; + + bpp = iupAttribGetInt(ih, "BPP"); + if (bpp > 8) + return NULL; + + bits = (char*)malloc(size_bytes); + if (!bits) return NULL; + memset(bits, 0, size_bytes); + + iupImageInitNonBgColors(ih, colors); + + sb = bits; + for (y=0; ycurrentheight; y++) + { + for (x=0; xcurrentwidth; x++) + { + int byte = x/8; + int bit = x%8; + int index = (int)imgdata[y*ih->currentwidth+x]; + if (colors[index]) + sb[byte] = (char)(sb[byte] | (1<currentwidth, ih->currentheight); + + free(bits); + + return mask; +} + +void* iupdrvImageLoad(const char* name, int type) +{ + if (type == IUPIMAGE_CURSOR) +#if GTK_CHECK_VERSION(2, 8, 0) + return gdk_cursor_new_from_name(gdk_display_get_default(), name); +#else + return NULL; +#endif + else + { + GtkIconTheme *icon_theme; + GdkPixbuf *pixbuf = NULL; + + icon_theme = gtk_icon_theme_get_default(); + if (gtk_icon_theme_has_icon(icon_theme, name)) + { + GError *error = NULL; + pixbuf = gtk_icon_theme_load_icon(icon_theme, name, + 24, /* size */ + 0, /* flags */ + &error); + if (error) + g_error_free(error); + } + + if (!pixbuf) + { + GError *error = NULL; + pixbuf = gdk_pixbuf_new_from_file(name, &error); + if (error) + g_error_free(error); + } + + return pixbuf; + } +} + +int iupdrvImageGetInfo(void* handle, int *w, int *h, int *bpp) +{ + GdkPixbuf* pixbuf = (GdkPixbuf*)handle; + if (!GDK_IS_PIXBUF(pixbuf)) + { + if (w) *w = 0; + if (h) *h = 0; + if (bpp) *bpp = 0; + return 0; + } + if (w) *w = gdk_pixbuf_get_width(pixbuf); + if (h) *h = gdk_pixbuf_get_height(pixbuf); + if (bpp) *bpp = iupImageNormBpp(gdk_pixbuf_get_bits_per_sample(pixbuf)*gdk_pixbuf_get_n_channels(pixbuf)); + return 1; +} + +int iupdrvImageGetRawInfo(void* handle, int *w, int *h, int *bpp, iupColor* colors, int *colors_count) +{ + /* GdkPixbuf are only 24 bpp or 32 bpp */ + (void)colors; + (void)colors_count; + return iupdrvImageGetInfo(handle, w, h, bpp); +} + +void iupdrvImageDestroy(void* handle, int type) +{ + if (type == IUPIMAGE_CURSOR) + gdk_cursor_unref((GdkCursor*)handle); + else + g_object_unref(handle); +} diff --git a/iup/src/gtk/iupgtk_key.c b/iup/src/gtk/iupgtk_key.c new file mode 100755 index 0000000..5aec919 --- /dev/null +++ b/iup/src/gtk/iupgtk_key.c @@ -0,0 +1,422 @@ +/** \file + * \brief GTK Driver keyboard mapping + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include "iup_object.h" +#include "iup_key.h" + +#include "iupgtk_drv.h" + + +typedef struct _Igtk2iupkey +{ + guint gtkcode; + int iupcode; + int s_iupcode; + int c_iupcode; + int m_iupcode; + int y_iupcode; +} Igtk2iupkey; + +static Igtk2iupkey gtkkey_map[] = { + +{ GDK_Escape, K_ESC, K_sESC, K_cESC, K_mESC ,K_yESC }, +{ GDK_Pause, K_PAUSE, K_sPAUSE, K_cPAUSE, K_mPAUSE ,K_yPAUSE }, +{ GDK_Print, K_Print, K_sPrint, K_cPrint, K_mPrint ,K_yPrint }, +{ GDK_Menu, K_Menu, K_sMenu, K_cMenu, K_mMenu ,K_yMenu }, + +{ GDK_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME ,K_yHOME }, +{ GDK_Up, K_UP, K_sUP, K_cUP, K_mUP ,K_yUP }, +{ GDK_Prior, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP ,K_yPGUP }, +{ GDK_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT ,K_yLEFT }, +{ GDK_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE}, +{ GDK_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT ,K_yRIGHT }, +{ GDK_End, K_END, K_sEND, K_cEND, K_mEND ,K_yEND }, +{ GDK_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN ,K_yDOWN }, +{ GDK_Next, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN ,K_yPGDN }, +{ GDK_Insert, K_INS, K_sINS, K_cINS, K_mINS ,K_yINS }, +{ GDK_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL ,K_yDEL }, +{ GDK_space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP }, +{ GDK_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB }, +{ GDK_Return, K_CR, K_sCR, K_cCR, K_mCR ,K_yCR }, +{ GDK_BackSpace, K_BS, K_sBS, K_cBS, K_mBS ,K_yBS }, + +{ GDK_1, K_1, K_exclam, K_c1, K_m1, K_y1 }, +{ GDK_2, K_2, K_at, K_c2, K_m2, K_y2 }, +{ GDK_3, K_3, K_numbersign, K_c3, K_m3, K_y3 }, +{ GDK_4, K_4, K_dollar, K_c4, K_m4, K_y4 }, +{ GDK_5, K_5, K_percent, K_c5, K_m5, K_y5 }, +{ GDK_6, K_6, K_circum, K_c6, K_m6, K_y6 }, +{ GDK_7, K_7, K_ampersand, K_c7, K_m7, K_y7 }, +{ GDK_8, K_8, K_asterisk, K_c8, K_m8, K_y8 }, +{ GDK_9, K_9, K_parentleft, K_c9, K_m9, K_y9 }, +{ GDK_0, K_0, K_parentright, K_c0, K_m0, K_y0 }, + +/* Shift will be flaged so s_iupcode will contain the right code */ +{ GDK_exclam, K_1, K_exclam, K_c1, K_m1, K_y1 }, +{ GDK_at, K_2, K_at, K_c2, K_m2, K_y2 }, +{ GDK_numbersign, K_3, K_numbersign, K_c3, K_m3, K_y3 }, +{ GDK_dollar, K_4, K_dollar, K_c4, K_m4, K_y4 }, +{ GDK_percent, K_5, K_percent, K_c5, K_m5, K_y5 }, +{ GDK_dead_diaeresis, K_6, K_circum, K_c6, K_m6, K_y6 }, +{ GDK_ampersand, K_7, K_ampersand, K_c7, K_m7, K_y7 }, +{ GDK_asterisk, K_8, K_asterisk, K_c8, K_m8, K_y8 }, +{ GDK_parenleft, K_9, K_parentleft, K_c9, K_m9, K_y9 }, +{ GDK_parenright, K_0, K_parentright, K_c0, K_m0, K_y0 }, + +{ GDK_a, K_a, K_A, K_cA, K_mA, K_yA }, +{ GDK_b, K_b, K_B, K_cB, K_mB, K_yB }, +{ GDK_c, K_c, K_C, K_cC, K_mC, K_yC }, +{ GDK_d, K_d, K_D, K_cD, K_mD, K_yD }, +{ GDK_e, K_e, K_E, K_cE, K_mE, K_yE }, +{ GDK_f, K_f, K_F, K_cF, K_mF, K_yF }, +{ GDK_g, K_g, K_G, K_cG, K_mG, K_yG }, +{ GDK_h, K_h, K_H, K_cH, K_mH, K_yH }, +{ GDK_i, K_i, K_I, K_cI, K_mI, K_yI }, +{ GDK_j, K_j, K_J, K_cJ, K_mJ, K_yJ }, +{ GDK_k, K_k, K_K, K_cK, K_mK, K_yK }, +{ GDK_l, K_l, K_L, K_cL, K_mL, K_yL }, +{ GDK_m, K_m, K_M, K_cM, K_mM, K_yM }, +{ GDK_n, K_n, K_N, K_cN, K_mN, K_yN }, +{ GDK_o, K_o, K_O, K_cO, K_mO, K_yO }, +{ GDK_p, K_p, K_P, K_cP, K_mP, K_yP }, +{ GDK_q, K_q, K_Q, K_cQ, K_mQ, K_yQ }, +{ GDK_r, K_r, K_R, K_cR, K_mR, K_yR }, +{ GDK_s, K_s, K_S, K_cS, K_mS, K_yS }, +{ GDK_t, K_t, K_T, K_cT, K_mT, K_yT }, +{ GDK_u, K_u, K_U, K_cU, K_mU, K_yU }, +{ GDK_v, K_v, K_V, K_cV, K_mV, K_yV }, +{ GDK_w, K_w, K_W, K_cW, K_mW, K_yW }, +{ GDK_x, K_x, K_X, K_cX, K_mX, K_yX }, +{ GDK_y, K_y, K_Y, K_cY, K_mY, K_yY }, +{ GDK_z, K_z, K_Z, K_cZ, K_mZ, K_yZ }, + +/* Shift will be flaged so s_iupcode will contain the right code */ +{ GDK_A, K_a, K_A, K_cA, K_mA, K_yA }, +{ GDK_B, K_b, K_B, K_cB, K_mB, K_yB }, +{ GDK_C, K_c, K_C, K_cC, K_mC, K_yC }, +{ GDK_D, K_d, K_D, K_cD, K_mD, K_yD }, +{ GDK_E, K_e, K_E, K_cE, K_mE, K_yE }, +{ GDK_F, K_f, K_F, K_cF, K_mF, K_yF }, +{ GDK_G, K_g, K_G, K_cG, K_mG, K_yG }, +{ GDK_H, K_h, K_H, K_cH, K_mH, K_yH }, +{ GDK_I, K_i, K_I, K_cI, K_mI, K_yI }, +{ GDK_J, K_j, K_J, K_cJ, K_mJ, K_yJ }, +{ GDK_K, K_k, K_K, K_cK, K_mK, K_yK }, +{ GDK_L, K_l, K_L, K_cL, K_mL, K_yL }, +{ GDK_M, K_m, K_M, K_cM, K_mM, K_yM }, +{ GDK_N, K_n, K_N, K_cN, K_mN, K_yN }, +{ GDK_O, K_o, K_O, K_cO, K_mO, K_yO }, +{ GDK_P, K_p, K_P, K_cP, K_mP, K_yP }, +{ GDK_Q, K_q, K_Q, K_cQ, K_mQ, K_yQ }, +{ GDK_R, K_r, K_R, K_cR, K_mR, K_yR }, +{ GDK_S, K_s, K_S, K_cS, K_mS, K_yS }, +{ GDK_T, K_t, K_T, K_cT, K_mT, K_yT }, +{ GDK_U, K_u, K_U, K_cU, K_mU, K_yU }, +{ GDK_V, K_v, K_V, K_cV, K_mV, K_yV }, +{ GDK_W, K_w, K_W, K_cW, K_mW, K_yW }, +{ GDK_X, K_x, K_X, K_cX, K_mX, K_yX }, +{ GDK_Y, K_y, K_Y, K_cY, K_mY, K_yY }, +{ GDK_Z, K_z, K_Z, K_cZ, K_mZ, K_yZ }, + +{ GDK_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 }, +{ GDK_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 }, +{ GDK_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 }, +{ GDK_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 }, +{ GDK_F5, K_F5, K_sF5, K_cF5, K_mF5, K_yF5 }, +{ GDK_F6, K_F6, K_sF6, K_cF6, K_mF6, K_yF6 }, +{ GDK_F7, K_F7, K_sF7, K_cF7, K_mF7, K_yF7 }, +{ GDK_F8, K_F8, K_sF8, K_cF8, K_mF8, K_yF8 }, +{ GDK_F9, K_F9, K_sF9, K_cF9, K_mF9, K_yF9 }, +{ GDK_F10, K_F10, K_sF10, K_cF10, K_mF10, K_yF10 }, +{ GDK_F11, K_F11, K_sF11, K_cF11, K_mF11, K_yF11 }, +{ GDK_F12, K_F12, K_sF12, K_cF12, K_mF12, K_yF12 }, + +{ GDK_semicolon, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon }, +{ GDK_equal, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual }, +{ GDK_comma, K_comma, K_less, K_cComma, K_mComma, K_yComma }, +{ GDK_minus, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus }, +{ GDK_period, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod }, +{ GDK_slash, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash }, +{ GDK_grave, K_grave, K_tilde, 0, 0, 0 }, +{ GDK_bracketleft, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft }, +{ GDK_backslash, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash }, +{ GDK_bracketright,K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright }, +{ GDK_apostrophe, K_apostrophe, K_quotedbl, 0, 0, 0 }, + +/* Shift will be flaged so s_iupcode will contain the right code */ +{ GDK_colon, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon }, +{ GDK_plus, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual }, +{ GDK_less, K_comma, K_less, K_cComma, K_mComma, K_yComma }, +{ GDK_underscore, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus }, +{ GDK_greater, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod }, +{ GDK_question, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash }, +{ GDK_braceleft, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft }, +{ GDK_bar, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash }, +{ GDK_braceright, K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright }, +{ GDK_quotedbl, K_apostrophe, K_quotedbl, 0, 0, 0 }, + +{ GDK_KP_0, K_0, K_0, K_c0, K_m0, K_y0 }, +{ GDK_KP_1, K_1, K_1, K_c1, K_m1, K_y1 }, +{ GDK_KP_2, K_2, K_2, K_c2, K_m2, K_y2 }, +{ GDK_KP_3, K_3, K_3, K_c3, K_m3, K_y3 }, +{ GDK_KP_4, K_4, K_4, K_c4, K_m4, K_y4 }, +{ GDK_KP_5, K_5, K_5, K_c5, K_m5, K_y5 }, +{ GDK_KP_6, K_6, K_6, K_c6, K_m6, K_y6 }, +{ GDK_KP_7, K_7, K_7, K_c7, K_m7, K_y7 }, +{ GDK_KP_8, K_8, K_8, K_c8, K_m8, K_y8 }, +{ GDK_KP_9, K_9, K_9, K_c9, K_m9, K_y9 }, +{ GDK_KP_Multiply, K_asterisk, K_sAsterisk, K_cAsterisk, K_mAsterisk, K_yAsterisk }, +{ GDK_KP_Add, K_plus, K_sPlus, K_cPlus, K_mPlus, K_yPlus }, +{ GDK_KP_Subtract, K_minus, K_sMinus, K_cMinus, K_mMinus, K_yMinus }, +{ GDK_KP_Decimal, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod }, +{ GDK_KP_Divide, K_slash, K_sSlash, K_cSlash, K_mSlash, K_ySlash }, +{ GDK_KP_Separator, K_comma, K_sComma, K_cComma, K_mComma, K_yComma }, + +{ GDK_ccedilla, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla }, +{ GDK_Ccedilla, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla }, + +{ GDK_dead_tilde, K_tilde, K_circum, 0, 0, 0 }, +{ GDK_dead_acute, K_acute, K_grave, 0, 0, 0 }, +{ GDK_dead_grave, K_grave, K_tilde, 0, 0, 0 }, +{ GDK_dead_circumflex, K_tilde, K_circum, 0, 0, 0 }, + +{ GDK_KP_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 }, +{ GDK_KP_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 }, +{ GDK_KP_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 }, +{ GDK_KP_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 }, +{ GDK_KP_Space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP }, +{ GDK_KP_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB }, +{ GDK_KP_Equal, K_equal, 0, K_cEqual, K_mEqual, K_yEqual }, + +{ GDK_KP_Enter, K_CR, K_sCR, K_cCR, K_mCR, K_yCR }, +{ GDK_KP_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME, K_yHOME }, +{ GDK_KP_Up, K_UP, K_sUP, K_cUP, K_mUP, K_yUP }, +{ GDK_KP_Page_Up, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP, K_yPGUP }, +{ GDK_KP_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT, K_yLEFT }, +{ GDK_KP_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE}, +{ GDK_KP_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT, K_yRIGHT }, +{ GDK_KP_End, K_END, K_sEND, K_cEND, K_mEND, K_yEND }, +{ GDK_KP_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN, K_yDOWN }, +{ GDK_KP_Page_Down, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN, K_yPGDN }, +{ GDK_KP_Insert, K_INS, K_sINS, K_cINS, K_mINS, K_yINS }, +{ GDK_KP_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL, K_yDEL } + +}; + +void iupgtkKeyEncode(int key, guint *keyval, guint *state) +{ + int i, iupcode = key & 0xFF; /* 0-255 interval */ + int count = sizeof(gtkkey_map)/sizeof(gtkkey_map[0]); + for (i = 0; i < count; i++) + { + Igtk2iupkey* key_map = &(gtkkey_map[i]); + if (key_map->iupcode == iupcode) + { + *keyval = key_map->gtkcode; + *state = 0; + + if (iupcode != key) + { + if (key_map->c_iupcode == key) + *state = GDK_CONTROL_MASK; + else if (key_map->m_iupcode == key) + *state = GDK_MOD1_MASK; + else if (key_map->y_iupcode == key) + *state = GDK_MOD4_MASK; + else if (key_map->s_iupcode == key) + *state = GDK_SHIFT_MASK; + } + return; + } + else if (key_map->s_iupcode == key) /* There are Shift keys bellow 256 */ + { + *keyval = key_map->gtkcode; + *state = GDK_SHIFT_MASK; + + if ((*keyval >= GDK_a) && + (*keyval <= GDK_z)) + { + /* remap to upper case */ + *keyval -= GDK_a-GDK_A; + } + return; + } + } +} + +static int gtkKeyMap2Iup(int state, int i) +{ + int code = 0; + if (state & GDK_CONTROL_MASK) /* Ctrl */ + code = gtkkey_map[i].c_iupcode; + else if (state & GDK_MOD1_MASK || + state & GDK_MOD5_MASK) /* Alt */ + code = gtkkey_map[i].m_iupcode; + else if (state & GDK_MOD4_MASK) /* Apple/Win */ + code = gtkkey_map[i].y_iupcode; + else if (state & GDK_LOCK_MASK) /* CapsLock */ + { + if ((state & GDK_SHIFT_MASK) || !iupKeyCanCaps(gtkkey_map[i].iupcode)) + return gtkkey_map[i].iupcode; + else + code = gtkkey_map[i].s_iupcode; + } + else if (state & GDK_SHIFT_MASK) /* Shift */ + code = gtkkey_map[i].s_iupcode; + else + return gtkkey_map[i].iupcode; + + if (!code) + code = gtkkey_map[i].iupcode; + + return code; +} + +static int gtkKeyDecode(GdkEventKey *evt) +{ + int i; + int count = sizeof(gtkkey_map)/sizeof(gtkkey_map[0]); + guint keyval = evt->keyval; + + if ((evt->state & GDK_MOD2_MASK) && /* NumLock */ + (keyval >= GDK_KP_Home) && + (keyval <= GDK_KP_Delete)) + { + /* remap to numeric keys */ + guint remap_numkey[] = {GDK_KP_7, GDK_KP_4, GDK_KP_8, GDK_KP_6, GDK_KP_2, GDK_KP_9, GDK_KP_3, GDK_KP_1, GDK_KP_5, GDK_KP_0, GDK_KP_Decimal}; + keyval = remap_numkey[keyval-GDK_KP_Home]; + } + + for (i = 0; i < count; i++) + { + if (gtkkey_map[i].gtkcode == keyval) + return gtkKeyMap2Iup(evt->state, i); + } + + return 0; +} + +gboolean iupgtkKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + int result; + int code = gtkKeyDecode(evt); + if (code == 0) + return FALSE; + + /* Avoid duplicate calls if a child of the dialog contains the focus. + GTK will call the callback for the child and for the dialog */ + if (ih->iclass->nativetype == IUP_TYPEDIALOG && ih != IupGetFocus()) + return FALSE; + + result = iupKeyCallKeyCb(ih, code); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return FALSE; + } + if (result == IUP_IGNORE) + return TRUE; + + /* in the previous callback the dialog could be destroyed */ + if (iupObjectCheck(ih)) + { + /* this is called only for canvas */ + if (ih->iclass->nativetype == IUP_TYPECANVAS) + { + result = iupKeyCallKeyPressCb(ih, code, 1); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return FALSE; + } + if (result == IUP_IGNORE) + return TRUE; + } + + if (!iupKeyProcessNavigation(ih, code, evt->state & GDK_SHIFT_MASK)) + return TRUE; + + /* compensate the show-help limitation. + * It is not called on F1, only on Shift+F1 and Ctrl+F1. */ + if (code == K_F1) + { + Icallback cb = IupGetCallback(ih, "HELP_CB"); + if (cb) + { + if (cb(ih) == IUP_CLOSE) + IupExitLoop(); + } + } + } + + (void)widget; + return FALSE; +} + +gboolean iupgtkKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + /* this is called only for canvas */ + int result; + int code = gtkKeyDecode(evt); + if (code == 0) + return FALSE; + + result = iupKeyCallKeyPressCb(ih, code, 0); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return FALSE; + } + if (result == IUP_IGNORE) + return TRUE; + + (void)widget; + return FALSE; +} + +void iupgtkButtonKeySetStatus(guint state, unsigned int but, char* status, int doubleclick) +{ + if (state & GDK_SHIFT_MASK) + iupKEYSETSHIFT(status); + + if (state & GDK_CONTROL_MASK) + iupKEYSETCONTROL(status); + + if ((state & GDK_BUTTON1_MASK) || but==1) + iupKEYSETBUTTON1(status); + + if ((state & GDK_BUTTON2_MASK) || but==2) + iupKEYSETBUTTON2(status); + + if ((state & GDK_BUTTON3_MASK) || but==3) + iupKEYSETBUTTON3(status); + + if ((state & GDK_BUTTON4_MASK) || but==4) + iupKEYSETBUTTON4(status); + + if ((state & GDK_BUTTON5_MASK) || but==5) + iupKEYSETBUTTON5(status); + + if (state & GDK_MOD1_MASK || state & GDK_MOD5_MASK) /* Alt */ + iupKEYSETALT(status); + + if (state & GDK_MOD4_MASK) /* Apple/Win */ + iupKEYSETSYS(status); + + if (doubleclick) + iupKEYSETDOUBLE(status); +} + diff --git a/iup/src/gtk/iupgtk_label.c b/iup/src/gtk/iupgtk_label.c new file mode 100755 index 0000000..49d5c6d --- /dev/null +++ b/iup/src/gtk/iupgtk_label.c @@ -0,0 +1,318 @@ +/** \file + * \brief Label Control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_label.h" +#include "iup_drv.h" +#include "iup_image.h" +#include "iup_focus.h" + +#include "iupgtk_drv.h" + + +static int gtkLabelSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_TEXT) + { + GtkLabel* label = (GtkLabel*)ih->handle; + if (iupgtkSetMnemonicTitle(ih, label, value)) + { + Ihandle* next = iupFocusNextInteractive(ih); + if (next) + { + if (next->handle) + gtk_label_set_mnemonic_widget(label, next->handle); + else + iupAttribSetStr(next, "_IUPGTK_LABELMNEMONIC", (char*)label); /* used by iupgtkUpdateMnemonic */ + } + } + return 1; + } + + return 0; +} + +static int gtkLabelSetWordWrapAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_TEXT) + { + GtkLabel* label = (GtkLabel*)ih->handle; + if (iupStrBoolean(value)) + gtk_label_set_line_wrap(label, TRUE); + else + gtk_label_set_line_wrap(label, FALSE); + return 1; + } + return 0; +} + +static int gtkLabelSetEllipsisAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_TEXT) + { +#if GTK_CHECK_VERSION(2, 6, 0) + GtkLabel* label = (GtkLabel*)ih->handle; + if (iupStrBoolean(value)) + gtk_label_set_ellipsize(label, PANGO_ELLIPSIZE_END); + else + gtk_label_set_ellipsize(label, PANGO_ELLIPSIZE_NONE); +#endif + return 1; + } + return 0; +} + +static int gtkLabelSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + GtkMisc* misc = (GtkMisc*)ih->handle; + PangoAlignment alignment; + float xalign, yalign; + char value1[30]="", value2[30]=""; + + iupStrToStrStr(value, value1, value2, ':'); + + if (iupStrEqualNoCase(value1, "ARIGHT")) + { + xalign = 1.0f; + alignment = PANGO_ALIGN_RIGHT; + } + else if (iupStrEqualNoCase(value1, "ACENTER")) + { + xalign = 0.5f; + alignment = PANGO_ALIGN_CENTER; + } + else /* "ALEFT" */ + { + xalign = 0; + alignment = PANGO_ALIGN_LEFT; + } + + if (iupStrEqualNoCase(value2, "ABOTTOM")) + yalign = 1.0f; + else if (iupStrEqualNoCase(value2, "ATOP")) + yalign = 0; + else /* ACENTER (default) */ + yalign = 0.5f; + + gtk_misc_set_alignment(misc, xalign, yalign); + + if (ih->data->type == IUP_LABEL_TEXT) + pango_layout_set_alignment(gtk_label_get_layout((GtkLabel*)ih->handle), alignment); + + return 1; + } + else + return 0; +} + +static int gtkLabelSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + + if (ih->handle && ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + GtkMisc* misc = (GtkMisc*)ih->handle; + gtk_misc_set_padding(misc, ih->data->horiz_padding, ih->data->vert_padding); + } + return 0; +} + +static char* gtkLabelGetPangoLayoutAttrib(Ihandle* ih) +{ + if (ih->data->type == IUP_LABEL_TEXT) + return (char*)gtk_label_get_layout((GtkLabel*)ih->handle); + else + return NULL; +} + +static void gtkLabelSetPixbuf(Ihandle* ih, const char* name, int make_inactive) +{ + GtkImage* image_label = (GtkImage*)ih->handle; + + if (name) + { + GdkPixbuf* pixbuf = iupImageGetImage(name, ih, make_inactive); + GdkPixbuf* old_pixbuf = gtk_image_get_pixbuf(image_label); + if (pixbuf != old_pixbuf) + gtk_image_set_from_pixbuf(image_label, pixbuf); + return; + } + + /* if not defined */ +#if GTK_CHECK_VERSION(2, 8, 0) + gtk_image_clear(image_label); +#endif +} + +static int gtkLabelSetImageAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_IMAGE) + { + if (iupdrvIsActive(ih)) + gtkLabelSetPixbuf(ih, value, 0); + else + { + if (!iupAttribGet(ih, "IMINACTIVE")) + { + /* if not active and IMINACTIVE is not defined + then automaticaly create one based on IMAGE */ + gtkLabelSetPixbuf(ih, value, 1); /* make_inactive */ + } + } + return 1; + } + else + return 0; +} + +static int gtkLabelSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_IMAGE) + { + if (!iupdrvIsActive(ih)) + { + if (value) + gtkLabelSetPixbuf(ih, value, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + char* name = iupAttribGet(ih, "IMAGE"); + gtkLabelSetPixbuf(ih, name, 1); /* make_inactive */ + } + } + return 1; + } + else + return 0; +} + +static int gtkLabelSetActiveAttrib(Ihandle* ih, const char* value) +{ + /* update the inactive image if necessary */ + if (ih->data->type == IUP_LABEL_IMAGE) + { + if (!iupStrBoolean(value)) + { + char* name = iupAttribGet(ih, "IMINACTIVE"); + if (name) + gtkLabelSetPixbuf(ih, name, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + name = iupAttribGet(ih, "IMAGE"); + gtkLabelSetPixbuf(ih, name, 1); /* make_inactive */ + } + } + else + { + /* must restore the normal image */ + char* name = iupAttribGet(ih, "IMAGE"); + gtkLabelSetPixbuf(ih, name, 0); + } + } + + return iupBaseSetActiveAttrib(ih, value); +} + +static int gtkLabelMapMethod(Ihandle* ih) +{ + char* value; + GtkWidget *label; + + value = iupAttribGet(ih, "SEPARATOR"); + if (value) + { + if (iupStrEqualNoCase(value, "HORIZONTAL")) + { + ih->data->type = IUP_LABEL_SEP_HORIZ; + label = gtk_hseparator_new(); + } + else /* "VERTICAL" */ + { + ih->data->type = IUP_LABEL_SEP_VERT; + label = gtk_vseparator_new(); + } + } + else + { + value = iupAttribGet(ih, "IMAGE"); + if (value) + { + ih->data->type = IUP_LABEL_IMAGE; + label = gtk_image_new(); + } + else + { + ih->data->type = IUP_LABEL_TEXT; + label = gtk_label_new(NULL); + } + } + + if (!label) + return IUP_ERROR; + + ih->handle = label; + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + gtk_widget_realize(label); + + return IUP_NOERROR; +} + +void iupdrvLabelInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkLabelMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Common GTK only (when text is in a secondary element) */ + iupClassRegisterAttribute(ic, "PANGOLAYOUT", gtkLabelGetPangoLayoutAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, gtkLabelSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", NULL, gtkLabelSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupLabel only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkLabelSetAlignmentAttrib, "ALEFT:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkLabelSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PADDING", iupLabelGetPaddingAttrib, gtkLabelSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + + /* IupLabel GTK and Motif only */ + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, gtkLabelSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupLabel Windows and GTK only */ + iupClassRegisterAttribute(ic, "WORDWRAP", NULL, gtkLabelSetWordWrapAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "ELLIPSIS", NULL, gtkLabelSetEllipsisAttrib, NULL, NULL, IUPAF_DEFAULT); + + /* IupLabel GTK only */ + iupClassRegisterAttribute(ic, "MARKUP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT); +} diff --git a/iup/src/gtk/iupgtk_list.c b/iup/src/gtk/iupgtk_list.c new file mode 100755 index 0000000..80f6cce --- /dev/null +++ b/iup/src/gtk/iupgtk_list.c @@ -0,0 +1,1439 @@ +/** \file + * \brief List Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_mask.h" +#include "iup_key.h" +#include "iup_list.h" + +#include "iupgtk_drv.h" + + +static void gtkListSelectionChanged(GtkTreeSelection* selection, Ihandle* ih); +static void gtkListComboBoxChanged(GtkComboBox* widget, Ihandle* ih); + + +void iupdrvListAddItemSpace(Ihandle* ih, int *h) +{ + (void)ih; + *h += 3; +} + +void iupdrvListAddBorders(Ihandle* ih, int *x, int *y) +{ + int border_size = 2*5; + (*x) += border_size; + (*y) += border_size; + + if (ih->data->is_dropdown) + { +#ifdef HILDON + (*x) += 9; /* extra space for the dropdown button */ +#else + (*x) += 5; /* extra space for the dropdown button */ +#endif + + if (ih->data->has_editbox) + (*x) += 5; /* another extra space for the dropdown button */ + else + { + (*y) += 4; /* extra padding space */ + (*x) += 4; /* extra padding space */ + } + } + else + { + if (ih->data->has_editbox) + (*y) += 2*3; /* internal border between editbox and list */ + } +} + +static int gtkListConvertXYToPos(Ihandle* ih, int x, int y) +{ + if (!ih->data->is_dropdown) + { + GtkTreePath* path; + if (gtk_tree_view_get_dest_row_at_pos((GtkTreeView*)ih->handle, x, y, &path, NULL)) + { + int* indices = gtk_tree_path_get_indices(path); + int pos = indices[0]+1; /* IUP starts at 1 */ + gtk_tree_path_free (path); + return pos; + } + } + + return -1; +} + +static GtkTreeModel* gtkListGetModel(Ihandle* ih) +{ + if (ih->data->is_dropdown) + return gtk_combo_box_get_model((GtkComboBox*)ih->handle); + else + return gtk_tree_view_get_model((GtkTreeView*)ih->handle); +} + +int iupdrvListGetCount(Ihandle* ih) +{ + GtkTreeModel *model = gtkListGetModel(ih); + return gtk_tree_model_iter_n_children(model, NULL); +} + +void iupdrvListAppendItem(Ihandle* ih, const char* value) +{ + GtkTreeModel *model = gtkListGetModel(ih); + GtkTreeIter iter; + gtk_list_store_append(GTK_LIST_STORE(model), &iter); + gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, iupgtkStrConvertToUTF8(value), -1); +} + +void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value) +{ + GtkTreeModel *model = gtkListGetModel(ih); + GtkTreeIter iter; + gtk_list_store_insert(GTK_LIST_STORE(model), &iter, pos); + gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, iupgtkStrConvertToUTF8(value), -1); +} + +void iupdrvListRemoveItem(Ihandle* ih, int pos) +{ + GtkTreeModel *model = gtkListGetModel(ih); + GtkTreeIter iter; + if (gtk_tree_model_iter_nth_child(model, &iter, NULL, pos)) + { + if (ih->data->is_dropdown && !ih->data->has_editbox) + { + /* must check if removing the current item */ + int curpos = gtk_combo_box_get_active((GtkComboBox*)ih->handle); + if (pos == curpos) + { + if (curpos > 0) curpos--; + else curpos++; + + gtk_combo_box_set_active((GtkComboBox*)ih->handle, curpos); + } + } + + gtk_list_store_remove(GTK_LIST_STORE(model), &iter); + } +} + +void iupdrvListRemoveAllItems(Ihandle* ih) +{ + GtkTreeModel *model = gtkListGetModel(ih); + gtk_list_store_clear(GTK_LIST_STORE(model)); +} + + +/*********************************************************************************/ + + +static int gtkListSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + + if (ih->handle) + { + if (ih->data->is_dropdown) + { + GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER"); + if (renderer) + { + g_object_set(G_OBJECT(renderer), "font-desc", (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih), NULL); + iupgtkFontUpdateObjectPangoLayout(ih, G_OBJECT(renderer)); + } + } + + if (ih->data->has_editbox) + { + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_widget_modify_font((GtkWidget*)entry, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih)); + iupgtkFontUpdatePangoLayout(ih, gtk_entry_get_layout(entry)); + } + } + return 1; +} + +static char* gtkListGetIdValueAttrib(Ihandle* ih, const char* name_id) +{ + int pos = iupListGetPos(ih, name_id); + if (pos != -1) + { + GtkTreeIter iter; + GtkTreeModel* model = gtkListGetModel(ih); + if (gtk_tree_model_iter_nth_child(model, &iter, NULL, pos)) + { + gchar *text = NULL; + gtk_tree_model_get(model, &iter, 0, &text, -1); + if (text) + { + char* ret_str = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(text)); + g_free(text); + return ret_str; + } + } + } + return NULL; +} + +static int gtkListSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + + GtkScrolledWindow* scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (scrolled_window && !ih->data->is_dropdown) + { + /* ignore given value, must use only from parent for the scrollbars */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + if (iupStrToRGB(parent_value, &r, &g, &b)) + { + GtkWidget* sb; + + if (!GTK_IS_SCROLLED_WINDOW(scrolled_window)) + scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUPGTK_SCROLLED_WINDOW"); + + iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b); + +#if GTK_CHECK_VERSION(2, 8, 0) + sb = gtk_scrolled_window_get_hscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); + + sb = gtk_scrolled_window_get_vscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); +#endif + } + } + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + if (ih->data->has_editbox) + { + GtkWidget* entry = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + iupgtkBaseSetBgColor(entry, r, g, b); + } + + { + GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER"); + if (renderer) + { + GdkColor color; + iupgdkColorSet(&color, r, g, b); + g_object_set(G_OBJECT(renderer), "cell-background-gdk", &color, NULL); + } + } + + return iupdrvBaseSetBgColorAttrib(ih, value); +} + +static int gtkListSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetFgColor(ih->handle, r, g, b); + + if (ih->data->has_editbox) + { + GtkWidget* entry = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + iupgtkBaseSetFgColor(entry, r, g, b); + } + + { + GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER"); + if (renderer) + { + GdkColor color; + iupgdkColorSet(&color, r, g, b); + g_object_set(G_OBJECT(renderer), "foreground-gdk", &color, NULL); + } + } + + return 1; +} + +static char* gtkListGetValueAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_entry_get_text(entry))); + } + else + { + if (ih->data->is_dropdown) + { + int pos = gtk_combo_box_get_active((GtkComboBox*)ih->handle); + char* str = iupStrGetMemory(50); + sprintf(str, "%d", pos+1); /* IUP starts at 1 */ + return str; + } + else + { + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + if (!ih->data->is_multiple) + { + GtkTreeIter iter; + GtkTreeModel* tree_model; + if (gtk_tree_selection_get_selected(selection, &tree_model, &iter)) + { + char* str; + GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter); + int* indices = gtk_tree_path_get_indices(path); + str = iupStrGetMemory(50); + sprintf(str, "%d", indices[0]+1); /* IUP starts at 1 */ + gtk_tree_path_free (path); + return str; + } + } + else + { + GList *il, *list = gtk_tree_selection_get_selected_rows(selection, NULL); + int count = iupdrvListGetCount(ih); + char* str = iupStrGetMemory(count+1); + memset(str, '-', count); + str[count]=0; + for (il=list; il; il=il->next) + { + GtkTreePath* path = (GtkTreePath*)il->data; + int* indices = gtk_tree_path_get_indices(path); + str[indices[0]] = '+'; + gtk_tree_path_free(path); + } + g_list_free(list); + return str; + } + } + } + + return NULL; +} + +static int gtkListSetValueAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->has_editbox) + { + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (!value) value = ""; + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + gtk_entry_set_text(entry, iupgtkStrConvertToUTF8(value)); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + } + else + { + if (ih->data->is_dropdown) + { + int pos; + GtkTreeModel *model = gtkListGetModel(ih); + g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkListComboBoxChanged), ih); + if (iupStrToInt(value, &pos)==1 && + (pos>0 && poshandle, pos-1); /* IUP starts at 1 */ + iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos); + } + else + { + gtk_combo_box_set_active((GtkComboBox*)ih->handle, -1); /* none */ + iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL); + } + g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkListComboBoxChanged), ih); + } + else + { + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + if (!ih->data->is_multiple) + { + int pos; + g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih); + if (iupStrToInt(value, &pos)==1) + { + GtkTreePath* path = gtk_tree_path_new_from_indices(pos-1, -1); /* IUP starts at 1 */ + gtk_tree_selection_select_path(selection, path); + gtk_tree_path_free(path); + iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos); + } + else + { + gtk_tree_selection_unselect_all(selection); + iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL); + } + g_signal_handlers_unblock_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih); + } + else + { + /* User has changed a multiple selection on a simple list. */ + int i, len, count; + + g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih); + + /* Clear all selections */ + gtk_tree_selection_unselect_all(selection); + + if (!value) + { + iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL); + return 0; + } + + len = strlen(value); + count = iupdrvListGetCount(ih); + if (len < count) + count = len; + + /* update selection list */ + for (i = 0; idata->is_dropdown) + { + if (iupStrBoolean(value)) + gtk_combo_box_popup((GtkComboBox*)ih->handle); + else + gtk_combo_box_popdown((GtkComboBox*)ih->handle); + } + return 0; +} + +static int gtkListSetTopItemAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->is_dropdown) + { + int pos = 1; + if (iupStrToInt(value, &pos)) + { + GtkTreePath* path = gtk_tree_path_new_from_indices(pos-1, -1); /* IUP starts at 1 */ + gtk_tree_view_scroll_to_cell((GtkTreeView*)ih->handle, path, NULL, FALSE, 0, 0); + gtk_tree_path_free(path); + } + } + return 0; +} + +static int gtkListSetSpacingAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_dropdown) + return 0; + + if (!iupStrToInt(value, &ih->data->spacing)) + ih->data->spacing = 0; + + if (ih->handle) + { + GtkCellRenderer* renderer = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER"); + if (renderer) + g_object_set(G_OBJECT(renderer), "xpad", ih->data->spacing, + "ypad", ih->data->spacing, + NULL); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int gtkListSetPaddingAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle) + { +#if GTK_CHECK_VERSION(2, 10, 0) + GtkEntry* entry; + GtkBorder border; + border.bottom = border.top = ih->data->vert_padding; + border.left = border.right = ih->data->horiz_padding; + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_entry_set_inner_border(entry, &border); +#endif + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int gtkListSetSelectionAttrib(Ihandle* ih, const char* value) +{ + int start=1, end=1; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (!value || iupStrEqualNoCase(value, "NONE")) + { + gtk_editable_select_region(GTK_EDITABLE(entry), 0, 0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<1 || end<1) + return 0; + + start--; /* IUP starts at 1 */ + end--; + + gtk_editable_select_region(GTK_EDITABLE(entry), start, end); + + return 0; +} + +static char* gtkListGetSelectionAttrib(Ihandle* ih) +{ + char *str; + int start, end; + GtkEntry* entry; + if (!ih->data->has_editbox) + return NULL; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end)) + { + start++; /* IUP starts at 1 */ + end++; + str = iupStrGetMemory(100); + sprintf(str, "%d:%d", (int)start, (int)end); + return str; + } + + return NULL; +} + +static int gtkListSetSelectionPosAttrib(Ihandle* ih, const char* value) +{ + int start=0, end=0; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (!value || iupStrEqualNoCase(value, "NONE")) + { + gtk_editable_select_region(GTK_EDITABLE(entry), 0, 0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<0 || end<0) + return 0; + + gtk_editable_select_region(GTK_EDITABLE(entry), start, end); + + return 0; +} + +static char* gtkListGetSelectionPosAttrib(Ihandle* ih) +{ + int start, end; + char *str; + GtkEntry* entry; + if (!ih->data->has_editbox) + return NULL; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end)) + { + str = iupStrGetMemory(100); + sprintf(str, "%d:%d", (int)start, (int)end); + return str; + } + + return NULL; +} + +static int gtkListSetSelectedTextAttrib(Ihandle* ih, const char* value) +{ + int start, end; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end)) + { + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + gtk_editable_delete_selection(GTK_EDITABLE(entry)); + gtk_editable_insert_text(GTK_EDITABLE(entry), iupgtkStrConvertToUTF8(value), -1, &start); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + } + + return 0; +} + +static char* gtkListGetSelectedTextAttrib(Ihandle* ih) +{ + int start, end; + GtkEntry* entry; + if (!ih->data->has_editbox) + return NULL; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end)) + { + char* selectedtext = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + char* str = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(selectedtext)); + g_free(selectedtext); + return str; + } + + return NULL; +} + +static int gtkListSetCaretAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + sscanf(value,"%i",&pos); + pos--; /* IUP starts at 1 */ + if (pos < 0) pos = 0; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_editable_set_position(GTK_EDITABLE(entry), pos); + + return 0; +} + +static char* gtkListGetCaretAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char* str = iupStrGetMemory(50); + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + int pos = gtk_editable_get_position(GTK_EDITABLE(entry)); + pos++; /* IUP starts at 1 */ + sprintf(str, "%d", (int)pos); + return str; + } + else + return NULL; +} + +static int gtkListSetCaretPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_editable_set_position(GTK_EDITABLE(entry), pos); + + return 0; +} + +static char* gtkListGetCaretPosAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char* str = iupStrGetMemory(50); + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + int pos = gtk_editable_get_position(GTK_EDITABLE(entry)); + sprintf(str, "%d", (int)pos); + return str; + } + else + return NULL; +} + +static int gtkListSetScrollToAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 1) pos = 1; + pos--; /* return to GTK referece */ + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_editable_set_position(GTK_EDITABLE(entry), pos); + + return 0; +} + +static int gtkListSetScrollToPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_editable_set_position(GTK_EDITABLE(entry), pos); + + return 0; +} + +static int gtkListSetInsertAttrib(Ihandle* ih, const char* value) +{ + gint pos; + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + if (!value) + return 0; + + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); /* disable callbacks */ + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + pos = gtk_editable_get_position(GTK_EDITABLE(entry)); + gtk_editable_insert_text(GTK_EDITABLE(entry), iupgtkStrConvertToUTF8(value), -1, &pos); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + + return 0; +} + +static int gtkListSetAppendAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->has_editbox) + { + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gint pos = strlen(gtk_entry_get_text(entry))+1; + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); /* disable callbacks */ + gtk_editable_insert_text(GTK_EDITABLE(entry), iupgtkStrConvertToUTF8(value), -1, &pos); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + } + return 0; +} + +static int gtkListSetNCAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + if (!iupStrToInt(value, &ih->data->nc)) + ih->data->nc = INT_MAX; + + if (ih->handle) + { + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_entry_set_max_length(entry, ih->data->nc); + } + + return 0; +} + +static int gtkListSetClipboardAttrib(Ihandle *ih, const char *value) +{ + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (iupStrEqualNoCase(value, "COPY")) + gtk_editable_copy_clipboard(GTK_EDITABLE(entry)); + else if (iupStrEqualNoCase(value, "CUT")) + gtk_editable_cut_clipboard(GTK_EDITABLE(entry)); + else if (iupStrEqualNoCase(value, "PASTE")) + gtk_editable_paste_clipboard(GTK_EDITABLE(entry)); + else if (iupStrEqualNoCase(value, "CLEAR")) + gtk_editable_delete_selection(GTK_EDITABLE(entry)); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + return 0; +} + +static int gtkListSetReadOnlyAttrib(Ihandle* ih, const char* value) +{ + GtkEntry* entry; + if (!ih->data->has_editbox) + return 0; + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_editable_set_editable(GTK_EDITABLE(entry), !iupStrBoolean(value)); + return 0; +} + +static char* gtkListGetReadOnlyAttrib(Ihandle* ih) +{ + GtkEntry* entry; + if (!ih->data->has_editbox) + return NULL; + entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + if (!gtk_editable_get_editable(GTK_EDITABLE(entry))) + return "YES"; + else + return "NO"; +} + + +/*********************************************************************************/ + + +static void gtkListEditMoveCursor(GtkWidget* entry, GtkMovementStep step, gint count, gboolean extend_selection, Ihandle* ih) +{ + int pos; + + IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB"); + if (!cb) return; + + pos = gtk_editable_get_position(GTK_EDITABLE(entry)); + + if (pos != ih->data->last_caret_pos) + { + ih->data->last_caret_pos = pos; + + cb(ih, 1, pos+1, pos); + } + + (void)step; + (void)count; + (void)extend_selection; +} + +static gboolean gtkListEditKeyPressEvent(GtkWidget* entry, GdkEventKey *evt, Ihandle *ih) +{ + if (iupgtkKeyPressEvent(entry, evt, ih) == TRUE) + return TRUE; + + if ((evt->keyval == GDK_Up || evt->keyval == GDK_KP_Up) || + (evt->keyval == GDK_Prior || evt->keyval == GDK_KP_Page_Up) || + (evt->keyval == GDK_Down || evt->keyval == GDK_KP_Down) || + (evt->keyval == GDK_Next || evt->keyval == GDK_KP_Page_Down)) + { + int pos = -1; + GtkTreeIter iter; + GtkTreeModel* model = NULL; + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + if (gtk_tree_selection_get_selected(selection, &model, &iter)) + { + GtkTreePath *path = gtk_tree_model_get_path(model, &iter); + int* indices = gtk_tree_path_get_indices(path); + pos = indices[0]; + gtk_tree_path_free(path); + } + + if (pos == -1) + pos = 0; + else if (evt->keyval == GDK_Up || evt->keyval == GDK_KP_Up) + { + pos--; + if (pos < 0) pos = 0; + } + else if (evt->keyval == GDK_Prior || evt->keyval == GDK_KP_Page_Up) + { + pos -= 5; + if (pos < 0) pos = 0; + } + else if (evt->keyval == GDK_Down || evt->keyval == GDK_KP_Down) + { + int count = gtk_tree_model_iter_n_children(model, NULL); + pos++; + if (pos > count-1) pos = count-1; + } + else if (evt->keyval == GDK_Next || evt->keyval == GDK_KP_Page_Down) + { + int count = gtk_tree_model_iter_n_children(model, NULL); + pos += 5; + if (pos > count-1) pos = count-1; + } + + if (pos != -1) + { + GtkTreePath* path = gtk_tree_path_new_from_indices(pos, -1); + g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih); + gtk_tree_selection_select_path(selection, path); + g_signal_handlers_unblock_by_func(G_OBJECT(selection), G_CALLBACK(gtkListSelectionChanged), ih); + gtk_tree_path_free(path); + iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos); + + if (!model) model = gtkListGetModel(ih); + + if (gtk_tree_model_iter_nth_child(model, &iter, NULL, pos)) + { + gchar *text = NULL; + gtk_tree_model_get(model, &iter, 0, &text, -1); + if (text) + { + gtk_entry_set_text((GtkEntry*)entry, text); + g_free(text); + } + } + + } + } + + return FALSE; +} + +static gboolean gtkListEditKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + gtkListEditMoveCursor(widget, 0, 0, 0, ih); + (void)evt; + return FALSE; +} + +static gboolean gtkListEditButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih) +{ + gtkListEditMoveCursor(widget, 0, 0, 0, ih); + (void)evt; + return FALSE; +} + +static int gtkListCallEditCb(Ihandle* ih, GtkEditable *editable, const char* insert_value, int len, int start, int end) +{ + char *new_value, *value; + int ret = -1, key = 0; + + IFnis cb = (IFnis)IupGetCallback(ih, "EDIT_CB"); + if (!cb && !ih->data->mask) + return -1; /* continue */ + + value = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_entry_get_text(GTK_ENTRY(editable)))); + + if (!insert_value) + { + new_value = iupStrDup(value); + if (end<0) end = strlen(value)+1; + iupStrRemove(new_value, start, end, 1); + } + else + { + if (!value) + new_value = iupStrDup(insert_value); + else + { + if (len < end-start) + { + new_value = iupStrDup(value); + new_value = iupStrInsert(new_value, insert_value, start, end); + } + else + new_value = iupStrInsert(value, insert_value, start, end); + } + } + + if (insert_value && insert_value[0]!=0 && insert_value[1]==0) + key = insert_value[0]; + + if (!new_value) + return -1; /* continue */ + + if (ih->data->nc && (int)strlen(new_value) > ih->data->nc) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (cb) + { + int cb_ret = cb(ih, key, (char*)new_value); + if (cb_ret==IUP_IGNORE) + ret = 0; /* abort */ + else if (cb_ret==IUP_CLOSE) + { + IupExitLoop(); + ret = 0; /* abort */ + } + else if (cb_ret!=0 && key!=0 && + cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE) + ret = cb_ret; /* abort and replace */ + } + + if (new_value != value) free(new_value); + return ret; /* continue */ +} + +static void gtkListEditDeleteText(GtkEditable *editable, int start, int end, Ihandle* ih) +{ + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + if (gtkListCallEditCb(ih, editable, NULL, 0, start, end)==0) + g_signal_stop_emission_by_name(editable, "delete_text"); +} + +static void gtkListEditInsertText(GtkEditable *editable, char *insert_value, int len, int *pos, Ihandle* ih) +{ + int ret; + + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + ret = gtkListCallEditCb(ih, editable, iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(insert_value)), len, *pos, *pos); + if (ret == 0) + g_signal_stop_emission_by_name(editable, "insert_text"); + else if (ret != -1) + { + insert_value[0] = (char)ret; /* replace key */ + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + gtk_editable_insert_text(editable, insert_value, 1, pos); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + + g_signal_stop_emission_by_name(editable, "insert_text"); + } +} + +static void gtkListEditChanged(void* dummy, Ihandle* ih) +{ + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + iupBaseCallValueChangedCb(ih); + (void)dummy; +} + +static void gtkListComboBoxPopupShownChanged(GtkComboBox* widget, GParamSpec *pspec, Ihandle* ih) +{ + IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB"); + if (cb) + { + gboolean popup_shown; + g_object_get(widget, "popup-shown", &popup_shown, NULL); + cb(ih, popup_shown); + } + (void)pspec; +} + +static void gtkListComboBoxChanged(GtkComboBox* widget, Ihandle* ih) +{ + IFnsii cb = (IFnsii)IupGetCallback(ih, "ACTION"); + if (cb) + { + int pos = gtk_combo_box_get_active((GtkComboBox*)ih->handle); + pos++; /* IUP starts at 1 */ + iupListSingleCallActionCallback(ih, cb, pos); + } + + if (!ih->data->has_editbox) + iupBaseCallValueChangedCb(ih); + + (void)widget; +} + +static gboolean gtkListSimpleKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + if (iupgtkKeyPressEvent(widget, evt, ih) == TRUE) + return TRUE; + + if (evt->keyval == GDK_Return || evt->keyval == GDK_KP_Enter) + return TRUE; /* used to avoid the call to DBLCLICK_CB in the default processing */ + return FALSE; +} + +static void gtkListRowActivated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, Ihandle* ih) +{ + IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB"); + if (cb) + { + int* indices = gtk_tree_path_get_indices(path); + iupListSingleCallDblClickCallback(ih, cb, indices[0]+1); /* IUP starts at 1 */ + } + (void)column; + (void)tree_view; +} + +static void gtkListSelectionChanged(GtkTreeSelection* selection, Ihandle* ih) +{ + if (ih->data->has_editbox) + { + /* must manually update its contents */ + GtkTreeIter iter; + GtkTreeModel* tree_model; + if (gtk_tree_selection_get_selected(selection, &tree_model, &iter)) + { + GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter); + char* value = NULL; + gtk_tree_model_get(tree_model, &iter, 0, &value, -1); + if (value) + { + GtkEntry* entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); + gtk_entry_set_text(entry, value); + g_free(value); + } + gtk_tree_path_free(path); + } + } + + if (!ih->data->is_multiple) + { + IFnsii cb = (IFnsii)IupGetCallback(ih, "ACTION"); + if (cb) + { + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iter; + GtkTreeModel* tree_model; + if (gtk_tree_selection_get_selected(selection, &tree_model, &iter)) + { + GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter); + int* indices = gtk_tree_path_get_indices(path); + iupListSingleCallActionCallback(ih, cb, indices[0]+1); /* IUP starts at 1 */ + gtk_tree_path_free (path); + } + } + } + else + { + IFns multi_cb = (IFns)IupGetCallback(ih, "MULTISELECT_CB"); + IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION"); + if (multi_cb || cb) + { + GList *il, *list = gtk_tree_selection_get_selected_rows(selection, NULL); + int i, sel_count = g_list_length(list); + int* pos = malloc(sizeof(int)*sel_count); + for (il=list, i=0; il; il=il->next, i++) + { + GtkTreePath* path = (GtkTreePath*)il->data; + int* indices = gtk_tree_path_get_indices(path); + pos[i] = indices[0]; + gtk_tree_path_free(path); + } + g_list_free(list); + + iupListMultipleCallActionCallback(ih, cb, multi_cb, pos, sel_count); + free(pos); + } + } + + if (!ih->data->has_editbox) + iupBaseCallValueChangedCb(ih); +} + + +/*********************************************************************************/ + + +static int gtkListMapMethod(Ihandle* ih) +{ + GtkScrolledWindow* scrolled_window = NULL; + GtkListStore *store; + + store = gtk_list_store_new(1, G_TYPE_STRING); + + if (ih->data->is_dropdown) + { + GtkCellRenderer *renderer = NULL; + + if (ih->data->has_editbox) + ih->handle = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(store), 0); + else + ih->handle = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); + g_object_unref(store); + + if (!ih->handle) + return IUP_ERROR; + + g_object_set(G_OBJECT(ih->handle), "has-frame", TRUE, NULL); + + if (ih->data->has_editbox) + { + GtkWidget *entry; +#if GTK_CHECK_VERSION(2, 12, 0) + GList* list = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(ih->handle)); + renderer = list->data; + g_list_free(list); +#endif + + entry = gtk_bin_get_child(GTK_BIN(ih->handle)); + iupAttribSetStr(ih, "_IUPGTK_ENTRY", (char*)entry); + + g_signal_connect(G_OBJECT(entry), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(entry), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(entry), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(entry), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + g_signal_connect(G_OBJECT(entry), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + + g_signal_connect(G_OBJECT(entry), "delete-text", G_CALLBACK(gtkListEditDeleteText), ih); + g_signal_connect(G_OBJECT(entry), "insert-text", G_CALLBACK(gtkListEditInsertText), ih); + /* g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(gtkListEditChanged), ih); */ + g_signal_connect_after(G_OBJECT(entry), "move-cursor", G_CALLBACK(gtkListEditMoveCursor), ih); /* only report some caret movements */ + g_signal_connect_after(G_OBJECT(entry), "key-release-event", G_CALLBACK(gtkListEditKeyReleaseEvent), ih); + g_signal_connect(G_OBJECT(entry), "button-press-event", G_CALLBACK(gtkListEditButtonEvent), ih); /* if connected "after" then it is ignored */ + g_signal_connect(G_OBJECT(entry), "button-release-event",G_CALLBACK(gtkListEditButtonEvent), ih); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + } + else + { + /* had to add an event box just to get get/killfocus,enter/leave events */ + GtkWidget *box = gtk_event_box_new(); + gtk_container_add((GtkContainer*)box, ih->handle); + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)box); + + renderer = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(ih->handle), renderer, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(ih->handle), renderer, "text", 0, NULL); + + g_signal_connect(G_OBJECT(box), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(box), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(box), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(box), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + else + GTK_WIDGET_FLAGS(box) |= GTK_CAN_FOCUS; + } + + g_signal_connect(ih->handle, "changed", G_CALLBACK(gtkListComboBoxChanged), ih); + g_signal_connect(ih->handle, "notify::popup-shown", G_CALLBACK(gtkListComboBoxPopupShownChanged), ih); + + if (renderer) + { + renderer->xpad = 0; + renderer->ypad = 0; + iupAttribSetStr(ih, "_IUPGTK_RENDERER", (char*)renderer); + } + } + else + { + GtkCellRenderer *renderer; + GtkTreeSelection* selection; + GtkTreeViewColumn *column; + GtkPolicyType scrollbar_policy; + + ih->handle = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); + g_object_unref(store); + + if (!ih->handle) + return IUP_ERROR; + + scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL); + + if (ih->data->has_editbox) + { + GtkBox* vbox = (GtkBox*)gtk_vbox_new(FALSE, 0); + + GtkWidget *entry = gtk_entry_new(); + gtk_widget_show(entry); + gtk_box_pack_start(vbox, entry, FALSE, FALSE, 0); + iupAttribSetStr(ih, "_IUPGTK_ENTRY", (char*)entry); + + gtk_widget_show((GtkWidget*)vbox); + gtk_box_pack_end(vbox, (GtkWidget*)scrolled_window, TRUE, TRUE, 0); + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)vbox); + iupAttribSetStr(ih, "_IUPGTK_SCROLLED_WINDOW", (char*)scrolled_window); + + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; /* focus goes only to the edit box */ + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(entry) &= ~GTK_CAN_FOCUS; + + g_signal_connect(G_OBJECT(entry), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(entry), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(entry), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(entry), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + g_signal_connect(G_OBJECT(entry), "delete-text", G_CALLBACK(gtkListEditDeleteText), ih); + g_signal_connect(G_OBJECT(entry), "insert-text", G_CALLBACK(gtkListEditInsertText), ih); + g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(gtkListEditChanged), ih); + g_signal_connect_after(G_OBJECT(entry), "move-cursor", G_CALLBACK(gtkListEditMoveCursor), ih); /* only report some caret movements */ + g_signal_connect(G_OBJECT(entry), "key-press-event", G_CALLBACK(gtkListEditKeyPressEvent), ih); + g_signal_connect_after(G_OBJECT(entry), "key-release-event", G_CALLBACK(gtkListEditKeyReleaseEvent), ih); + g_signal_connect(G_OBJECT(entry), "button-press-event", G_CALLBACK(gtkListEditButtonEvent), ih); /* if connected "after" then it is ignored */ + g_signal_connect(G_OBJECT(entry), "button-release-event",G_CALLBACK(gtkListEditButtonEvent), ih); + } + else + { + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkListSimpleKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + } + + column = gtk_tree_view_column_new(); + + renderer = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column), renderer, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(column), renderer, "text", 0, NULL); + + iupAttribSetStr(ih, "_IUPGTK_RENDERER", (char*)renderer); + g_object_set(G_OBJECT(renderer), "xpad", 0, NULL); + g_object_set(G_OBJECT(renderer), "ypad", 0, NULL); + + gtk_tree_view_append_column(GTK_TREE_VIEW(ih->handle), column); + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(ih->handle), FALSE); + gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ih->handle), FALSE); /* TODO: check "start-interactive-search" signal */ + + gtk_container_add((GtkContainer*)scrolled_window, ih->handle); + gtk_widget_show((GtkWidget*)scrolled_window); + gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN); + + if (ih->data->sb) + { + if (iupAttribGetBoolean(ih, "AUTOHIDE")) + scrollbar_policy = GTK_POLICY_AUTOMATIC; + else + scrollbar_policy = GTK_POLICY_ALWAYS; + } + else + scrollbar_policy = GTK_POLICY_NEVER; + + gtk_scrolled_window_set_policy(scrolled_window, scrollbar_policy, scrollbar_policy); + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + if (!ih->data->has_editbox && ih->data->is_multiple) + { + gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); +#if GTK_CHECK_VERSION(2, 10, 0) + gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(ih->handle), TRUE); +#endif + } + else + gtk_tree_selection_set_mode(selection, GTK_SELECTION_BROWSE); + + g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(gtkListSelectionChanged), ih); + g_signal_connect(G_OBJECT(ih->handle), "row-activated", G_CALLBACK(gtkListRowActivated), ih); + g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(iupgtkButtonEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(iupgtkButtonEvent), ih); + } + + if (iupAttribGetBoolean(ih, "SORT")) + gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), 0, GTK_SORT_ASCENDING); + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + if (scrolled_window) + gtk_widget_realize((GtkWidget*)scrolled_window); + gtk_widget_realize(ih->handle); + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)gtkListConvertXYToPos); + + iupListSetInitialItems(ih); + + return IUP_NOERROR; +} + +void iupdrvListInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkListMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkListSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkListSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkListSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT); + + /* IupList only */ + iupClassRegisterAttributeId(ic, "IDVALUE", gtkListGetIdValueAttrib, iupListSetIdValueAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", gtkListGetValueAttrib, gtkListSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWDROPDOWN", NULL, gtkListSetShowDropdownAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TOPITEM", NULL, gtkListSetTopItemAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPACING", iupListGetSpacingAttrib, gtkListSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + + iupClassRegisterAttribute(ic, "PADDING", iupListGetPaddingAttrib, gtkListSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SELECTEDTEXT", gtkListGetSelectedTextAttrib, gtkListSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTION", gtkListGetSelectionAttrib, gtkListSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTIONPOS", gtkListGetSelectionPosAttrib, gtkListSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARET", gtkListGetCaretAttrib, gtkListSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARETPOS", gtkListGetCaretPosAttrib, gtkListSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INSERT", NULL, gtkListSetInsertAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPEND", NULL, gtkListSetAppendAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "READONLY", gtkListGetReadOnlyAttrib, gtkListSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "NC", iupListGetNCAttrib, gtkListSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, gtkListSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTO", NULL, gtkListSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, gtkListSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); +} diff --git a/iup/src/gtk/iupgtk_loop.c b/iup/src/gtk/iupgtk_loop.c new file mode 100755 index 0000000..e349a45 --- /dev/null +++ b/iup/src/gtk/iupgtk_loop.c @@ -0,0 +1,93 @@ +/** \file + * \brief GTK Message Loop + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include + +#include "iup.h" +#include "iupcbs.h" + + +/* local variables */ +static IFidle gtk_idle_cb = NULL; +static guint gtk_idle_id; + +static gboolean gtkIdleFunc(gpointer data) +{ + (void)data; + if (gtk_idle_cb) + { + int ret = gtk_idle_cb(); + if (ret == IUP_CLOSE) + { + gtk_idle_cb = NULL; + IupExitLoop(); + return FALSE; /* removes the idle */ + } + if (ret == IUP_IGNORE) + { + gtk_idle_cb = NULL; + return FALSE; /* removes the idle */ + } + + return TRUE; /* keeps the idle */ + } + + return FALSE; /* removes the idle */ +} + +void iupdrvSetIdleFunction(Icallback f) +{ + if (gtk_idle_cb) + g_source_remove(gtk_idle_id); + + gtk_idle_cb = (IFidle)f; + + if (gtk_idle_cb) + gtk_idle_id = g_idle_add(gtkIdleFunc, NULL); +} + +void IupExitLoop(void) +{ + if (gtk_main_iteration_do(FALSE)==FALSE) + gtk_main_quit(); +} + +int IupMainLoopLevel(void) +{ + return gtk_main_level(); +} + +int IupMainLoop(void) +{ + gtk_main(); + return IUP_NOERROR; +} + +int IupLoopStep(void) +{ + if (gtk_main_iteration_do(FALSE)) + return IUP_CLOSE; + return IUP_DEFAULT; +} + +void IupFlush(void) +{ + IFidle old_gtk_idle_cb = NULL; + if (gtk_idle_cb) + { + old_gtk_idle_cb = gtk_idle_cb; + iupdrvSetIdleFunction(NULL); + } + + while (gtk_events_pending()) + gtk_main_iteration(); + + if (old_gtk_idle_cb) + iupdrvSetIdleFunction((Icallback)old_gtk_idle_cb); +} diff --git a/iup/src/gtk/iupgtk_menu.c b/iup/src/gtk/iupgtk_menu.c new file mode 100755 index 0000000..c12fbea --- /dev/null +++ b/iup/src/gtk/iupgtk_menu.c @@ -0,0 +1,525 @@ +/** \file + * \brief Menu Resources + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#ifdef HILDON +#include +#endif + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_label.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_image.h" +#include "iup_menu.h" + +#include "iupgtk_drv.h" + + +typedef struct _ImenuPos +{ + int x, y; +} ImenuPos; + +static void gtkMenuPositionFunc(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, ImenuPos *menupos) +{ + *x = menupos->x; + *y = menupos->y; + *push_in = FALSE; + (void)menu; +} + +int iupdrvMenuPopup(Ihandle* ih, int x, int y) +{ + ImenuPos menupos; + menupos.x = x; + menupos.y = y; + gtk_menu_popup((GtkMenu*)ih->handle, NULL, NULL, (GtkMenuPositionFunc)gtkMenuPositionFunc, + (gpointer)&menupos, 0, gtk_get_current_event_time()); + gtk_main(); + return IUP_NOERROR; +} + +int iupdrvMenuGetMenuBarSize(Ihandle* ih) +{ + int ch; + iupdrvFontGetCharSize(ih, NULL, &ch); +#ifdef WIN32 + return 3 + ch + 3; +#else + return 4 + ch + 4; +#endif +} + +static void gtkItemUpdateImage(Ihandle* ih, const char* value, const char* image, const char* impress) +{ + GdkPixbuf* pixbuf; + + if (!impress || !iupStrBoolean(value)) + pixbuf = iupImageGetImage(image, ih, 0); + else + pixbuf = iupImageGetImage(impress, ih, 0); + + if (pixbuf) + { + GtkWidget* image_label = gtk_image_menu_item_get_image((GtkImageMenuItem*)ih->handle); + if (!image_label) + { + image_label = gtk_image_new(); + gtk_image_menu_item_set_image((GtkImageMenuItem*)ih->handle, image_label); + } + + if (pixbuf != gtk_image_get_pixbuf((GtkImage*)image_label)) + gtk_image_set_from_pixbuf((GtkImage*)image_label, pixbuf); + } + else + gtk_image_menu_item_set_image((GtkImageMenuItem*)ih->handle, NULL); +} + + +/*******************************************************************************************/ + + +static void gtkMenuMap(GtkWidget *widget, Ihandle* ih) +{ + Icallback cb = IupGetCallback(ih, "OPEN_CB"); + if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "OPEN_CB"); /* check also in the Submenu */ + if (cb) cb(ih); + + (void)widget; +} + +static void gtkMenuUnMap(GtkWidget *widget, Ihandle* ih) +{ + Icallback cb = IupGetCallback(ih, "MENUCLOSE_CB"); + if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "MENUCLOSE_CB"); /* check also in the Submenu */ + if (cb) cb(ih); + + (void)widget; +} + +static void gtkPopupMenuUnMap(GtkWidget *widget, Ihandle* ih) +{ + gtkMenuUnMap(widget, ih); + + /* quit the popup loop */ + gtk_main_quit(); +} + +static void gtkItemSelect(GtkWidget *widget, Ihandle* ih) +{ + Icallback cb = IupGetCallback(ih, "HIGHLIGHT_CB"); + if (cb) + cb(ih); + + cb = IupGetCallback(ih, "HELP_CB"); + if (cb) + gtk_menu_set_active((GtkMenu*)ih->parent->handle, IupGetChildPos(ih->parent, ih)); + + (void)widget; +} + +static void gtkItemActivate(GtkWidget *widget, Ihandle* ih) +{ + Icallback cb; + + if (GTK_IS_CHECK_MENU_ITEM(ih->handle) && !iupAttribGetBoolean(ih, "AUTOTOGGLE") && !iupAttribGetBoolean(ih->parent, "RADIO")) + { + /* GTK by default will do autotoggle */ + g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih); + gtk_check_menu_item_set_active((GtkCheckMenuItem*)ih->handle, !gtk_check_menu_item_get_active((GtkCheckMenuItem*)ih->handle)); + g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih); + } + + if (GTK_IS_IMAGE_MENU_ITEM(ih->handle)) + { + if (iupAttribGetBoolean(ih, "AUTOTOGGLE")) + { + if (iupAttribGetBoolean(ih, "VALUE")) + iupAttribSetStr(ih, "VALUE", "OFF"); + else + iupAttribSetStr(ih, "VALUE", "ON"); + + gtkItemUpdateImage(ih, iupAttribGet(ih, "VALUE"), iupAttribGet(ih, "IMAGE"), iupAttribGet(ih, "IMPRESS")); + } + } + + cb = IupGetCallback(ih, "ACTION"); + if (cb && cb(ih)==IUP_CLOSE) + IupExitLoop(); + + (void)widget; +} + +static gboolean gtkMenuKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + if (evt->keyval == GDK_F1) + { + Ihandle* child; + GtkWidget* active = gtk_menu_get_active((GtkMenu*)widget); + for (child=ih->firstchild; child; child=child->brother) + { + if (child->handle == active) + iupgtkShowHelp(NULL, NULL, child); + } + } + + (void)widget; + (void)evt; + return FALSE; +} + + +/*******************************************************************************************/ + + +static int gtkMenuMapMethod(Ihandle* ih) +{ + if (iupMenuIsMenuBar(ih)) + { + /* top level menu used for MENU attribute in IupDialog (a menu bar) */ +#ifdef HILDON + Ihandle *pih; + ih->handle = gtk_menu_new(); + if (!ih->handle) + return IUP_ERROR; + + pih = iupChildTreeGetNativeParent(ih); + hildon_window_set_menu(HILDON_WINDOW(pih->handle), GTK_MENU(ih->handle)); +#else + ih->handle = gtk_menu_bar_new(); + if (!ih->handle) + return IUP_ERROR; + + iupgtkBaseAddToParent(ih); +#endif + } + else + { + ih->handle = gtk_menu_new(); + if (!ih->handle) + return IUP_ERROR; + + if (ih->parent) + { + /* parent is a submenu */ + gtk_menu_item_set_submenu((GtkMenuItem*)ih->parent->handle, ih->handle); + + g_signal_connect(G_OBJECT(ih->handle), "map", G_CALLBACK(gtkMenuMap), ih); + g_signal_connect(G_OBJECT(ih->handle), "unmap", G_CALLBACK(gtkMenuUnMap), ih); + } + else + { + /* top level menu used for IupPopup */ + iupAttribSetStr(ih, "_IUPGTK_POPUP_MENU", "1"); + + g_signal_connect(G_OBJECT(ih->handle), "map", G_CALLBACK(gtkMenuMap), ih); + g_signal_connect(G_OBJECT(ih->handle), "unmap", G_CALLBACK(gtkPopupMenuUnMap), ih); + } + } + + gtk_widget_add_events(ih->handle, GDK_KEY_PRESS_MASK); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkMenuKeyPressEvent), ih); + + ih->serial = iupMenuGetChildId(ih); + gtk_widget_show(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvMenuInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkMenuMapMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Used by iupdrvMenuGetMenuBarSize */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, NULL, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_DEFAULT); /* use inheritance to retrieve standard fonts */ + + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, NULL, NULL, IUPAF_DEFAULT); +} + + +/*******************************************************************************************/ + +static int gtkItemSetTitleImageAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_IMAGE_MENU_ITEM(ih->handle)) + { + gtkItemUpdateImage(ih, NULL, value, NULL); + return 1; + } + else + return 0; +} + +static int gtkItemSetImageAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_IMAGE_MENU_ITEM(ih->handle)) + { + gtkItemUpdateImage(ih, iupAttribGet(ih, "VALUE"), value, iupAttribGet(ih, "IMPRESS")); + return 1; + } + else + return 0; +} + +static int gtkItemSetImpressAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_IMAGE_MENU_ITEM(ih->handle)) + { + gtkItemUpdateImage(ih, iupAttribGet(ih, "VALUE"), iupAttribGet(ih, "IMAGE"), value); + return 1; + } + else + return 0; +} + +static int gtkItemSetTitleAttrib(Ihandle* ih, const char* value) +{ + char *str; + GtkWidget* label; + + if (!value) + { + str = " "; + value = str; + } + else + str = iupMenuProcessTitle(ih, value); + + label = gtk_bin_get_child((GtkBin*)ih->handle); + + iupgtkSetMnemonicTitle(ih, (GtkLabel*)label, str); + + if (str != value) free(str); + return 1; +} + +static int gtkItemSetValueAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_CHECK_MENU_ITEM(ih->handle)) + { + if (iupAttribGetBoolean(ih->parent, "RADIO")) + value = "ON"; + + g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih); + gtk_check_menu_item_set_active((GtkCheckMenuItem*)ih->handle, iupStrBoolean(value)); + g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkItemActivate), ih); + return 0; + } + else if (GTK_IS_IMAGE_MENU_ITEM(ih->handle)) + { + gtkItemUpdateImage(ih, value, iupAttribGet(ih, "IMAGE"), iupAttribGet(ih, "IMPRESS")); + return 1; + } + else + return 0; +} + +static char* gtkItemGetValueAttrib(Ihandle* ih) +{ + if (GTK_IS_CHECK_MENU_ITEM(ih->handle)) + { + if (gtk_check_menu_item_get_active((GtkCheckMenuItem*)ih->handle)) + return "ON"; + else + return "OFF"; + } + else + return NULL; +} + +static int gtkItemMapMethod(Ihandle* ih) +{ + int pos; + + if (!ih->parent) + return IUP_ERROR; + +#ifndef HILDON + if (iupMenuIsMenuBar(ih->parent)) + ih->handle = gtk_menu_item_new_with_label(""); + else +#endif + { + if (iupAttribGet(ih, "IMAGE")||iupAttribGet(ih, "TITLEIMAGE")) + ih->handle = gtk_image_menu_item_new_with_label(""); + else if (iupAttribGetBoolean(ih->parent, "RADIO")) + { + GtkRadioMenuItem* last_tg = (GtkRadioMenuItem*)iupAttribGet(ih->parent, "_IUPGTK_LASTRADIOITEM"); + if (last_tg) + ih->handle = gtk_radio_menu_item_new_with_label_from_widget(last_tg, ""); + else + ih->handle = gtk_radio_menu_item_new_with_label(NULL, ""); + iupAttribSetStr(ih->parent, "_IUPGTK_LASTRADIOITEM", (char*)ih->handle); + } + else + { + char* hidemark = iupAttribGetStr(ih, "HIDEMARK"); + if (!hidemark && gtk_check_version(2, 14, 0) == NULL) + { + /* force HIDEMARK if VALUE is defined before Map, after GTK 2.14 */ + if (!iupAttribGet(ih, "VALUE")) + hidemark = "YES"; + } + + if (iupStrBoolean(hidemark)) + ih->handle = gtk_menu_item_new_with_label(""); + else + ih->handle = gtk_check_menu_item_new_with_label(""); + } + } + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupMenuGetChildId(ih); + + g_signal_connect(G_OBJECT(ih->handle), "select", G_CALLBACK(gtkItemSelect), ih); + g_signal_connect(G_OBJECT(ih->handle), "activate", G_CALLBACK(gtkItemActivate), ih); + + pos = IupGetChildPos(ih->parent, ih); + gtk_menu_shell_insert((GtkMenuShell*)ih->parent->handle, ih->handle, pos); + gtk_widget_show(ih->handle); + + iupUpdateStandardFontAttrib(ih); + + return IUP_NOERROR; +} + +void iupdrvItemInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkItemMapMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */ + + /* Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* IupItem only */ + iupClassRegisterAttribute(ic, "VALUE", gtkItemGetValueAttrib, gtkItemSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLE", NULL, gtkItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLEIMAGE", NULL, gtkItemSetTitleImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkItemSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, gtkItemSetImpressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupItem GTK and Motif only */ + iupClassRegisterAttribute(ic, "HIDEMARK", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED); +} + + +/*******************************************************************************************/ + + +static int gtkSubmenuSetImageAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_IMAGE_MENU_ITEM(ih->handle)) + { + gtkItemUpdateImage(ih, NULL, value, NULL); + return 1; + } + else + return 0; +} + +static int motSubmenuMapMethod(Ihandle* ih) +{ + int pos; + + if (!ih->parent) + return IUP_ERROR; + +#ifndef HILDON + if (iupMenuIsMenuBar(ih->parent)) + ih->handle = gtk_menu_item_new_with_label(""); + else +#endif + ih->handle = gtk_image_menu_item_new_with_label(""); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupMenuGetChildId(ih); + + pos = IupGetChildPos(ih->parent, ih); + gtk_menu_shell_insert((GtkMenuShell*)ih->parent->handle, ih->handle, pos); + gtk_widget_show(ih->handle); + + g_signal_connect(G_OBJECT(ih->handle), "select", G_CALLBACK(gtkItemSelect), ih); + + iupUpdateStandardFontAttrib(ih); + + return IUP_NOERROR; +} + +void iupdrvSubmenuInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motSubmenuMapMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */ + + /* Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* IupSubmenu only */ + iupClassRegisterAttribute(ic, "TITLE", NULL, gtkItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkSubmenuSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); +} + + +/*******************************************************************************************/ + + +static int gtkSeparatorMapMethod(Ihandle* ih) +{ + int pos; + + if (!ih->parent) + return IUP_ERROR; + + ih->handle = gtk_separator_menu_item_new(); + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupMenuGetChildId(ih); + + pos = IupGetChildPos(ih->parent, ih); + gtk_menu_shell_insert((GtkMenuShell*)ih->parent->handle, ih->handle, pos); + gtk_widget_show(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvSeparatorInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkSeparatorMapMethod; + ic->UnMap = iupdrvBaseUnMapMethod; +} diff --git a/iup/src/gtk/iupgtk_messagedlg.c b/iup/src/gtk/iupgtk_messagedlg.c new file mode 100755 index 0000000..a036af6 --- /dev/null +++ b/iup/src/gtk/iupgtk_messagedlg.c @@ -0,0 +1,128 @@ +/** \file + * \brief GTK IupMessageDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" + +#include "iupgtk_drv.h" + +/* Sometimes GTK decides to invert the buttons position because of the GNOME Guidelines. + To avoid that we define different Ids for the buttons. */ +#define IUP_RESPONSE_1 -100 +#define IUP_RESPONSE_2 -200 +#define IUP_RESPONSE_HELP -300 + +#ifndef GTK_MESSAGE_OTHER +#define GTK_MESSAGE_OTHER GTK_MESSAGE_INFO +#endif + +static int gtkMessageDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + GtkMessageType type = GTK_MESSAGE_OTHER; + GtkWidget* dialog; + char *icon, *buttons, *title; + int response, num_but = 2; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + icon = iupAttribGetStr(ih, "DIALOGTYPE"); + if (iupStrEqualNoCase(icon, "ERROR")) + type = GTK_MESSAGE_ERROR; + else if (iupStrEqualNoCase(icon, "WARNING")) + type = GTK_MESSAGE_WARNING; + else if (iupStrEqualNoCase(icon, "INFORMATION")) + type = GTK_MESSAGE_INFO; + else if (iupStrEqualNoCase(icon, "QUESTION")) + type = GTK_MESSAGE_QUESTION; + + dialog = gtk_message_dialog_new((GtkWindow*)parent, + 0, + type, + GTK_BUTTONS_NONE, + iupgtkStrConvertToUTF8(iupAttribGet(ih, "VALUE"))); + if (!dialog) + return IUP_ERROR; + + title = iupAttribGet(ih, "TITLE"); + if (title) + gtk_window_set_title(GTK_WINDOW(dialog), iupgtkStrConvertToUTF8(title)); + + buttons = iupAttribGetStr(ih, "BUTTONS"); + if (iupStrEqualNoCase(buttons, "OKCANCEL")) + { + gtk_dialog_add_button(GTK_DIALOG(dialog), + GTK_STOCK_OK, + IUP_RESPONSE_1); + gtk_dialog_add_button(GTK_DIALOG(dialog), + GTK_STOCK_CANCEL, + IUP_RESPONSE_2); + } + else if (iupStrEqualNoCase(buttons, "YESNO")) + { + gtk_dialog_add_button(GTK_DIALOG(dialog), + GTK_STOCK_YES, + IUP_RESPONSE_1); + gtk_dialog_add_button(GTK_DIALOG(dialog), + GTK_STOCK_NO, + IUP_RESPONSE_2); + } + else /* OK */ + { + gtk_dialog_add_button(GTK_DIALOG(dialog), + GTK_STOCK_OK, + IUP_RESPONSE_1); + num_but = 1; + } + + if (IupGetCallback(ih, "HELP_CB")) + gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, IUP_RESPONSE_HELP); + + if (num_but == 2 && iupAttribGetInt(ih, "BUTTONDEFAULT") == 2) + gtk_dialog_set_default_response(GTK_DIALOG(dialog), IUP_RESPONSE_2); + else + gtk_dialog_set_default_response(GTK_DIALOG(dialog), IUP_RESPONSE_1); + + /* initialize the widget */ + gtk_widget_realize(dialog); + + ih->handle = dialog; + iupDialogUpdatePosition(ih); + ih->handle = NULL; + + do + { + response = gtk_dialog_run(GTK_DIALOG(dialog)); + + if (response == IUP_RESPONSE_HELP) + { + Icallback cb = IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + response = (num_but == 2)? IUP_RESPONSE_2: IUP_RESPONSE_1; + } + } while (response == IUP_RESPONSE_HELP); + + if (response == IUP_RESPONSE_1) + IupSetAttribute(ih, "BUTTONRESPONSE", "1"); + else + IupSetAttribute(ih, "BUTTONRESPONSE", "2"); + + gtk_widget_destroy(dialog); + + return IUP_NOERROR; +} + +void iupdrvMessageDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = gtkMessageDlgPopup; +} diff --git a/iup/src/gtk/iupgtk_open.c b/iup/src/gtk/iupgtk_open.c new file mode 100755 index 0000000..66e46e8 --- /dev/null +++ b/iup/src/gtk/iupgtk_open.c @@ -0,0 +1,172 @@ +/** \file + * \brief GTK Driver Core + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_object.h" +#include "iup_globalattrib.h" + +#include "iupgtk_drv.h" + + +#ifdef WIN32 /******************************** WIN32 ************************************/ +#include + +char* iupgtkGetNativeWindowHandle(Ihandle* ih) +{ + GdkWindow* window = ih->handle->window; + if (window) + return (char*)GDK_WINDOW_HWND(window); + else + return NULL; +} + +void* iupgtkGetNativeGraphicsContext(GtkWidget* widget) +{ + return GetDC(GDK_WINDOW_HWND(widget->window)); +} + +void iupgtkReleaseNativeGraphicsContext(GtkWidget* widget, void* gc) +{ + ReleaseDC(GDK_WINDOW_HWND(widget->window), (HDC)gc); +} + +void* iupdrvGetDisplay(void) +{ + return NULL; +} + +void iupgtkPushVisualAndColormap(void* visual, void* colormap) +{ + (void)visual; + (void)colormap; +} + +static void gtkSetDrvGlobalAttrib(void) +{ +} + +#else /******************************** X11 ************************************/ +#include + +char* iupgtkGetNativeWindowHandle(Ihandle* ih) +{ + GdkWindow* window = ih->handle->window; + if (window) + return (char*)GDK_WINDOW_XID(window); + else + return NULL; +} + +void* iupgtkGetNativeGraphicsContext(GtkWidget* widget) +{ + GdkDisplay* display = gdk_display_get_default(); + return (void*)XCreateGC(GDK_DISPLAY_XDISPLAY(display), GDK_WINDOW_XID(widget->window), 0, NULL); +} + +void iupgtkReleaseNativeGraphicsContext(GtkWidget* widget, void* gc) +{ + GdkDisplay* display = gdk_display_get_default(); + XFreeGC(GDK_DISPLAY_XDISPLAY(display), (GC)gc); + (void)widget; +} + +void* iupdrvGetDisplay(void) +{ + GdkDisplay* display = gdk_display_get_default(); + return GDK_DISPLAY_XDISPLAY(display); +} + +void iupgtkPushVisualAndColormap(void* visual, void* colormap) +{ + GdkColormap* gdk_colormap; + GdkVisual *gdk_visual = gdkx_visual_get(XVisualIDFromVisual((Visual*)visual)); + if (colormap) + gdk_colormap = gdk_x11_colormap_foreign_new(gdk_visual, (Colormap)colormap); + else + gdk_colormap = gdk_colormap_new(gdk_visual, FALSE); + + gtk_widget_push_colormap(gdk_colormap); + + /* gtk_widget_push_visual is now deprecated */ +} + +static void gtkSetDrvGlobalAttrib(void) +{ + GdkDisplay* display = gdk_display_get_default(); + Display* xdisplay = GDK_DISPLAY_XDISPLAY(display); + IupSetGlobal("XDISPLAY", (char*)xdisplay); + IupSetGlobal("XSCREEN", (char*)XDefaultScreen(xdisplay)); + IupSetGlobal("XSERVERVENDOR", ServerVendor(xdisplay)); + IupSetfAttribute(NULL, "XVENDORRELEASE", "%d", VendorRelease(xdisplay)); +} + +#endif + +static void gtkSetGlobalColorAttrib(const char* name, GdkColor *color) +{ + iupGlobalSetDefaultColorAttrib(name, (int)iupCOLOR16TO8(color->red), + (int)iupCOLOR16TO8(color->green), + (int)iupCOLOR16TO8(color->blue)); +} + +void iupgtkUpdateGlobalColors(GtkStyle* style) +{ + GdkColor color = style->bg[GTK_STATE_NORMAL]; + gtkSetGlobalColorAttrib("DLGBGCOLOR", &color); + + color = style->fg[GTK_STATE_NORMAL]; + gtkSetGlobalColorAttrib("DLGFGCOLOR", &color); + + color = style->base[GTK_STATE_NORMAL]; + gtkSetGlobalColorAttrib("TXTBGCOLOR", &color); + + color = style->text[GTK_STATE_NORMAL]; + gtkSetGlobalColorAttrib("TXTFGCOLOR", &color); +} + +int iupdrvOpen(int *argc, char ***argv) +{ + GtkStyle* style; + + if (!gtk_init_check(argc, argv)) + return IUP_ERROR; + + IupSetGlobal("DRIVER", "GTK"); + + IupStoreGlobal("SYSTEMLANGUAGE", pango_language_to_string(gtk_get_default_language())); + + /* driver system version */ + IupSetfAttribute(NULL, "GTKVERSION", "%d.%d.%d", gtk_major_version, + gtk_minor_version, + gtk_micro_version); + IupSetfAttribute(NULL, "GTKDEVVERSION", "%d.%d.%d", GTK_MAJOR_VERSION, + GTK_MINOR_VERSION, + GTK_MICRO_VERSION); + + gtkSetDrvGlobalAttrib(); + + style = gtk_style_new(); + iupgtkUpdateGlobalColors(style); + IupSetGlobal("_IUP_RESET_GLOBALCOLORS", "YES"); /* will update the global colors when the first dialog is mapped */ + g_object_unref(style); + + return IUP_NOERROR; +} + +void iupdrvClose(void) +{ + iupgtkReleaseConvertUTF8(); +} diff --git a/iup/src/gtk/iupgtk_progressbar.c b/iup/src/gtk/iupgtk_progressbar.c new file mode 100755 index 0000000..7bc6cbb --- /dev/null +++ b/iup/src/gtk/iupgtk_progressbar.c @@ -0,0 +1,131 @@ +/** \file +* \brief Progress bar Control +* +* See Copyright Notice in "iup.h" +*/ + +#undef GTK_DISABLE_DEPRECATED +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_progressbar.h" +#include "iup_drv.h" + +#include "iupgtk_drv.h" + + +static int gtkProgressBarSetMarqueeAttrib(Ihandle* ih, const char* value) +{ + GtkProgress* progress = (GtkProgress*)ih->handle; + + if (iupStrBoolean(value)) + { + ih->data->marquee = 1; + gtk_progress_set_activity_mode(progress, TRUE); + } + else + { + gtk_progress_set_activity_mode(progress, FALSE); + ih->data->marquee = 0; + } + + return 1; +} + +static int gtkProgressBarSetValueAttrib(Ihandle* ih, const char* value) +{ + GtkProgressBar* pbar = (GtkProgressBar*)ih->handle; + + if (!value) + ih->data->value = 0; + else + ih->data->value = atof(value); + iProgressBarCropValue(ih); + + if (ih->data->marquee) + gtk_progress_bar_pulse(pbar); + else + gtk_progress_bar_set_fraction(pbar, (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin)); + + return 0; +} + +static int gtkProgressBarSetDashedAttrib(Ihandle* ih, const char* value) +{ + GtkProgressBar* pbar = (GtkProgressBar*)ih->handle; + + /* gtk_progress_bar_set_bar_style is deprecated */ + if (iupStrBoolean(value)) + { + ih->data->dashed = 1; + gtk_progress_bar_set_bar_style(pbar, GTK_PROGRESS_DISCRETE); + } + else /* Default */ + { + ih->data->dashed = 0; + gtk_progress_bar_set_bar_style(pbar, GTK_PROGRESS_CONTINUOUS); + } + + return 0; +} + +static int gtkProgressBarMapMethod(Ihandle* ih) +{ + ih->handle = gtk_progress_bar_new(); + if (!ih->handle) + return IUP_ERROR; + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + gtk_widget_realize(ih->handle); + + if (iupStrEqualNoCase(iupAttribGetStr(ih, "ORIENTATION"), "VERTICAL")) + { + gtk_progress_bar_set_orientation((GtkProgressBar*)ih->handle, GTK_PROGRESS_BOTTOM_TO_TOP); + + if (ih->currentheight < ih->currentwidth) + { + int tmp = ih->currentheight; + ih->currentheight = ih->currentwidth; + ih->currentwidth = tmp; + } + } + else + gtk_progress_bar_set_orientation((GtkProgressBar*)ih->handle, GTK_PROGRESS_LEFT_TO_RIGHT); + + return IUP_NOERROR; +} + +void iupdrvProgressBarInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkProgressBarMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, NULL, NULL, IUPAF_DEFAULT); + + /* IupProgressBar only */ + iupClassRegisterAttribute(ic, "VALUE", iProgressBarGetValueAttrib, gtkProgressBarSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DASHED", iProgressBarGetDashedAttrib, gtkProgressBarSetDashedAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARQUEE", NULL, gtkProgressBarSetMarqueeAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DASHED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/gtk/iupgtk_tabs.c b/iup/src/gtk/iupgtk_tabs.c new file mode 100755 index 0000000..8029826 --- /dev/null +++ b/iup/src/gtk/iupgtk_tabs.c @@ -0,0 +1,444 @@ +/** \file +* \brief Tabs Control +* +* See Copyright Notice in "iup.h" +*/ + +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_image.h" +#include "iup_tabs.h" + +#include "iupgtk_drv.h" + + +int iupdrvTabsExtraDecor(Ihandle* ih) +{ + (void)ih; + return 0; +} + +int iupdrvTabsGetLineCountAttrib(Ihandle* ih) +{ + (void)ih; + return 1; +} + +void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos) +{ + iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", "1"); + gtk_notebook_set_current_page((GtkNotebook*)ih->handle, pos); + iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", NULL); +} + +int iupdrvTabsGetCurrentTab(Ihandle* ih) +{ + return gtk_notebook_get_current_page((GtkNotebook*)ih->handle); +} + +static void gtkTabsUpdatePageFont(Ihandle* ih) +{ + Ihandle* child; + PangoFontDescription* fontdesc = (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih); + + for (child = ih->firstchild; child; child = child->brother) + { + GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL"); + if (tab_label) + { + gtk_widget_modify_font(tab_label, fontdesc); + iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)tab_label)); + } + } +} + +static void gtkTabsUpdatePageBgColor(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b) +{ + Ihandle* child; + + for (child = ih->firstchild; child; child = child->brother) + { + GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); + if (tab_page) + { + GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL"); + if (tab_label) + iupgtkBaseSetBgColor(tab_label, r, g, b); + iupgtkBaseSetBgColor(tab_page, r, g, b); + } + } +} + +static void gtkTabsUpdatePageFgColor(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b) +{ + Ihandle* child; + + for (child = ih->firstchild; child; child = child->brother) + { + GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL"); + if (tab_label) + iupgtkBaseSetFgColor(tab_label, r, g, b); + } +} + +static void gtkTabsUpdatePagePadding(Ihandle* ih) +{ + Ihandle* child; + + for (child = ih->firstchild; child; child = child->brother) + { + GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL"); + if (tab_label) + gtk_misc_set_padding((GtkMisc*)tab_label, ih->data->horiz_padding, ih->data->vert_padding); + } +} + +/* ------------------------------------------------------------------------- */ +/* gtkTabs - Sets and Gets accessors */ +/* ------------------------------------------------------------------------- */ + + +static int gtkTabsSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + + if (ih->handle) + gtkTabsUpdatePagePadding(ih); + return 0; +} + +static void gtkTabsUpdateTabType(Ihandle* ih) +{ + GtkNotebook* tab_page = (GtkNotebook*)ih->handle; + int iup2gtk[4] = {GTK_POS_TOP, GTK_POS_BOTTOM, GTK_POS_LEFT, GTK_POS_RIGHT}; + gtk_notebook_set_tab_pos(tab_page, iup2gtk[ih->data->type]); +} + +static int gtkTabsSetTabTypeAttrib(Ihandle* ih, const char* value) +{ + if(iupStrEqualNoCase(value, "BOTTOM")) + ih->data->type = ITABS_BOTTOM; + else if(iupStrEqualNoCase(value, "LEFT")) + ih->data->type = ITABS_LEFT; + else if(iupStrEqualNoCase(value, "RIGHT")) + ih->data->type = ITABS_RIGHT; + else /* "TOP" */ + ih->data->type = ITABS_TOP; + + if (ih->handle) + gtkTabsUpdateTabType(ih); + + return 0; +} + +static int gtkTabsSetTabOrientationAttrib(Ihandle* ih, const char* value) +{ + if (ih->handle) /* allow to set only before mapping */ + return 0; + + if(iupStrEqualNoCase(value, "VERTICAL")) + ih->data->orientation = ITABS_VERTICAL; + else /* HORIZONTAL */ + ih->data->orientation = ITABS_HORIZONTAL; + + return 0; +} + +static int gtkTabsSetTabTitleAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int pos; + if (value && iupStrToInt(name_id, &pos)==1) + { + Ihandle* child = IupGetChild(ih, pos); + GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL"); + if (tab_label) + { + GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); + gtk_label_set_text((GtkLabel*)tab_label, iupgtkStrConvertToUTF8(value)); + gtk_notebook_set_menu_label_text((GtkNotebook*)ih->handle, tab_page, gtk_label_get_text((GtkLabel*)tab_label)); + } + } + return 1; +} + +static int gtkTabsSetTabImageAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int pos; + if (value && iupStrToInt(name_id, &pos)==1) + { + Ihandle* child = IupGetChild(ih, pos); + GtkWidget* tab_image = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABIMAGE"); + if (tab_image) + { + GdkPixbuf* pixbuf = iupImageGetImage(value, ih, 0); + if (pixbuf) + gtk_image_set_from_pixbuf((GtkImage*)tab_image, pixbuf); + } + } + return 1; +} + +static int gtkTabsSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + if (ih->handle) + gtkTabsUpdatePageFont(ih); + return 1; +} + +static int gtkTabsSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetFgColor(ih->handle, r, g, b); + gtkTabsUpdatePageFgColor(ih, r, g, b); + + return 1; +} + +static int gtkTabsSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetBgColor(ih->handle, r, g, b); + gtkTabsUpdatePageBgColor(ih, r, g, b); + + return 1; +} + + +/* ------------------------------------------------------------------------- */ +/* gtkTabs - Callbacks */ +/* ------------------------------------------------------------------------- */ + +void gtkTabSwitchPage(GtkNotebook* notebook, GtkNotebookPage *page, int pos, Ihandle* ih) +{ + IFnnn cb; + Ihandle* child = IupGetChild(ih, pos); + Ihandle* prev_child = IupGetChild(ih, iupdrvTabsGetCurrentTab(ih)); + IupSetAttribute(child, "VISIBLE", "YES"); + IupSetAttribute(prev_child, "VISIBLE", "NO"); + + if (iupAttribGet(ih, "_IUPGTK_IGNORE_CHANGE")) + return; + + cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB"); + if (cb) + cb(ih, child, prev_child); + + (void)notebook; + (void)page; +} + +/* ------------------------------------------------------------------------- */ +/* gtkTabs - Methods and Init Class */ +/* ------------------------------------------------------------------------- */ + +static void gtkTabsChildAddedMethod(Ihandle* ih, Ihandle* child) +{ + if (IupGetName(child) == NULL) + iupAttribSetHandleName(child); + + if (ih->handle) + { + GtkWidget* tab_page; + GtkWidget *tab_label = NULL, *tab_image = NULL; + char *tabtitle, *tabimage; + int pos; + unsigned char r, g, b; + + pos = IupGetChildPos(ih, child); + + tab_page = gtk_fixed_new(); + gtk_widget_show(tab_page); + + tabtitle = iupAttribGet(child, "TABTITLE"); + if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos); + tabimage = iupAttribGet(child, "TABIMAGE"); + if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos); + if (!tabtitle && !tabimage) + tabtitle = " "; + + if (tabtitle) + { + tab_label = gtk_label_new(iupgtkStrConvertToUTF8(tabtitle)); + +#if GTK_CHECK_VERSION(2, 6, 0) + if (ih->data->orientation == ITABS_VERTICAL) + gtk_label_set_angle((GtkLabel*)tab_label, 90); +#endif + } + + if (tabimage) + { + GdkPixbuf* pixbuf = iupImageGetImage(tabimage, ih, 0); + + tab_image = gtk_image_new(); + + if (pixbuf) + gtk_image_set_from_pixbuf((GtkImage*)tab_image, pixbuf); + } + + iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", "1"); + + if (tabimage && tabtitle) + { + GtkWidget* box; + if (ih->data->orientation == ITABS_VERTICAL) + box = gtk_vbox_new(FALSE, 2); + else + box = gtk_hbox_new(FALSE, 2); + gtk_widget_show(box); + + gtk_container_add((GtkContainer*)box, tab_image); + gtk_container_add((GtkContainer*)box, tab_label); + + gtk_notebook_insert_page((GtkNotebook*)ih->handle, tab_page, box, pos); + gtk_notebook_set_menu_label_text((GtkNotebook*)ih->handle, tab_page, gtk_label_get_text((GtkLabel*)tab_label)); + } + else if (tabimage) + gtk_notebook_insert_page((GtkNotebook*)ih->handle, tab_page, tab_image, pos); + else + gtk_notebook_insert_page((GtkNotebook*)ih->handle, tab_page, tab_label, pos); + + gtk_widget_realize(tab_page); + + iupAttribSetStr(child, "_IUPGTK_TABIMAGE", (char*)tab_image); /* store it even if its NULL */ + iupAttribSetStr(child, "_IUPGTK_TABLABEL", (char*)tab_label); + iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)tab_page); + iupStrToRGB(IupGetAttribute(ih, "BGCOLOR"), &r, &g, &b); + iupgtkBaseSetBgColor(tab_page, r, g, b); + + if (tabtitle) + { + PangoFontDescription* fontdesc = (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih); + gtk_widget_modify_font(tab_label, fontdesc); + iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)tab_label)); + + iupgtkBaseSetBgColor(tab_label, r, g, b); + + iupStrToRGB(IupGetAttribute(ih, "FGCOLOR"), &r, &g, &b); + iupgtkBaseSetFgColor(tab_label, r, g, b); + + gtk_widget_show(tab_label); + gtk_widget_realize(tab_label); + } + + if (tabimage) + { + gtk_widget_show(tab_image); + gtk_widget_realize(tab_image); + } + + iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", NULL); + + if (pos == iupdrvTabsGetCurrentTab(ih)) + IupSetAttribute(child, "VISIBLE", "YES"); + else + IupSetAttribute(child, "VISIBLE", "NO"); + } +} + +static void gtkTabsChildRemovedMethod(Ihandle* ih, Ihandle* child) +{ + if (ih->handle) + { + GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); + if (tab_page) + { + int pos = gtk_notebook_page_num((GtkNotebook*)ih->handle, tab_page); + + iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", "1"); + gtk_notebook_remove_page((GtkNotebook*)ih->handle, pos); + iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", NULL); + + iupAttribSetStr(child, "_IUPGTK_TABIMAGE", NULL); + iupAttribSetStr(child, "_IUPGTK_TABLABEL", NULL); + iupAttribSetStr(child, "_IUPTAB_CONTAINER", NULL); + } + } +} + +static int gtkTabsMapMethod(Ihandle* ih) +{ + ih->handle = gtk_notebook_new(); + if (!ih->handle) + return IUP_ERROR; + + gtk_notebook_set_scrollable((GtkNotebook*)ih->handle, TRUE); + gtk_notebook_popup_enable((GtkNotebook*)ih->handle); + + gtkTabsUpdateTabType(ih); + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + gtk_widget_add_events(ih->handle, GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK); + + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + g_signal_connect(G_OBJECT(ih->handle), "switch-page", G_CALLBACK(gtkTabSwitchPage), ih); + + gtk_widget_realize(ih->handle); + + /* Create pages and tabs */ + if (ih->firstchild) + { + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + gtkTabsChildAddedMethod(ih, child); + } + + return IUP_NOERROR; +} + +void iupdrvTabsInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkTabsMapMethod; + ic->ChildAdded = gtkTabsChildAddedMethod; + ic->ChildRemoved = gtkTabsChildRemovedMethod; + + /* Driver Dependent Attribute functions */ + + /* Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkTabsSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkTabsSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkTabsSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + + /* IupTabs only */ + iupClassRegisterAttribute(ic, "TABTYPE", iupTabsGetTabTypeAttrib, gtkTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABORIENTATION", iupTabsGetTabOrientationAttrib, gtkTabsSetTabOrientationAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TABTITLE", NULL, gtkTabsSetTabTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TABIMAGE", NULL, gtkTabsSetTabImageAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, gtkTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); +} diff --git a/iup/src/gtk/iupgtk_text.c b/iup/src/gtk/iupgtk_text.c new file mode 100755 index 0000000..4c2906a --- /dev/null +++ b/iup/src/gtk/iupgtk_text.c @@ -0,0 +1,1716 @@ +/** \file + * \brief Text Control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_mask.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_image.h" +#include "iup_key.h" +#include "iup_array.h" +#include "iup_text.h" + +#include "iupgtk_drv.h" + +#ifndef PANGO_WEIGHT_SEMIBOLD +#define PANGO_WEIGHT_SEMIBOLD 600 +#endif + +void iupdrvTextAddSpin(int *w, int h) +{ + int spin_size = 16; + *w += spin_size; + (void)h; +} + +void iupdrvTextAddBorders(int *x, int *y) +{ + int border_size = 2*5; + (*x) += border_size; + (*y) += border_size; +} + +static void gtkTextParseParagraphFormat(Ihandle* formattag, GtkTextTag* tag) +{ + int val; + char* format; + + format = iupAttribGet(formattag, "INDENT"); + if (format && iupStrToInt(format, &val)) + g_object_set(G_OBJECT(tag), "indent", val, NULL); + + format = iupAttribGet(formattag, "ALIGNMENT"); + if (format) + { + if (iupStrEqualNoCase(format, "JUSTIFY")) + val = GTK_JUSTIFY_FILL; + else if (iupStrEqualNoCase(format, "RIGHT")) + val = GTK_JUSTIFY_RIGHT; + else if (iupStrEqualNoCase(format, "CENTER")) + val = GTK_JUSTIFY_CENTER; + else /* "LEFT" */ + val = GTK_JUSTIFY_LEFT; + + g_object_set(G_OBJECT(tag), "justification", val, NULL); + } + + format = iupAttribGet(formattag, "TABSARRAY"); + { + PangoTabArray *tabs; + int pos, i = 0; + PangoTabAlign align; + char* str; + + tabs = pango_tab_array_new(32, FALSE); + + while (format) + { + str = iupStrCopyUntil((char**)&format, ' '); + if (!str) break; + pos = atoi(str); + free(str); + + str = iupStrCopyUntil((char**)&format, ' '); + if (!str) break; + +/* if (iupStrEqualNoCase(str, "DECIMAL")) unsupported for now + align = PANGO_TAB_NUMERIC; + else if (iupStrEqualNoCase(str, "RIGHT")) + align = PANGO_TAB_RIGHT; + else if (iupStrEqualNoCase(str, "CENTER")) + align = PANGO_TAB_CENTER; + else */ /* "LEFT" */ + align = PANGO_TAB_LEFT; + free(str); + + pango_tab_array_set_tab(tabs, i, align, IUPGTK_PIXELS2PANGOUNITS(pos)); + i++; + if (i == 32) break; + } + + g_object_set(G_OBJECT(tag), "tabs", tabs, NULL); + pango_tab_array_free(tabs); + } + + format = iupAttribGet(formattag, "SPACEBEFORE"); + if (format && iupStrToInt(format, &val)) + g_object_set(G_OBJECT(tag), "pixels-above-lines", val, NULL); + + format = iupAttribGet(formattag, "SPACEAFTER"); + if (format && iupStrToInt(format, &val)) + g_object_set(G_OBJECT(tag), "pixels-below-lines", val, NULL); + + format = iupAttribGet(formattag, "LINESPACING"); + if (format && iupStrToInt(format, &val)) + g_object_set(G_OBJECT(tag), "pixels-inside-wrap", val, NULL); +} + +static void gtkTextParseCharacterFormat(Ihandle* formattag, GtkTextTag* tag) +{ + int val; + char* format; + + format = iupAttribGet(formattag, "LANGUAGE"); + if (format) + g_object_set(G_OBJECT(tag), "language", format, NULL); + + format = iupAttribGet(formattag, "STRETCH"); + if (format) + { + if (iupStrEqualNoCase(format, "EXTRA_CONDENSED")) + val = PANGO_STRETCH_EXTRA_CONDENSED; + else if (iupStrEqualNoCase(format, "CONDENSED")) + val = PANGO_STRETCH_CONDENSED; + else if (iupStrEqualNoCase(format, "SEMI_CONDENSED")) + val = PANGO_STRETCH_SEMI_CONDENSED; + else if (iupStrEqualNoCase(format, "SEMI_EXPANDED")) + val = PANGO_STRETCH_SEMI_EXPANDED; + else if (iupStrEqualNoCase(format, "EXPANDED")) + val = PANGO_STRETCH_EXPANDED; + else if (iupStrEqualNoCase(format, "EXTRA_EXPANDED")) + val = PANGO_STRETCH_EXTRA_EXPANDED; + else /* "NORMAL" */ + val = PANGO_STRETCH_NORMAL; + + g_object_set(G_OBJECT(tag), "stretch", val, NULL); + } + + format = iupAttribGet(formattag, "RISE"); + if (format) + { + val = 0; + + if (iupStrEqualNoCase(format, "SUPERSCRIPT")) + { + g_object_set(G_OBJECT(tag), "scale", PANGO_SCALE_X_SMALL, NULL); + val = 10; /* 10 pixels up */ + } + else if (iupStrEqualNoCase(format, "SUBSCRIPT")) + { + g_object_set(G_OBJECT(tag), "scale", PANGO_SCALE_X_SMALL, NULL); + val = -10; /* 10 pixels down */ + } + else + iupStrToInt(format, &val); + + val = IUPGTK_PIXELS2PANGOUNITS(val); + g_object_set(G_OBJECT(tag), "rise", val, NULL); + } + + format = iupAttribGet(formattag, "SMALLCAPS"); + if (format) + { + if (iupStrBoolean(format)) + val = PANGO_VARIANT_SMALL_CAPS; + else + val = PANGO_VARIANT_NORMAL; + g_object_set(G_OBJECT(tag), "variant", val, NULL); + } + + format = iupAttribGet(formattag, "ITALIC"); + if (format) + { + if (iupStrBoolean(format)) + val = PANGO_STYLE_ITALIC; + else + val = PANGO_STYLE_NORMAL; + g_object_set(G_OBJECT(tag), "style", val, NULL); + } + + format = iupAttribGet(formattag, "STRIKEOUT"); + if (format) + { + val = iupStrBoolean(format); + g_object_set(G_OBJECT(tag), "strikethrough", val, NULL); + } + + format = iupAttribGet(formattag, "PROTECTED"); + if (format) + { + val = iupStrBoolean(format); + g_object_set(G_OBJECT(tag), "editable", val, NULL); + } + + format = iupAttribGet(formattag, "FONTSIZE"); + if (format && iupStrToInt(format, &val)) + { + if (val < 0) /* in pixels */ + { + val = IUPGTK_PIXELS2PANGOUNITS(-val); + g_object_set(G_OBJECT(tag), "size", val, NULL); + } + else /* in points */ + g_object_set(G_OBJECT(tag), "size-points", (double)val, NULL); + } + + format = iupAttribGet(formattag, "FONTSCALE"); + if (format) + { + float fval = 0; + if (iupStrEqualNoCase(format, "XX-SMALL")) + fval = (float)PANGO_SCALE_XX_SMALL; + else if (iupStrEqualNoCase(format, "X-SMALL")) + fval = (float)PANGO_SCALE_X_SMALL; + else if (iupStrEqualNoCase(format, "SMALL")) + fval = (float)PANGO_SCALE_SMALL; + else if (iupStrEqualNoCase(format, "MEDIUM")) + fval = (float)PANGO_SCALE_MEDIUM; + else if (iupStrEqualNoCase(format, "LARGE")) + fval = (float)PANGO_SCALE_LARGE; + else if (iupStrEqualNoCase(format, "X-LARGE")) + fval = (float)PANGO_SCALE_X_LARGE; + else if (iupStrEqualNoCase(format, "XX-LARGE")) + fval = (float)PANGO_SCALE_XX_LARGE; + else + iupStrToFloat(format, &fval); + + if (fval > 0) + g_object_set(G_OBJECT(tag), "scale", (double)fval, NULL); + } + + format = iupAttribGet(formattag, "FONTFACE"); + if (format) + g_object_set(G_OBJECT(tag), "family", format, NULL); + + format = iupAttribGet(formattag, "FGCOLOR"); + if (format) + { + unsigned char r, g, b; + if (iupStrToRGB(format, &r, &g, &b)) + { + GdkColor color; + iupgdkColorSet(&color, r, g, b); + g_object_set(G_OBJECT(tag), "foreground-gdk", &color, NULL); + } + } + + format = iupAttribGet(formattag, "BGCOLOR"); + if (format) + { + unsigned char r, g, b; + if (iupStrToRGB(format, &r, &g, &b)) + { + GdkColor color; + iupgdkColorSet(&color, r, g, b); + g_object_set(G_OBJECT(tag), "background-gdk", &color, NULL); + } + } + + format = iupAttribGet(formattag, "UNDERLINE"); + if (format) + { + if (iupStrEqualNoCase(format, "SINGLE")) + val = PANGO_UNDERLINE_SINGLE; + else if (iupStrEqualNoCase(format, "DOUBLE")) + val = PANGO_UNDERLINE_DOUBLE; + else /* "NONE" */ + val = PANGO_UNDERLINE_NONE; + + g_object_set(G_OBJECT(tag), "underline", val, NULL); + } + + format = iupAttribGet(formattag, "WEIGHT"); + if (format) + { + if (iupStrEqualNoCase(format, "EXTRALIGHT")) + val = PANGO_WEIGHT_ULTRALIGHT; + else if (iupStrEqualNoCase(format, "LIGHT")) + val = PANGO_WEIGHT_LIGHT; + else if (iupStrEqualNoCase(format, "SEMIBOLD")) + val = PANGO_WEIGHT_SEMIBOLD; + else if (iupStrEqualNoCase(format, "BOLD")) + val = PANGO_WEIGHT_BOLD; + else if (iupStrEqualNoCase(format, "EXTRABOLD")) + val = PANGO_WEIGHT_ULTRABOLD; + else if (iupStrEqualNoCase(format, "HEAVY")) + val = PANGO_WEIGHT_HEAVY; + else /* "NORMAL" */ + val = PANGO_WEIGHT_NORMAL; + + g_object_set(G_OBJECT(tag), "weight", val, NULL); + } +} + +static void gtkTextMoveIterToLinCol(GtkTextBuffer *buffer, GtkTextIter *iter, int lin, int col) +{ + int line_count, line_length; + + lin--; /* IUP starts at 1 */ + col--; + + line_count = gtk_text_buffer_get_line_count(buffer); + if (lin < 0) lin = 0; + if (lin >= line_count) + lin = line_count-1; + + gtk_text_buffer_get_iter_at_line(buffer, iter, lin); + line_length = gtk_text_iter_get_chars_in_line(iter); + + if (col < 0) col = 0; + if (col > line_length) + col = line_length; /* after the last character */ + + gtk_text_iter_set_line_offset(iter, col); +} + +static void gtkTextGetLinColFromPosition(const GtkTextIter *iter, int *lin, int *col) +{ + *lin = gtk_text_iter_get_line(iter); + *col = gtk_text_iter_get_line_offset(iter); + + (*lin)++; /* IUP starts at 1 */ + (*col)++; +} + +static int gtkTextGetCharSize(Ihandle* ih) +{ + int charwidth; + PangoFontMetrics* metrics; + PangoContext* context; + PangoFontDescription* fontdesc = (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih); + if (!fontdesc) + return 0; + + context = gdk_pango_context_get(); + metrics = pango_context_get_metrics(context, fontdesc, pango_context_get_language(context)); + charwidth = pango_font_metrics_get_approximate_char_width(metrics); + pango_font_metrics_unref(metrics); + return charwidth; +} + +void iupdrvTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos) +{ + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtkTextMoveIterToLinCol(buffer, &iter, lin, col); + *pos = gtk_text_iter_get_offset(&iter); +} + +void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col) +{ + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos); + gtkTextGetLinColFromPosition(&iter, lin, col); +} + +static int gtkTextConvertXYToPos(Ihandle* ih, int x, int y) +{ + if (ih->data->is_multiline) + { + GtkTextIter iter; + gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(ih->handle), GTK_TEXT_WINDOW_WIDGET, x, y, &x, &y); + gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(ih->handle), &iter, x, y); + return gtk_text_iter_get_offset(&iter); + } + else + { + int trailing, off_x, off_y, pos; + + /* transform to Layout coordinates */ + gtk_entry_get_layout_offsets(GTK_ENTRY(ih->handle), &off_x, &off_y); + x = IUPGTK_PIXELS2PANGOUNITS(x - off_x); + y = IUPGTK_PIXELS2PANGOUNITS(y - off_y); + + pango_layout_xy_to_index(gtk_entry_get_layout(GTK_ENTRY(ih->handle)), x, y, &pos, &trailing); + return pos; + } +} + +static void gtkTextScrollToVisible(Ihandle* ih) +{ + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + GtkTextMark* mark = gtk_text_buffer_get_insert(buffer); + gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(ih->handle), mark); +} + + +/*******************************************************************************************/ + + +static int gtkTextSetSelectionAttrib(Ihandle* ih, const char* value) +{ + if (!value) + return 0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + if (ih->data->is_multiline) + { + GtkTextIter start_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_start_iter(buffer, &start_iter); + gtk_text_buffer_select_range(buffer, &start_iter, &start_iter); + } + else + gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, 0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + if (ih->data->is_multiline) + { + GtkTextIter start_iter; + GtkTextIter end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_start_iter(buffer, &start_iter); + gtk_text_buffer_get_end_iter(buffer, &end_iter); + gtk_text_buffer_select_range(buffer, &start_iter, &end_iter); + } + else + gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, -1); + return 0; + } + + if (ih->data->is_multiline) + { + int lin_start=1, col_start=1, lin_end=1, col_end=1; + GtkTextIter start_iter, end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + + if (sscanf(value, "%d,%d:%d,%d", &lin_start, &col_start, &lin_end, &col_end)!=4) return 0; + if (lin_start<1 || col_start<1 || lin_end<1 || col_end<1) return 0; + + gtkTextMoveIterToLinCol(buffer, &start_iter, lin_start, col_start); + gtkTextMoveIterToLinCol(buffer, &end_iter, lin_end, col_end); + + gtk_text_buffer_select_range(buffer, &start_iter, &end_iter); + } + else + { + int start=1, end=1; + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<1 || end<1) + return 0; + + start--; /* IUP starts at 1 */ + end--; + + gtk_editable_select_region(GTK_EDITABLE(ih->handle), start, end); + } + + return 0; +} + +static char* gtkTextGetSelectionAttrib(Ihandle* ih) +{ + char *str; + + if (ih->data->is_multiline) + { + int start_col, start_lin, end_col, end_lin; + + GtkTextIter start_iter, end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter)) + { + gtkTextGetLinColFromPosition(&start_iter, &start_lin, &start_col); + gtkTextGetLinColFromPosition(&end_iter, &end_lin, &end_col); + + str = iupStrGetMemory(100); + sprintf(str,"%d,%d:%d,%d", start_lin, start_col, end_lin, end_col); + return str; + } + } + else + { + int start, end; + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end)) + { + start++; /* IUP starts at 1 */ + end++; + str = iupStrGetMemory(100); + sprintf(str, "%d:%d", (int)start, (int)end); + return str; + } + } + + return NULL; +} + +static int gtkTextSetSelectionPosAttrib(Ihandle* ih, const char* value) +{ + int start=0, end=0; + + if (!value) + return 0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + if (ih->data->is_multiline) + { + GtkTextIter start_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_start_iter(buffer, &start_iter); + gtk_text_buffer_select_range(buffer, &start_iter, &start_iter); + } + else + gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, 0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + if (ih->data->is_multiline) + { + GtkTextIter start_iter; + GtkTextIter end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_start_iter(buffer, &start_iter); + gtk_text_buffer_get_end_iter(buffer, &end_iter); + gtk_text_buffer_select_range(buffer, &start_iter, &end_iter); + } + else + gtk_editable_select_region(GTK_EDITABLE(ih->handle), 0, -1); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<0 || end<0) + return 0; + + if (ih->data->is_multiline) + { + GtkTextIter start_iter, end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + + gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, start); + gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, end); + + gtk_text_buffer_select_range(buffer, &start_iter, &end_iter); + } + else + gtk_editable_select_region(GTK_EDITABLE(ih->handle), start, end); + + return 0; +} + +static char* gtkTextGetSelectionPosAttrib(Ihandle* ih) +{ + int start, end; + char *str; + + if (ih->data->is_multiline) + { + GtkTextIter start_iter, end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter)) + { + start = gtk_text_iter_get_offset(&start_iter); + end = gtk_text_iter_get_offset(&end_iter); + + str = iupStrGetMemory(100); + sprintf(str, "%d:%d", (int)start, (int)end); + return str; + } + } + else + { + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end)) + { + str = iupStrGetMemory(100); + sprintf(str, "%d:%d", (int)start, (int)end); + return str; + } + } + + return NULL; +} + +static int gtkTextSetSelectedTextAttrib(Ihandle* ih, const char* value) +{ + if (!value) + return 0; + + if (ih->data->is_multiline) + { + GtkTextIter start_iter, end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter)) + { + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + gtk_text_buffer_delete(buffer, &start_iter, &end_iter); + gtk_text_buffer_insert(buffer, &start_iter, iupgtkStrConvertToUTF8(value), -1); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + } + } + else + { + int start, end; + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end)) + { + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + gtk_editable_delete_selection(GTK_EDITABLE(ih->handle)); + gtk_editable_insert_text(GTK_EDITABLE(ih->handle), iupgtkStrConvertToUTF8(value), -1, &start); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + } + } + + return 0; +} + +static char* gtkTextGetSelectedTextAttrib(Ihandle* ih) +{ + if (ih->data->is_multiline) + { + GtkTextIter start_iter, end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter)) + return iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, TRUE))); + } + else + { + int start, end; + if (gtk_editable_get_selection_bounds(GTK_EDITABLE(ih->handle), &start, &end)) + { + char* selectedtext = gtk_editable_get_chars(GTK_EDITABLE(ih->handle), start, end); + char* str = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(selectedtext)); + g_free(selectedtext); + return str; + } + } + + return NULL; +} + +static int gtkTextSetCaretAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + + if (!value) + return 0; + + if (ih->data->is_multiline) + { + int lin = 1, col = 1; + GtkTextIter iter; + + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + + iupStrToIntInt(value, &lin, &col, ','); + + gtkTextMoveIterToLinCol(buffer, &iter, lin, col); + + gtk_text_buffer_place_cursor(buffer, &iter); + gtkTextScrollToVisible(ih); + } + else + { + sscanf(value,"%i",&pos); + pos--; /* IUP starts at 1 */ + if (pos < 0) pos = 0; + + gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos); + } + + return 0; +} + +static char* gtkTextGetCaretAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(50); + + if (ih->data->is_multiline) + { + int col, lin; + GtkTextIter iter; + + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer)); + gtkTextGetLinColFromPosition(&iter, &lin, &col); + + sprintf(str, "%d,%d", lin, col); + } + else + { + int pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle)); + pos++; /* IUP starts at 1 */ + sprintf(str, "%d", (int)pos); + } + + return str; +} + +static int gtkTextSetCaretPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + if (ih->data->is_multiline) + { + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos); + gtk_text_buffer_place_cursor(buffer, &iter); + gtkTextScrollToVisible(ih); + } + else + gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos); + + return 0; +} + +static char* gtkTextGetCaretPosAttrib(Ihandle* ih) +{ + int pos; + char* str = iupStrGetMemory(50); + + if (ih->data->is_multiline) + { + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer)); + pos = gtk_text_iter_get_offset(&iter); + } + else + pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle)); + + sprintf(str, "%d", (int)pos); + return str; +} + +static int gtkTextSetScrollToAttrib(Ihandle* ih, const char* value) +{ + if (!value) + return 0; + + if (ih->data->is_multiline) + { + int lin = 1, col = 1; + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + + iupStrToIntInt(value, &lin, &col, ','); + if (lin < 1) lin = 1; + if (col < 1) col = 1; + + gtkTextMoveIterToLinCol(buffer, &iter, lin, col); + gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(ih->handle), &iter, 0, FALSE, 0, 0); + } + else + { + int pos = 1; + sscanf(value,"%i",&pos); + if (pos < 1) pos = 1; + pos--; /* return to GTK referece */ + gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos); + } + + return 0; +} + +static int gtkTextSetScrollToPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + if (ih->data->is_multiline) + { + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos); + gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(ih->handle), &iter, 0, FALSE, 0, 0); + } + else + gtk_editable_set_position(GTK_EDITABLE(ih->handle), pos); + + return 0; +} + +static int gtkTextSetValueAttrib(Ihandle* ih, const char* value) +{ + if (!value) value = ""; + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + if (ih->data->is_multiline) + { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_set_text(buffer, iupgtkStrConvertToUTF8(value), -1); + } + else + gtk_entry_set_text(GTK_ENTRY(ih->handle), iupgtkStrConvertToUTF8(value)); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + return 0; +} + +static char* gtkTextGetValueAttrib(Ihandle* ih) +{ + char* value; + + if (ih->data->is_multiline) + { + GtkTextIter start_iter; + GtkTextIter end_iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_start_iter(buffer, &start_iter); + gtk_text_buffer_get_end_iter(buffer, &end_iter); + value = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, TRUE))); + } + else + value = iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(gtk_entry_get_text(GTK_ENTRY(ih->handle)))); + + if (!value) value = ""; + + return value; +} + +static int gtkTextSetInsertAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if (!value) + return 0; + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + if (ih->data->is_multiline) + { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_insert_at_cursor(buffer, iupgtkStrConvertToUTF8(value), -1); + } + else + { + gint pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle)); + gtk_editable_insert_text(GTK_EDITABLE(ih->handle), iupgtkStrConvertToUTF8(value), -1, &pos); + } + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + + return 0; +} + +static int gtkTextSetAppendAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + if (ih->data->is_multiline) + { + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_end_iter(buffer, &iter); + if (ih->data->append_newline) + gtk_text_buffer_insert(buffer, &iter, "\n", 1); + gtk_text_buffer_insert(buffer, &iter, iupgtkStrConvertToUTF8(value), -1); + } + else + { + gint pos = strlen(gtk_entry_get_text(GTK_ENTRY(ih->handle)))+1; + gtk_editable_insert_text(GTK_EDITABLE(ih->handle), iupgtkStrConvertToUTF8(value), -1, &pos); + } + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + return 0; +} + +static int gtkTextSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + float xalign; + GtkJustification justification; + + if (iupStrEqualNoCase(value, "ARIGHT")) + { + xalign = 1.0f; + justification = GTK_JUSTIFY_RIGHT; + } + else if (iupStrEqualNoCase(value, "ACENTER")) + { + xalign = 0.5f; + justification = GTK_JUSTIFY_CENTER; + } + else /* "ALEFT" */ + { + xalign = 0; + justification = GTK_JUSTIFY_LEFT; + } + + if (ih->data->is_multiline) + gtk_text_view_set_justification(GTK_TEXT_VIEW(ih->handle), justification); + else + gtk_entry_set_alignment(GTK_ENTRY(ih->handle), xalign); + + return 1; +} + +static int gtkTextSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle) + { + if (ih->data->is_multiline) + { + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(ih->handle), ih->data->horiz_padding); + gtk_text_view_set_right_margin(GTK_TEXT_VIEW(ih->handle), ih->data->horiz_padding); + ih->data->vert_padding = 0; + } + else + { +#if GTK_CHECK_VERSION(2, 10, 0) + GtkBorder border; + border.bottom = border.top = ih->data->vert_padding; + border.left = border.right = ih->data->horiz_padding; + gtk_entry_set_inner_border(GTK_ENTRY(ih->handle), &border); +#endif + } + } + return 0; +} + +static int gtkTextSetNCAttrib(Ihandle* ih, const char* value) +{ + if (!iupStrToInt(value, &ih->data->nc)) + ih->data->nc = INT_MAX; + + if (!ih->data->is_multiline && ih->handle) + gtk_entry_set_max_length(GTK_ENTRY(ih->handle), ih->data->nc); + + return 0; +} + +static int gtkTextSetClipboardAttrib(Ihandle *ih, const char *value) +{ + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + if (iupStrEqualNoCase(value, "COPY")) + { + if (ih->data->is_multiline) + { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE)); + gtk_text_buffer_copy_clipboard(buffer, clipboard); + } + else + gtk_editable_copy_clipboard(GTK_EDITABLE(ih->handle)); + } + else if (iupStrEqualNoCase(value, "CUT")) + { + if (ih->data->is_multiline) + { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE)); + gtk_text_buffer_cut_clipboard(buffer, clipboard, TRUE); + } + else + gtk_editable_cut_clipboard(GTK_EDITABLE(ih->handle)); + } + else if (iupStrEqualNoCase(value, "PASTE")) + { + if (ih->data->is_multiline) + { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + GtkClipboard *clipboard = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE)); + gtk_text_buffer_paste_clipboard(buffer, clipboard, NULL, TRUE); + } + else + gtk_editable_paste_clipboard(GTK_EDITABLE(ih->handle)); + } + else if (iupStrEqualNoCase(value, "CLEAR")) + { + if (ih->data->is_multiline) + { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_delete_selection(buffer, FALSE, TRUE); + } + else + gtk_editable_delete_selection(GTK_EDITABLE(ih->handle)); + } + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + return 0; +} + +static int gtkTextSetReadOnlyAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_multiline) + gtk_text_view_set_editable(GTK_TEXT_VIEW(ih->handle), !iupStrBoolean(value)); + else + gtk_editable_set_editable(GTK_EDITABLE(ih->handle), !iupStrBoolean(value)); + return 0; +} + +static char* gtkTextGetReadOnlyAttrib(Ihandle* ih) +{ + int editable; + if (ih->data->is_multiline) + editable = gtk_text_view_get_editable(GTK_TEXT_VIEW(ih->handle)); + else + editable = gtk_editable_get_editable(GTK_EDITABLE(ih->handle)); + if (!editable) + return "YES"; + else + return "NO"; +} + +static char* gtkTextGetPangoLayoutAttrib(Ihandle* ih) +{ + if (ih->data->is_multiline) + return NULL; + else + return (char*)gtk_entry_get_layout(GTK_ENTRY(ih->handle)); +} + +static int gtkTextSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_multiline) + { + GtkScrolledWindow* scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + unsigned char r, g, b; + + /* ignore given value, must use only from parent for the scrollbars */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + if (iupStrToRGB(parent_value, &r, &g, &b)) + { + GtkWidget* sb; + + iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b); + +#if GTK_CHECK_VERSION(2, 8, 0) + sb = gtk_scrolled_window_get_hscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); + + sb = gtk_scrolled_window_get_vscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); +#endif + } + } + + return iupdrvBaseSetBgColorAttrib(ih, value); +} + +static int gtkTextSetTabSizeAttrib(Ihandle* ih, const char* value) +{ + PangoTabArray *tabs; + int tabsize, charwidth; + if (!ih->data->is_multiline) + return 0; + + iupStrToInt(value, &tabsize); + charwidth = gtkTextGetCharSize(ih); + tabsize *= charwidth; + tabs = pango_tab_array_new_with_positions(1, FALSE, PANGO_TAB_LEFT, tabsize); + gtk_text_view_set_tabs(GTK_TEXT_VIEW(ih->handle), tabs); + pango_tab_array_free(tabs); + return 1; +} + +static int gtkTextSetOverwriteAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->is_multiline) + return 0; + gtk_text_view_set_overwrite(GTK_TEXT_VIEW(ih->handle), iupStrBoolean(value)); + return 0; +} + +static char* gtkTextGetOverwriteAttrib(Ihandle* ih) +{ + if (!ih->data->is_multiline) + return "NO"; + if (gtk_text_view_get_overwrite(GTK_TEXT_VIEW(ih->handle))) + return "YES"; + else + return "NO"; +} + +void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag) +{ + GtkTextBuffer *buffer; + GtkTextIter start_iter, end_iter; + GtkTextTag* tag; + char *selection; + + if (!ih->data->is_multiline) + return; + + selection = iupAttribGet(formattag, "SELECTION"); + if (selection) + { + /* simulate Windows behavior and change the current selection */ + gtkTextSetSelectionAttrib(ih, selection); + iupAttribSetStr(ih, "SELECTION", NULL); + } + else + { + char* selectionpos = iupAttribGet(formattag, "SELECTIONPOS"); + if (selectionpos) + { + /* simulate Windows behavior and change the current selection */ + gtkTextSetSelectionPosAttrib(ih, selectionpos); + iupAttribSetStr(ih, "SELECTIONPOS", NULL); + } + } + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + if (!gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter)) + { + GtkTextMark* mark = gtk_text_buffer_get_insert(buffer); + gtk_text_buffer_get_iter_at_mark(buffer, &start_iter, mark); + gtk_text_buffer_get_iter_at_mark(buffer, &end_iter, mark); + } + + tag = gtk_text_buffer_create_tag(buffer, NULL, NULL); + gtkTextParseParagraphFormat(formattag, tag); + gtkTextParseCharacterFormat(formattag, tag); + gtk_text_buffer_apply_tag(buffer, tag, &start_iter, &end_iter); + + /* reset the selection */ + gtkTextSetSelectionAttrib(ih, NULL); +} + +static int gtkTextSetRemoveFormattingAttrib(Ihandle* ih, const char* value) +{ + GtkTextBuffer *buffer; + GtkTextIter start_iter, end_iter; + + if (!ih->data->is_multiline) + return 0; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + if (gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter)) + gtk_text_buffer_remove_all_tags(buffer, &start_iter, &end_iter); + + (void)value; + return 0; +} + + +/************************************************************************************************/ + +static gboolean gtkTextSpinOutput(GtkSpinButton *spin, Ihandle* ih) +{ + if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO")) + { + iupAttribSetInt(ih, "_IUPGTK_SPIN_VALUE", (int)spin->adjustment->value); + return TRUE; /* disable output update */ + } + else + { + iupAttribSetStr(ih, "_IUPGTK_SPIN_OLDVALUE", gtk_entry_get_text(GTK_ENTRY(ih->handle))); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + return FALSE; + } +} + +static gint gtkTextSpinInput(GtkSpinButton *spin, gdouble *val, Ihandle* ih) +{ + (void)spin; + *val = (double)iupAttribGetInt(ih, "_IUPGTK_SPIN_VALUE"); + /* called only when SPINAUTO=NO */ + return TRUE; /* disable input update */ +} + +static void gtkTextSpinValueChanged(GtkSpinButton* spin, Ihandle* ih) +{ + IFni cb; + + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + + cb = (IFni)IupGetCallback(ih, "SPIN_CB"); + if (cb) + { + int pos, ret; + if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO")) + pos = iupAttribGetInt(ih, "_IUPGTK_SPIN_VALUE"); + else + pos = gtk_spin_button_get_value_as_int((GtkSpinButton*)ih->handle); + + ret = cb(ih, pos); + if (ret == IUP_IGNORE) + { + /* this is not working: g_signal_stop_emission_by_name(spin, "value_changed"); */ + } + } + + (void)spin; +} + +static int gtkTextSetSpinMinAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_SPIN_BUTTON(ih->handle)) + { + int min; + if (iupStrToInt(value, &min)) + { + int max = iupAttribGetInt(ih, "SPINMAX"); + + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih); + + gtk_spin_button_set_range((GtkSpinButton*)ih->handle, (double)min, (double)max); + + g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + } + } + return 1; +} + +static int gtkTextSetSpinMaxAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_SPIN_BUTTON(ih->handle)) + { + int max; + if (iupStrToInt(value, &max)) + { + int min = iupAttribGetInt(ih, "SPINMIN"); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih); + + gtk_spin_button_set_range((GtkSpinButton*)ih->handle, (double)min, (double)max); + + g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + } + } + return 1; +} + +static int gtkTextSetSpinIncAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_SPIN_BUTTON(ih->handle)) + { + int inc; + if (iupStrToInt(value, &inc)) + gtk_spin_button_set_increments((GtkSpinButton*)ih->handle, (double)inc, (double)(inc*10)); + } + return 1; +} + +static int gtkTextSetSpinValueAttrib(Ihandle* ih, const char* value) +{ + if (GTK_IS_SPIN_BUTTON(ih->handle)) + { + int pos; + if (iupStrToInt(value, &pos)) + { + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + g_signal_handlers_block_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih); + + gtk_spin_button_set_value((GtkSpinButton*)ih->handle, (double)pos); + + g_signal_handlers_unblock_by_func(G_OBJECT(ih->handle), G_CALLBACK(gtkTextSpinValueChanged), ih); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + + if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO")) + iupAttribSetInt(ih, "_IUPGTK_SPIN_VALUE", pos); + } + } + return 1; +} + +static char* gtkTextGetSpinValueAttrib(Ihandle* ih) +{ + if (GTK_IS_SPIN_BUTTON(ih->handle)) + { + int pos; + char *str = iupStrGetMemory(50); + + if (iupAttribGet(ih, "_IUPGTK_SPIN_NOAUTO")) + pos = iupAttribGetInt(ih, "_IUPGTK_SPIN_VALUE"); + else + pos = gtk_spin_button_get_value_as_int((GtkSpinButton*)ih->handle); + + sprintf(str, "%d", pos); + return str; + } + return NULL; +} + + +/**********************************************************************************************************/ + + +static void gtkTextMoveCursor(GtkWidget *w, GtkMovementStep step, gint count, gboolean extend_selection, Ihandle* ih) +{ + int col, lin, pos; + + IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB"); + if (!cb) return; + + if (ih->data->is_multiline) + { + GtkTextIter iter; + + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer)); + gtkTextGetLinColFromPosition(&iter, &lin, &col); + pos = gtk_text_iter_get_offset(&iter); + } + else + { + pos = gtk_editable_get_position(GTK_EDITABLE(ih->handle)); + col = pos; + col++; /* IUP starts at 1 */ + lin = 1; + } + + if (pos != ih->data->last_caret_pos) + { + ih->data->last_caret_pos = pos; + + cb(ih, lin, col, pos); + } + + (void)w; + (void)step; + (void)count; + (void)extend_selection; +} + +static gboolean gtkTextKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + gtkTextMoveCursor(NULL, 0, 0, 0, ih); + (void)widget; + (void)evt; + return FALSE; +} + +static gboolean gtkTextButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih) +{ + gtkTextMoveCursor(NULL, 0, 0, 0, ih); + return iupgtkButtonEvent(widget, evt, ih); +} + +static int gtkTextCallActionCb(Ihandle* ih, const char* insert_value, int len, int start, int end) +{ + char *new_value, *value; + int ret = -1, key = 0; + + IFnis cb = (IFnis)IupGetCallback(ih, "ACTION"); + if (!cb && !ih->data->mask) + return -1; /* continue */ + + value = gtkTextGetValueAttrib(ih); /* new_value is the internal buffer */ + + if (!insert_value) + { + new_value = iupStrDup(value); + if (end<0) end = strlen(value)+1; + iupStrRemove(new_value, start, end, 1); + } + else + { + if (value[0]==0) + new_value = iupStrDup(insert_value); + else + { + if (len < end-start) + { + new_value = iupStrDup(value); + new_value = iupStrInsert(new_value, insert_value, start, end); + } + else + new_value = iupStrInsert(value, insert_value, start, end); + } + } + + if (insert_value && insert_value[0]!=0 && insert_value[1]==0) + key = insert_value[0]; + + if (!new_value) + return -1; /* continue */ + + if (ih->data->nc && (int)strlen(new_value) > ih->data->nc) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (cb) + { + int cb_ret = cb(ih, key, (char*)new_value); + if (cb_ret==IUP_IGNORE) + ret = 0; /* abort */ + else if (cb_ret==IUP_CLOSE) + { + IupExitLoop(); + ret = 0; /* abort */ + } + else if (cb_ret!=0 && key!=0 && + cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE) + ret = cb_ret; /* abort and replace */ + } + + if (new_value != value) free(new_value); + return ret; /* continue */ +} + +static void gtkTextEntryDeleteText(GtkEditable *editable, int start, int end, Ihandle* ih) +{ + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + if (gtkTextCallActionCb(ih, NULL, 0, start, end)==0) + g_signal_stop_emission_by_name (editable, "delete_text"); +} + +static void gtkTextEntryInsertText(GtkEditable *editable, char *insert_value, int len, int *pos, Ihandle* ih) +{ + int ret; + + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + ret = gtkTextCallActionCb(ih, iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(insert_value)), len, *pos, *pos); + if (ret == 0) + g_signal_stop_emission_by_name(editable, "insert_text"); + else if (ret != -1) + { + insert_value[0] = (char)ret; /* replace key */ + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + gtk_editable_insert_text(editable, insert_value, 1, pos); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + + g_signal_stop_emission_by_name(editable, "insert_text"); + } +} + +static void gtkTextBufferDeleteRange(GtkTextBuffer *textbuffer, GtkTextIter *start_iter, GtkTextIter *end_iter, Ihandle* ih) +{ + int start, end; + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + start = gtk_text_iter_get_offset(start_iter); + end = gtk_text_iter_get_offset(end_iter); + + if (gtkTextCallActionCb(ih, NULL, 0, start, end)==0) + g_signal_stop_emission_by_name (textbuffer, "delete_range"); +} + +static void gtkTextBufferInsertText(GtkTextBuffer *textbuffer, GtkTextIter *pos_iter, gchar *insert_value, gint len, Ihandle* ih) +{ + int ret, pos; + + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + pos = gtk_text_iter_get_offset(pos_iter); + + ret = gtkTextCallActionCb(ih, iupStrGetMemoryCopy(iupgtkStrConvertFromUTF8(insert_value)), len, pos, pos); + if (ret == 0) + g_signal_stop_emission_by_name(textbuffer, "insert_text"); + else if (ret != -1) + { + insert_value[0] = (char)ret; /* replace key */ + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); + gtk_text_buffer_insert(textbuffer, pos_iter, insert_value, 1); + iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); + + g_signal_stop_emission_by_name(textbuffer, "insert_text"); + } +} + +static void gtkTextChanged(void* dummy, Ihandle* ih) +{ + if (iupAttribGet(ih, "_IUPGTK_DISABLE_TEXT_CB")) + return; + + iupBaseCallValueChangedCb(ih); + (void)dummy; +} + +/**********************************************************************************************************/ + + +static int gtkTextMapMethod(Ihandle* ih) +{ + GtkScrolledWindow* scrolled_window = NULL; + + if (ih->data->is_multiline) + { + GtkPolicyType hscrollbar_policy, vscrollbar_policy; + int wordwrap = 0; + + ih->handle = gtk_text_view_new(); + if (!ih->handle) + return IUP_ERROR; + + scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL); + if (!scrolled_window) + return IUP_ERROR; + + gtk_container_add((GtkContainer*)scrolled_window, ih->handle); + gtk_widget_show((GtkWidget*)scrolled_window); + + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window); + + /* formatting is always supported when MULTILINE=YES */ + ih->data->has_formatting = 1; + + if (iupAttribGetBoolean(ih, "WORDWRAP")) + { + wordwrap = 1; + ih->data->sb &= ~IUP_SB_HORIZ; /* must remove the horizontal scroolbar */ + } + + if (iupAttribGetBoolean(ih, "BORDER")) + gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN); + else + gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_NONE); + + if (ih->data->sb & IUP_SB_HORIZ) + { + if (iupAttribGetBoolean(ih, "AUTOHIDE")) + hscrollbar_policy = GTK_POLICY_AUTOMATIC; + else + hscrollbar_policy = GTK_POLICY_ALWAYS; + } + else + hscrollbar_policy = GTK_POLICY_NEVER; + + if (ih->data->sb & IUP_SB_VERT) + { + if (iupAttribGetBoolean(ih, "AUTOHIDE")) + vscrollbar_policy = GTK_POLICY_AUTOMATIC; + else + vscrollbar_policy = GTK_POLICY_ALWAYS; + } + else + vscrollbar_policy = GTK_POLICY_NEVER; + + gtk_scrolled_window_set_policy(scrolled_window, hscrollbar_policy, vscrollbar_policy); + + if (wordwrap) + gtk_text_view_set_wrap_mode((GtkTextView*)ih->handle, GTK_WRAP_WORD); + + gtk_widget_add_events(ih->handle, GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK); + } + else + { + if (iupAttribGetBoolean(ih, "SPIN")) + ih->handle = gtk_spin_button_new_with_range(0, 100, 1); + else + ih->handle = gtk_entry_new(); + + if (!ih->handle) + return IUP_ERROR; + + /* formatting is never supported when MULTILINE=NO */ + ih->data->has_formatting = 0; + + gtk_entry_set_has_frame((GtkEntry*)ih->handle, IupGetInt(ih, "BORDER")); + + if (iupAttribGetBoolean(ih, "PASSWORD")) + gtk_entry_set_visibility((GtkEntry*)ih->handle, FALSE); + + if (GTK_IS_SPIN_BUTTON(ih->handle)) + { + gtk_spin_button_set_numeric((GtkSpinButton*)ih->handle, FALSE); + gtk_spin_button_set_digits((GtkSpinButton*)ih->handle, 0); + + gtk_spin_button_set_wrap((GtkSpinButton*)ih->handle, iupAttribGetBoolean(ih, "SPINWRAP")); + + g_signal_connect(G_OBJECT(ih->handle), "value-changed", G_CALLBACK(gtkTextSpinValueChanged), ih); + g_signal_connect(G_OBJECT(ih->handle), "output", G_CALLBACK(gtkTextSpinOutput), ih); + + if (!iupAttribGetBoolean(ih, "SPINAUTO")) + { + g_signal_connect(G_OBJECT(ih->handle), "input", G_CALLBACK(gtkTextSpinInput), ih); + iupAttribSetStr(ih, "_IUPGTK_SPIN_NOAUTO", "1"); + } + } + } + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + g_signal_connect_after(G_OBJECT(ih->handle), "move-cursor", G_CALLBACK(gtkTextMoveCursor), ih); /* only report some caret movements */ + g_signal_connect_after(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(gtkTextKeyReleaseEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkTextButtonEvent), ih); /* if connected "after" then it is ignored */ + g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkTextButtonEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih); + + if (ih->data->is_multiline) + { + GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ih->handle)); + g_signal_connect(G_OBJECT(buffer), "delete-range", G_CALLBACK(gtkTextBufferDeleteRange), ih); + g_signal_connect(G_OBJECT(buffer), "insert-text", G_CALLBACK(gtkTextBufferInsertText), ih); + g_signal_connect(G_OBJECT(buffer), "changed", G_CALLBACK(gtkTextChanged), ih); + } + else + { + g_signal_connect(G_OBJECT(ih->handle), "delete-text", G_CALLBACK(gtkTextEntryDeleteText), ih); + g_signal_connect(G_OBJECT(ih->handle), "insert-text", G_CALLBACK(gtkTextEntryInsertText), ih); + g_signal_connect(G_OBJECT(ih->handle), "changed", G_CALLBACK(gtkTextChanged), ih); + } + + if (scrolled_window) + gtk_widget_realize((GtkWidget*)scrolled_window); + gtk_widget_realize(ih->handle); + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + /* update a mnemonic in a label if necessary */ + iupgtkUpdateMnemonic(ih); + + if (ih->data->formattags) + iupTextUpdateFormatTags(ih); + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)gtkTextConvertXYToPos); + + return IUP_NOERROR; +} + +void iupdrvTextInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkTextMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Common GTK only (when text is in a secondary element) */ + iupClassRegisterAttribute(ic, "PANGOLAYOUT", gtkTextGetPangoLayoutAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkTextSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT); + + /* IupText only */ + iupClassRegisterAttribute(ic, "PADDING", iupTextGetPaddingAttrib, gtkTextSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "VALUE", gtkTextGetValueAttrib, gtkTextSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTEDTEXT", gtkTextGetSelectedTextAttrib, gtkTextSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTION", gtkTextGetSelectionAttrib, gtkTextSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTIONPOS", gtkTextGetSelectionPosAttrib, gtkTextSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARET", gtkTextGetCaretAttrib, gtkTextSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARETPOS", gtkTextGetCaretPosAttrib, gtkTextSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INSERT", NULL, gtkTextSetInsertAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPEND", NULL, gtkTextSetAppendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "READONLY", gtkTextGetReadOnlyAttrib, gtkTextSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "NC", iupTextGetNCAttrib, gtkTextSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, gtkTextSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTO", NULL, gtkTextSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, gtkTextSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINMIN", NULL, gtkTextSetSpinMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINMAX", NULL, gtkTextSetSpinMaxAttrib, IUPAF_SAMEASSYSTEM, "100", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPININC", NULL, gtkTextSetSpinIncAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINVALUE", gtkTextGetSpinValueAttrib, gtkTextSetSpinValueAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT); + + /* IupText Windows and GTK only */ + iupClassRegisterAttribute(ic, "ADDFORMATTAG", NULL, iupTextSetAddFormatTagAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ADDFORMATTAG_HANDLE", NULL, iupTextSetAddFormatTagHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkTextSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FORMATTING", iupTextGetFormattingAttrib, iupTextSetFormattingAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "OVERWRITE", gtkTextGetOverwriteAttrib, gtkTextSetOverwriteAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "REMOVEFORMATTING", NULL, gtkTextSetRemoveFormattingAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABSIZE", NULL, gtkTextSetTabSizeAttrib, "8", NULL, IUPAF_DEFAULT); /* force new default value */ + iupClassRegisterAttribute(ic, "PASSWORD", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/gtk/iupgtk_timer.c b/iup/src/gtk/iupgtk_timer.c new file mode 100755 index 0000000..ecbefa3 --- /dev/null +++ b/iup/src/gtk/iupgtk_timer.c @@ -0,0 +1,61 @@ +/** \file + * \brief Timer for the GTK Driver. + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_assert.h" +#include "iup_timer.h" + + +static gboolean gtkTimerProc(gpointer data) +{ + Ihandle *ih = (Ihandle*)data; + Icallback cb; + + if (!iupObjectCheck(ih)) /* control could be destroyed before timer callback */ + return FALSE; + + cb = IupGetCallback(ih, "ACTION_CB"); + if (cb && cb(ih)==IUP_CLOSE) + IupExitLoop(); + + return TRUE; +} + +void iupdrvTimerRun(Ihandle *ih) +{ + unsigned int time_ms; + + if (ih->serial > 0) /* timer already started */ + return; + + time_ms = iupAttribGetInt(ih, "TIME"); + if (time_ms > 0) + ih->serial = g_timeout_add(time_ms, gtkTimerProc, (gpointer)ih); +} + +void iupdrvTimerStop(Ihandle* ih) +{ + if (ih->serial > 0) + { + g_source_remove(ih->serial); + ih->serial = -1; + } +} + +void iupdrvTimerInitClass(Iclass* ic) +{ + (void)ic; +} diff --git a/iup/src/gtk/iupgtk_tips.c b/iup/src/gtk/iupgtk_tips.c new file mode 100755 index 0000000..6289d70 --- /dev/null +++ b/iup/src/gtk/iupgtk_tips.c @@ -0,0 +1,100 @@ +/** \file + * \brief Windows Driver TIPS management + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_str.h" +#include "iup_attrib.h" +#include "iup_image.h" + +#include "iupgtk_drv.h" + +#if GTK_CHECK_VERSION(2, 12, 0) +#else +static GtkTooltips* gtk_tips = NULL; /* old TIPS */ +#endif + +#if GTK_CHECK_VERSION(2, 12, 0) +static gboolean gtkQueryTooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip, Ihandle* ih) +{ + char* value = iupAttribGet(ih, "TIPRECT"); + if (value && !keyboard_mode) + { + GdkRectangle rect; + int x1, x2, y1, y2; + sscanf(value, "%d %d %d %d", &x1, &y1, &x2, &y2); + rect.x = x1; + rect.y = y1; + rect.width = x2-x1+1; + rect.height = y2-y1+1; + gtk_tooltip_set_tip_area(tooltip, &rect); + } + else + gtk_tooltip_set_tip_area(tooltip, NULL); + + value = iupAttribGet(ih, "TIPICON"); + if (!value) + gtk_tooltip_set_icon(tooltip, NULL); + else + { + GdkPixbuf* icon = (GdkPixbuf*)iupImageGetIcon(value); + if (icon) + gtk_tooltip_set_icon(tooltip, icon); + } + + (void)y; + (void)x; + (void)widget; + return FALSE; +} +#endif + +int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value) +{ + GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) + widget = ih->handle; + +#if GTK_CHECK_VERSION(2, 12, 0) + if (iupAttribGetBoolean(ih, "TIPMARKUP")) + gtk_widget_set_tooltip_markup(widget, iupgtkStrConvertToUTF8(value)); + else + gtk_widget_set_tooltip_text(widget, iupgtkStrConvertToUTF8(value)); + + g_signal_connect(widget, "query-tooltip", G_CALLBACK(gtkQueryTooltip), ih); +#else + if (gtk_tips == NULL) + gtk_tips = gtk_tooltips_new(); + + gtk_tooltips_set_tip(gtk_tips, widget, iupgtkStrConvertToUTF8(value), NULL); +#endif + + return 1; +} + +int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value) +{ + GtkWidget* widget = (GtkWidget*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) + widget = ih->handle; + (void)value; + + /* must use IupGetAttribute to use inheritance */ + if (!IupGetAttribute(ih, "TIP")) + return 0; + +#if GTK_CHECK_VERSION(2, 12, 0) + gtk_widget_trigger_tooltip_query(widget); +#endif + + return 0; +} + diff --git a/iup/src/gtk/iupgtk_toggle.c b/iup/src/gtk/iupgtk_toggle.c new file mode 100755 index 0000000..8ff7df5 --- /dev/null +++ b/iup/src/gtk/iupgtk_toggle.c @@ -0,0 +1,519 @@ +/** \file + * \brief Toggle Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_image.h" +#include "iup_key.h" +#include "iup_toggle.h" + +#include "iupgtk_drv.h" + + +#if !GTK_CHECK_VERSION(2, 6, 0) +static void gtk_button_set_image(GtkButton *button, GtkWidget *image) +{ +} +static GtkWidget* gtk_button_get_image(GtkButton *button) +{ + return NULL; +} +#endif + +void iupdrvToggleAddCheckBox(int *x, int *y) +{ +#ifdef HILDON + (*x) += 30+4; + if ((*y) < 30) (*y) = 30; /* minimum height */ +#else + (*x) += 16+4; + if ((*y) < 16) (*y) = 16; /* minimum height */ +#endif + (*y) += 4; +} + +static int gtkToggleGetCheck(Ihandle* ih) +{ + if (gtk_toggle_button_get_inconsistent((GtkToggleButton*)ih->handle)) + return -1; + if (gtk_toggle_button_get_active((GtkToggleButton*)ih->handle)) + return 1; + else + return 0; +} + +static void gtkToggleSetPixbuf(Ihandle* ih, const char* name, int make_inactive) +{ + GtkButton* button = (GtkButton*)ih->handle; + GtkImage* image = (GtkImage*)gtk_button_get_image(button); + + if (name) + { + GdkPixbuf* pixbuf = iupImageGetImage(name, ih, make_inactive); + GdkPixbuf* old_pixbuf = gtk_image_get_pixbuf(image); + if (pixbuf != old_pixbuf) + gtk_image_set_from_pixbuf(image, pixbuf); + return; + } + + /* if not defined */ +#if GTK_CHECK_VERSION(2, 8, 0) + gtk_image_clear(image); +#endif +} + +static void gtkToggleUpdateImage(Ihandle* ih, int active, int check) +{ + char* name; + + if (!active) + { + name = iupAttribGet(ih, "IMINACTIVE"); + if (name) + gtkToggleSetPixbuf(ih, name, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + name = iupAttribGet(ih, "IMAGE"); + gtkToggleSetPixbuf(ih, name, 1); /* make_inactive */ + } + } + else + { + /* must restore the normal image */ + if (check) + { + name = iupAttribGet(ih, "IMPRESS"); + if (name) + gtkToggleSetPixbuf(ih, name, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + name = iupAttribGet(ih, "IMAGE"); + gtkToggleSetPixbuf(ih, name, 0); + } + } + else + { + name = iupAttribGet(ih, "IMAGE"); + if (name) + gtkToggleSetPixbuf(ih, name, 0); + } + } +} + + +/*************************************************************************/ + + +static int gtkToggleSetValueAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value,"NOTDEF")) + gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, TRUE); + else + { + gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, FALSE); + + /* This action causes the toggled signal to be emitted. */ + iupAttribSetStr(ih, "_IUPGTK_IGNORE_TOGGLE", "1"); + + if (iupStrBoolean(value)) + gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, TRUE); + else + gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, FALSE); + + if (ih->data->type == IUP_TOGGLE_IMAGE) + gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih)); + + iupAttribSetStr(ih, "_IUPGTK_IGNORE_TOGGLE", NULL); + } + + return 0; +} + +static char* gtkToggleGetValueAttrib(Ihandle* ih) +{ + int check = gtkToggleGetCheck(ih); + if (check == -1) + return "NOTDEF"; + else if (check == 1) + return "ON"; + else + return "OFF"; +} + +static int gtkToggleSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_TEXT) + { + GtkButton* button = (GtkButton*)ih->handle; + GtkLabel* label = (GtkLabel*)gtk_button_get_image(button); + iupgtkSetMnemonicTitle(ih, label, value); + return 1; + } + + return 0; +} + +static int gtkToggleSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + GtkButton* button = (GtkButton*)ih->handle; + float xalign, yalign; + char value1[30]="", value2[30]=""; + + if (ih->data->type == IUP_TOGGLE_TEXT) + return 0; + + iupStrToStrStr(value, value1, value2, ':'); + + if (iupStrEqualNoCase(value1, "ARIGHT")) + xalign = 1.0f; + else if (iupStrEqualNoCase(value1, "ACENTER")) + xalign = 0.5f; + else /* "ALEFT" */ + xalign = 0; + + if (iupStrEqualNoCase(value2, "ABOTTOM")) + yalign = 1.0f; + else if (iupStrEqualNoCase(value2, "ATOP")) + yalign = 0; + else /* ACENTER (default) */ + yalign = 0.5f; + + gtk_button_set_alignment(button, xalign, yalign); + + return 1; +} + +static int gtkToggleSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle && ih->data->type == IUP_TOGGLE_IMAGE) + { + GtkButton* button = (GtkButton*)ih->handle; + GtkMisc* misc = (GtkMisc*)gtk_button_get_image(button); + gtk_misc_set_padding(misc, ih->data->horiz_padding, ih->data->vert_padding); + } + return 0; +} + +static int gtkToggleSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + GtkWidget* label = (GtkWidget*)gtk_button_get_image((GtkButton*)ih->handle); + if (!label) return 0; + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetFgColor(label, r, g, b); + + return 1; +} + +static int gtkToggleSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + + if (ih->handle) + { + GtkWidget* label = gtk_button_get_image((GtkButton*)ih->handle); + if (!label) return 1; + + gtk_widget_modify_font(label, (PangoFontDescription*)iupgtkGetPangoFontDescAttrib(ih)); + + if (ih->data->type == IUP_TOGGLE_TEXT) + iupgtkFontUpdatePangoLayout(ih, gtk_label_get_layout((GtkLabel*)label)); + } + return 1; +} + +static int gtkToggleSetImageAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (value != iupAttribGet(ih, "IMAGE")) + iupAttribSetStr(ih, "IMAGE", (char*)value); + gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih)); + return 1; + } + else + return 0; +} + +static int gtkToggleSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (value != iupAttribGet(ih, "IMINACTIVE")) + iupAttribSetStr(ih, "IMINACTIVE", (char*)value); + gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih)); + return 1; + } + else + return 0; +} + +static int gtkToggleSetImPressAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (value != iupAttribGet(ih, "IMPRESS")) + iupAttribSetStr(ih, "IMPRESS", (char*)value); + gtkToggleUpdateImage(ih, iupdrvIsActive(ih), gtkToggleGetCheck(ih)); + return 1; + } + else + return 0; +} + +static int gtkToggleSetActiveAttrib(Ihandle* ih, const char* value) +{ + /* update the inactive image if necessary */ + if (ih->data->type == IUP_TOGGLE_IMAGE) + gtkToggleUpdateImage(ih, iupStrBoolean(value), gtkToggleGetCheck(ih)); + + return iupBaseSetActiveAttrib(ih, value); +} + +/****************************************************************************************************/ + +static void gtkToggleToggled(GtkToggleButton *widget, Ihandle* ih) +{ + IFni cb; + int check; + + if (iupAttribGet(ih, "_IUPGTK_IGNORE_TOGGLE")) + return; + + check = gtkToggleGetCheck(ih); + + if (ih->data->type == IUP_TOGGLE_IMAGE) + gtkToggleUpdateImage(ih, iupdrvIsActive(ih), check); + + cb = (IFni)IupGetCallback(ih, "ACTION"); + if (cb && cb(ih, check) == IUP_CLOSE) + IupExitLoop(); + + iupBaseCallValueChangedCb(ih); + + (void)widget; +} + +static int gtkToggleUpdate3StateCheck(Ihandle *ih, int keyb) +{ + int check = gtkToggleGetCheck(ih); + if (check == 1) /* GOTO check == -1 */ + { + gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, TRUE); + gtkToggleToggled((GtkToggleButton*)ih->handle, ih); + return TRUE; /* ignore message to avoid change toggle state */ + } + else if (check == -1) /* GOTO check == 0 */ + { + gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, FALSE); + if (keyb) + { + gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, FALSE); + return TRUE; /* ignore message to avoid change toggle state */ + } + } + else /* (check == 0) GOTO check == 1 */ + { + gtk_toggle_button_set_inconsistent((GtkToggleButton*)ih->handle, FALSE); + if (keyb) + { + gtk_toggle_button_set_active((GtkToggleButton*)ih->handle, TRUE); + return TRUE; /* ignore message to avoid change toggle state */ + } + } + + return FALSE; +} + +static gboolean gtkToggleButtonEvent(GtkWidget *widget, GdkEventButton *evt, Ihandle *ih) +{ + if (iupAttribGet(ih, "_IUPGTK_IGNORE_TOGGLE")) + return FALSE; + + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + char* name = iupAttribGet(ih, "IMPRESS"); + if (name) + { + if (evt->type == GDK_BUTTON_PRESS) + gtkToggleUpdateImage(ih, iupdrvIsActive(ih), 1); + else + gtkToggleUpdateImage(ih, iupdrvIsActive(ih), 0); + } + } + else + { + if (evt->type == GDK_BUTTON_RELEASE) + { + if (gtkToggleUpdate3StateCheck(ih, 0)) + return TRUE; /* ignore message to avoid change toggle state */ + } + } + + (void)widget; + return FALSE; +} + +static gboolean gtkToggleKeyEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + if (evt->type == GDK_KEY_PRESS) + { + if (evt->keyval == GDK_space || evt->keyval == GDK_Return) + return TRUE; /* ignore message to avoid change toggle state */ + } + else + { + if (evt->keyval == GDK_space || evt->keyval == GDK_Return) + { + if (gtkToggleUpdate3StateCheck(ih, 1)) + return TRUE; /* ignore message to avoid change toggle state */ + } + } + + (void)widget; + return FALSE; +} + +static int gtkToggleMapMethod(Ihandle* ih) +{ + Ihandle* radio = iupRadioFindToggleParent(ih); + char *value; + int is3state = 0; + + if (!ih->parent) + return IUP_ERROR; + + if (radio) + ih->data->radio = 1; + + value = iupAttribGet(ih, "IMAGE"); + if (value) + ih->data->type = IUP_TOGGLE_IMAGE; + else + ih->data->type = IUP_TOGGLE_TEXT; + + if (radio) + { + GtkRadioButton* last_tg = (GtkRadioButton*)iupAttribGet(radio, "_IUPGTK_LASTRADIOBUTTON"); + if (last_tg) + ih->handle = gtk_radio_button_new_from_widget(last_tg); + else + ih->handle = gtk_radio_button_new(NULL); + iupAttribSetStr(radio, "_IUPGTK_LASTRADIOBUTTON", (char*)ih->handle); + } + else + { + if (ih->data->type == IUP_TOGGLE_TEXT) + { + ih->handle = gtk_check_button_new(); + + if (iupAttribGetBoolean(ih, "3STATE")) + is3state = 1; + } + else + ih->handle = gtk_toggle_button_new(); + } + + if (!ih->handle) + return IUP_ERROR; + + if (ih->data->type == IUP_TOGGLE_TEXT) + { + gtk_button_set_image((GtkButton*)ih->handle, gtk_label_new(NULL)); + gtk_toggle_button_set_mode((GtkToggleButton*)ih->handle, TRUE); + } + else + { + gtk_button_set_image((GtkButton*)ih->handle, gtk_image_new()); + gtk_toggle_button_set_mode((GtkToggleButton*)ih->handle, FALSE); + } + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(iupgtkKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + g_signal_connect(G_OBJECT(ih->handle), "toggled", G_CALLBACK(gtkToggleToggled), ih); + + if (ih->data->type == IUP_TOGGLE_IMAGE || is3state) + { + g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkToggleButtonEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkToggleButtonEvent), ih); + } + + if (is3state) + { + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkToggleKeyEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(gtkToggleKeyEvent), ih); + } + + gtk_widget_realize(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvToggleInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkToggleMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, gtkToggleSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, gtkToggleSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkToggleSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); /* black */ + iupClassRegisterAttribute(ic, "TITLE", NULL, gtkToggleSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupToggle only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, gtkToggleSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "IMAGE", NULL, gtkToggleSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, gtkToggleSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, gtkToggleSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", gtkToggleGetValueAttrib, gtkToggleSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "PADDING", iupToggleGetPaddingAttrib, gtkToggleSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "MARKUP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT); +} diff --git a/iup/src/gtk/iupgtk_tree.c b/iup/src/gtk/iupgtk_tree.c new file mode 100755 index 0000000..d408f27 --- /dev/null +++ b/iup/src/gtk/iupgtk_tree.c @@ -0,0 +1,2369 @@ +/** \file + * \brief Tree Control + * + * See Copyright Notice in iup.h + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_key.h" +#include "iup_image.h" +#include "iup_array.h" +#include "iup_tree.h" + +#include "iup_drvinfo.h" +#include "iupgtk_drv.h" + +enum +{ + IUPGTK_TREE_IMAGE, + IUPGTK_TREE_HAS_IMAGE, + IUPGTK_TREE_IMAGE_EXPANDED, + IUPGTK_TREE_HAS_IMAGE_EXPANDED, + IUPGTK_TREE_TITLE, + IUPGTK_TREE_KIND, + IUPGTK_TREE_COLOR, + IUPGTK_TREE_FONT, + IUPGTK_TREE_USERDATA +}; + +static GtkTreeIter gtkTreeInvalidIter = {0,0,0,0}; + +/*****************************************************************************/ +/* COPYING ITEMS (Branches and its children) */ +/*****************************************************************************/ +/* Insert the copied item in a new location. Returns the new item. */ +static void gtkTreeCopyItem(GtkTreeModel* model, GtkTreeIter* iterItem, GtkTreeIter* iterParent, int position, GtkTreeIter *iterNewItem, int full_copy) +{ + GtkTreeStore* store = GTK_TREE_STORE(model); + int kind; + char* title; + gboolean has_image, has_image_expanded; + PangoFontDescription* font; + void* userdata; + GdkColor *color; + GdkPixbuf* image, *image_expanded; + + gtk_tree_model_get(GTK_TREE_MODEL(store), iterItem, IUPGTK_TREE_IMAGE, &image, + IUPGTK_TREE_HAS_IMAGE, &has_image, + IUPGTK_TREE_IMAGE_EXPANDED, &image_expanded, + IUPGTK_TREE_HAS_IMAGE_EXPANDED, &has_image_expanded, + IUPGTK_TREE_TITLE, &title, + IUPGTK_TREE_KIND, &kind, + IUPGTK_TREE_COLOR, &color, + IUPGTK_TREE_FONT, &font, + IUPGTK_TREE_USERDATA, &userdata, + -1); + + if (position == 2) + gtk_tree_store_append(store, iterNewItem, iterParent); + else if (position == 1) /* copy as first child of expanded branch */ + gtk_tree_store_insert(store, iterNewItem, iterParent, 0); /* iterParent is parent of the new item (firstchild of it) */ + else /* copy as next brother of item or collapsed branch */ + gtk_tree_store_insert_after(store, iterNewItem, NULL, iterParent); /* iterParent is sibling of the new item */ + + if (full_copy) /* during a full copy the userdata reference is not copied */ + userdata = NULL; + + gtk_tree_store_set(store, iterNewItem, IUPGTK_TREE_IMAGE, image, + IUPGTK_TREE_HAS_IMAGE, has_image, + IUPGTK_TREE_IMAGE_EXPANDED, image_expanded, + IUPGTK_TREE_HAS_IMAGE_EXPANDED, has_image_expanded, + IUPGTK_TREE_TITLE, title, + IUPGTK_TREE_KIND, kind, + IUPGTK_TREE_COLOR, color, + IUPGTK_TREE_FONT, font, + IUPGTK_TREE_USERDATA, userdata, + -1); +} + +static void gtkTreeCopyChildren(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItemSrc, GtkTreeIter *iterItemDst, int full_copy) +{ + GtkTreeIter iterChildSrc; + int hasItem = gtk_tree_model_iter_children(model, &iterChildSrc, iterItemSrc); /* get the firstchild */ + while(hasItem) + { + GtkTreeIter iterNewItem; + gtkTreeCopyItem(model, &iterChildSrc, iterItemDst, 2, &iterNewItem, full_copy); /* append always */ + + /* Recursively transfer all the items */ + gtkTreeCopyChildren(ih, model, &iterChildSrc, &iterNewItem, full_copy); + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterChildSrc); + } +} + +/* Copies all items in a branch to a new location. Returns the new branch node. */ +static void gtkTreeCopyNode(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItemSrc, GtkTreeIter *iterItemDst, GtkTreeIter* iterNewItem, int full_copy) +{ + int kind, position = 0; /* insert after iterItemDst */ + gtk_tree_model_get(model, iterItemDst, IUPGTK_TREE_KIND, &kind, -1); + + if (kind == ITREE_BRANCH) + { + GtkTreePath* path = gtk_tree_model_get_path(model, iterItemDst); + if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path)) + position = 1; /* insert as first child of iterItemDst */ + gtk_tree_path_free(path); + } + + gtkTreeCopyItem(model, iterItemSrc, iterItemDst, position, iterNewItem, full_copy); + + gtkTreeCopyChildren(ih, model, iterItemSrc, iterNewItem, full_copy); +} + +/*****************************************************************************/ +/* FINDING ITEMS */ +/*****************************************************************************/ + +static void gtkTreeInvertAllNodeMarking(Ihandle* ih, GtkTreeModel* model, GtkTreeSelection* selection, GtkTreeIter* iterItem) +{ + GtkTreeIter iterChild; + int hasItem = TRUE; + + while(hasItem) + { + if(gtk_tree_selection_iter_is_selected(selection, iterItem)) + gtk_tree_selection_unselect_iter(selection, iterItem); + else + gtk_tree_selection_select_iter(selection, iterItem); + + /* Check whether we have child items */ + if(gtk_tree_model_iter_has_child(model, iterItem)) + { + gtk_tree_model_iter_children(model, &iterChild, iterItem); /* get the firstchild */ + gtkTreeInvertAllNodeMarking(ih, model, selection, &iterChild); + } + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, iterItem); + } +} + +static GtkTreeIter gtkTreeFindVisibleNodeId(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, GtkTreeIter iterNode) +{ + GtkTreeIter iterChild; + GtkTreePath* path; + int hasItem = TRUE; + + while(hasItem) + { + /* ID control to traverse items */ + ih->data->id_control++; /* not the real id since it counts only the visible ones */ + + /* StateID founded! */ + if(iterItem.user_data == iterNode.user_data) + return iterItem; + + path = gtk_tree_model_get_path(model, &iterItem); + + /* Check whether we have child items and it is expanded (visible) */ + if (gtk_tree_model_iter_has_child(model, &iterItem) && gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path)) + { + gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */ + iterChild = gtkTreeFindVisibleNodeId(ih, model, iterChild, iterNode); + + /* StateID founded! */ + if(iterChild.user_data) + { + gtk_tree_path_free(path); + return iterChild; + } + } + + gtk_tree_path_free(path); + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterItem); + } + + return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */ +} + +static GtkTreeIter gtkTreeFindVisibleNodeFromId(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem) +{ + GtkTreeIter iterChild; + GtkTreePath* path; + int hasItem = TRUE; + + while(hasItem) + { + /* ID control to traverse items */ + ih->data->id_control--; /* not the real id since it counts only the visible ones */ + + /* StateID founded! */ + if(ih->data->id_control < 0) + return iterItem; + + path = gtk_tree_model_get_path(model, &iterItem); + + /* Check whether we have child items and it is expanded (visible) */ + if(gtk_tree_model_iter_has_child(model, &iterItem) && gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path)) + { + gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */ + iterChild = gtkTreeFindVisibleNodeFromId(ih, model, iterChild); + + /* StateID founded! */ + if(ih->data->id_control < 0) + { + gtk_tree_path_free(path); + return iterChild; + } + } + + gtk_tree_path_free(path); + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterItem); + } + + return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */ +} + +static GtkTreeIter gtkTreeGetLastVisibleNode(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem) +{ + GtkTreeIter iterChild, iterPrev = gtkTreeInvalidIter; + GtkTreePath* path = gtk_tree_model_get_path(model, &iterItem); + + /* Check whether we have child items and it is expanded (visible) */ + if(gtk_tree_model_iter_has_child(model, &iterItem) && gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path)) + { + int hasItem = TRUE; + gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */ + + while(hasItem) + { + iterPrev = iterChild; + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterChild); + } + + iterItem = gtkTreeGetLastVisibleNode(ih, model, iterPrev); + } + gtk_tree_path_free(path); + + return iterItem; +} + +static GtkTreeIter gtkTreeFindNodeID(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, GtkTreeIter iterNode) +{ + GtkTreeIter iterChild; + int hasItem = TRUE; + + while(hasItem) + { + /* ID control to traverse items */ + ih->data->id_control++; + + /* StateID founded! */ + if (iterItem.user_data == iterNode.user_data) + return iterItem; + + /* Check whether we have child items */ + if (gtk_tree_model_iter_has_child(model, &iterItem)) + { + gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */ + iterChild = gtkTreeFindNodeID(ih, model, iterChild, iterNode); + + /* StateID founded! */ + if(iterChild.user_data) + return iterChild; + } + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterItem); + } + + return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */ +} + +static int gtkTreeGetNodeId(Ihandle* ih, GtkTreeIter iterItem) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterRoot; + gtk_tree_model_get_iter_first(model, &iterRoot); + + ih->data->id_control = -1; + iterItem = gtkTreeFindNodeID(ih, model, iterRoot, iterItem); + if (iterItem.user_data) + return ih->data->id_control; + else + return -1; +} + +static GtkTreeIter gtkTreeFindUserData(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, void* userdata) +{ + GtkTreeIter iterChild; + int hasItem = TRUE; + void* node_userdata; + + while(hasItem) + { + /* ID control to traverse items */ + ih->data->id_control++; + + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_USERDATA, &node_userdata, -1); + + /* userdata founded! */ + if (node_userdata == userdata) + return iterItem; + + /* Check whether we have child items */ + if (gtk_tree_model_iter_has_child(model, &iterItem)) + { + gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */ + iterChild = gtkTreeFindUserData(ih, model, iterChild, userdata); + + /* userdata founded! */ + if (iterChild.user_data) + return iterChild; + } + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterItem); + } + + return gtkTreeInvalidIter; /* invalid since gtk_tree_model_iter_next returned false */ +} + +static int gtkTreeGetUserDataId(Ihandle* ih, GtkTreeModel* model, void* userdata) +{ + GtkTreeIter iterRoot, iterItem; + gtk_tree_model_get_iter_first(model, &iterRoot); + + ih->data->id_control = -1; + iterItem = gtkTreeFindUserData(ih, model, iterRoot, userdata); + if (iterItem.user_data) + return ih->data->id_control; + else + return -1; +} + +static void gtkTreeCallNodeRemovedRec(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, IFnis cb) +{ + GtkTreeIter iterChild; + int hasItem = TRUE; + void* node_userdata; + + while(hasItem) + { + /* ID control to traverse items */ + ih->data->id_control++; + + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_USERDATA, &node_userdata, -1); + + cb(ih, ih->data->id_control, (char*)node_userdata); + + /* Check whether we have child items */ + if (gtk_tree_model_iter_has_child(model, &iterItem)) + { + gtk_tree_model_iter_children(model, &iterChild, &iterItem); /* get the firstchild */ + gtkTreeCallNodeRemovedRec(ih, model, iterChild, cb); + } + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterItem); + } +} + +static void gtkTreeCallNodeRemoved(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItem) +{ + IFnis cb = (IFnis)IupGetCallback(ih, "NODEREMOVED_CB"); + if (cb) + { + ih->data->id_control = gtkTreeGetNodeId(ih, *iterItem)-1; + gtkTreeCallNodeRemovedRec(ih, model, *iterItem, cb); + } +} + +static gboolean gtkTreeFindNodeFromID(Ihandle* ih, GtkTreeModel* model, GtkTreeIter *iterItem, int *id) +{ + GtkTreeIter iterChild; + int hasItem = TRUE; + + while(hasItem) + { + /* ID control to traverse items */ + (*id)--; + + /* StateID founded! */ + if (*id < 0) + return TRUE; + + /* Check whether we have child items */ + if (gtk_tree_model_iter_has_child(model, iterItem)) + { + gtk_tree_model_iter_children(model, &iterChild, iterItem); /* get the firstchild */ + + if (gtkTreeFindNodeFromID(ih, model, &iterChild, id)) + { + *iterItem = iterChild; + return TRUE; + } + } + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, iterItem); + } + + return FALSE; +} + +static gboolean gtkTreeFindNodeFromString(Ihandle* ih, GtkTreeModel* model, const char* name_id, GtkTreeIter *iterItem) +{ + if (name_id[0]) + { + int id; + if (iupStrToInt(name_id, &id)) + { + gtk_tree_model_get_iter_first(model, iterItem); + return gtkTreeFindNodeFromID(ih, model, iterItem, &id); + } + } + else + { + GtkTreePath* path = NULL; + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, NULL); + if (path) + { + gtk_tree_model_get_iter(model, iterItem, path); + gtk_tree_path_free(path); + return TRUE; + } + } + return FALSE; +} + +/*****************************************************************************/ +/* MANIPULATING IMAGES */ +/*****************************************************************************/ +static void gtkTreeUpdateImages(Ihandle* ih, GtkTreeModel* model, GtkTreeIter iterItem, int mode) +{ + GtkTreeIter iterChild; + int hasItem = TRUE; + int kind; + + while(hasItem) + { + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1); + + if (kind == ITREE_BRANCH) + { + if (mode == ITREE_UPDATEIMAGE_EXPANDED) + { + gboolean has_image_expanded = FALSE; + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_HAS_IMAGE_EXPANDED, &has_image_expanded, -1); + if (!has_image_expanded) + gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded, -1); + } + else if(mode == ITREE_UPDATEIMAGE_COLLAPSED) + { + gboolean has_image = FALSE; + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_HAS_IMAGE, &has_image, -1); + if (!has_image) + gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed, -1); + } + + if (gtk_tree_model_iter_has_child(model, &iterItem)) + { + + /* Recursively traverse child items */ + gtk_tree_model_iter_children(model, &iterChild, &iterItem); + gtkTreeUpdateImages(ih, model, iterChild, mode); + } + } + else + { + if (mode == ITREE_UPDATEIMAGE_LEAF) + { + gboolean has_image = FALSE; + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_HAS_IMAGE, &has_image, -1); + if (!has_image) + gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_leaf, -1); + } + } + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterItem); + } +} + +static void gtkTreeExpandItem(Ihandle* ih, GtkTreePath* path, int expand) +{ + if (expand == -1) + expand = !gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path); /* toggle */ + + if (expand) + gtk_tree_view_expand_row(GTK_TREE_VIEW(ih->handle), path, FALSE); + else + gtk_tree_view_collapse_row(GTK_TREE_VIEW(ih->handle), path); +} + +int iupgtkGetColor(const char* value, GdkColor *color) +{ + unsigned char r, g, b; + if (iupStrToRGB(value, &r, &g, &b)) + { + iupgdkColorSet(color, r, g, b); + return 1; + } + return 0; +} + +/*****************************************************************************/ +/* ADDING ITEMS */ +/*****************************************************************************/ +void iupdrvTreeAddNode(Ihandle* ih, const char* name_id, int kind, const char* title, int add) +{ + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreeIter iterPrev, iterNewItem, iterParent; + GtkTreePath* path; + GdkColor color = {0L,0,0,0}; + int kindPrev; + + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterPrev)) + return; + + gtk_tree_model_get(GTK_TREE_MODEL(store), &iterPrev, IUPGTK_TREE_KIND, &kindPrev, -1); + + if (kindPrev == ITREE_BRANCH && add) + gtk_tree_store_insert(store, &iterNewItem, &iterPrev, 0); /* iterPrev is parent of the new item (firstchild of it) */ + else + gtk_tree_store_insert_after(store, &iterNewItem, NULL, &iterPrev); /* iterPrev is sibling of the new item */ + + iupgtkGetColor(iupAttribGetStr(ih, "FGCOLOR"), &color); + + /* set the attributes of the new node */ + gtk_tree_store_set(store, &iterNewItem, IUPGTK_TREE_HAS_IMAGE, FALSE, + IUPGTK_TREE_HAS_IMAGE_EXPANDED, FALSE, + IUPGTK_TREE_TITLE, iupgtkStrConvertToUTF8(title), + IUPGTK_TREE_KIND, kind, + IUPGTK_TREE_COLOR, &color, -1); + + if (kind == ITREE_LEAF) + gtk_tree_store_set(store, &iterNewItem, IUPGTK_TREE_IMAGE, ih->data->def_image_leaf, -1); + else + gtk_tree_store_set(store, &iterNewItem, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed, + IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded, -1); + + if (kindPrev == ITREE_BRANCH && add) + iterParent = iterPrev; + else + gtk_tree_model_iter_parent(GTK_TREE_MODEL(store), &iterParent, &iterNewItem); + + /* If this is the first child of the parent, then handle the ADDEXPANDED attribute */ + if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), &iterParent) == 1) + { + int depth; + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iterParent); + depth = gtk_tree_path_get_depth(path)-1; + if (ih->data->add_expanded || depth==0) /* if this is the first child of the root, expand always */ + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_BRANCHOPEN_CB", "1"); + gtk_tree_view_expand_row(GTK_TREE_VIEW(ih->handle), path, FALSE); + } + else + gtk_tree_view_collapse_row(GTK_TREE_VIEW(ih->handle), path); + gtk_tree_path_free(path); + } +} + +static void gtkTreeAddRootNode(Ihandle* ih) +{ + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreePath* path; + GtkTreeIter iterRoot; + GdkColor color = {0L,0,0,0}; + + iupgtkGetColor(iupAttribGetStr(ih, "FGCOLOR"), &color); + + gtk_tree_store_append(store, &iterRoot, NULL); /* root node */ + gtk_tree_store_set(store, &iterRoot, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed, + IUPGTK_TREE_HAS_IMAGE, FALSE, + IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded, + IUPGTK_TREE_HAS_IMAGE_EXPANDED, FALSE, + IUPGTK_TREE_KIND, ITREE_BRANCH, + IUPGTK_TREE_COLOR, &color, -1); + + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iterRoot); + /* MarkStart node */ + iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)path); + + /* Set the default VALUE */ + gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE); +} + +/*****************************************************************************/ +/* AUXILIAR FUNCTIONS */ +/*****************************************************************************/ +static void gtkTreeOpenCloseEvent(Ihandle* ih) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + GtkTreePath* path; + int kind; + + if (!gtkTreeFindNodeFromString(ih, model, "", &iterItem)) + return; + + path = gtk_tree_model_get_path(model, &iterItem); + if (path) + { + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1); + + if (kind == ITREE_LEAF) /* leafs */ + gtk_tree_view_row_activated(GTK_TREE_VIEW(ih->handle), path, (GtkTreeViewColumn*)iupAttribGet(ih, "_IUPGTK_COLUMN")); + else /* branches */ + gtkTreeExpandItem(ih, path, -1); /* toggle */ + + gtk_tree_path_free(path); + } +} + +static gboolean gtkTreeSelected_Foreach_Func(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, GList **rowref_list) +{ + GtkTreeRowReference *rowref; + + rowref = gtk_tree_row_reference_new(model, path); + *rowref_list = g_list_append(*rowref_list, rowref); + + (void)iter; + return FALSE; /* do not stop walking the store, call us with next row */ +} + +static gboolean gtkTreeSelected_Iter_Func(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, GList **rowref_list) +{ + GtkTreeRowReference *rowref; + GtkTreeIter iterParent; + if (!gtk_tree_model_iter_parent(model, &iterParent, iter)) /* the root node can't be deleted */ + return FALSE; /* do not stop walking the store, call us with next row */ + + rowref = gtk_tree_row_reference_new(model, path); + *rowref_list = g_list_append(*rowref_list, rowref); + + return FALSE; /* do not stop walking the store, call us with next row */ +} + +/*****************************************************************************/ +/* CALLBACKS */ +/*****************************************************************************/ +static void gtkTreeCallMultiSelectionCb(Ihandle* ih) +{ + IFnIi cbMulti = (IFnIi)IupGetCallback(ih, "MULTISELECTION_CB"); + IFnii cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB"); + if (cbMulti || cbSelec) + { + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterRoot; + GList *rr_list = NULL; + GList *node; + int* id_rowItem; + int count_selected_rows, i = 0; + + gtk_tree_model_get_iter_first(model, &iterRoot); + + gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc)gtkTreeSelected_Foreach_Func, &rr_list); + count_selected_rows = g_list_length(rr_list); + id_rowItem = malloc(sizeof(int) * count_selected_rows); + + for(node = rr_list; node != NULL; node = node->next) + { + GtkTreePath* path = gtk_tree_row_reference_get_path(node->data); + if (path) + { + GtkTreeIter iterItem; + gtk_tree_model_get_iter(model, &iterItem, path); + + id_rowItem[i] = gtkTreeGetNodeId(ih, iterItem); + i++; + + gtk_tree_path_free(path); + } + } + + g_list_foreach(rr_list, (GFunc) gtk_tree_row_reference_free, NULL); + g_list_free(rr_list); + + if (cbMulti) + cbMulti(ih, id_rowItem, count_selected_rows); + else + { + for (i=0; ihandle)); +#else + int indent = 0; +#endif + sprintf(str, "%d", indent); + return str; +} + +static int gtkTreeSetIndentationAttrib(Ihandle* ih, const char* value) +{ +#if GTK_CHECK_VERSION(2, 12, 0) + int indent; + if (iupStrToInt(value, &indent)) + gtk_tree_view_set_level_indentation(GTK_TREE_VIEW(ih->handle), indent); +#endif + return 0; +} + +static int gtkTreeSetTopItemAttrib(Ihandle* ih, const char* value) +{ + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreeIter iterItem; + GtkTreePath* path; + + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), value, &iterItem)) + return 0; + + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iterItem); + + if (!gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path)) + gtk_tree_view_expand_to_path(GTK_TREE_VIEW(ih->handle), path); + + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE, 0, 0); /* scroll to visible */ + + gtk_tree_path_free(path); + + return 0; +} + +static int gtkTreeSetSpacingAttrib(Ihandle* ih, const char* value) +{ + if(!iupStrToInt(value, &ih->data->spacing)) + ih->data->spacing = 1; + + if(ih->data->spacing < 1) + ih->data->spacing = 1; + + if (ih->handle) + { + GtkCellRenderer *renderer_img = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_IMG"); + GtkCellRenderer *renderer_txt = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_TEXT"); + g_object_set(G_OBJECT(renderer_img), "ypad", ih->data->spacing, NULL); + g_object_set(G_OBJECT(renderer_txt), "ypad", ih->data->spacing, NULL); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int gtkTreeSetExpandAllAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + gtk_tree_view_expand_all(GTK_TREE_VIEW(ih->handle)); + else + { + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterRoot; + GtkTreePath* pathRoot; + + gtk_tree_view_collapse_all(GTK_TREE_VIEW(ih->handle)); + + /* The root node is always expanded */ + gtk_tree_model_get_iter_first(model, &iterRoot); + pathRoot = gtk_tree_model_get_path(model, &iterRoot); + gtk_tree_view_expand_row(GTK_TREE_VIEW(ih->handle), pathRoot, FALSE); + gtk_tree_path_free(pathRoot); + } + + return 0; +} + +static char* gtkTreeGetDepthAttrib(Ihandle* ih, const char* name_id) +{ + char* depth; + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem)) + return NULL; + + depth = iupStrGetMemory(10); + sprintf(depth, "%d", gtk_tree_store_iter_depth(store, &iterItem)); + return depth; +} + +static int gtkTreeSetMoveNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeModel* model; + GtkTreeIter iterItemSrc, iterItemDst, iterNewItem; + GtkTreeIter iterParent, iterNextParent; + + if (!ih->handle) /* do not store the action before map */ + return 0; + + model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItemSrc)) + return 0; + + if (!gtkTreeFindNodeFromString(ih, model, value, &iterItemDst)) + return 0; + + /* If Drag item is an ancestor of Drop item then return */ + iterParent = iterItemDst; + while(gtk_tree_model_iter_parent(model, &iterNextParent, &iterParent)) + { + if (iterNextParent.user_data == iterItemSrc.user_data) + return 0; + iterParent = iterNextParent; + } + + /* Copying the node and its children to the new position */ + gtkTreeCopyNode(ih, model, &iterItemSrc, &iterItemDst, &iterNewItem, 0); /* not a full copy, preserve user data */ + + /* Deleting the node of its old position */ + /* do not delete the user data, we copy the references in CopyNode */ + gtk_tree_store_remove(GTK_TREE_STORE(model), &iterItemSrc); + + return 0; +} + +static int gtkTreeSetCopyNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeModel* model; + GtkTreeIter iterItemSrc, iterItemDst, iterNewItem; + GtkTreeIter iterParent, iterNextParent; + + if (!ih->handle) /* do not store the action before map */ + return 0; + + model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItemSrc)) + return 0; + + if (!gtkTreeFindNodeFromString(ih, model, value, &iterItemDst)) + return 0; + + /* If Drag item is an ancestor of Drop item then return */ + iterParent = iterItemDst; + while(gtk_tree_model_iter_parent(model, &iterNextParent, &iterParent)) + { + if (iterNextParent.user_data == iterItemSrc.user_data) + return 0; + iterParent = iterNextParent; + } + + /* Copying the node and its children to the new position */ + gtkTreeCopyNode(ih, model, &iterItemSrc, &iterItemDst, &iterNewItem, 1); + + return 0; +} + +static char* gtkTreeGetColorAttrib(Ihandle* ih, const char* name_id) +{ + char* str; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + GdkColor *color; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_COLOR, &color, -1); + if (!color) + return NULL; + + str = iupStrGetMemory(20); + sprintf(str, "%d %d %d", iupCOLOR16TO8(color->red), + iupCOLOR16TO8(color->green), + iupCOLOR16TO8(color->blue)); + return str; +} + +static int gtkTreeSetColorAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreeIter iterItem; + GdkColor color; + unsigned char r, g, b; + + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem)) + return 0; + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgdkColorSet(&color, r, g, b); + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_COLOR, &color, -1); + + return 0; +} + +static char* gtkTreeGetParentAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + GtkTreeIter iterParent; + char* str; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + + if (!gtk_tree_model_iter_parent(model, &iterParent, &iterItem)) + return NULL; + + str = iupStrGetMemory(10); + sprintf(str, "%d", gtkTreeGetNodeId(ih, iterParent)); + return str; +} + +static char* gtkTreeGetChildCountAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + char* str; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + + str = iupStrGetMemory(10); + sprintf(str, "%d", gtk_tree_model_iter_n_children(model, &iterItem)); + return str; +} + +static int gtkTreeCount(GtkTreeModel* model, GtkTreeIter iterBranch) +{ + GtkTreeIter iterChild; + int count = 0; + int hasItem = gtk_tree_model_iter_children(model, &iterChild, &iterBranch); /* get the firstchild */ + count++; + while(hasItem) + { + count += gtkTreeCount(model, iterChild); + + /* Go to next sibling item */ + hasItem = gtk_tree_model_iter_next(model, &iterChild); + } + + return count; +} + +static char* gtkTreeGetCountAttrib(Ihandle* ih) +{ + GtkTreeIter iterRoot; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + char* str = iupStrGetMemory(10); + gtk_tree_model_get_iter_first(model, &iterRoot); + sprintf(str, "%d", gtkTreeCount(model, iterRoot)); + return str; +} + +static char* gtkTreeGetKindAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + int kind; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1); + + if(!kind) + return "BRANCH"; + else + return "LEAF"; +} + +static char* gtkTreeGetStateAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + + if (gtk_tree_model_iter_has_child(model, &iterItem)) + { + GtkTreePath* path = gtk_tree_model_get_path(model, &iterItem); + int expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(ih->handle), path); + gtk_tree_path_free(path); + + if (expanded) + return "EXPANDED"; + else + return "COLLAPSED"; + } + + return NULL; +} + +static int gtkTreeSetStateAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + GtkTreePath* path; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return 0; + + path = gtk_tree_model_get_path(model, &iterItem); + gtkTreeExpandItem(ih, path, iupStrEqualNoCase(value, "EXPANDED")); + gtk_tree_path_free(path); + + return 0; +} + +static char* gtkTreeGetTitle(GtkTreeModel* model, GtkTreeIter iterItem) +{ + char* title; + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_TITLE, &title, -1); + return iupgtkStrConvertFromUTF8(title); +} + +static char* gtkTreeGetTitleAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + return gtkTreeGetTitle(model, iterItem); +} + +static int gtkTreeSetTitleAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem)) + return 0; + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_TITLE, iupgtkStrConvertToUTF8(value), -1); + return 0; +} + +static int gtkTreeSetTitleFontAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + PangoFontDescription* fontdesc = NULL; + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem)) + return 0; + if (value) + fontdesc = iupgtkGetPangoFontDesc(value); + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_FONT, fontdesc, -1); + return 0; +} + +static char* gtkTreeGetTitleFontAttrib(Ihandle* ih, const char* name_id) +{ + PangoFontDescription* fontdesc; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_FONT, &fontdesc, -1); + return pango_font_description_to_string(fontdesc); +} + +static char* gtkTreeGetFindUserDataAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + int id; + char* str = (char*)(name_id+1); /* skip ':' */ + void* userdata = NULL; + if (sscanf(str, "%p", &userdata)!=1) + return NULL; + id = gtkTreeGetUserDataId(ih, model, userdata); + if (id == -1) + return NULL; + str = iupStrGetMemory(16); + sprintf(str, "%d", id); + return str; +} + +static char* gtkTreeGetUserDataAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + char* userdata; + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return NULL; + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_USERDATA, &userdata, -1); + return userdata; +} + +static int gtkTreeSetUserDataAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem)) + return 0; + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_USERDATA, value, -1); + return 0; +} + +static char* gtkTreeGetValueAttrib(Ihandle* ih) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreePath* path = NULL; + char* str; + + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, NULL); + if (path) + { + GtkTreeIter iterItem; + gtk_tree_model_get_iter(model, &iterItem, path); + gtk_tree_path_free(path); + + str = iupStrGetMemory(16); + sprintf(str, "%d", gtkTreeGetNodeId(ih, iterItem)); + return str; + } + + return "0"; /* default VALUE is root */ +} + +static int gtkTreeSetMarkAttrib(Ihandle* ih, const char* value) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterRoot; + + if (ih->data->mark_mode==ITREE_MARK_SINGLE) + return 0; + + gtk_tree_model_get_iter_first(model, &iterRoot); + + if(iupStrEqualNoCase(value, "BLOCK")) + { + GtkTreePath* pathFocus; + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL); + gtk_tree_selection_select_range(selection, (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE"), pathFocus); + gtk_tree_path_free(pathFocus); + } + else if(iupStrEqualNoCase(value, "CLEARALL")) + gtk_tree_selection_unselect_all(selection); + else if(iupStrEqualNoCase(value, "MARKALL")) + gtk_tree_selection_select_all(selection); + else if(iupStrEqualNoCase(value, "INVERTALL")) /* INVERTALL *MUST* appear before INVERT, or else INVERTALL will never be called. */ + gtkTreeInvertAllNodeMarking(ih, model, selection, &iterRoot); + else if(iupStrEqualPartial(value, "INVERT")) + { + /* iupStrEqualPartial allows the use of "INVERTid" form */ + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, model, &value[strlen("INVERT")], &iterItem)) + return 0; + + if(gtk_tree_selection_iter_is_selected(selection, &iterItem)) + gtk_tree_selection_unselect_iter(selection, &iterItem); + else + gtk_tree_selection_select_iter(selection, &iterItem); + } + else + { + GtkTreePath *path1, *path2; + GtkTreeIter iterItem1, iterItem2; + char str1[50], str2[50]; + if (iupStrToStrStr(value, str1, str2, '-')!=2) + return 0; + + if (!gtkTreeFindNodeFromString(ih, model, str1, &iterItem1)) + return 0; + if (!gtkTreeFindNodeFromString(ih, model, str2, &iterItem2)) + return 0; + + path1 = gtk_tree_model_get_path(model, &iterItem1); + path2 = gtk_tree_model_get_path(model, &iterItem2); + gtk_tree_selection_select_range(selection, path1, path2); + gtk_tree_path_free(path1); + gtk_tree_path_free(path2); + } + + return 1; +} + +static int gtkTreeSetValueAttrib(Ihandle* ih, const char* value) +{ + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterRoot, iterItem; + GtkTreePath* path; + + if (gtkTreeSetMarkAttrib(ih, value)) + return 0; + + gtk_tree_model_get_iter_first(model, &iterRoot); + + if (iupStrEqualNoCase(value, "ROOT")) + iterItem = iterRoot; + else if(iupStrEqualNoCase(value, "LAST")) + iterItem = gtkTreeGetLastVisibleNode(ih, model, iterRoot); + else if(iupStrEqualNoCase(value, "PGUP")) + { + GtkTreeIter iterPrev; + + GtkTreePath* pathFocus; + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL); + gtk_tree_model_get_iter(model, &iterPrev, pathFocus); + gtk_tree_path_free(pathFocus); + + ih->data->id_control = -1; + gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterPrev); + ih->data->id_control -= 10; /* less 10 visible nodes */ + + if(ih->data->id_control < 0) + ih->data->id_control = 0; /* Begin of tree = Root id */ + + iterItem = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot); + } + else if(iupStrEqualNoCase(value, "PGDN")) + { + GtkTreeIter iterNext; + + GtkTreePath* pathFocus; + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL); + gtk_tree_model_get_iter(model, &iterNext, pathFocus); + gtk_tree_path_free(pathFocus); + + ih->data->id_control = -1; + gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterNext); + ih->data->id_control += 10; /* more 10 visible nodes */ + + iterNext = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot); + + if (ih->data->id_control >= 0) + iterNext = gtkTreeGetLastVisibleNode(ih, model, iterRoot); + + iterItem = iterNext; + } + else if(iupStrEqualNoCase(value, "NEXT")) + { + GtkTreeIter iterNext; + + GtkTreePath* pathFocus; + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL); + gtk_tree_model_get_iter(model, &iterNext, pathFocus); + gtk_tree_path_free(pathFocus); + + ih->data->id_control = -1; + gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterNext); + ih->data->id_control++; /* more 1 visible node */ + + iterNext = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot); + + if (ih->data->id_control >= 0) + iterNext = gtkTreeGetLastVisibleNode(ih, model, iterRoot); + + iterItem = iterNext; + } + else if(iupStrEqualNoCase(value, "PREVIOUS")) + { + GtkTreeIter iterPrev; + + GtkTreePath* pathFocus; + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL); + gtk_tree_model_get_iter(model, &iterPrev, pathFocus); + gtk_tree_path_free(pathFocus); + + ih->data->id_control = -1; + gtkTreeFindVisibleNodeId(ih, model, iterRoot, iterPrev); + ih->data->id_control--; /* less 1 visible node */ + + if (ih->data->id_control < 0) + ih->data->id_control = 0; + + iterItem = gtkTreeFindVisibleNodeFromId(ih, model, iterRoot); + if (!iterItem.user_data) + return 0; + } + else + { + if (!gtkTreeFindNodeFromString(ih, model, value, &iterItem)) + return 0; + } + + /* select */ + if (ih->data->mark_mode==ITREE_MARK_SINGLE) + { + iupAttribSetStr(ih, "_IUP_IGNORE_SELECTION", "1"); + gtk_tree_selection_select_iter(selection, &iterItem); + } + + path = gtk_tree_model_get_path(model, &iterItem); + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE, 0, 0); /* scroll to visible */ + gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), path, NULL, FALSE); /* set focus */ + gtk_tree_path_free(path); + + iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", gtkTreeGetNodeId(ih, iterItem)); + + return 0; +} + +static int gtkTreeSetMarkStartAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreePath *pathMarkStart, *pathMarkStartPrev; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return 0; + + pathMarkStart = gtk_tree_model_get_path(model, &iterItem); + + pathMarkStartPrev = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE"); + if (pathMarkStartPrev) + gtk_tree_path_free(pathMarkStartPrev); + + iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)pathMarkStart); + + return 1; +} + +static char* gtkTreeGetMarkedAttrib(Ihandle* ih, const char* name_id) +{ + GtkTreeSelection* selection; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return 0; + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + if (gtk_tree_selection_iter_is_selected(selection, &iterItem)) + return "YES"; + else + return "NO"; +} + +static int gtkTreeSetMarkedAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeSelection* selection; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return 0; + + iupAttribSetStr(ih, "_IUP_IGNORE_SELECTION", "1"); + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + if (iupStrBoolean(value)) + gtk_tree_selection_select_iter(selection, &iterItem); + else + gtk_tree_selection_unselect_iter(selection, &iterItem); + + return 0; +} + +static int gtkTreeSetDelNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if (iupStrEqualNoCase(value, "SELECTED")) /* selected here means the specified one */ + { + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem; + GtkTreeIter iterParent; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return 0; + + if (!gtk_tree_model_iter_parent(model, &iterParent, &iterItem)) /* the root node can't be deleted */ + return 0; + + gtkTreeCallNodeRemoved(ih, model, &iterItem); + + /* deleting the specified node (and it's children) */ + gtk_tree_store_remove(GTK_TREE_STORE(model), &iterItem); + } + else if(iupStrEqualNoCase(value, "CHILDREN")) /* children of the specified one */ + { + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeIter iterItem, iterChild; + int hasChildren; + + if (!gtkTreeFindNodeFromString(ih, model, name_id, &iterItem)) + return 0; + + hasChildren = gtk_tree_model_iter_children(model, &iterChild, &iterItem); + + /* deleting the selected node's children */ + while(hasChildren) + { + gtkTreeCallNodeRemoved(ih, model, &iterChild); + hasChildren = gtk_tree_store_remove(GTK_TREE_STORE(model), &iterChild); + } + } + else if(iupStrEqualNoCase(value, "MARKED")) /* Delete the array of marked nodes */ + { + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + GList *rr_list = NULL; + GList *node; + + gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc)gtkTreeSelected_Iter_Func, &rr_list); + + for(node = rr_list; node != NULL; node = node->next) + { + GtkTreePath* path = gtk_tree_row_reference_get_path(node->data); + if (path) + { + GtkTreeIter iterItem; + if (gtk_tree_model_get_iter(model, &iterItem, path)) + { + gtkTreeCallNodeRemoved(ih, model, &iterItem); + gtk_tree_store_remove(GTK_TREE_STORE(model), &iterItem); + } + gtk_tree_path_free(path); + } + gtk_tree_row_reference_free(node->data); + } + g_list_free(rr_list); + } + + return 0; +} + +static int gtkTreeSetRenameAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->show_rename) + { + GtkTreePath* path; + IFni cbShowRename = (IFni)IupGetCallback(ih, "SHOWRENAME_CB"); + GtkTreeViewColumn *focus_column; + + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, &focus_column); + + if (cbShowRename) + { + GtkTreeIter iterItem; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + gtk_tree_model_get_iter(model, &iterItem, path); + cbShowRename(ih, gtkTreeGetNodeId(ih, iterItem)); + } + + gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), path, focus_column, TRUE); + gtk_tree_path_free(path); + } + else + { + IFnis cbRenameNode = (IFnis)IupGetCallback(ih, "RENAMENODE_CB"); + if (cbRenameNode) + { + GtkTreePath* path; + GtkTreeIter iterItem; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &path, NULL); + gtk_tree_model_get_iter(model, &iterItem, path); + gtk_tree_path_free(path); + cbRenameNode(ih, gtkTreeGetNodeId(ih, iterItem), gtkTreeGetTitle(model, iterItem)); + } + } + + (void)value; + return 0; +} + +static int gtkTreeSetImageExpandedAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int kind; + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GdkPixbuf* pixExpand = iupImageGetImage(value, ih, 0); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem)) + return 0; + + gtk_tree_model_get(GTK_TREE_MODEL(store), &iterItem, IUPGTK_TREE_KIND, &kind, -1); + + if (kind == ITREE_BRANCH) + { + if (pixExpand) + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE_EXPANDED, pixExpand, + IUPGTK_TREE_HAS_IMAGE_EXPANDED, TRUE, -1); + else + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE_EXPANDED, ih->data->def_image_expanded, + IUPGTK_TREE_HAS_IMAGE_EXPANDED, FALSE, -1); + } + + return 1; +} + +static int gtkTreeSetImageAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + GtkTreeStore* store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle))); + GdkPixbuf* pixImage = iupImageGetImage(value, ih, 0); + GtkTreeIter iterItem; + if (!gtkTreeFindNodeFromString(ih, GTK_TREE_MODEL(store), name_id, &iterItem)) + return 0; + + if (pixImage) + { + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE, pixImage, + IUPGTK_TREE_HAS_IMAGE, TRUE, -1); + } + else + { + int kind; + gtk_tree_model_get(GTK_TREE_MODEL(store), &iterItem, IUPGTK_TREE_KIND, &kind, -1); + if (kind == ITREE_BRANCH) + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_collapsed, + IUPGTK_TREE_HAS_IMAGE, FALSE, -1); + else + gtk_tree_store_set(store, &iterItem, IUPGTK_TREE_IMAGE, ih->data->def_image_leaf, + IUPGTK_TREE_HAS_IMAGE, FALSE, -1); + } + + return 1; +} + +static int gtkTreeSetImageBranchExpandedAttrib(Ihandle* ih, const char* value) +{ + GtkTreeIter iterRoot; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + ih->data->def_image_expanded = iupImageGetImage(value, ih, 0); + + gtk_tree_model_get_iter_first(model, &iterRoot); + + /* Update all images, starting at root node */ + gtkTreeUpdateImages(ih, model, iterRoot, ITREE_UPDATEIMAGE_EXPANDED); + + return 1; +} + +static int gtkTreeSetImageBranchCollapsedAttrib(Ihandle* ih, const char* value) +{ + GtkTreeIter iterRoot; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + ih->data->def_image_collapsed = iupImageGetImage(value, ih, 0); + + gtk_tree_model_get_iter_first(model, &iterRoot); + + /* Update all images, starting at root node */ + gtkTreeUpdateImages(ih, model, iterRoot, ITREE_UPDATEIMAGE_COLLAPSED); + + return 1; +} + +static int gtkTreeSetImageLeafAttrib(Ihandle* ih, const char* value) +{ + GtkTreeIter iterRoot; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + ih->data->def_image_leaf = iupImageGetImage(value, ih, 0); + + gtk_tree_model_get_iter_first(model, &iterRoot); + + /* Update all images, starting at root node */ + gtkTreeUpdateImages(ih, model, iterRoot, ITREE_UPDATEIMAGE_LEAF); + + return 1; +} + +static int gtkTreeSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + + GtkScrolledWindow* scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (scrolled_window) + { + /* ignore given value, must use only from parent for the scrollbars */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + if (iupStrToRGB(parent_value, &r, &g, &b)) + { + GtkWidget* sb; + + if (!GTK_IS_SCROLLED_WINDOW(scrolled_window)) + scrolled_window = (GtkScrolledWindow*)iupAttribGet(ih, "_IUPGTK_SCROLLED_WINDOW"); + + iupgtkBaseSetBgColor((GtkWidget*)scrolled_window, r, g, b); + +#if GTK_CHECK_VERSION(2, 8, 0) + sb = gtk_scrolled_window_get_hscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); + + sb = gtk_scrolled_window_get_vscrollbar(scrolled_window); + if (sb) iupgtkBaseSetBgColor(sb, r, g, b); +#endif + } + } + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + { + GtkCellRenderer* renderer_txt = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_TEXT"); + GtkCellRenderer* renderer_img = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_IMG"); + GdkColor color; + iupgdkColorSet(&color, r, g, b); + g_object_set(G_OBJECT(renderer_txt), "cell-background-gdk", &color, NULL); + g_object_set(G_OBJECT(renderer_img), "cell-background-gdk", &color, NULL); + } + + iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */ + + /* no need to update internal image cache in GTK */ + + return 1; +} + +static int gtkTreeSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + iupgtkBaseSetFgColor(ih->handle, r, g, b); + + { + GtkCellRenderer* renderer_txt = (GtkCellRenderer*)iupAttribGet(ih, "_IUPGTK_RENDERER_TEXT"); + GdkColor color; + iupgdkColorSet(&color, r, g, b); + g_object_set(G_OBJECT(renderer_txt), "foreground-gdk", &color, NULL); + g_object_get(G_OBJECT(renderer_txt), "foreground-gdk", &color, NULL); + color.blue = 0; + } + + return 1; +} + +void iupdrvTreeUpdateMarkMode(Ihandle *ih) +{ + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + gtk_tree_selection_set_mode(selection, (ih->data->mark_mode==ITREE_MARK_SINGLE)? GTK_SELECTION_SINGLE: GTK_SELECTION_MULTIPLE); + + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && !ih->data->show_dragdrop) + { +#if GTK_CHECK_VERSION(2, 10, 0) + gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(ih->handle), TRUE); +#endif + } +} + + +/***********************************************************************************************/ + + +static void gtkTreeSetRenameCaretPos(GtkCellEditable *editable, const char* value) +{ + int pos = 1; + + if (iupStrToInt(value, &pos)) + { + if (pos < 1) pos = 1; + pos--; /* IUP starts at 1 */ + + gtk_editable_set_position(GTK_EDITABLE(editable), pos); + } +} + +static void gtkTreeSetRenameSelectionPos(GtkCellEditable *editable, const char* value) +{ + int start = 1, end = 1; + + if (iupStrToIntInt(value, &start, &end, ':') != 2) + return; + + if(start < 1 || end < 1) + return; + + start--; /* IUP starts at 1 */ + end--; + + gtk_editable_select_region(GTK_EDITABLE(editable), start, end); +} + +/*****************************************************************************/ +/* SIGNALS */ +/*****************************************************************************/ + +static void gtkTreeCellTextEditingStarted(GtkCellRenderer *cell, GtkCellEditable *editable, const gchar *path_string, Ihandle *ih) +{ + char* value; + GtkTreeIter iterItem; + PangoFontDescription* fontdesc = NULL; + GdkColor *color = NULL; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + + value = iupAttribGetStr(ih, "RENAMECARET"); + if (value) + gtkTreeSetRenameCaretPos(editable, value); + + value = iupAttribGetStr(ih, "RENAMESELECTION"); + if (value) + gtkTreeSetRenameSelectionPos(editable, value); + + gtk_tree_model_get_iter_from_string(model, &iterItem, path_string); + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_FONT, &fontdesc, -1); + if (fontdesc) + gtk_widget_modify_font(GTK_WIDGET(editable), fontdesc); + + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_COLOR, &color, -1); + if (color) + iupgtkBaseSetFgGdkColor(GTK_WIDGET(editable), color); + + (void)cell; +} + +static void gtkTreeCellTextEdited(GtkCellRendererText *cell, gchar *path_string, gchar *new_text, Ihandle* ih) +{ + GtkTreeModel* model; + GtkTreeIter iterItem; + IFnis cbRename; + + if (!new_text) + return; + + model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + if (!gtk_tree_model_get_iter_from_string(model, &iterItem, path_string)) + return; + + cbRename = (IFnis)IupGetCallback(ih, "RENAME_CB"); + if (cbRename) + { + if (cbRename(ih, gtkTreeGetNodeId(ih, iterItem), iupgtkStrConvertFromUTF8(new_text)) == IUP_IGNORE) + return; + } + + /* It is the responsibility of the application to update the model and store new_text at the position indicated by path. */ + gtk_tree_store_set(GTK_TREE_STORE(model), &iterItem, IUPGTK_TREE_TITLE, new_text, -1); + + (void)cell; +} + +static int gtkTreeCallDragDropCb(Ihandle* ih, GtkTreeIter *iterDrag, GtkTreeIter *iterDrop, int *is_ctrl) +{ + IFniiii cbDragDrop = (IFniiii)IupGetCallback(ih, "DRAGDROP_CB"); + int is_shift = 0; + char key[5]; + iupdrvGetKeyState(key); + if (key[0] == 'S') + is_shift = 1; + if (key[1] == 'C') + *is_ctrl = 1; + else + *is_ctrl = 0; + + if (cbDragDrop) + { + int drag_id = gtkTreeGetNodeId(ih, *iterDrag); + int drop_id = gtkTreeGetNodeId(ih, *iterDrop); + return cbDragDrop(ih, drag_id, drop_id, is_shift, *is_ctrl); + } + + return IUP_CONTINUE; /* allow to move by default if callback not defined */ +} + +static void gtkTreeDragDataReceived(GtkWidget *widget, GdkDragContext *context, gint x, gint y, + GtkSelectionData *selection_data, guint info, guint time, Ihandle* ih) +{ + GtkTreePath* pathDrag = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DRAGITEM"); + GtkTreePath* pathDrop = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DROPITEM"); + int accepted = FALSE; + int is_ctrl; + + if (pathDrag && pathDrop) + { + GtkTreeIter iterDrag, iterDrop, iterParent, iterNextParent; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + + gtk_tree_model_get_iter(model, &iterDrag, pathDrag); + gtk_tree_model_get_iter(model, &iterDrop, pathDrop); + + iterParent = iterDrop; + while(gtk_tree_model_iter_parent(model, &iterNextParent, &iterParent)) + { + if (iterNextParent.user_data == iterDrag.user_data) + goto gtkTreeDragDataReceived_FINISH; + iterParent = iterNextParent; + } + + accepted = TRUE; + + if (gtkTreeCallDragDropCb(ih, &iterDrag, &iterDrop, &is_ctrl) == IUP_CONTINUE) + { + GtkTreeIter iterNewItem; + + /* Copy the dragged item to the new position. */ + gtkTreeCopyNode(ih, model, &iterDrag, &iterDrop, &iterNewItem, is_ctrl); + + if (!is_ctrl) + { + /* do not delete the user data, we copy the references in CopyNode */ + gtk_tree_store_remove(GTK_TREE_STORE(model), &iterDrag); + } + + /* set focus and selection */ + { + GtkTreePath *pathNew; + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + + pathNew = gtk_tree_model_get_path(model, &iterNewItem); + gtk_tree_selection_select_path(selection, pathNew); + + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(ih->handle), pathNew, NULL, FALSE, 0, 0); + gtk_tree_view_set_cursor(GTK_TREE_VIEW(ih->handle), pathNew, NULL, FALSE); + + gtk_tree_path_free(pathNew); + } + } + } + +gtkTreeDragDataReceived_FINISH: + if (pathDrag) gtk_tree_path_free(pathDrag); + if (pathDrop) gtk_tree_path_free(pathDrop); + + iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", NULL); + iupAttribSetStr(ih, "_IUPTREE_DROPITEM", NULL); + + gtk_drag_finish(context, accepted, (context->action == GDK_ACTION_MOVE), time); + + (void)widget; + (void)info; + (void)x; + (void)y; + (void)selection_data; +} + +static gboolean gtkTreeDragDrop(GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, Ihandle* ih) +{ + GtkTreePath* path; + GtkTreeViewDropPosition pos; + GdkAtom target = GDK_NONE; + + /* unset any highlight row */ + gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW(widget), NULL, GTK_TREE_VIEW_DROP_BEFORE); + + if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, &pos)) + { + if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) && + (gtk_tree_path_compare(path, (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DRAGITEM")) != 0)) + { + target = gtk_drag_dest_find_target(widget, context, gtk_drag_dest_get_target_list(widget)); + if (target != GDK_NONE) + { + iupAttribSetStr(ih, "_IUPTREE_DROPITEM", (char*)path); + gtk_drag_get_data(widget, context, target, time); + return TRUE; + } + } + } + + (void)widget; + return FALSE; +} + +static void gtkTreeDragLeave(GtkWidget *widget, GdkDragContext *context, guint time) +{ + /* unset any highlight row */ + gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(widget), NULL, GTK_TREE_VIEW_DROP_BEFORE); + (void)context; + (void)time; +} + +static gboolean gtkTreeDragMotion(GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, Ihandle* ih) +{ + GtkTreePath* path; + GtkTreeViewDropPosition pos; + GtkTreePath* pathDrag = (GtkTreePath*)iupAttribGet(ih, "_IUPTREE_DRAGITEM"); + if (pathDrag && gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, &pos)) + { + if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) && + (gtk_tree_path_compare(path, pathDrag) != 0)) + { + gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(widget), path, pos); + gdk_drag_status(context, context->actions, time); + return TRUE; + } + + gtk_tree_path_free(path); + } + + (void)widget; + return FALSE; +} + +static void gtkTreeDragBegin(GtkWidget *widget, GdkDragContext *context, Ihandle* ih) +{ + int x = iupAttribGetInt(ih, "_IUPTREE_DRAG_X"); + int y = iupAttribGetInt(ih, "_IUPTREE_DRAG_Y"); + GtkTreePath* path; + GtkTreeViewDropPosition pos; + if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, &pos)) + { + if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER)) + { + GdkPixmap* pixmap; + iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", (char*)path); + + pixmap = gtk_tree_view_create_row_drag_icon(GTK_TREE_VIEW(ih->handle), path); + gtk_drag_source_set_icon(widget, gtk_widget_get_colormap(widget), pixmap, NULL); + g_object_unref(pixmap); + return; + } + } + + (void)context; + (void)widget; +} + +static void gtkTreeSelectionChanged(GtkTreeSelection* selection, Ihandle* ih) +{ + IFnii cbSelec; + int is_ctrl = 0; + + if (ih->data->mark_mode == ITREE_MARK_MULTIPLE) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[0] == 'S') + return; + else if (key[1] == 'C') + is_ctrl = 1; + + if (iupAttribGetInt(ih, "_IUPTREE_EXTENDSELECT")==2 && !is_ctrl) + { + iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", NULL); + gtkTreeCallMultiSelectionCb(ih); + return; + } + } + + cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB"); + if (cbSelec) + { + int curpos = -1, is_selected = 0; + + if (iupAttribGet(ih, "_IUP_IGNORE_SELECTION")) + { + iupAttribSetStr(ih, "_IUP_IGNORE_SELECTION", NULL); + return; + } + + { + GtkTreeIter iterFocus; + GtkTreePath* pathFocus; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + gtk_tree_view_get_cursor(GTK_TREE_VIEW(ih->handle), &pathFocus, NULL); + if (pathFocus) + { + gtk_tree_model_get_iter(model, &iterFocus, pathFocus); + gtk_tree_path_free(pathFocus); + curpos = gtkTreeGetNodeId(ih, iterFocus); + is_selected = gtk_tree_selection_iter_is_selected(selection, &iterFocus); + } + } + + if (curpos == -1) + return; + + if (is_ctrl) + cbSelec(ih, curpos, is_selected); + else + { + int oldpos = iupAttribGetInt(ih, "_IUPTREE_OLDVALUE"); + if(oldpos != curpos) + { + cbSelec(ih, oldpos, 0); /* unselected */ + cbSelec(ih, curpos, 1); /* selected */ + + iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", curpos); + } + } + } +} + +static gboolean gtkTreeTestExpandRow(GtkTreeView* tree_view, GtkTreeIter *iterItem, GtkTreePath *path, Ihandle* ih) +{ + IFni cbBranchOpen = (IFni)IupGetCallback(ih, "BRANCHOPEN_CB"); + if (cbBranchOpen) + { + if (iupAttribGet(ih, "_IUPTREE_IGNORE_BRANCHOPEN_CB")) + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_BRANCHOPEN_CB", NULL); + return FALSE; + } + + if (cbBranchOpen(ih, gtkTreeGetNodeId(ih, *iterItem)) == IUP_IGNORE) + return TRUE; /* prevent the change */ + } + + (void)path; + (void)tree_view; + return FALSE; +} + +static gboolean gtkTreeTestCollapseRow(GtkTreeView* tree_view, GtkTreeIter *iterItem, GtkTreePath *path, Ihandle* ih) +{ + IFni cbBranchClose = (IFni)IupGetCallback(ih, "BRANCHCLOSE_CB"); + if (cbBranchClose) + { + if (cbBranchClose(ih, gtkTreeGetNodeId(ih, *iterItem)) == IUP_IGNORE) + return TRUE; + } + + (void)path; + (void)tree_view; + return FALSE; +} + +static void gtkTreeRowActived(GtkTreeView* tree_view, GtkTreePath *path, GtkTreeViewColumn *column, Ihandle* ih) +{ + GtkTreeIter iterItem; + GtkTreeModel* model; + int kind; /* used for nodes defined as branches, but do not have children */ + IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB"); + if (!cbExecuteLeaf) + return; + + model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + gtk_tree_model_get_iter(model, &iterItem, path); + gtk_tree_model_get(model, &iterItem, IUPGTK_TREE_KIND, &kind, -1); + + /* just to leaf nodes */ + if(gtk_tree_model_iter_has_child(model, &iterItem) == 0 && kind == ITREE_LEAF) + cbExecuteLeaf(ih, gtkTreeGetNodeId(ih, iterItem)); + + (void)column; + (void)tree_view; +} + +static int gtkTreeConvertXYToPos(Ihandle* ih, int x, int y) +{ + GtkTreePath* path; + if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(ih->handle), x, y, &path, NULL)) + { + GtkTreeIter iterItem; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + gtk_tree_model_get_iter(model, &iterItem, path); + gtk_tree_path_free (path); + return gtkTreeGetNodeId(ih, iterItem); + } + return -1; +} + +static gboolean gtkTreeButtonEvent(GtkWidget *treeview, GdkEventButton *evt, Ihandle* ih) +{ + if (iupgtkButtonEvent(treeview, evt, ih) == TRUE) + return TRUE; + + if (evt->type == GDK_BUTTON_PRESS && evt->button == 3) /* right single click */ + { + IFni cbRightClick = (IFni)IupGetCallback(ih, "RIGHTCLICK_CB"); + if (cbRightClick) + { + int id = gtkTreeConvertXYToPos(ih, (int)evt->x, (int)evt->y); + if (id != -1) + cbRightClick(ih, id); + return TRUE; + } + } + else if (evt->type == GDK_2BUTTON_PRESS && evt->button == 1) /* left double click */ + { + GtkTreePath *path; + + if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), (gint) evt->x, (gint) evt->y, &path, NULL, NULL, NULL)) + { + GtkTreeIter iter; + GtkTreeModel* model = gtk_tree_view_get_model(GTK_TREE_VIEW(ih->handle)); + int kind; /* used for nodes defined as branches, but do not have children */ + + gtk_tree_model_get_iter(model, &iter, path); + gtk_tree_model_get(model, &iter, IUPGTK_TREE_KIND, &kind, -1); + + if (kind == ITREE_BRANCH) + gtkTreeExpandItem(ih, path, -1); /* toggle */ + + gtk_tree_path_free(path); + } + } + else if (evt->type == GDK_BUTTON_RELEASE && evt->button == 1) /* left single release */ + { + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & GDK_SHIFT_MASK)) + gtkTreeCallMultiSelectionCb(ih); /* Multi Selection Callback */ + + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && + !(evt->state & GDK_SHIFT_MASK) && !(evt->state & GDK_CONTROL_MASK)) + { + if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT")) + iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", "2"); + } + } + else if (evt->type == GDK_BUTTON_PRESS && evt->button == 1) /* left single press */ + { + iupAttribSetInt(ih, "_IUPTREE_DRAG_X", (int)evt->x); + iupAttribSetInt(ih, "_IUPTREE_DRAG_Y", (int)evt->y); + + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && + !(evt->state & GDK_SHIFT_MASK) && !(evt->state & GDK_CONTROL_MASK)) + iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", "1"); + } + + return FALSE; +} + +static gboolean gtkTreeKeyReleaseEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & GDK_SHIFT_MASK)) + { + if (evt->keyval == GDK_Up || evt->keyval == GDK_Down || evt->keyval == GDK_Home || evt->keyval == GDK_End) + gtkTreeCallMultiSelectionCb(ih); /* Multi Selection Callback */ + } + + (void)widget; + return TRUE; +} + +static gboolean gtkTreeKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + if (iupgtkKeyPressEvent(widget, evt, ih) == TRUE) + return TRUE; + + if (evt->keyval == GDK_F2) + { + gtkTreeSetRenameAttrib(ih, NULL); + return TRUE; + } + else if (evt->keyval == GDK_Return || evt->keyval == GDK_KP_Enter) + { + gtkTreeOpenCloseEvent(ih); + return TRUE; + } + + return FALSE; +} + +static void gtkTreeEnableDragDrop(Ihandle* ih) +{ + const GtkTargetEntry row_targets[] = { + { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, 0 } + }; + + if (iupAttribGetBoolean(ih, "AUTODRAGDROP")) + { + gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW(ih->handle), + GDK_BUTTON1_MASK, + row_targets, + G_N_ELEMENTS(row_targets), + GDK_ACTION_MOVE|GDK_ACTION_COPY); + gtk_tree_view_enable_model_drag_dest (GTK_TREE_VIEW(ih->handle), + row_targets, + G_N_ELEMENTS(row_targets), + GDK_ACTION_MOVE|GDK_ACTION_COPY); + } + else + { + gtk_drag_source_set(ih->handle, GDK_BUTTON1_MASK, row_targets, G_N_ELEMENTS(row_targets), GDK_ACTION_MOVE|GDK_ACTION_COPY); + gtk_drag_dest_set(ih->handle, GDK_BUTTON1_MASK, row_targets, G_N_ELEMENTS(row_targets), GDK_ACTION_MOVE|GDK_ACTION_COPY); + + g_signal_connect(G_OBJECT(ih->handle), "drag-begin", G_CALLBACK(gtkTreeDragBegin), ih); + g_signal_connect(G_OBJECT(ih->handle), "drag-motion", G_CALLBACK(gtkTreeDragMotion), ih); + g_signal_connect(G_OBJECT(ih->handle), "drag-leave", G_CALLBACK(gtkTreeDragLeave), NULL); + g_signal_connect(G_OBJECT(ih->handle), "drag-drop", G_CALLBACK(gtkTreeDragDrop), ih); + g_signal_connect(G_OBJECT(ih->handle), "drag-data-received", G_CALLBACK(gtkTreeDragDataReceived), ih); + } +} + +/*****************************************************************************/ + +static int gtkTreeMapMethod(Ihandle* ih) +{ + GtkScrolledWindow* scrolled_window = NULL; + GtkTreeStore *store; + GtkCellRenderer *renderer_img, *renderer_txt; + GtkTreeSelection* selection; + GtkTreeViewColumn *column; + + store = gtk_tree_store_new(9, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, + G_TYPE_STRING, G_TYPE_INT, GDK_TYPE_COLOR, PANGO_TYPE_FONT_DESCRIPTION, G_TYPE_POINTER); + + ih->handle = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); + + g_object_unref(store); + + if (!ih->handle) + return IUP_ERROR; + + scrolled_window = (GtkScrolledWindow*)gtk_scrolled_window_new(NULL, NULL); + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)scrolled_window); + + /* Column and renderers */ + column = gtk_tree_view_column_new(); + iupAttribSetStr(ih, "_IUPGTK_COLUMN", (char*)column); + + renderer_img = gtk_cell_renderer_pixbuf_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column), renderer_img, FALSE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(column), renderer_img, "pixbuf", IUPGTK_TREE_IMAGE, + "pixbuf-expander-open", IUPGTK_TREE_IMAGE_EXPANDED, + "pixbuf-expander-closed", IUPGTK_TREE_IMAGE, + NULL); + iupAttribSetStr(ih, "_IUPGTK_RENDERER_IMG", (char*)renderer_img); + + renderer_txt = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(column), renderer_txt, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(column), renderer_txt, "text", IUPGTK_TREE_TITLE, + "is-expander", IUPGTK_TREE_KIND, + "font-desc", IUPGTK_TREE_FONT, + "foreground-gdk", IUPGTK_TREE_COLOR, + NULL); + iupAttribSetStr(ih, "_IUPGTK_RENDERER_TEXT", (char*)renderer_txt); + + if (ih->data->show_rename) + g_object_set(G_OBJECT(renderer_txt), "editable", TRUE, NULL); + + g_object_set(G_OBJECT(renderer_txt), "xpad", 0, NULL); + g_object_set(G_OBJECT(renderer_txt), "ypad", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(ih->handle), column); + + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(ih->handle), FALSE); + gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ih->handle), FALSE); + +#if GTK_CHECK_VERSION(2, 10, 0) + if (iupAttribGetBoolean(ih, "HIDELINES")) + gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(ih->handle), FALSE); + else + gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(ih->handle), TRUE); +#endif + +#if GTK_CHECK_VERSION(2, 12, 0) + if (iupAttribGetBoolean(ih, "HIDEBUTTONS")) + gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(ih->handle), FALSE); + else + gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(ih->handle), TRUE); +#endif + + if (ih->data->show_dragdrop) + gtkTreeEnableDragDrop(ih); + + gtk_container_add((GtkContainer*)scrolled_window, ih->handle); + gtk_widget_show((GtkWidget*)scrolled_window); + gtk_scrolled_window_set_shadow_type(scrolled_window, GTK_SHADOW_IN); + + gtk_scrolled_window_set_policy(scrolled_window, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ih->handle)); + + gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); + gtk_tree_view_set_reorderable(GTK_TREE_VIEW(ih->handle), FALSE); + + /* callbacks */ + g_signal_connect(selection, "changed", G_CALLBACK(gtkTreeSelectionChanged), ih); + + g_signal_connect(renderer_txt, "editing-started", G_CALLBACK(gtkTreeCellTextEditingStarted), ih); + g_signal_connect(renderer_txt, "edited", G_CALLBACK(gtkTreeCellTextEdited), ih); + + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + g_signal_connect(G_OBJECT(ih->handle), "motion-notify-event",G_CALLBACK(iupgtkMotionNotifyEvent), ih); + + g_signal_connect(G_OBJECT(ih->handle), "test-expand-row", G_CALLBACK(gtkTreeTestExpandRow), ih); + g_signal_connect(G_OBJECT(ih->handle), "test-collapse-row", G_CALLBACK(gtkTreeTestCollapseRow), ih); + g_signal_connect(G_OBJECT(ih->handle), "row-activated", G_CALLBACK(gtkTreeRowActived), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkTreeKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "key-release-event", G_CALLBACK(gtkTreeKeyReleaseEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-press-event", G_CALLBACK(gtkTreeButtonEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "button-release-event",G_CALLBACK(gtkTreeButtonEvent), ih); + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + + gtk_widget_realize((GtkWidget*)scrolled_window); + gtk_widget_realize(ih->handle); + + /* Initialize the default images */ + ih->data->def_image_leaf = iupImageGetImage("IMGLEAF", ih, 0); + ih->data->def_image_collapsed = iupImageGetImage("IMGCOLLAPSED", ih, 0); + ih->data->def_image_expanded = iupImageGetImage("IMGEXPANDED", ih, 0); + + gtkTreeAddRootNode(ih); + + /* configure for DRAG&DROP of files */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)gtkTreeConvertXYToPos); + + return IUP_NOERROR; +} + +void iupdrvTreeInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkTreeMapMethod; + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, gtkTreeSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, gtkTreeSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT); + + /* IupTree Attributes - GENERAL */ + iupClassRegisterAttribute(ic, "EXPANDALL", NULL, gtkTreeSetExpandAllAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INDENTATION", gtkTreeGetIndentationAttrib, gtkTreeSetIndentationAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "COUNT", gtkTreeGetCountAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupgtkSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPACING", iupTreeGetSpacingAttrib, gtkTreeSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "TOPITEM", NULL, gtkTreeSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + /* IupTree Attributes - IMAGES */ + iupClassRegisterAttributeId(ic, "IMAGE", NULL, gtkTreeSetImageAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "IMAGEEXPANDED", NULL, gtkTreeSetImageExpandedAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "IMAGELEAF", NULL, gtkTreeSetImageLeafAttrib, IUPAF_SAMEASSYSTEM, "IMGLEAF", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEBRANCHCOLLAPSED", NULL, gtkTreeSetImageBranchCollapsedAttrib, IUPAF_SAMEASSYSTEM, "IMGCOLLAPSED", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEBRANCHEXPANDED", NULL, gtkTreeSetImageBranchExpandedAttrib, IUPAF_SAMEASSYSTEM, "IMGEXPANDED", IUPAF_NO_INHERIT); + + /* IupTree Attributes - NODES */ + iupClassRegisterAttributeId(ic, "STATE", gtkTreeGetStateAttrib, gtkTreeSetStateAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "DEPTH", gtkTreeGetDepthAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "KIND", gtkTreeGetKindAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "PARENT", gtkTreeGetParentAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "COLOR", gtkTreeGetColorAttrib, gtkTreeSetColorAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "NAME", gtkTreeGetTitleAttrib, gtkTreeSetTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TITLE", gtkTreeGetTitleAttrib, gtkTreeSetTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "USERDATA", gtkTreeGetUserDataAttrib, gtkTreeSetUserDataAttrib, IUPAF_NO_STRING|IUPAF_NO_INHERIT); + + iupClassRegisterAttributeId(ic, "CHILDCOUNT", gtkTreeGetChildCountAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TITLEFONT", gtkTreeGetTitleFontAttrib, gtkTreeSetTitleFontAttrib, IUPAF_NO_INHERIT); + + /* IupTree Attributes - MARKS */ + iupClassRegisterAttributeId(ic, "MARKED", gtkTreeGetMarkedAttrib, gtkTreeSetMarkedAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "MARK", NULL, gtkTreeSetMarkAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "STARTING", NULL, gtkTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "MARKSTART", NULL, gtkTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute (ic, "VALUE", gtkTreeGetValueAttrib, gtkTreeSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupTree Attributes - ACTION */ + iupClassRegisterAttributeId(ic, "DELNODE", NULL, gtkTreeSetDelNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RENAME", NULL, gtkTreeSetRenameAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "MOVENODE", NULL, gtkTreeSetMoveNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "COPYNODE", NULL, gtkTreeSetCopyNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "FINDUSERDATA", gtkTreeGetFindUserDataAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute (ic, "AUTODRAGDROP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT); +} diff --git a/iup/src/gtk/iupgtk_val.c b/iup/src/gtk/iupgtk_val.c new file mode 100755 index 0000000..018af83 --- /dev/null +++ b/iup/src/gtk/iupgtk_val.c @@ -0,0 +1,208 @@ +/** \file + * \brief Valuator Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_val.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_key.h" + +#include "iupgtk_drv.h" + + +void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h) +{ + if (ih->data->type == IVAL_HORIZONTAL) + { + *w = 20; + *h = 35; + } + else + { + *w = 35; + *h = 20; + } +} + +static int gtkValSetStepAttrib(Ihandle* ih, const char* value) +{ + ih->data->step = atof(value); + gtk_range_set_increments(GTK_RANGE(ih->handle), ih->data->step, ih->data->pagestep); + return 0; /* do not store value in hash table */ +} + +static int gtkValSetPageStepAttrib(Ihandle* ih, const char* value) +{ + ih->data->pagestep = atof(value); + gtk_range_set_increments(GTK_RANGE(ih->handle), ih->data->step, ih->data->pagestep); + return 0; /* do not store value in hash table */ +} + +static int gtkValSetValueAttrib(Ihandle* ih, const char* value) +{ + double fval; + ih->data->val = atof(value); + fval = (ih->data->val-ih->data->vmin)/(ih->data->vmax - ih->data->vmin); + gtk_range_set_value(GTK_RANGE(ih->handle), fval); + return 0; /* do not store value in hash table */ +} + + +/*********************************************************************************************/ + + +static gboolean gtkValChangeValue(GtkRange *range, GtkScrollType scroll, double fval, Ihandle *ih) +{ + double old_val = ih->data->val; + IFn cb; + + if (fval < 0.0) + gtk_range_set_value(GTK_RANGE(ih->handle), 0.0); + if (fval > 1.0) + gtk_range_set_value(GTK_RANGE(ih->handle), 1.0); + + ih->data->val = fval*(ih->data->vmax - ih->data->vmin) + ih->data->vmin; + iupValCropValue(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + { + if (ih->data->val == old_val) + return FALSE; + + cb(ih); + } + else + { + IFnd cb_old; + if (scroll == GTK_SCROLL_JUMP) /* scroll == 1 */ + cb_old = (IFnd)IupGetCallback(ih, "MOUSEMOVE_CB"); + else if((scroll >= GTK_SCROLL_STEP_BACKWARD) && (scroll <= GTK_SCROLL_END)) + cb_old = (IFnd)IupGetCallback(ih, "BUTTON_PRESS_CB"); + else + cb_old = (IFnd)IupGetCallback(ih, "BUTTON_RELEASE_CB"); + if (cb_old) + cb_old(ih, ih->data->val); + } + + if (fval < 0.0 || fval > 1.0) + return TRUE; + + (void)range; + return FALSE; +} + +static gboolean gtkValKeyPressEvent(GtkWidget *widget, GdkEventKey *evt, Ihandle *ih) +{ + if (iupgtkKeyPressEvent(widget, evt, ih) == TRUE) + return TRUE; + + /* change Home and End default behaviour */ + if (ih->data->inverted) + { + if (evt->keyval==GDK_Home || evt->keyval==GDK_KP_Home) + { + /* set to maximum */ + gtk_range_set_value(GTK_RANGE(ih->handle), 1.0); + gtkValChangeValue(GTK_RANGE(ih->handle), GTK_SCROLL_START, 1.0, ih); + return TRUE; + } + if (evt->keyval==GDK_End || evt->keyval==GDK_KP_End) + { + /* set to minimum */ + gtk_range_set_value(GTK_RANGE(ih->handle), 0.0); + gtkValChangeValue(GTK_RANGE(ih->handle), GTK_SCROLL_END, 0.0, ih); + return TRUE; + } + } + + return FALSE; +} + +/*********************************************************************************************/ + + +static int gtkValMapMethod(Ihandle* ih) +{ + GtkObject *adjustment; + + /* value, lower, upper, step_increment, page_increment, page_size */ + /* page_size value only makes a difference for scrollbar widgets */ + adjustment = gtk_adjustment_new (0, 0, 1.0, 0.01, 0.1, 0); + if (!adjustment) + return IUP_ERROR; + + if (ih->data->type == IVAL_HORIZONTAL) + ih->handle = gtk_hscale_new(GTK_ADJUSTMENT(adjustment)); + else + ih->handle = gtk_vscale_new(GTK_ADJUSTMENT(adjustment)); + + if (!ih->handle) + return IUP_ERROR; + + /* add to the parent, all GTK controls must call this. */ + iupgtkBaseAddToParent(ih); + + if (!iupAttribGetBoolean(ih, "CANFOCUS")) + GTK_WIDGET_FLAGS(ih->handle) &= ~GTK_CAN_FOCUS; + + g_signal_connect(G_OBJECT(ih->handle), "enter-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "leave-notify-event", G_CALLBACK(iupgtkEnterLeaveEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-in-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "focus-out-event", G_CALLBACK(iupgtkFocusInOutEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "show-help", G_CALLBACK(iupgtkShowHelp), ih); + + g_signal_connect(G_OBJECT(ih->handle), "key-press-event", G_CALLBACK(gtkValKeyPressEvent), ih); + g_signal_connect(G_OBJECT(ih->handle), "change-value", G_CALLBACK(gtkValChangeValue), ih); + + /* configure the scale */ + gtk_scale_set_draw_value(GTK_SCALE(ih->handle), FALSE); + gtk_range_set_range(GTK_RANGE(ih->handle), 0.0, 1.0); + + if (ih->data->inverted) + gtk_range_set_inverted(GTK_RANGE(ih->handle), TRUE); + + gtk_widget_realize(ih->handle); + + /* update a mnemonic in a label if necessary */ + iupgtkUpdateMnemonic(ih); + + return IUP_NOERROR; +} + +void iupdrvValInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = gtkValMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + + /* IupVal only */ + iupClassRegisterAttribute(ic, "VALUE", iupValGetValueAttrib, gtkValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PAGESTEP", iupValGetPageStepAttrib, gtkValSetPageStepAttrib, IUPAF_SAMEASSYSTEM, "0.1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "STEP", iupValGetStepAttrib, gtkValSetStepAttrib, IUPAF_SAMEASSYSTEM, "0.01", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWTICKS", NULL, NULL, NULL, NULL, IUPAF_WRITEONLY|IUPAF_READONLY); /* showticks is not supported in GTK */ +} diff --git a/iup/src/iup.c b/iup/src/iup.c new file mode 100755 index 0000000..df4bf34 --- /dev/null +++ b/iup/src/iup.c @@ -0,0 +1,86 @@ +/** \file + * \brief miscelaneous functions + * + * See Copyright Notice in "iup.h" + */ + +/*! \mainpage IUP + * + * \section intro Introduction + * + * Internal SDK documentation of the IUP library, automatically generated using Doxygen (http://www.doxygen.org/). + * + * \section codestd Code Standards + * + * \subsection func Function Names (prefix format) + * - IupFunc - User API, implemented in the core + * - iupFunc - Internal Core API, implemented in the core, used in the core or in driver + * - iupxxxFunc - Windows Internal API, implemented in driver xxx, used in driver xxx + * - iupdrvFunc - Driver API, implemented in driver, used in the core or driver + * - xxxFunc - Driver xxx local functions + * + * \subsection glob Globais Variables (lower case format) + * - iupxxx_var + * + * \subsection loc Local Variables (lower case format, using module name) + * - iyyy_var + * + * \subsection fil File Names + * - iupyyy.h - public headers + * - iup_yyy.h/c - core + * - iupxxx_yyy.h/c - driver + * + * \subsection strc Structures + * - Iyyy + * + * \subsection com File Comments (at start) + * - Check an existant file for example. + * + * \subsection inc Include Defines + * - __IUPXXX_H (same file name, upper case, "__" preffix and replace "." by "_") + * + * \subsection doc Documentation + * - In the header, using Doxygen commands. + * - Check an existant header for example. + * + */ + +/** \defgroup util Utilities + */ + +/** \defgroup cpi Control SDK + * \par + *

Control Creation Guide

+ */ + +#include + +#include "iup.h" + +/* This appears only here to avoid changing the iup.h header fo bug fixes */ +#define IUP_VERSION_FIX " RC3" +#define IUP_VERSION_FIX_NUMBER 0 + +const char iup_ident[] = + "$IUP: " IUP_VERSION IUP_VERSION_FIX " " IUP_COPYRIGHT " $\n" + "$URL: www.tecgraf.puc-rio.br/iup $\n"; + +/* Using this, if you look for the string TECVER, you will find also the library version. */ +const char *iup_tecver = "TECVERID.str:Iup:LIB:" IUP_VERSION IUP_VERSION_FIX; + +char* IupVersion(void) +{ + (void)iup_tecver; + (void)iup_ident; + return IUP_VERSION IUP_VERSION_FIX; +} + +char* IupVersionDate(void) +{ + return IUP_VERSION_DATE; +} + +int IupVersionNumber(void) +{ + return IUP_VERSION_NUMBER+IUP_VERSION_FIX_NUMBER; +} diff --git a/iup/src/iup.def b/iup/src/iup.def new file mode 100755 index 0000000..d0dcfbd --- /dev/null +++ b/iup/src/iup.def @@ -0,0 +1,353 @@ +EXPORTS +IupAlarm +IupAppend +IupButton +IupCanvas +IupClose +IupCreate +IupCreatep +IupCreatev +IupDestroy +IupDetach +IupDialog +IupFileDlg +IupFill +IupFlush +IupFrame +IupGetActionName +IupGetAllDialogs +IupGetAllNames +IupGetAttribute +IupGetAttributes +IupGetDialog +IupGetFile +IupGetFloat +IupGetFocus +IupGetFunction +IupGetGlobal +IupGetHandle +IupGetInt +IupGetLanguage +IupGetName +IupHbox +IupHelp +IupImage +IupHide +IupItem +IupLabel +IupList +IupListDialog +IupLoad +IupLoadBuffer +IupLoopStep +IupMainLoop +IupMap +IupMapFont +IupMenu +IupMessage +IupMessagef +IupMultiLine +IupNextField +IupOpen +IupPopup +IupPreviousField +IupRadio +IupScanf +IupSeparator +IupSetAttribute +IupSetAttributes +IupSetfAttribute +IupSetAtt +IupSetFocus +IupSetFunction +IupSetGlobal +IupSetHandle +IupSetLanguage +IupShow +IupShowXY +IupStoreAttribute +IupStoreGlobal +IupSubmenu +IupText +IupToggle +IupUnMapFont +IupUser +IupVbox +IupVersion +IupVersionDate +IupZbox +IupTimer +IupClipboard +IupGetNextChild +IupGetBrother +IupGetParent +IupVersionNumber +IupRefresh +IupGetText +IupVboxv +IupZboxv +IupHboxv +IupMenuv +IupSetCallback +IupGetCallback +IupGetChild +IupGetChildPos +IupGetChildCount +IupGetAllAttributes +IupSetAttributeHandle +IupGetAttributeHandle +IupExitLoop +IupUpdate +IupRedraw +IupImageRGB +IupImageRGBA +IupUnmap +IupReparent +IupMessageDlg +IupColorDlg +IupFontDlg +IupSbox +IupSpin +IupSpinbox +IupCboxv +IupCbox +IupVal +IupProgressBar +IupTabs +IupTabsv +IupGetClassAttributes +IupSetClassDefaultAttribute +IupSaveClassAttributes +IupGetColor +IupGetParam +IupGetParamv +iupGetParamType +iupGetParamCount +IupNormalizer +IupNormalizerv +IupGetClassType +IupGetClassName +IupInsert +IupMainLoopLevel +IupGetDialogChild +IupConvertXYToPos +IupTextConvertLinColToPos +IupTextConvertPosToLinCol +IupUpdateChildren +IupTreeSetAttribute +IupTreeStoreAttribute +IupTreeGetAttribute +IupTreeGetInt +IupTreeGetFloat +IupTreeSetfAttribute +IupTree +IupTreeGetId +IupTreeGetUserId +IupTreeSetUserId +IupSaveImageAsText + +iupdrvSetVisible +iupdrvSetStandardFontAttrib +iupdrvSetCurrentDirectory +iupdrvSetActive +iupdrvScreenToClient +iupdrvReparent +iupdrvMakeDirectory +iupdrvIsVisible +iupdrvIsFile +iupdrvIsDirectory +iupdrvIsActive +iupdrvGetWindowDecor +iupdrvGetUserName +iupdrvGetSystemVersion +iupdrvGetSystemName +iupdrvGetSystemFont +iupdrvGetScrollbarSize +iupdrvGetScreenSize +iupdrvGetScreenDepth +iupdrvGetKeyState +iupdrvGetFullSize +iupdrvGetDisplay +iupdrvGetCursorPos +iupdrvGetCurrentDirectory +iupdrvGetComputerName +iupdrvFontGetStringWidth +iupdrvFontGetMultiLineStringSize +iupdrvFontGetCharSize +iupdrvDrawFocusRect +iupdrvDisplayUpdate +iupdrvDisplayRedraw +iupdrvBaseUnMapMethod +iupdrvBaseSetZorderAttrib +iupdrvBaseSetTipVisibleAttrib +iupdrvBaseSetTipAttrib +iupdrvBaseSetCursorAttrib +iupdrvBaseLayoutUpdateMethod +iupdrvBaseGetYAttrib +iupdrvBaseGetXAttrib +iupdrvBaseGetClientSizeAttrib +iupdrvActivate +iupdrvImageCreateImageRaw +iupdrvImageGetRawInfo +iupdrvImageGetRawData +iupdrvImageDestroy +iupVersionDlg +iupTableSetFunc +iupTableSet +iupTableRemoveCurr +iupTableRemove +iupTableNext +iupTableGetTyped +iupTableGetFunc +iupTableGetCurr +iupTableGet +iupTableFirst +iupTableDestroy +iupTableCreateSized +iupTableCreate +iupTableCount +iupTableClear +iupStrToUnix +iupStrToStrStr +iupStrToRGB +iupStrToRGBA +iupStrToMac +iupStrToIntInt +iupStrToInt +iupStrToFloatFloat +iupStrToFloat +iupStrToDos +iupStrReplace +iupStrRemove +iupStrProcessMnemonic +iupStrNextLine +iupStrMessageShowError +iupStrMessageGet +iupStrLower +iupStrLineCount +iupStrInsert +iupStrGetMemoryCopy +iupStrGetMemory +iupStrFileMakeFileName +iupStrFileGetTitle +iupStrFileGetPath +iupStrFileGetExt +iupStrEqualPartial +iupStrEqualNoCase +iupStrEqual +iupStrDup +iupStrCountChar +iupStrCopyUntil +iupStrCopyN +iupStrBoolean +iupSetFontStyleAttrib +iupSetFontSizeAttrib +iupSetFontAttrib +iupRegisterFindClass +iupRegisterClass +iupObjectGetParamList +iupObjectCheck +iupMaskDestroy +iupMaskCreateInt +iupMaskCreateFloat +iupMaskCreate +iupMaskCheck +iupKeyNameToCode +iupKeyForEach +iupKeyCodeToName +iupKeyCanCaps +iupKeyCallKeyPressCb +iupKeyCallKeyCb +iupKeyProcessNavigation +iupImageStockSet +iupImageStockLoad +iupImageColorMakeInactive +iupGetFontStyleAttrib +iupGetFontSizeAttrib +iupGetFontFaceAttrib +iupGetFontAttrib +iupFontParseX +iupFontParseWin +iupFontParsePango +iupFocusCanAccept +iupError +iupGlobalIsPointer +iupDlgListVisibleInc +iupDlgListVisibleDec +iupDlgListVisibleCount +iupDlgListRemove +iupDlgListNext +iupDlgListFirst +iupDlgListAdd +iupDialogGetClass +iupDataEntry +iupClassRelease +iupClassRegisterCallback +iupClassRegisterAttributeId +iupClassRegisterAttribute +iupClassRegisterGetAttribute +iupClassObjectUnMap +iupClassObjectSetChildrenPosition +iupClassObjectSetChildrenCurrentSize +iupClassObjectSetAttribute +iupClassObjectMap +iupClassObjectLayoutUpdate +iupClassObjectGetInnerContainer +iupClassObjectGetAttribute +iupClassObjectGetAttributeInfo +iupClassObjectAttribIsNotString +iupClassObjectDlgPopup +iupClassObjectDestroy +iupClassObjectCreate +iupClassObjectComputeNaturalSize +iupClassObjectChildRemoved +iupClassObjectChildAdded +iupClassNew +iupClassCallbackGetFormat +iupChildTreeGetNativeParentHandle +iupChildTreeGetNativeParent +iupChildTreeAppend +iupCanvasGetClass +iupCallKillFocusCb +iupCallGetFocusCb +iupBaseSetVisibleAttrib +iupBaseSetSizeAttrib +iupBaseSetRasterSizeAttrib +iupBaseSetActiveAttrib +iupBaseRegisterVisualAttrib +iupBaseRegisterCommonAttrib +iupBaseGetWidAttrib +iupBaseGetVisibleAttrib +iupBaseGetSizeAttrib +iupBaseGetScrollbar +iupBaseGetRasterSizeAttrib +iupBaseGetActiveAttrib +iupBaseContainerUpdateExpand +iupBaseContainerGetExpandAttrib +iupBaseTypeVoidMapMethod +iupBaseSetPosition +iupBaseComputeNaturalSize +iupBaseSetCurrentSize +iupBaseCallValueChangedCb +iupAttribStoreStr +iupAttribSetStrf +iupAttribSetStr +iupAttribSetInt +iupAttribSetHandleName +iupAttribSetFloat +iupAttribIsPointer +iupAttribGet +iupAttribGetInherit +iupAttribGetInheritNativeParent +iupAttribGetStr +iupAttribGetInt +iupAttribGetBoolean +iupAttribGetFloat +iupAssert +iupArrayInc +iupArrayGetData +iupArrayDestroy +iupArrayCreate +iupArrayCount +iupArrayAdd +iupSaveImageAsText diff --git a/iup/src/iup.dep b/iup/src/iup.dep new file mode 100644 index 0000000..63394d5 --- /dev/null +++ b/iup/src/iup.dep @@ -0,0 +1,334 @@ +$(OBJDIR)/iup_array.o: iup_array.c iup_array.h iup_assert.h +$(OBJDIR)/iup_callback.o: iup_callback.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_assert.h +$(OBJDIR)/iup_dlglist.o: iup_dlglist.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_dlglist.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_assert.h +$(OBJDIR)/iup_attrib.o: iup_attrib.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_childtree.h iup_str.h iup_ledlex.h iup_attrib.h \ + iup_assert.h +$(OBJDIR)/iup_focus.o: iup_focus.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_focus.h iup_assert.h iup_attrib.h \ + iup_str.h iup_drv.h +$(OBJDIR)/iup_font.o: iup_font.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_drvfont.h iup_assert.h iup_attrib.h \ + iup_class.h iup_table.h iup_classbase.h +$(OBJDIR)/iup_globalattrib.o: iup_globalattrib.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_table.h iup_globalattrib.h \ + iup_drv.h iup_drvfont.h iup_assert.h iup_str.h +$(OBJDIR)/iup_object.o: iup_object.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_assert.h iup_register.h iup_names.h +$(OBJDIR)/iup_key.o: iup_key.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_key.h iup_str.h \ + iup_object.h iup_class.h iup_table.h iup_classbase.h iup_drv.h \ + iup_focus.h +$(OBJDIR)/iup_layout.o: iup_layout.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_drv.h iup_attrib.h iup_str.h iup_layout.h \ + iup_assert.h +$(OBJDIR)/iup_ledlex.o: iup_ledlex.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_class.h iup_table.h iup_classbase.h \ + iup_ledlex.h iup_str.h iup_register.h +$(OBJDIR)/iup_names.o: iup_names.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_table.h iup_names.h iup_object.h \ + iup_class.h iup_classbase.h iup_assert.h +$(OBJDIR)/iup_open.o: iup_open.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_globalattrib.h iup_names.h iup_func.h \ + iup_drv.h iup_drvinfo.h iup_drvfont.h iup_predial.h iup_class.h \ + iup_table.h iup_classbase.h iup_register.h iup_key.h iup_image.h \ + iup_dlglist.h iup_assert.h iup_strmessage.h +$(OBJDIR)/iup_ledparse.o: iup_ledparse.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_ledlex.h iup_str.h iup_assert.h +$(OBJDIR)/iup_predial.o: iup_predial.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_predial.h iup_attrib.h iup_str.h \ + iup_strmessage.h +$(OBJDIR)/iup_register.o: iup_register.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_register.h iup_stdcontrols.h +$(OBJDIR)/iup_scanf.o: iup_scanf.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_predial.h iup_str.h iup_assert.h +$(OBJDIR)/iup_show.o: iup_show.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_layout.h iup_attrib.h iup_dialog.h iup_menu.h \ + iup_assert.h iup_str.h iup_drv.h iup_drvfont.h +$(OBJDIR)/iup_str.o: iup_str.c iup_str.h +$(OBJDIR)/iup_table.o: iup_table.c iup_table.h iup_str.h iup_assert.h +$(OBJDIR)/iup_func.o: iup_func.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_table.h iup_func.h iup_drv.h \ + iup_assert.h +$(OBJDIR)/iup_childtree.o: iup_childtree.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_dlglist.h iup_childtree.h iup_attrib.h iup_assert.h \ + iup_str.h iup_drv.h +$(OBJDIR)/iup.o: iup.c ../include/iup.h ../include/iupkey.h ../include/iupdef.h +$(OBJDIR)/iup_classattrib.o: iup_classattrib.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \ + iup_assert.h iup_register.h iup_globalattrib.h +$(OBJDIR)/iup_dialog.o: iup_dialog.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_class.h iup_table.h \ + iup_classbase.h iup_object.h iup_dlglist.h iup_layout.h iup_attrib.h \ + iup_drv.h iup_drvinfo.h iup_drvfont.h iup_focus.h iup_str.h \ + iup_dialog.h +$(OBJDIR)/iup_assert.o: iup_assert.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_assert.h iup_attrib.h iup_str.h \ + iup_strmessage.h +$(OBJDIR)/iup_canvas.o: iup_canvas.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_canvas.h +$(OBJDIR)/iup_messagedlg.o: iup_messagedlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_stdcontrols.h +$(OBJDIR)/iup_timer.o: iup_timer.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_str.h iup_stdcontrols.h iup_timer.h +$(OBJDIR)/iup_image.o: iup_image.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_image.h iup_assert.h \ + iup_stdcontrols.h +$(OBJDIR)/iup_label.o: iup_label.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_label.h iup_image.h +$(OBJDIR)/iup_fill.o: iup_fill.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_zbox.o: iup_zbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_colordlg.o: iup_colordlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h +$(OBJDIR)/iup_fontdlg.o: iup_fontdlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h +$(OBJDIR)/iup_filedlg.o: iup_filedlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h +$(OBJDIR)/iup_strmessage.o: iup_strmessage.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h iup_table.h +$(OBJDIR)/iup_menu.o: iup_menu.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_dialog.h iup_str.h iup_assert.h \ + iup_key.h iup_stdcontrols.h iup_drvinfo.h iup_menu.h +$(OBJDIR)/iup_frame.o: iup_frame.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_frame.h +$(OBJDIR)/iup_user.o: iup_user.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_stdcontrols.h +$(OBJDIR)/iup_button.o: iup_button.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_button.h iup_image.h +$(OBJDIR)/iup_radio.o: iup_radio.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_toggle.o: iup_toggle.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_toggle.h iup_image.h +$(OBJDIR)/iup_progressbar.o: iup_progressbar.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_progressbar.h +$(OBJDIR)/iup_text.o: iup_text.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h iup_array.h \ + iup_text.h iup_assert.h +$(OBJDIR)/iup_val.o: iup_val.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \ + iup_object.h iup_class.h iup_table.h iup_classbase.h iup_attrib.h \ + iup_str.h iup_drv.h iup_stdcontrols.h iup_layout.h iup_val.h +$(OBJDIR)/iup_box.o: iup_box.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h +$(OBJDIR)/iup_hbox.o: iup_hbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h +$(OBJDIR)/iup_vbox.o: iup_vbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h +$(OBJDIR)/iup_cbox.o: iup_cbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_class.o: iup_class.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \ + iup_assert.h +$(OBJDIR)/iup_classbase.o: iup_classbase.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h \ + iup_attrib.h iup_assert.h +$(OBJDIR)/iup_maskmatch.o: iup_maskmatch.c iup_maskparse.h iup_maskmatch.h +$(OBJDIR)/iup_mask.o: iup_mask.c iup_maskparse.h iup_mask.h iup_str.h +$(OBJDIR)/iup_maskparse.o: iup_maskparse.c iup_maskparse.h iup_maskmatch.h +$(OBJDIR)/iup_tabs.o: iup_tabs.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_image.h iup_tabs.h +$(OBJDIR)/iup_spin.o: iup_spin.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h \ + iup_childtree.h +$(OBJDIR)/iup_list.o: iup_list.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_assert.h iup_object.h \ + iup_class.h iup_table.h iup_classbase.h iup_attrib.h iup_str.h \ + iup_drv.h iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h \ + iup_list.h +$(OBJDIR)/iup_getparam.o: iup_getparam.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h \ + iup_drvfont.h +$(OBJDIR)/iup_sbox.o: iup_sbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_stdcontrols.h iup_layout.h iup_childtree.h +$(OBJDIR)/iup_normalizer.o: iup_normalizer.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_array.h iup_stdcontrols.h +$(OBJDIR)/iup_tree.o: iup_tree.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_tree.h iup_assert.h +$(OBJDIR)/iupmot_common.o: mot/iupmot_common.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_key.h iup_str.h \ + iup_class.h iup_attrib.h iup_focus.h iup_drv.h iup_image.h \ + mot/iupmot_color.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_color.o: mot/iupmot_color.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h mot/iupmot_drv.h \ + mot/iupmot_color.h +$(OBJDIR)/iupmot_focus.o: mot/iupmot_focus.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_focus.h iup_attrib.h iup_assert.h iup_drv.h \ + mot/iupmot_drv.h +$(OBJDIR)/iupmot_font.o: mot/iupmot_font.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_attrib.h iup_array.h iup_object.h \ + iup_class.h iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h \ + iup_assert.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_key.o: mot/iupmot_key.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_key.h iup_str.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_loop.o: mot/iupmot_loop.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_open.o: mot/iupmot_open.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_str.h iup_drv.h iup_globalattrib.h mot/iupmot_drv.h \ + mot/iupmot_color.h +$(OBJDIR)/iupmot_tips.o: mot/iupmot_tips.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_attrib.h iup_str.h iup_drv.h iup_drvfont.h \ + mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupmot_globalattrib.o: mot/iupmot_globalattrib.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_str.h iup_drv.h \ + iup_drvinfo.h iup_strmessage.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_dialog.o: mot/iupmot_dialog.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_class.h iup_table.h \ + iup_classbase.h iup_object.h iup_class.h iup_childtree.h iup_dlglist.h \ + iup_attrib.h iup_drv.h iup_drvfont.h iup_drvinfo.h iup_focus.h \ + iup_str.h iup_dialog.h iup_image.h mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupmot_messagedlg.o: mot/iupmot_messagedlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h \ + iup_dialog.h iup_strmessage.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_timer.o: mot/iupmot_timer.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_assert.h \ + iup_timer.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_image.o: mot/iupmot_image.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_image.h iup_drvinfo.h \ + mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupmot_label.o: mot/iupmot_label.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_label.h iup_drv.h iup_image.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_canvas.o: mot/iupmot_canvas.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_drv.h iup_drvfont.h iup_canvas.h iup_key.h \ + mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupmot_colordlg.o: mot/iupmot_colordlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h \ + iup_dialog.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_fontdlg.o: mot/iupmot_fontdlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drvinfo.h \ + iup_dialog.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_filedlg.o: mot/iupmot_filedlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + iup_object.h iup_class.h iup_table.h iup_classbase.h iup_attrib.h \ + iup_str.h iup_drvinfo.h iup_dialog.h iup_strmessage.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_frame.o: mot/iupmot_frame.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_childtree.h iup_attrib.h iup_str.h iup_dialog.h \ + iup_image.h iup_drv.h iup_drvfont.h iup_stdcontrols.h mot/iupmot_drv.h \ + mot/iupmot_color.h +$(OBJDIR)/iupmot_button.o: mot/iupmot_button.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_button.h iup_drv.h iup_image.h iup_key.h mot/iupmot_drv.h +$(OBJDIR)/iupmot_toggle.o: mot/iupmot_toggle.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_toggle.h iup_drv.h iup_image.h iup_key.h mot/iupmot_drv.h \ + mot/iupmot_color.h +$(OBJDIR)/iupmot_progressbar.o: mot/iupmot_progressbar.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + iup_object.h iup_class.h iup_table.h iup_classbase.h iup_childtree.h \ + iup_attrib.h iup_dialog.h iup_str.h iup_progressbar.h iup_drv.h \ + mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupmot_clipboard.o: mot/iupmot_clipboard.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_image.h \ + mot/iupmot_drv.h +$(OBJDIR)/iupmot_text.o: mot/iupmot_text.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_mask.h iup_drv.h iup_array.h iup_text.h mot/iupmot_drv.h \ + mot/iupmot_color.h +$(OBJDIR)/iupmot_val.o: mot/iupmot_val.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_val.h iup_image.h iup_drv.h mot/iupmot_drv.h \ + mot/iupmot_color.h +$(OBJDIR)/iupmot_tabs.o: mot/iupmot_tabs.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_layout.h iup_childtree.h iup_attrib.h \ + iup_str.h iup_dialog.h iup_drv.h iup_drvfont.h iup_stdcontrols.h \ + iup_tabs.h iup_image.h mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupmot_menu.o: mot/iupmot_menu.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_label.h iup_drv.h iup_drvfont.h iup_image.h iup_menu.h \ + mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupmot_list.o: mot/iupmot_list.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_drv.h iup_mask.h iup_key.h iup_list.h mot/iupmot_drv.h \ + mot/iupmot_color.h +$(OBJDIR)/iupmot_tree.o: mot/iupmot_tree.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_dialog.h iup_layout.h \ + iup_attrib.h iup_str.h iup_drv.h iup_drvinfo.h iup_drvfont.h \ + iup_stdcontrols.h iup_key.h iup_image.h iup_array.h iup_tree.h \ + mot/iupmot_drv.h mot/iupmot_color.h +$(OBJDIR)/iupunix_help.o: mot/iupunix_help.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h +$(OBJDIR)/iupunix_info.o: mot/iupunix_info.c iup_str.h iup_drvinfo.h diff --git a/iup/src/iup_array.c b/iup/src/iup_array.c new file mode 100755 index 0000000..e7d4e12 --- /dev/null +++ b/iup/src/iup_array.c @@ -0,0 +1,108 @@ +/** \file + * \brief Simple expandable array + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup_array.h" +#include "iup_assert.h" + + +struct _Iarray +{ + void* data; + int count; + int max_count; + int elem_size; + int start_count; +}; + +Iarray* iupArrayCreate(int start_count, int elem_size) +{ + Iarray* iarray = (Iarray*)malloc(sizeof(Iarray)); + iarray->count = 0; + iarray->elem_size = elem_size; + iarray->max_count = start_count; + iarray->start_count = start_count; + iarray->data = malloc(elem_size*start_count); + iupASSERT(iarray->data!=NULL); + if (!iarray->data) + { + free(iarray); + return NULL; + } + memset(iarray->data, 0, elem_size*start_count); + return iarray; +} + +void iupArrayDestroy(Iarray* iarray) +{ + iupASSERT(iarray!=NULL); + if (!iarray) + return; + if (iarray->data) + { + memset(iarray->data, 0, iarray->elem_size*iarray->max_count); + free(iarray->data); + } + free(iarray); +} + +void* iupArrayGetData(Iarray* iarray) +{ + iupASSERT(iarray!=NULL); + if (!iarray) + return NULL; + return iarray->data; +} + +void* iupArrayInc(Iarray* iarray) +{ + iupASSERT(iarray!=NULL); + if (!iarray) + return NULL; + if (iarray->count >= iarray->max_count) + { + int old_count = iarray->max_count; + iarray->max_count += iarray->start_count; + iarray->data = realloc(iarray->data, iarray->elem_size*iarray->max_count); + iupASSERT(iarray->data!=NULL); + if (!iarray->data) + return NULL; + memset((unsigned char*)iarray->data + iarray->elem_size*old_count, 0, iarray->elem_size*(iarray->max_count-old_count)); + } + iarray->count++; + return iarray->data; +} + +void* iupArrayAdd(Iarray* iarray, int new_count) +{ + iupASSERT(iarray!=NULL); + if (!iarray) + return NULL; + if (iarray->count+new_count > iarray->max_count) + { + int old_count = iarray->max_count; + iarray->max_count += new_count; + iarray->data = realloc(iarray->data, iarray->elem_size*iarray->max_count); + iupASSERT(iarray->data!=NULL); + if (!iarray->data) + return NULL; + memset((unsigned char*)iarray->data + iarray->elem_size*old_count, 0, iarray->elem_size*(iarray->max_count-old_count)); + } + iarray->count += new_count; + return iarray->data; +} + +int iupArrayCount(Iarray* iarray) +{ + iupASSERT(iarray!=NULL); + if (!iarray) + return 0; + return iarray->count; +} diff --git a/iup/src/iup_array.h b/iup/src/iup_array.h new file mode 100755 index 0000000..b44e862 --- /dev/null +++ b/iup/src/iup_array.h @@ -0,0 +1,63 @@ +/** \file + * \brief Simple expandable array + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_ARRAY_H +#define __IUP_ARRAY_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** \defgroup iarray Simple Array + * \par + * Expandable array using a simple pointer. + * \par + * See \ref iup_array.h + * \ingroup util */ + +typedef struct _Iarray Iarray; + +/** Creates an array with an initial room for elements, and the element size. + * The array count starts at 0. And the maximum number of elements starts at the given count. + * The maximum number of elements is increased by the start count, every time it needs more memory. + * Must call \ref iupArrayInc to proper allocates memory. + * \ingroup iarray */ +Iarray* iupArrayCreate(int start_count, int elem_size); + +/** Destroys the array. + * \ingroup iarray */ +void iupArrayDestroy(Iarray* iarray); + +/** Returns the pointer that contains the array. + * \ingroup iarray */ +void* iupArrayGetData(Iarray* iarray); + +/** Increments the number of elements in the array. + * The array count starts at 0. + * If the maximum number of elements is reached, the memory allocated is increased by the initial start count. + * Returns the pointer that contains the array. + * \ingroup iarray */ +void* iupArrayInc(Iarray* iarray); + +/** Increments the number of elements in the array by a given count. + * The array count starts at 0. + * If the maximum number of elements is reached, the memory allocated is increased by the given count. + * Returns the pointer that contains the array. + * \ingroup iarray */ +void* iupArrayAdd(Iarray* iarray, int new_count); + +/** Returns the actual number of elements in the array. + * \ingroup iarray */ +int iupArrayCount(Iarray* iarray); + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_assert.c b/iup/src/iup_assert.c new file mode 100755 index 0000000..11de909 --- /dev/null +++ b/iup/src/iup_assert.c @@ -0,0 +1,54 @@ +/** \file + * \brief String Utilities + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_assert.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_strmessage.h" + +/* from iup_open, but it is not exported, used only here */ +int iupIsOpened(void); + +void iupError(const char* format, ...) +{ + static char msg[SHRT_MAX]; + va_list arglist; + va_start(arglist, format); + vsprintf(msg, format, arglist); + va_end(arglist); +#if IUP_ASSERT_CONSOLE + fprintf(stderr, msg); +#else + if (iupIsOpened()) + iupStrMessageShowError(NULL, msg); + else + fprintf(stderr, msg); +#endif +} + +void iupAssert(const char* expr, const char* file, int line, const char* func) +{ + if (func) + iupError("File: %s\n" + "Line: %d\n" + "Function: %s\n" + "Assertive: (%s)", + file, line, func, expr); + else + iupError("File: %s\n" + "Line: %d\n" + "Assertive: (%s)", + file, line, expr); +} diff --git a/iup/src/iup_assert.h b/iup/src/iup_assert.h new file mode 100755 index 0000000..03cec99 --- /dev/null +++ b/iup/src/iup_assert.h @@ -0,0 +1,68 @@ +/** \file + * \brief Assert Utilities + * + * See Copyright Notice in "iup.h" + */ + + +#ifndef __IUP_ASSERT_H +#define __IUP_ASSERT_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup assert Assert Utilities + * \par + * All functions of the main API (Iup***) calls iupASSERT to check the parameters. + * \par + * The IUP main library must be recompiled with the IUP_ASSERT define to enable these checks. + * iupASSERT is not called inside driver dependent functions nor in each control implementation, + * it is used only in the functions of the main API and in some utilities. + * \par + * See \ref iup_assert.h + * \ingroup util */ + +/* internal functions */ +void iupAssert(const char* expr, const char* file, int line, const char* func); +void iupError(const char* format, ...); + +/** \def iupASSERT + * \brief If the expression if false, + * displays a message with information of the source code where the assert happen. + * + * \param _expr The evaluated expression. + * \par + * It is a macro that calls a function only if IUP_ASSERT is defined. + * \ingroup assert */ + +/** \def iupERROR + * \brief Displays an error message. Also used by the iupASSERT. + * \par + * It is a macro that calls a function only if IUP_ASSERT is defined. + * \ingroup assert */ + +#ifndef IUP_ASSERT +#define iupASSERT(_expr) ((void)0) +#define iupERROR(_msg) ((void)0) +#define iupERROR1(_msg, _p1) ((void)0) +#define iupERROR2(_msg, _p1, _p2) ((void)0) +#else +#ifdef __FUNCTION__ +#define iupASSERT(_expr) ((_expr)? (void)0: iupAssert(#_expr, __FILE__, __LINE__, __FUNCTION__)) +#else +#define iupASSERT(_expr) ((_expr)? (void)0: iupAssert(#_expr, __FILE__, __LINE__, NULL)) +#endif /* __FUNCTION__ */ + +#define iupERROR(_msg) iupError(_msg) +#define iupERROR1(_msg, _p1) iupError(_msg, _p1) +#define iupERROR2(_msg, _p1, _p2) iupError(_msg, _p1, _p2) + +#endif /* IUP_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_attrib.c b/iup/src/iup_attrib.c new file mode 100755 index 0000000..2bbb80a --- /dev/null +++ b/iup/src/iup_attrib.c @@ -0,0 +1,673 @@ +/** \file + * \brief attributes enviroment management + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_str.h" +#include "iup_ledlex.h" +#include "iup_attrib.h" +#include "iup_assert.h" + + +int IupGetAllAttributes(Ihandle* ih, char** names, int n) +{ + char *name; + int i = 0; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return 0; + + if (!names || !n) + return iupTableCount(ih->attrib); + + name = iupTableFirst(ih->attrib); + while (name) + { + names[i] = name; + i++; + if (i == n) + break; + + name = iupTableNext(ih->attrib); + } + + return i; +} + +char* IupGetAttributes(Ihandle *ih) +{ + char *buffer; + char *name, *value; + char sb[128]; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + buffer = iupStrGetMemory(10240); + buffer[0] = 0; + + name = iupTableFirst(ih->attrib); + while (name) + { + if (!iupAttribIsInternal(name)) + { + if (buffer[0] != 0) + strcat(buffer,","); + + value = iupTableGetCurr(ih->attrib); + if (iupAttribIsPointer(ih, name)) + { + sprintf(sb, "%p", (void*) value); + value = sb; + } + strcat(buffer, name); + strcat(buffer,"=\""); + strcat(buffer, value); + strcat(buffer,"\""); + } + + name = iupTableNext(ih->attrib); + } + + return buffer; +} + +void iupAttribUpdateFromParent(Ihandle* ih) +{ + Iclass* ic = ih->iclass; + char *name = iupTableFirst(ic->attrib_func); + while (name) + { + /* if inheritable and NOT defined at the element */ + if (iupClassObjectCurAttribIsInherit(ic) && !iupAttribGet(ih, name)) + { + /* check in the parent tree if the attribute is defined */ + Ihandle* parent = ih->parent; + while (parent) + { + char* value = iupTableGet(parent->attrib, name); + if (value) + { + int inherit; + /* set on the class */ + iupClassObjectSetAttribute(ih, name, value, &inherit); + break; + } + parent = parent->parent; + } + } + + name = iupTableNext(ic->attrib_func); + } +} + +static void iAttribNotifyChildren(Ihandle *ih, const char* name, const char *value) +{ + int inherit; + Ihandle* child = ih->firstchild; + while (child) + { + if (!iupTableGet(child->attrib, name)) + { + /* set on the class */ + iupClassObjectSetAttribute(child, name, value, &inherit); + + if (inherit) /* inherit can be different for the child */ + iAttribNotifyChildren(child, name, value); + } + + child = child->brother; + } +} + +void iupAttribUpdate(Ihandle* ih) +{ + char** name_array; + char *name, *value; + int count, i = 0, inherit, store; + + count = iupTableCount(ih->attrib); + if (!count) + return; + + name_array = (char**)malloc(count * sizeof(char*)); + + /* store the names before updating so we can add or remove attributes during the update */ + name = iupTableFirst(ih->attrib); + while (name) + { + name_array[i] = name; + name = iupTableNext(ih->attrib); + i++; + } + + /* for all defined attributes updates the native system */ + for (i = 0; i < count; i++) + { + name = name_array[i]; + if (!iupAttribIsInternal(name)) + { + /* retrieve from the table */ + value = iupTableGet(ih->attrib, name); + + /* set on the class */ + store = iupClassObjectSetAttribute(ih, name, value, &inherit); + + if (inherit) + iAttribNotifyChildren(ih, name, value); + + if (store == 0) + iupTableRemove(ih->attrib, name); /* remove from the table acording to the class SetAttribute */ + } + } + + free(name_array); +} + +void IupSetAttribute(Ihandle *ih, const char* name, const char *value) +{ + int inherit; + + iupASSERT(name!=NULL); + if (!name) + return; + + if (!ih) + { + IupSetGlobal(name, value); + return; + } + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (iupAttribIsInternal(name)) + iupAttribSetStr(ih, name, value); + else + { + if (iupClassObjectSetAttribute(ih, name, value, &inherit)!=0) /* store strings and pointers */ + iupAttribSetStr(ih, name, value); + + if (inherit) + iAttribNotifyChildren(ih, name, value); + } +} + +void IupStoreAttribute(Ihandle *ih, const char* name, const char *value) +{ + int inherit; + + if (!name) + return; + + if (!ih) + { + IupStoreGlobal(name, value); + return; + } + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (iupAttribIsInternal(name)) + iupAttribStoreStr(ih, name, value); + else + { + if (iupClassObjectSetAttribute(ih, name, value, &inherit)==1) /* store only strings */ + iupAttribStoreStr(ih, name, value); + + if (inherit) + iAttribNotifyChildren(ih, name, value); + } +} + +char* IupGetAttribute(Ihandle *ih, const char* name) +{ + int inherit; + char *value, *def_value; + + iupASSERT(name!=NULL); + if (!name) + return NULL; + + if (!ih) + return IupGetGlobal(name); + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + value = iupClassObjectGetAttribute(ih, name, &def_value, &inherit); + if (!value) + value = iupAttribGet(ih, name); + + if (!value && !iupAttribIsInternal(name)) + { + if (inherit) + { + while (!value) + { + ih = ih->parent; + if (!ih) + break; + + value = iupAttribGet(ih, name); + } + } + + if (!value) + value = def_value; + } + + return value; +} + +float IupGetFloat(Ihandle *ih, const char* name) +{ + float f = 0; + char *value = IupGetAttribute(ih, name); + if (value) + iupStrToFloat(value, &f); + return f; +} + +int IupGetInt(Ihandle *ih, const char* name) +{ + int i = 0; + char *value = IupGetAttribute(ih, name); + if (value) + { + if (!iupStrToInt(value, &i)) + { + if (iupStrBoolean(value)) + i = 1; + } + } + return i; +} + +int IupGetInt2(Ihandle *ih, const char* name) +{ + int i1 = 0, i2 = 0; + char *value = IupGetAttribute(ih, name); + if (value) + { + if (!iupStrToIntInt(value, &i1, &i2, 'x')) + iupStrToIntInt(value, &i1, &i2, ':'); + } + return i2; +} + +int IupGetIntInt(Ihandle *ih, const char* name, int *i1, int *i2) +{ + int _i1 = 0, _i2 = 0; + char *value = IupGetAttribute(ih, name); + if (value) + { + int count = iupStrToIntInt(value, &_i1, &_i2, 'x'); + if (!count) count = iupStrToIntInt(value, &_i1, &_i2, ':'); + if (i1) *i1 = _i1; + if (i2) *i2 = _i2; + return count; + } + return 0; +} + +void IupSetfAttribute(Ihandle *ih, const char* name, const char* f, ...) +{ + static char value[SHRT_MAX]; + va_list arglist; + va_start(arglist, f); + vsprintf(value, f, arglist); + va_end(arglist); + IupStoreAttribute(ih, name, value); +} + +void iupAttribSetHandleName(Ihandle *ih) +{ + char str_name[100]; + sprintf(str_name, "_IUP_NAME(%p)", ih); + IupSetHandle(str_name, ih); +} + +void IupSetAttributeHandle(Ihandle *ih, const char* name, Ihandle *ih_named) +{ + int inherit; + char* handle_name; + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + iupASSERT(name!=NULL); + if (!name) + return; + + handle_name = IupGetName(ih_named); + if (!handle_name) + { + iupAttribSetHandleName(ih_named); + handle_name = IupGetName(ih_named); + } + + iupClassObjectSetAttribute(ih, name, handle_name, &inherit); + iupAttribStoreStr(ih, name, handle_name); +} + +Ihandle* IupGetAttributeHandle(Ihandle *ih, const char* name) +{ + char* handle_name = iupAttribGetInherit(ih, name); + if (handle_name) + return IupGetHandle(handle_name); + return NULL; +} + +Ihandle* IupSetAtt(const char* handle_name, Ihandle* ih, const char* name, ...) +{ + const char *attr, *val; + va_list arg; + va_start (arg, name); + attr = name; + while (attr) + { + val = va_arg(arg, const char*); + IupSetAttribute(ih, attr, val); + attr = va_arg(arg, const char*); + } + va_end(arg); + if (handle_name) IupSetHandle(handle_name, ih); + return ih; +} + +void iupAttribSetStr(Ihandle* ih, const char* name, const char* value) +{ + if (!value) + iupTableRemove(ih->attrib, name); + else + iupTableSet(ih->attrib, name, (void*)value, IUPTABLE_POINTER); +} + +void iupAttribStoreStr(Ihandle* ih, const char* name, const char* value) +{ + if (!value) + iupTableRemove(ih->attrib, name); + else + iupTableSet(ih->attrib, name, (void*)value, IUPTABLE_STRING); +} + +void iupAttribSetStrf(Ihandle *ih, const char* name, const char* f, ...) +{ + static char value[SHRT_MAX]; + va_list arglist; + va_start(arglist, f); + vsprintf(value, f, arglist); + va_end(arglist); + iupAttribStoreStr(ih, name, value); +} + +void iupAttribSetInt(Ihandle *ih, const char* name, int num) +{ + iupAttribSetStrf(ih, name, "%d", num); +} + +void iupAttribSetFloat(Ihandle *ih, const char* name, float num) +{ + iupAttribSetStrf(ih, name, "%f", (double)num); +} + +int iupAttribGetBoolean(Ihandle* ih, const char* name) +{ + char *value = iupAttribGetStr(ih, name); + if (value) + { + if (iupStrBoolean(value)) + return 1; + } + return 0; +} + +int iupAttribGetInt(Ihandle* ih, const char* name) +{ + int i = 0; + char *value = iupAttribGetStr(ih, name); + if (value) + { + if (!iupStrToInt(value, &i)) + { + if (iupStrBoolean(value)) + i = 1; + } + } + return i; +} + +float iupAttribGetFloat(Ihandle* ih, const char* name) +{ + float f = 0; + char *value = iupAttribGetStr(ih, name); + if (value) + iupStrToFloat(value, &f); + return f; +} + +char* iupAttribGet(Ihandle* ih, const char* name) +{ + if (!ih || !name) + return NULL; + return iupTableGet(ih->attrib, name); +} + +char* iupAttribGetStr(Ihandle* ih, const char* name) +{ + char* value; + if (!ih || !name) + return NULL; + + value = iupTableGet(ih->attrib, name); + + if (!value && !iupAttribIsInternal(name)) + { + int inherit; + char *def_value; + iupClassObjectGetAttributeInfo(ih, name, &def_value, &inherit); + + if (inherit) + { + while (!value) + { + ih = ih->parent; + if (!ih) + break; + + value = iupAttribGet(ih, name); + } + } + + if (!value) + value = def_value; + } + + return value; +} + +char* iupAttribGetInherit(Ihandle* ih, const char* name) +{ + char* value; + if (!ih || !name) + return NULL; + + value = iupAttribGet(ih, name); /* Check on the element first */ + while (!value) + { + ih = ih->parent; /* iheritance here independs on the attribute */ + if (!ih) + return NULL; + + value = iupAttribGet(ih, name); + } + return value; +} + +char* iupAttribGetInheritNativeParent(Ihandle* ih, const char* name) +{ + char* value; + if (!ih || !name) + return NULL; + + value = NULL; /* Do NOT check on the element first */ + while (!value) + { + ih = iupChildTreeGetNativeParent(ih); + if (!ih) + return NULL; + + value = iupAttribGet(ih, name); + } + + return value; +} + +static const char* env_str = NULL; +static void iAttribCapture(char* env_buffer, char* dlm) +{ + int i=0; + int c; + do + { + c = *env_str; ++env_str; + if (i < 256) + env_buffer[i++] = (char) c; + } while (c && !strchr(dlm,c)); + env_buffer[i-1]='\0'; /* discard delimiter */ +} + +static int iAttribToken(char* env_buffer) +{ + for (;;) + { + int c = *env_str; ++env_str; + switch (c) + { + case 0: + return IUPLEX_TK_END; + + case ' ': /* ignore whitespace */ + case '\t': + case '\n': + case '\r': + case '\f': + case '\v': + continue; + + case '=': /* attribuicao */ + return IUPLEX_TK_SET; + + case ',': + return IUPLEX_TK_COMMA; + + case '\"': /* string */ + iAttribCapture(env_buffer, "\""); + return IUPLEX_TK_NAME; + + default: + if (c > 32) /* identifier */ + { + --env_str; /* unget first character of env_buffer */ + iAttribCapture(env_buffer, "=, \t\n\r\f\v"); /* get env_buffer until delimiter */ + --env_str; /* unget delimiter */ + return IUPLEX_TK_NAME; + } + } + } +} + +static void iAttribParse(Ihandle *ih, const char* str) +{ + char env_buffer[256]; + char* name=NULL; + char* value=NULL; + char state = 'a'; /* get attribute */ + int end = 0; + + env_str = str; + + for (;;) + { + switch (iAttribToken(env_buffer)) + { + case IUPLEX_TK_END: /* procedimento igual ao IUPLEX_TK_COMMA */ + end = 1; + case IUPLEX_TK_COMMA: + if (name) + { + IupStoreAttribute(ih, name, value); + free(name); + } + if (end) + return; + name = value = NULL; + state = 'a'; + break; + + case IUPLEX_TK_SET: + state = 'v'; /* get value */ + break; + + case IUPLEX_TK_NAME: + if (state == 'a') + name = iupStrDup(env_buffer); + else + value = env_buffer; + break; + } + } +} + +Ihandle* IupSetAttributes(Ihandle *ih, const char* str) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return ih; + if (str) + iAttribParse(ih, str); + return ih; +} + +int iupAttribIsPointer(Ihandle* ih, const char* name) +{ + return iupClassObjectAttribIsNotString(ih, name); +} + +typedef int (*Iconvertxytopos)(Ihandle* ih, int x, int y); + +int IupConvertXYToPos(Ihandle* ih, int x, int y) +{ + Iconvertxytopos drvConvertXYToPos; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return -1; + + if (!ih->handle) + return -1; + + drvConvertXYToPos = (Iconvertxytopos)IupGetCallback(ih, "_IUP_XY2POS_CB"); + if (drvConvertXYToPos) + return drvConvertXYToPos(ih, x, y); + + return -1; +} diff --git a/iup/src/iup_attrib.h b/iup/src/iup_attrib.h new file mode 100755 index 0000000..993dd3c --- /dev/null +++ b/iup/src/iup_attrib.h @@ -0,0 +1,137 @@ +/** \file + * \brief Attributes Environment Management + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_ATTRIB_H +#define __IUP_ATTRIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup attrib Attribute Environment + * \par + * When attributes are not stored at the control + * they are stored in a hash table (see \ref table). + * \par + * As a general rule use: + * - IupGetAttribute, IupSetAttribute, ... : when care about control implementation, hash table, inheritance and default value + * - iupAttribGetStr,Int,Float: when care about inheritance, hash table and default value + * - iupAttribGet,... : ONLY access the hash table + * These different functions have very different performances and results. So use them wiselly. + * \par + * See \ref iup_attrib.h + * \ingroup cpi */ + + +/** Returns true if the attribute name if in the internal format "_IUP...". + * \ingroup attrib */ +#define iupAttribIsInternal(_name) ((_name[0] == '_' && _name[1] == 'I' && _name[2] == 'U' && _name[3] == 'P')? 1: 0) + +/** Returns true if the attribute name is a known pointer. + * \ingroup attrib */ +int iupAttribIsPointer(Ihandle* ih, const char *name); + +/** Sets the attribute only in the hash table as a pointer. + * It ignores children. + * \ingroup attrib */ +void iupAttribSetStr(Ihandle* ih, const char* name, const char* value); + +/** Sets the attribute only in the hash table as a string. + * The string is internally duplicated. + * It ignores children. + * \ingroup attrib */ +void iupAttribStoreStr(Ihandle* ih, const char* name, const char* value); + +/** Sets the attribute only in the hash table as a string. + * The string is internally duplicated. Use same format as sprintf. + * It ignores children. + * \ingroup attrib */ +void iupAttribSetStrf(Ihandle *ih, const char* name, const char* format, ...); + +/** Sets an integer attribute only in the hash table. + * It will be stored as a string. + * It ignores children. + * \ingroup attrib */ +void iupAttribSetInt(Ihandle *ih, const char* name, int num); + +/** Sets an floating point attribute only in the hash table. + * It will be stored as a string. + * It ignores children. + * \ingroup attrib */ +void iupAttribSetFloat(Ihandle *ih, const char* name, float num); + +/** Returns the attribute from the hash table only. + * \ingroup attrib */ +char* iupAttribGet(Ihandle* ih, const char* name); + +/** Returns the attribute from the hash table only, + * but if not defined then checks in its parent tree. + * \ingroup attrib */ +char* iupAttribGetInherit(Ihandle* ih, const char* name); + +/** Returns the attribute from the hash table of a native parent. + * Don't check for default values. Don't check at the element. + * Used for BGCOLOR and BACKGROUND attributes. + * \ingroup attrib */ +char* iupAttribGetInheritNativeParent(Ihandle* ih, const char* name); + +/** Returns the attribute from the hash table as a string, + * but if not defined then checks in its parent tree if allowed by the control implementation, + * if still not defined then returns the registered default value if any. + * \ingroup attrib */ +char* iupAttribGetStr(Ihandle* ih, const char* name); + +/** Same as \ref iupAttribGetStr but returns an integer number. + * Checks also for boolean values. + * \ingroup attrib */ +int iupAttribGetInt(Ihandle* ih, const char* name); + +/** Same as \ref iupAttribGetStr but checks for boolean values. + * Use \ref iupStrBoolean. + * \ingroup attrib */ +int iupAttribGetBoolean(Ihandle* ih, const char* name); + +/** Same as \ref iupAttribGetStr but returns an floating point number. + * \ingroup attrib */ +float iupAttribGetFloat(Ihandle* ih, const char* name); + +/** Set an internal name to a handle. + * \ingroup attrib */ +void iupAttribSetHandleName(Ihandle *ih); + + +/* For all attributes in the evironment, call the class SetAttribute only. + * Called only after the element is mapped. */ +void iupAttribUpdate(Ihandle* ih); + +/* For all registered inherited attributes, checks the parent tree and + * call the class SetAttribute if the attribute is defined. + * Called only after the element is mapped. */ +void iupAttribUpdateFromParent(Ihandle* ih); + + + +/* Other functions declared in and implemented here. +IupGetAllAttributes +IupGetAttributes +IupSetAttributes +IupSetAttribute +IupStoreAttribute +IupGetAttribute +IupGetFloat +IupGetInt +IupGetInt2 +IupSetfAttribute +IupSetAttributeHandle +IupGetAttributeHandle +*/ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_box.c b/iup/src/iup_box.c new file mode 100755 index 0000000..54e56d9 --- /dev/null +++ b/iup/src/iup_box.c @@ -0,0 +1,238 @@ +/** \file + * \brief Base for box Controls. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_box.h" + + +static int iBoxCreateMethod(Ihandle* ih, void** params) +{ + ih->data = iupALLOCCTRLDATA(); + + if (params) + { + Ihandle** iparams = (Ihandle**)params; + while (*iparams) + { + IupAppend(ih, *iparams); + iparams++; + } + } + + return IUP_NOERROR; +} + +static char* iBoxGetClientSizeAttrib(Ihandle* ih) +{ + char* str; + int width, height; + + if (ih->handle) + { + width = ih->currentwidth; + height = ih->currentheight; + } + else + { + width = ih->userwidth; + height = ih->userheight; + } + + if (!width && !height) + return NULL; + + str = iupStrGetMemory(50); + + width -= 2*ih->data->margin_x; + height -= 2*ih->data->margin_y; + + sprintf(str, "%dx%d", width, height); + return str; +} + +static int iBoxSetCGapAttrib(Ihandle* ih, const char* value) +{ + int cgap; + iupStrToInt(value, &cgap); + if (iupStrEqual(ih->iclass->name, "vbox")) + { + int charheight; + iupdrvFontGetCharSize(ih, NULL, &charheight); + ih->data->gap = iupHEIGHT2RASTER(cgap, charheight); + } + else + { + int charwidth; + iupdrvFontGetCharSize(ih, &charwidth, NULL); + ih->data->gap = iupWIDTH2RASTER(cgap, charwidth); + } + return 0; +} + +static char* iBoxGetCGapAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + if (iupStrEqual(ih->iclass->name, "vbox")) + { + int charheight; + iupdrvFontGetCharSize(ih, NULL, &charheight); + sprintf(str, "%d", iupRASTER2HEIGHT(ih->data->gap, charheight)); + } + else + { + int charwidth; + iupdrvFontGetCharSize(ih, &charwidth, NULL); + sprintf(str, "%d", iupRASTER2WIDTH(ih->data->gap, charwidth)); + } + return str; +} + +static int iBoxSetGapAttrib(Ihandle* ih, const char* value) +{ + iupStrToInt(value, &ih->data->gap); + return 0; +} + +static char* iBoxGetGapAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%d", ih->data->gap); + return str; +} + +static int iBoxSetHomogeneousAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + ih->data->is_homogeneous = 1; + else + ih->data->is_homogeneous = 0; + return 0; +} + +static char* iBoxGetHomogeneousAttrib(Ihandle* ih) +{ + if (ih->data->is_homogeneous) + return "YES"; + else + return "NO"; +} + +static int iBoxSetExpandChildrenAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + { + if (iupStrEqual(ih->iclass->name, "vbox")) + ih->data->expand_children = IUP_EXPAND_WIDTH; /* in vert. box, expand horizontally */ + else + ih->data->expand_children = IUP_EXPAND_HEIGHT; /* in horiz. box, expand vertically */ + } + else + ih->data->expand_children = 0; + return 0; +} + +static char* iBoxGetExpandChildrenAttrib(Ihandle* ih) +{ + if (ih->data->expand_children) + return "YES"; + else + return "NO"; +} + +static int iBoxSetNormalizeSizeAttrib(Ihandle* ih, const char* value) +{ + ih->data->normalize_size = iupNormalizeGetNormalizeSize(value); + return 0; +} + +static char* iBoxGetNormalizeSizeAttrib(Ihandle* ih) +{ + return iupNormalizeGetNormalizeSizeStr(ih->data->normalize_size); +} + +static int iBoxSetCMarginAttrib(Ihandle* ih, const char* value) +{ + int cmargin_x=-1, cmargin_y=-1; + int charwidth, charheight; + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + iupStrToIntInt(value, &cmargin_x, &cmargin_y, 'x'); + if (cmargin_x!=-1) + ih->data->margin_x = iupHEIGHT2RASTER(cmargin_x, charheight); + if (cmargin_y!=-1) + ih->data->margin_x = iupWIDTH2RASTER(cmargin_y, charwidth); + return 0; +} + +static char* iBoxGetCMarginAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + int charwidth, charheight; + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + sprintf(str, "%dx%d", iupRASTER2WIDTH(ih->data->margin_x, charwidth), iupRASTER2HEIGHT(ih->data->margin_y, charheight)); + return str; +} + +static int iBoxSetMarginAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->margin_x, &ih->data->margin_y, 'x'); + return 0; +} + +static char* iBoxGetMarginAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->margin_x, ih->data->margin_y); + return str; +} + + +/******************************************************************************/ + + +Iclass* iupBoxClassBase(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->format = "g"; /* array of Ihandle */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDMANY; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iBoxCreateMethod; + ic->Map = iupBaseTypeVoidMapMethod; + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Base Container */ + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CLIENTSIZE", iBoxGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* boxes only */ + iupClassRegisterAttribute(ic, "GAP", iBoxGetGapAttrib, iBoxSetGapAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CGAP", iBoxGetCGapAttrib, iBoxSetCGapAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "MARGIN", iBoxGetMarginAttrib, iBoxSetMarginAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CMARGIN", iBoxGetCMarginAttrib, iBoxSetCMarginAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + + iupClassRegisterAttribute(ic, "EXPANDCHILDREN", iBoxGetExpandChildrenAttrib, iBoxSetExpandChildrenAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HOMOGENEOUS", iBoxGetHomogeneousAttrib, iBoxSetHomogeneousAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NORMALIZESIZE", iBoxGetNormalizeSizeAttrib, iBoxSetNormalizeSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/iup_box.h b/iup/src/iup_box.h new file mode 100755 index 0000000..5d79263 --- /dev/null +++ b/iup/src/iup_box.h @@ -0,0 +1,40 @@ +/** \file + * \brief Base for box Controls. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_BOX_H +#define __IUP_BOX_H + +#ifdef __cplusplus +extern "C" { +#endif + + +struct _IcontrolData +{ + int alignment, + expand_children, + is_homogeneous, + normalize_size, + margin_x, + margin_y, + gap; + int children_naturalsize, /* calculated in ComputeNaturalSize, used in SetChildrenCurrentSize */ + homogeneous_size; /* calculated in SetChildrenCurrentSize, used in SetChildrenPosition */ +}; + +Iclass* iupBoxClassBase(void); + +/* Implemented in iup_normalizer.c */ +void iupNormalizeSizeBoxChild(Ihandle *ih, int normalize, int children_natural_maxwidth, int children_natural_maxheight); +int iupNormalizeGetNormalizeSize(const char* value); +char* iupNormalizeGetNormalizeSizeStr(int normalize); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_button.c b/iup/src/iup_button.c new file mode 100755 index 0000000..7719663 --- /dev/null +++ b/iup/src/iup_button.c @@ -0,0 +1,206 @@ +/** \file + * \brief Button Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_button.h" +#include "iup_image.h" + + +char* iupButtonGetPaddingAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding); + return str; +} + +static int iButtonSetImagePositionAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* set only before map */ + { + if (iupStrEqualNoCase(value, "RIGHT")) + ih->data->img_position = IUP_IMGPOS_RIGHT; + else if (iupStrEqualNoCase(value, "BOTTOM")) + ih->data->img_position = IUP_IMGPOS_BOTTOM; + else if (iupStrEqualNoCase(value, "TOP")) + ih->data->img_position = IUP_IMGPOS_TOP; + else /* "LEFT" */ + ih->data->img_position = IUP_IMGPOS_LEFT; + } + return 0; +} + +static char* iButtonGetImagePositionAttrib(Ihandle *ih) +{ + char* img_pos2str[4] = {"LEFT", "RIGHT", "TOP", "BOTTOM"}; + char *str = iupStrGetMemory(50); + sprintf(str, "%s", img_pos2str[ih->data->img_position]); + return str; +} + +static int iButtonSetSpacingAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* set only before map */ + iupStrToInt(value, &ih->data->spacing); + return 0; +} + +static char* iButtonGetSpacingAttrib(Ihandle *ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%d", ih->data->spacing); + return str; +} + + +/*****************************************************************************************/ + + +static int iButtonCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0])); + if (params[1]) iupAttribStoreStr(ih, "ACTION", (char*)(params[1])); + } + ih->data = iupALLOCCTRLDATA(); + + ih->data->spacing = 2; + + /* used only by the Windows driver */ + ih->data->horiz_alignment = IUP_ALIGN_ACENTER; + ih->data->vert_alignment = IUP_ALIGN_ACENTER; + return IUP_NOERROR; +} + +static void iButtonComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w = 0, + natural_h = 0, + type = ih->data->type; + (void)expand; /* unset if not a container */ + + if (!ih->handle) + { + /* if not mapped must initialize the internal values */ + char* value = iupAttribGet(ih, "IMAGE"); + if (value) + { + type = IUP_BUTTON_IMAGE; + if (iupAttribGet(ih, "TITLE")) + type |= IUP_BUTTON_TEXT; + } + else + type = IUP_BUTTON_TEXT; + } + + if (type & IUP_BUTTON_IMAGE) + { + iupImageGetInfo(iupAttribGet(ih, "IMAGE"), &natural_w, &natural_h, NULL); + + if (type & IUP_BUTTON_TEXT) + { + int text_w, text_h; + /* must use IupGetAttribute to check from the native implementation */ + char* title = IupGetAttribute(ih, "TITLE"); + iupdrvFontGetMultiLineStringSize(ih, title, &text_w, &text_h); + + if (ih->data->img_position == IUP_IMGPOS_RIGHT || + ih->data->img_position == IUP_IMGPOS_LEFT) + { + natural_w += text_w + ih->data->spacing; + natural_h = iupMAX(natural_h, text_h); + } + else + { + natural_w = iupMAX(natural_w, text_w); + natural_h += text_h + ih->data->spacing; + } + } + } + else /* IUP_BUTTON_TEXT only */ + { + /* must use IupGetAttribute to check from the native implementation */ + char* title = IupGetAttribute(ih, "TITLE"); + char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */ + iupdrvFontGetMultiLineStringSize(ih, str, &natural_w, &natural_h); + if (str && str!=title) free(str); + } + + /* even when IMPRESS is set, must compute the borders space */ + iupdrvButtonAddBorders(&natural_w, &natural_h); + + natural_w += 2*ih->data->horiz_padding; + natural_h += 2*ih->data->vert_padding; + + *w = natural_w; + *h = natural_h; +} + + +/******************************************************************************/ + + +Ihandle* IupButton(const char* title, const char* action) +{ + void *params[3]; + params[0] = (void*)title; + params[1] = (void*)action; + params[2] = NULL; + return IupCreatev("button", params); +} + +Iclass* iupButtonGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "button"; + ic->format = "SA"; /* one optional string, and one optional callback name */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iButtonCreateMethod; + ic->ComputeNaturalSize = iButtonComputeNaturalSizeMethod; + + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "BUTTON_CB", "iiiis"); + iupClassRegisterCallback(ic, "ACTION", ""); + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupButton only */ + iupClassRegisterAttribute(ic, "SPACING", iButtonGetSpacingAttrib, iButtonSetSpacingAttrib, IUPAF_SAMEASSYSTEM, "2", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEPOSITION", iButtonGetImagePositionAttrib, iButtonSetImagePositionAttrib, IUPAF_SAMEASSYSTEM, "LEFT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESSBORDER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FLAT", NULL, NULL, NULL, NULL, IUPAF_DEFAULT); + + iupdrvButtonInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_button.h b/iup/src/iup_button.h new file mode 100755 index 0000000..f85720a --- /dev/null +++ b/iup/src/iup_button.h @@ -0,0 +1,39 @@ +/** \file + * \brief Button Controls Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_BUTTON_H +#define __IUP_BUTTON_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupdrvButtonInitClass(Iclass* ic); +void iupdrvButtonAddBorders(int *x, int *y); + +char* iupButtonGetPaddingAttrib(Ihandle* ih); + +enum{IUP_BUTTON_IMAGE=0x01, IUP_BUTTON_TEXT=0x02, IUP_BUTTON_BOTH=0x03}; +enum{IUP_IMGPOS_LEFT, IUP_IMGPOS_RIGHT, IUP_IMGPOS_TOP, IUP_IMGPOS_BOTTOM}; + +struct _IcontrolData +{ + int type, /* the 2 buttons possibilities */ + horiz_padding, vert_padding; /* button margin */ + int spacing, img_position; /* used when both text and image are displayed */ + + /* used only by the Windows driver */ + int horiz_alignment, vert_alignment; + unsigned long fgcolor; +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_callback.c b/iup/src/iup_callback.c new file mode 100755 index 0000000..e000287 --- /dev/null +++ b/iup/src/iup_callback.c @@ -0,0 +1,90 @@ +/** \file + * \brief get/set callback + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_assert.h" + + +Icallback IupGetCallback(Ihandle *ih, const char *name) +{ + Icallback func = NULL; + void* value; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + iupASSERT(name!=NULL); + if (!name) + return NULL; + + func = (Icallback)iupTableGetFunc(ih->attrib, name, &value); + + if (!func && value) + { + /* if not a IUPTABLE_FUNCPOINTER then it is an old fashion name */ + func = IupGetFunction((const char*)value); + } + + return func; +} + +Icallback IupSetCallback(Ihandle *ih, const char *name, Icallback func) +{ + Icallback old_func = NULL; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + iupASSERT(name!=NULL); + if (!name) + return NULL; + + if (!func) + iupTableRemove(ih->attrib, name); + else + { + void* value; + old_func = (Icallback)iupTableGetFunc(ih->attrib, name, &value); + if (!old_func && value) + old_func = IupGetFunction((const char*)value); + + iupTableSetFunc(ih->attrib, name, (Ifunc)func); + } + + return old_func; +} + +Ihandle* IupSetCallbacks(Ihandle* ih, const char *name, Icallback func, ...) +{ + va_list arglist; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + IupSetCallback(ih, name, func); + + va_start(arglist, func); + + name=va_arg(arglist, const char*); + while (name) + { + func=va_arg(arglist, Icallback); + IupSetCallback(ih, name, func); + + name=va_arg(arglist, const char*); + } + + va_end (arglist); + return ih; +} diff --git a/iup/src/iup_canvas.c b/iup/src/iup_canvas.c new file mode 100755 index 0000000..5eda988 --- /dev/null +++ b/iup/src/iup_canvas.c @@ -0,0 +1,169 @@ +/** \file + * \brief Canvas Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_canvas.h" + + +void iupCanvasCalcScrollIntPos(double min, double max, double page, double pos, + int imin, int imax, int *ipage, int *ipos) +{ + double range = max-min; + int irange = imax-imin; + double ratio = ((double)irange)/range; + + *ipage = (int)(page*ratio); + if (*ipage > irange) *ipage = irange; + if (*ipage < 1) *ipage = 1; + + if (ipos) + { + *ipos = (int)((pos-min)*ratio) + imin; + if (*ipos < imin) *ipos = imin; + if (*ipos > (imax - *ipage)) *ipos = imax - *ipage; + } +} + +void iupCanvasCalcScrollRealPos(double min, double max, double *pos, + int imin, int imax, int ipage, int *ipos) +{ + double range = max-min; + int irange = imax-imin; + double ratio = ((double)irange)/range; + + if (*ipos < imin) *ipos = imin; + if (*ipos > (imax - ipage)) *ipos = imax - ipage; + + *pos = min + ((double)(*ipos-imin))/ratio; +} + +char* iupCanvasGetPosXAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->posx); + return str; +} + +char* iupCanvasGetPosYAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->posy); + return str; +} + +static int iCanvasCreateMethod(Ihandle* ih, void** params) +{ + if (params && params[0]) + { + char* action = (char*)params[0]; + iupAttribStoreStr(ih, "ACTION", action); + } + + ih->data = iupALLOCCTRLDATA(); + + /* default EXPAND is YES */ + ih->expand = IUP_EXPAND_BOTH; + + return IUP_NOERROR; +} + +static void iCanvasComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w = 0, natural_h = 0; + (void)expand; /* unset if not a container */ + + /* canvas natural size is 1 character */ + iupdrvFontGetCharSize(ih, &natural_w, &natural_h); + + *w = natural_w; + *h = natural_h; +} + + +/******************************************************************************/ + + +Ihandle* IupCanvas(const char* action) +{ + void *params[2]; + params[0] = (void*)action; + params[1] = NULL; + return IupCreatev("canvas", params); +} + +Iclass* iupCanvasGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "canvas"; + ic->format = "A"; /* one optional callback name */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iCanvasCreateMethod; + ic->ComputeNaturalSize = iCanvasComputeNaturalSizeMethod; + + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "DROPFILES_CB", "siii"); + iupClassRegisterCallback(ic, "RESIZE_CB", "ii"); + iupClassRegisterCallback(ic, "FOCUS_CB", "i"); + iupClassRegisterCallback(ic, "WOM_CB", "i"); + iupClassRegisterCallback(ic, "BUTTON_CB", "iiiis"); + iupClassRegisterCallback(ic, "MOTION_CB", "iis"); + iupClassRegisterCallback(ic, "KEYPRESS_CB", "ii"); + iupClassRegisterCallback(ic, "ACTION", "ff"); + iupClassRegisterCallback(ic, "SCROLL_CB", "iff"); + iupClassRegisterCallback(ic, "WHEEL_CB", "fiis"); + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + { + /* Change the default to YES */ + IattribGetFunc _get; + IattribSetFunc _set; + iupClassRegisterGetAttribute(ic, "EXPAND", &_get, &_set, NULL, NULL, NULL); + iupClassRegisterAttribute(ic, "EXPAND", _get, _set, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + } + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupCanvas only */ + iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "XMIN", NULL, NULL, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "XMAX", NULL, NULL, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "YMIN", NULL, NULL, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "YMAX", NULL, NULL, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LINEX", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LINEY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BORDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "SCROLLBAR", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + iupdrvCanvasInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_canvas.h b/iup/src/iup_canvas.h new file mode 100755 index 0000000..29d644c --- /dev/null +++ b/iup/src/iup_canvas.h @@ -0,0 +1,37 @@ +/** \file + * \brief Canvas Controls Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_CANVAS_H +#define __IUP_CANVAS_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupdrvCanvasInitClass(Iclass* ic); +void iupCanvasCalcScrollIntPos(double min, double max, double page, double pos, + int imin, int imax, int *ipage, int *ipos); +void iupCanvasCalcScrollRealPos(double min, double max, double *pos, + int imin, int imax, int ipage, int *ipos); +char* iupCanvasGetPosXAttrib(Ihandle* ih); +char* iupCanvasGetPosYAttrib(Ihandle* ih); + +#define IUP_SB_MIN 0 +#define IUP_SB_MAX INT_MAX-1 + +struct _IcontrolData +{ + int sb; /* scrollbar configuration, valid only after map, use iupBaseGetScrollbar before map */ + float posx, posy; +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_cbox.c b/iup/src/iup_cbox.c new file mode 100755 index 0000000..5a1d409 --- /dev/null +++ b/iup/src/iup_cbox.c @@ -0,0 +1,143 @@ +/** \file + * \brief cbox control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" + + +static int iCboxCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + Ihandle** iparams = (Ihandle**)params; + while (*iparams) + { + IupAppend(ih, *iparams); + iparams++; + } + } + + return IUP_NOERROR; +} + +static void iCboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + Ihandle* child; + int children_expand, + children_naturalwidth, children_naturalheight; + int cx, cy; + + /* calculate total children natural size (even for hidden children) */ + children_expand = 0; + children_naturalwidth = 0; + children_naturalheight = 0; + + for (child = ih->firstchild; child; child = child->brother) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + cx = iupAttribGetInt(child, "CX"); + cy = iupAttribGetInt(child, "CY"); + + children_expand |= child->expand; + children_naturalwidth = iupMAX(children_naturalwidth, cx+child->naturalwidth); + children_naturalheight = iupMAX(children_naturalheight, cy+child->naturalheight); + } + + *expand = children_expand; + *w = children_naturalwidth; + *h = children_naturalheight; +} + +static void iCboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + /* update children to their own natural size */ + iupBaseSetCurrentSize(child, child->naturalwidth, child->naturalheight, shrink); + } +} + +static void iCboxSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + int cx, cy; + Ihandle* child; + + for (child = ih->firstchild; child; child = child->brother) + { + cx = iupAttribGetInt(child, "CX"); + cy = iupAttribGetInt(child, "CY"); + + /* update child */ + iupBaseSetPosition(child, x+cx, y+cy); + } +} + + +/******************************************************************************/ + + +Ihandle *IupCboxv(Ihandle** children) +{ + return IupCreatev("cbox", (void**)children); +} + +Ihandle *IupCbox (Ihandle * child,...) +{ + Ihandle **children; + Ihandle *ih; + + va_list arglist; + va_start(arglist, child); + children = (Ihandle **)iupObjectGetParamList(child, arglist); + va_end(arglist); + + ih = IupCreatev("cbox", (void**)children); + free(children); + + return ih; +} + +Iclass* iupCboxGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "cbox"; + ic->format = "g"; /* array of Ihandle */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDMANY; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iCboxCreateMethod; + ic->Map = iupBaseTypeVoidMapMethod; + + ic->ComputeNaturalSize = iCboxComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iCboxSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iCboxSetChildrenPositionMethod; + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Base Container */ + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CLIENTSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/iup_childtree.c b/iup/src/iup_childtree.c new file mode 100755 index 0000000..1d4066e --- /dev/null +++ b/iup/src/iup_childtree.c @@ -0,0 +1,455 @@ +/** \file + * \brief Control tree hierarchy manager. + * implements also IupDestroy + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_dlglist.h" +#include "iup_childtree.h" +#include "iup_class.h" +#include "iup_attrib.h" +#include "iup_assert.h" +#include "iup_str.h" +#include "iup_drv.h" + + +Ihandle* IupGetDialog(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + for (ih = ih; ih->parent; ih = ih->parent) + ; /* empty*/ + + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + return ih; + else if (ih->iclass->nativetype == IUP_TYPEMENU) + { + Ihandle *dlg; + /* if ih is a menu then */ + /* searches all the dialogs that may have been associated with the menu. */ + for (dlg = iupDlgListFirst(); dlg; dlg = iupDlgListNext()) + { + if (IupGetAttributeHandle(dlg, "MENU") == ih) + return dlg; + } + } + + return NULL; +} + +static void iChildDetach(Ihandle* parent, Ihandle* child) +{ + Ihandle *c, + *c_prev = NULL; + + /* Cleans the child entry inside the parent's child list */ + for (c = parent->firstchild; c; c = c->brother) + { + if (c == child) /* Found the right child */ + { + if (c_prev == NULL) + parent->firstchild = child->brother; + else + c_prev->brother = child->brother; + + child->brother = NULL; + child->parent = NULL; + return; + } + + c_prev = c; + } +} + +void IupDetach(Ihandle *child) +{ + Ihandle *parent, *top_parent; + + iupASSERT(iupObjectCheck(child)); + if (!iupObjectCheck(child)) + return; + + IupUnmap(child); + + /* Not valid if does NOT has a parent */ + if (!child->parent) + return; + + parent = child->parent; + top_parent = iupChildTreeGetNativeParent(child); + + iChildDetach(parent, child); + iupClassObjectChildRemoved(parent, child); + + while (parent && parent != top_parent) + { + parent = parent->parent; + if (parent) + iupClassObjectChildRemoved(parent, child); + } +} + +static int iChildFindRec(Ihandle* parent, Ihandle* child) +{ + Ihandle *c; + + /* Finds the reference child entry inside the parent's child list */ + for (c = parent->firstchild; c; c = c->brother) + { + if (c == child) /* Found the right child */ + return 1; + + if (iChildFindRec(c, child)) + return 1; + } + + return 0; +} + +static int iChildTreeCheckInside(Ihandle* parent, Ihandle* child) +{ + /* top parent */ + while (parent->parent) + parent = parent->parent; + + return iChildFindRec(parent, child); +} + +static int iChildFind(Ihandle* parent, Ihandle* child) +{ + Ihandle *c; + + /* Finds the reference child entry inside the parent's child list */ + for (c = parent->firstchild; c; c = c->brother) + { + if (c == child) /* Found the right child */ + return 1; + } + + return 0; +} + +static void iChildInsert(Ihandle* parent, Ihandle* ref_child, Ihandle* child) +{ + Ihandle *c, + *c_prev = NULL; + + if (!ref_child) + ref_child = parent->firstchild; + + /* Finds the reference child entry inside the parent's child list */ + for (c = parent->firstchild; c; c = c->brother) + { + if (c == ref_child) /* Found the right child */ + { + child->parent = parent; + child->brother = ref_child; + + if (c_prev == NULL) + parent->firstchild = child; + else + c_prev->brother = child; + return; + } + + c_prev = c; + } +} + +Ihandle* IupInsert(Ihandle* parent, Ihandle* ref_child, Ihandle* child) +{ + Ihandle* top_parent = parent; + + /* ref_child can be NULL */ + + iupASSERT(iupObjectCheck(parent)); + if (!iupObjectCheck(parent)) + return NULL; + + iupASSERT(iupObjectCheck(child)); + if (!iupObjectCheck(child)) + return NULL; + +#ifdef IUP_ASSERT + if (iChildTreeCheckInside(parent, child)) + { + iupError("Duplicate Child Found!\n(type(%s) - name(%s))", child->iclass->name, IupGetName(child)); + return NULL; + } +#endif + + + /* this will return the actual parent */ + parent = iupClassObjectGetInnerContainer(top_parent); + if (!parent) + return NULL; + + if (parent->iclass->childtype == IUP_CHILDNONE) + return NULL; + if (parent->iclass->childtype == IUP_CHILD_ONE && parent->firstchild) + return NULL; + + + /* if already at the parent box, allow to move even if mapped */ + if (parent->iclass->nativetype == IUP_TYPEVOID && + iChildFind(parent, child)) + { + iChildDetach(parent, child); + iChildInsert(parent, ref_child, child); + } + else + { + /* Not valid if it is mapped */ + if (child->handle) + return NULL; + + iChildInsert(parent, ref_child, child); + iupClassObjectChildAdded(parent, child); + if (top_parent != parent) + iupClassObjectChildAdded(top_parent, child); + } + + return parent; +} + +void iupChildTreeAppend(Ihandle* parent, Ihandle* child) +{ + child->parent = parent; + + if (parent->firstchild == NULL) + parent->firstchild = child; + else + { + Ihandle* c = parent->firstchild; + while (c->brother) + c = c->brother; + c->brother = child; + } +} + +Ihandle* IupAppend(Ihandle* parent, Ihandle* child) +{ + Ihandle* top_parent = parent; + + iupASSERT(iupObjectCheck(parent)); + if (!iupObjectCheck(parent)) + return NULL; + + iupASSERT(iupObjectCheck(child)); + if (!iupObjectCheck(child)) + return NULL; + +#ifdef IUP_ASSERT + if (iChildTreeCheckInside(parent, child)) + { + iupError("Duplicate Child Found!\n(type(%s) - name(%s))", child->iclass->name, IupGetName(child)); + return NULL; + } +#endif + + + /* this will return the actual parent */ + parent = iupClassObjectGetInnerContainer(top_parent); + if (!parent) + return NULL; + + if (parent->iclass->childtype == IUP_CHILDNONE) + return NULL; + if (parent->iclass->childtype == IUP_CHILD_ONE && parent->firstchild) + return NULL; + + + /* if already at the parent box, allow to move even if mapped */ + if (parent->iclass->nativetype == IUP_TYPEVOID && + iChildFind(parent, child)) + { + iChildDetach(parent, child); + iupChildTreeAppend(parent, child); + } + else + { + /* Not valid if it is mapped */ + if (child->handle) + return NULL; + + iupChildTreeAppend(parent, child); + iupClassObjectChildAdded(parent, child); + if (top_parent != parent) + iupClassObjectChildAdded(top_parent, child); + } + + return parent; +} + +static void iChildReparent(Ihandle* child, Ihandle* new_parent) +{ + Ihandle *c; + + /* Forward the reparent to all native children */ + + for (c = child->firstchild; c; c = c->brother) + { + if (c->iclass->nativetype != IUP_TYPEVOID) + iupdrvReparent(c); + else + iChildReparent(c, new_parent); + } +} + +int IupReparent(Ihandle* child, Ihandle* parent) +{ + Ihandle* top_parent = parent; + Ihandle* old_parent; + + iupASSERT(iupObjectCheck(parent)); + if (!iupObjectCheck(parent)) + return IUP_ERROR; + + iupASSERT(iupObjectCheck(child)); + if (!iupObjectCheck(child)) + return IUP_ERROR; + + + /* this will return the actual parent */ + parent = iupClassObjectGetInnerContainer(top_parent); + if (!parent) + return IUP_ERROR; + + if (parent->iclass->childtype == IUP_CHILDNONE) + return IUP_ERROR; + if (parent->iclass->childtype == IUP_CHILD_ONE && parent->firstchild) + return IUP_ERROR; + + + /* both must be already mapped or both unmapped */ + if ((!parent->handle && child->handle) || + ( parent->handle && !child->handle)) + return IUP_ERROR; + + + /* detach from old parent */ + old_parent = child->parent; + iChildDetach(old_parent, child); + iupClassObjectChildRemoved(old_parent, child); + + + /* attach to new parent */ + iupChildTreeAppend(parent, child); + iupClassObjectChildAdded(parent, child); + if (top_parent != parent) + iupClassObjectChildAdded(top_parent, child); + + + /* no need to remap, just notify the native system */ + if (child->handle && parent->handle) + { + if (child->iclass->nativetype != IUP_TYPEVOID) + iupdrvReparent(child); + else + iChildReparent(child, parent); + } + + return IUP_NOERROR; +} + +Ihandle* IupGetChild(Ihandle* ih, int pos) +{ + int p; + Ihandle* child; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + for (p = 0, child = ih->firstchild; child; child = child->brother, p++) + { + if (p == pos) + return child; + } + + return NULL; +} + +int IupGetChildPos(Ihandle* ih, Ihandle* child) +{ + int pos; + Ihandle* c; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return -1; + + for (pos = 0, c = ih->firstchild; c; c = c->brother, pos++) + { + if (c == child) + return pos; + } + return -1; +} + +int IupGetChildCount(Ihandle* ih) +{ + int count = 0; + Ihandle* child; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return -1; + + for (child = ih->firstchild; child; child = child->brother) + count++; + + return count; +} + +Ihandle* IupGetNextChild(Ihandle* ih, Ihandle* child) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + if (!child) + return ih->firstchild; + else + return child->brother; +} + +Ihandle* IupGetBrother(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + return ih->brother; +} + +Ihandle* IupGetParent(Ihandle *ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + return ih->parent; +} + +Ihandle* iupChildTreeGetNativeParent(Ihandle* ih) +{ + Ihandle* parent = ih->parent; + while (parent && parent->iclass->nativetype == IUP_TYPEVOID) + parent = parent->parent; + return parent; +} + +InativeHandle* iupChildTreeGetNativeParentHandle(Ihandle* ih) +{ + Ihandle* native_parent = iupChildTreeGetNativeParent(ih); + return (InativeHandle*)iupClassObjectGetInnerNativeContainerHandle(native_parent, ih); +} diff --git a/iup/src/iup_childtree.h b/iup/src/iup_childtree.h new file mode 100755 index 0000000..4376c0b --- /dev/null +++ b/iup/src/iup_childtree.h @@ -0,0 +1,54 @@ +/** \file + * \brief Control Hierarchy Tree management. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_CHILDTREE_H +#define __IUP_CHILDTREE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup childtree Child Tree Utilities + * \par + * Some native containers have an internal native child that + * will be the actual container of the children. This native container is + * returned by \ref iupClassObjectGetInnerNativeContainerHandle. + * \par + * Some native elements need an extra parent, the ih->handle points to the main element itself, + * NOT to the extra parent. This extra parent is stored as "_IUP_EXTRAPARENT". + * \par + * See \ref iup_childtree.h + * \ingroup object */ + +/** Returns the native parent. It simply excludes containers that are from IUP_TYPEVOID classes. + * \ingroup childtree */ +Ihandle* iupChildTreeGetNativeParent(Ihandle* ih); + +/** Returns the native parent handle. Uses \ref iupChildTreeGetNativeParent and \ref iupClassObjectGetInnerNativeContainerHandle. + * \ingroup childtree */ +InativeHandle* iupChildTreeGetNativeParentHandle(Ihandle* ih); + +/** Adds the child directly to the parent tree. + * \ingroup childtree */ +void iupChildTreeAppend(Ihandle* parent, Ihandle* child); + + +/* Other functions declared in and implemented here. +IupGetDialog +IupDetach +IupAppend +IupGetChild +IupGetNextChild +IupGetBrother +IupGetParent +*/ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_class.c b/iup/src/iup_class.c new file mode 100755 index 0000000..d2c4b02 --- /dev/null +++ b/iup/src/iup_class.c @@ -0,0 +1,314 @@ +/** \file + * \brief IUP Ihandle Class C Interface + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_str.h" +#include "iup_attrib.h" +#include "iup_assert.h" + + + +/***************************************************************** + Method Stubs +*****************************************************************/ + +static int iClassCreate(Iclass* ic, Ihandle* ih, void** params) +{ + int ret = IUP_NOERROR; + if (ic->parent) + ret = iClassCreate(ic->parent, ih, params); + + if (ret == IUP_NOERROR && ic->Create) + ret = ic->Create(ih, params); + + return ret; +} + +static int iClassMap(Iclass* ic, Ihandle* ih) +{ + int ret = IUP_NOERROR; + if (ic->parent) + ret = iClassMap(ic->parent, ih); + + if (ret == IUP_NOERROR && ic->Map) + ret = ic->Map(ih); + + return ret; +} + +static void iClassUnMap(Iclass* ic, Ihandle* ih) +{ + /* must be before the parent class */ + if (ic->UnMap) + ic->UnMap(ih); + + if (ic->parent) + iClassUnMap(ic->parent, ih); +} + +static void iClassDestroy(Iclass* ic, Ihandle* ih) +{ + /* must destroy child class before the parent class */ + if (ic->Destroy) + ic->Destroy(ih); + + if (ic->parent) + iClassDestroy(ic->parent, ih); +} + +static void iClassComputeNaturalSize(Iclass* ic, Ihandle* ih, int *w, int *h, int *expand) +{ + if (ic->parent) + iClassComputeNaturalSize(ic->parent, ih, w, h, expand); + + if (ic->ComputeNaturalSize) + ic->ComputeNaturalSize(ih, w, h, expand); +} + +static void iClassSetChildrenCurrentSize(Iclass* ic, Ihandle* ih, int shrink) +{ + if (ic->parent) + iClassSetChildrenCurrentSize(ic->parent, ih, shrink); + + if (ic->SetChildrenCurrentSize) + ic->SetChildrenCurrentSize(ih, shrink); +} + +static void iClassSetChildrenPosition(Iclass* ic, Ihandle* ih, int x, int y) +{ + if (ic->parent) + iClassSetChildrenPosition(ic->parent, ih, x, y); + + if (ic->SetChildrenPosition) + ic->SetChildrenPosition(ih, x, y); +} + +static Ihandle* iClassGetInnerContainer(Iclass* ic, Ihandle* ih) +{ + Ihandle* ih_container = ih; + + if (ic->parent) + ih_container = iClassGetInnerContainer(ic->parent, ih); + + /* if the class implements the function it will ignore the result of the parent class */ + + if (ic->GetInnerContainer) + ih_container = ic->GetInnerContainer(ih); + + return ih_container; +} + +static void* iClassGetInnerNativeContainerHandle(Iclass* ic, Ihandle* ih, Ihandle* child) +{ + void* container_handle = ih->handle; + + if (ic->parent) + container_handle = iClassGetInnerNativeContainerHandle(ic->parent, ih, child); + + /* if the class implements the function it will ignore the result of the parent class */ + + if (ic->GetInnerNativeContainerHandle) + container_handle = ic->GetInnerNativeContainerHandle(ih, child); + + return container_handle; +} + +static void iClassObjectChildAdded(Iclass* ic, Ihandle* ih, Ihandle* child) +{ + if (ic->parent) + iClassObjectChildAdded(ic->parent, ih, child); + + if (ic->ChildAdded) + ic->ChildAdded(ih, child); +} + +static void iClassObjectChildRemoved(Iclass* ic, Ihandle* ih, Ihandle* child) +{ + if (ic->parent) + iClassObjectChildRemoved(ic->parent, ih, child); + + if (ic->ChildRemoved) + ic->ChildRemoved(ih, child); +} + +static void iClassLayoutUpdate(Iclass* ic, Ihandle *ih) +{ + if (ic->parent) + iClassLayoutUpdate(ic->parent, ih); + + if (ic->LayoutUpdate) + ic->LayoutUpdate(ih); +} + +static int iClassDlgPopup(Iclass* ic, Ihandle* ih, int x, int y) +{ + int ret = IUP_INVALID; /* IUP_INVALID means it is not implemented */ + if (ic->parent) + ret = iClassDlgPopup(ic->parent, ih, x, y); + + if (ret != IUP_ERROR && ic->DlgPopup) + ret = ic->DlgPopup(ih, x, y); + + return ret; +} + +int iupClassObjectCreate(Ihandle* ih, void** params) +{ + return iClassCreate(ih->iclass, ih, params); +} + +int iupClassObjectMap(Ihandle* ih) +{ + return iClassMap(ih->iclass, ih); +} + +void iupClassObjectUnMap(Ihandle* ih) +{ + iClassUnMap(ih->iclass, ih); +} + +void iupClassObjectDestroy(Ihandle* ih) +{ + iClassDestroy(ih->iclass, ih); +} + +void iupClassObjectComputeNaturalSize(Ihandle* ih, int *w, int *h, int *expand) +{ + iClassComputeNaturalSize(ih->iclass, ih, w, h, expand); +} + +void iupClassObjectSetChildrenCurrentSize(Ihandle* ih, int shrink) +{ + iClassSetChildrenCurrentSize(ih->iclass, ih, shrink); +} + +void iupClassObjectSetChildrenPosition(Ihandle* ih, int x, int y) +{ + iClassSetChildrenPosition(ih->iclass, ih, x, y); +} + +Ihandle* iupClassObjectGetInnerContainer(Ihandle* ih) +{ + return iClassGetInnerContainer(ih->iclass, ih); +} + +void* iupClassObjectGetInnerNativeContainerHandle(Ihandle* ih, Ihandle* child) +{ + return iClassGetInnerNativeContainerHandle(ih->iclass, ih, child); +} + +void iupClassObjectChildAdded(Ihandle* ih, Ihandle* child) +{ + iClassObjectChildAdded(ih->iclass, ih, child); +} + +void iupClassObjectChildRemoved(Ihandle* ih, Ihandle* child) +{ + iClassObjectChildRemoved(ih->iclass, ih, child); +} + +void iupClassObjectLayoutUpdate(Ihandle *ih) +{ + iClassLayoutUpdate(ih->iclass, ih); +} + +int iupClassObjectDlgPopup(Ihandle* ih, int x, int y) +{ + return iClassDlgPopup(ih->iclass, ih, x, y); +} + + +/***************************************************************** + Class Definition +*****************************************************************/ + + +static void iClassReleaseAttribFuncTable(Iclass* ic) +{ + char* name = iupTableFirst(ic->attrib_func); + while (name) + { + void* afunc = iupTableGetCurr(ic->attrib_func); + free(afunc); + + name = iupTableNext(ic->attrib_func); + } + + iupTableDestroy(ic->attrib_func); +} + +Iclass* iupClassNew(Iclass* parent) +{ + Iclass* ic = malloc(sizeof(Iclass)); + memset(ic, 0, sizeof(Iclass)); + + if (parent) + ic->attrib_func = parent->attrib_func; + else + ic->attrib_func = iupTableCreate(IUPTABLE_STRINGINDEXED); + + ic->parent = parent; + + return ic; +} + +void iupClassRelease(Iclass* ic) +{ + Iclass* parent; + + /* must release only the actual class */ + if (ic->Release) + ic->Release(ic); + + /* must free all classes, since a new instance is created when we inherit */ + parent = ic->parent; + while (parent) + { + Iclass* tmp = parent; + parent = parent->parent; + free(tmp); + } + + /* attributes functions table is released only once */ + iClassReleaseAttribFuncTable(ic); + + free(ic); +} + + +/***************************************************************** + Main API +*****************************************************************/ + + +char* IupGetClassName(Ihandle *ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + return ih->iclass->name; +} + +char* IupGetClassType(Ihandle *ih) +{ + static char* type2str[] = {"void", "control", "canvas", "dialog", "image", "menu"}; + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + return type2str[ih->iclass->nativetype]; +} + diff --git a/iup/src/iup_class.h b/iup/src/iup_class.h new file mode 100755 index 0000000..a5318f3 --- /dev/null +++ b/iup/src/iup_class.h @@ -0,0 +1,414 @@ +/** \file + * \brief Ihandle Class Interface + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_CLASS_H +#define __IUP_CLASS_H + +#include "iup_table.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup iclass Ihandle Class + * \par + * See \ref iup_class.h + * \ingroup cpi */ + +/** Known native types. + * \ingroup iclass */ +typedef enum _InativeType { + IUP_TYPEVOID, /**< No native representation - HBOX, VBOX, ZBOX, FILL, RADIO (handle==(void*)-1 always) */ + IUP_TYPECONTROL, /**< Native controls - BUTTON, LABEL, TOGGLE, LIST, TEXT, MULTILINE, FRAME, others */ + IUP_TYPECANVAS, /**< Drawing canvas, also used as a base control for custom controls. */ + IUP_TYPEDIALOG, /**< DIALOG */ + IUP_TYPEIMAGE, /**< IMAGE */ + IUP_TYPEMENU /**< MENU, SUBMENU, ITEM, SEPARATOR */ +} InativeType; + +/** Possible number of children. + * \ingroup iclass */ +typedef enum _IchildType { + IUP_CHILDNONE, + IUP_CHILD_ONE, + IUP_CHILDMANY +} IchildType; + +typedef struct Iclass_ Iclass; + +/** Ihandle Class Structure + * \ingroup iclass */ +struct Iclass_ +{ + /* Class configuration parameters. */ + char* name; /**< class name. No default, must be initialized. */ + char* format; /**< Creation parameters format of the class when specified. \n + * It can have none, one or more of the following. + * - "b" = (unsigned char) - byte + * - "c" = (unsigned char*) - array of byte + * - "i" = (int) - integer + * - "j" = (int*) - array of integer + * - "f" = (float) - real + * - "s" = (char*) - string + * - "a" = (char*) - name of an action + * - "h" = (Ihandle*) - element handle + * - "g" = (Ihandle**) - array of element handle + * If upper case then it is optional. Default is no parameters. */ + InativeType nativetype; /**< native type. Default is IUP_TYPEVOID. */ + IchildType childtype; /**< children count enum: none, one, or many. Default is IUP_CHILDNONE. Used only by IupAppend and IupInsert to control the number of children. */ + int is_interactive; /**< keyboard interactive boolean, + * true if the class can have the keyboard input focus. Default is false. */ + int has_attrib_id; /**< boolean to indicate if any attribute is numbered. Default is false. */ + + Iclass* parent; /**< class parent to implement inheritance. + * Class name must be different. + * Creation parameters should be the same or repace the parents creation function. + * Native type should be the same. + * Child type should be a more restrictive or equal type (many->one->none). + * Attribute functions will have only one common table. + * All methods can be changed, set to NULL, switched, etc. */ + + Itable* attrib_func; /**< table of functions to handle attributes, only one per class tree */ + + /* Class methods. */ + + /** Method that release the memory allocated by the class. + * Called only once at \ref iupClassRelease. + */ + void (*Release)(Iclass* ic); + + + + /** Method that creates the element and process the creation parameters. \n + * Called only from IupCreate. \n + * The parameters can be NULL for all the controls. \n + * The control should also depend on attributes set before IupMap. \n + * Must return IUP_NOERROR or IUP_ERROR. \n + * Can be NULL, like all methods. + */ + int (*Create)(Ihandle* ih, void** params); + + /** Method that map (create) the control to the native system. \n + * Called only from IupMap. \n + * Must return IUP_NOERROR or IUP_ERROR. + */ + int (*Map)(Ihandle* ih); + + /** Method that unmap (destroy) the control from the native system. \n + * Called only from IupUnmap if the control is mapped. \n + * Must return IUP_NOERROR or IUP_ERROR. + */ + void (*UnMap)(Ihandle* ih); + + /** Method that destroys the element. \n + * Called only from IupDestroy. Always called even if the control is not mapped. + */ + void (*Destroy)(Ihandle* ih); + + + + /** Returns the actual parent to add a child. The default implementation returns itself. \n + * Called only from IupAppend or IupReparent. \n + * This allows IUP elements to be a combination of other IUP elements in a single IUP element. + */ + Ihandle* (*GetInnerContainer)(Ihandle* ih); + + /** Returns the internal native parent. The default implementation returns the handle of itself. \n + * Called from \ref iupChildTreeGetNativeParentHandle. \n + * This allows native elements to have an internal container + * that will be the actual native parent, or in other words allows native elements to be a combination of + * other native elements in a single IUP element. The actual native parent may depend on the child tree (IupTabs). + */ + void* (*GetInnerNativeContainerHandle)(Ihandle* ih, Ihandle* child); + + /** Notifies the element that a child was appended using IupAppend. \n + * Called only from IupAppend or IupReparent. The child is not mapped, but the parent can be mapped. + */ + void (*ChildAdded)(Ihandle* ih, Ihandle* child); + + /** Notifies the element that a child was removed using IupDetach. \n + * Called only from IupDetach or IupReparent. The child is not mapped, but the parent can be mapped. + */ + void (*ChildRemoved)(Ihandle* ih, Ihandle* child); + + + /** Method that update size and position of the native control. \n + * Called only from iupLayoutUpdate and if the element is mapped. + */ + void (*LayoutUpdate)(Ihandle* ih); + + + + /** Method that computes the natural size based on the user size and the actual natural size. \n + * Should update expand if a container, but does NOT depends on expand to compute the natural size. \n + * Must call the \ref iupBaseComputeNaturalSize for each children. + * First calculate the native size for the children, then for the element. \n + * Also called before the element is mapped, so it must be independent of the native control. + * First call done at iupLayoutCompute for the dialog. + */ + void (*ComputeNaturalSize)(Ihandle* ih, int *w, int *h, int *children_expand); + + /** Method that calculates and updates the current size of children based on the available size, + * the natural size and the expand configuration. \n + * Called only if there is any children.\n + * Must call \ref iupBaseSetCurrentSize for each children. + * shrink is the dialog attribute passed here for optimization. \n + * Also called before the element is mapped, so it must be independent of the native control. + * First call done at iupLayoutCompute for the dialog. + */ + void (*SetChildrenCurrentSize)(Ihandle* ih, int shrink); + + /** Method that calculates and updates the position relative to the parent. \n + * Called only if there is any children.\n + * Must call \ref iupBaseSetPosition for each children. + * Also called before the element is mapped, so it must be independent of the native control. + * First call done at iupLayoutCompute for the dialog. + */ + void (*SetChildrenPosition)(Ihandle* ih, int x, int y); + + + + /** Method that shows a popup dialog. Called only for native pre-defined dialogs. \n + * The element is not mapped. \n + * Must return IUP_ERROR or IUP_NOERROR. \n + * Called only from iupDialogPopup. + */ + int (*DlgPopup)(Ihandle* ih, int x, int y); +}; + + + +/** Allocates memory for the Iclass structure and + * initializes the attribute handling functions table. + * \ingroup iclass */ +Iclass* iupClassNew(Iclass* ic_parent); + +/** Release the memory allocated by the class. + * Calls the \ref Iclass::Release method. \n + * Called from iupRegisterFinish. + * \ingroup iclass */ +void iupClassRelease(Iclass* ic); + + + +/** GetAttribute called for a specific attribute. + * Used by \ref iupClassRegisterAttribute. + * \ingroup iclass */ +typedef char* (*IattribGetFunc)(Ihandle* ih); + +/** GetAttribute called for a specific attribute when has_attrib_id is true. \n + * Same as IattribGetFunc but handle attribute names with number ids at the end. \n + * When calling iupClassRegisterAttribute just use a typecast. \n + * Pure numbers are translated into IDVALUEid. + * Used by \ref iupClassRegisterAttribute. + * \ingroup iclass */ +typedef char* (*IattribGetIdFunc)(Ihandle* ih, const char* name_id); + +/** SetAttribute called for a specific attribute. \n + * If returns 0, the attribute will not be stored in the hash table + * (except inheritble attributes that are always stored in the hash table). \n + * When IupSetAttribute is called using value=NULL, the default_value is passed to this function. + * Used by \ref iupClassRegisterAttribute. + * \ingroup iclass */ +typedef int (*IattribSetFunc)(Ihandle* ih, const char* value); + +/** SetAttribute called for a specific attribute when has_attrib_id is true. \n + * Same as IattribSetFunc but handle attribute names with number ids at the end. \n + * When calling iupClassRegisterAttribute just use a typecast. \n + * Pure numbers are translated into IDVALUEid, ex: "1" = "IDVALUE1". + * Used by \ref iupClassRegisterAttribute. + * \ingroup iclass */ +typedef int (*IattribSetIdFunc)(Ihandle* ih, const char* name_id, const char* value); + +/** Attribute flags. + * Used by \ref iupClassRegisterAttribute. + * \ingroup iclass */ +typedef enum _IattribFlags{ + IUPAF_DEFAULT=0, /**< inheritable, can has a default value, is a string, can call the set/get functions only if mapped, no ID */ + IUPAF_NO_INHERIT=1, /**< is not inheritable */ + IUPAF_NO_DEFAULTVALUE=2, /**< can not has a default value */ + IUPAF_NO_STRING=4, /**< is not a string */ + IUPAF_NOT_MAPPED=8, /**< will call the set/get functions also when not mapped */ + IUPAF_HAS_ID=16, /**< can has an ID at the end of the name, automatically set by \ref iupClassRegisterAttributeId */ + IUPAF_READONLY=32, /**< is read-only, can not be changed */ + IUPAF_WRITEONLY=64 /**< is write-only, usually an action */ +} IattribFlags; + +#define IUPAF_SAMEASSYSTEM ((char*)-1) /**< means that the default value is the same as the system default value, used only in \ref iupClassRegisterAttribute */ + + +/** Register attribute handling functions. get, set and default_value can be NULL. + * default_value should point to a constant string, it will not be duplicated internally. \n + * Notice that when an attribute is not defined then default_value=NULL, + * is inheritable can has a default value and is a string. \n + * Since there is only one attribute function table per class tree, + * if you register the same attribute in a child class, then it will replace the parent registration. \n + * If an attribute is not inheritable or not a string then it MUST be registered. + * Internal attributes (starting with "_IUP") can never be registered. + * \ingroup iclass */ +void iupClassRegisterAttribute(Iclass* ic, const char* name, + IattribGetFunc get, + IattribSetFunc set, + const char* default_value, + const char* system_default, + int flags); + +/** Same as \ref iupClassRegisterAttribute for attributes with Ids. + * \ingroup iclass */ +void iupClassRegisterAttributeId(Iclass* ic, const char* name, + IattribGetIdFunc get, + IattribSetIdFunc set, + int flags); + +/** Returns the attribute handling functions. + * \ingroup iclass */ +void iupClassRegisterGetAttribute(Iclass* ic, const char* name, + IattribGetFunc *get, + IattribSetFunc *set, + const char* *default_value, + const char* *system_default, + int *flags); + +/** Register the parameters of a callback. + * Used by language bindings. + * format follows the format specification of the class creation parameters format, + * but it adds the "double" option and remove array options. + * It can have none, one or more of the following. \n + * - "b" = (unsigned char) - byte + * - "i" = (int) - integer + * - "f" = (float) - real + * - "d" = (double) - real + * - "s" = (char*) - string + * - "v" = (void*) - generic pointer + * - "h" = (Ihandle*) - element handle + * The default return value for all callbacks is "i" (int). + * But the return value can be specified using one of the above parameters, + * after all parameters using "=" to separate it from them. + * \ingroup iclass */ +void iupClassRegisterCallback(Iclass* ic, const char* name, const char* format); + +/** Returns the format of the parameters of a registered callback. + * If NULL then the default callback definition is assumed. + * \ingroup iclass */ +char* iupClassCallbackGetFormat(Iclass* ic, const char* name); + + + +/** \defgroup iclassobject Class Object Functions + * \par + * Stubs for the class methods. They implement inheritance and check if method is NULL. + * \par + * See \ref iup_class.h + * \ingroup iclass + */ + +/** Calls \ref Iclass::Create method. + * \ingroup iclassobject + */ +int iupClassObjectCreate(Ihandle* ih, void** params); + +/** Calls \ref Iclass::Map method. + * \ingroup iclassobject + */ +int iupClassObjectMap(Ihandle* ih); + +/** Calls \ref Iclass::UnMap method. + * \ingroup iclassobject + */ +void iupClassObjectUnMap(Ihandle* ih); + +/** Calls \ref Iclass::Destroy method. + * \ingroup iclassobject + */ +void iupClassObjectDestroy(Ihandle* ih); + +/** Calls \ref Iclass::GetInnerContainer method. + * The parent class is ignored. If necessary the child class must handle the parent class internally. + * \ingroup iclassobject + */ +Ihandle* iupClassObjectGetInnerContainer(Ihandle* ih); + +/** Calls \ref Iclass::GetInnerNativeContainerHandle method. Returns ih->handle if there is no inner parent. + * The parent class is ignored. If necessary the child class must handle the parent class internally. + * \ingroup iclassobject + */ +void* iupClassObjectGetInnerNativeContainerHandle(Ihandle* ih, Ihandle* child); + +/** Calls \ref Iclass::ChildAdded method. + * \ingroup iclassobject + */ +void iupClassObjectChildAdded(Ihandle* ih, Ihandle* child); + +/** Calls \ref Iclass::ChildRemoved method. + * \ingroup iclassobject + */ +void iupClassObjectChildRemoved(Ihandle* ih, Ihandle* child); + +/** Calls \ref Iclass::LayoutUpdate method. + * \ingroup iclassobject + */ +void iupClassObjectLayoutUpdate(Ihandle* ih); + +/** Calls \ref Iclass::ComputeNaturalSize method. + * \ingroup iclassobject + */ +void iupClassObjectComputeNaturalSize(Ihandle* ih, int *w, int *h, int *children_expand); + +/** Calls \ref Iclass::SetChildrenCurrentSize method. + * \ingroup iclassobject + */ +void iupClassObjectSetChildrenCurrentSize(Ihandle* ih, int shrink); + +/** Calls \ref Iclass::SetChildrenPosition method. + * \ingroup iclassobject + */ +void iupClassObjectSetChildrenPosition(Ihandle* ih, int x, int y); + +/** Calls \ref Iclass::DlgPopup method. + * \ingroup iclassobject + */ +int iupClassObjectDlgPopup(Ihandle* ih, int x, int y); + + + +/* Handle attributes, but since the attribute function table is shared by the class hierarchy, + * the attribute function is retrieved only from the current class. + * Set is called from iupAttribUpdate (IupMap), IupStoreAttribute and IupSetAttribute. + * Get is called only from IupGetAttribute. + */ +int iupClassObjectSetAttribute(Ihandle* ih, const char* name, const char* value, int *inherit); +char* iupClassObjectGetAttribute(Ihandle* ih, const char* name, char* *def_value, int *inherit); + +/* Used only in iupAttribGetStr */ +void iupClassObjectGetAttributeInfo(Ihandle* ih, const char* name, char* *def_value, int *inherit); + +/* Used only in iupAttribIsPointer */ +int iupClassObjectAttribIsNotString(Ihandle* ih, const char* name); + +/* Used only in iupAttribUpdateFromParent */ +int iupClassObjectCurAttribIsInherit(Iclass* ic); + +/* Used in iupObjectCreate and IupMap */ +void iupClassObjectEnsureDefaultAttributes(Ihandle* ih); + +/* Used in documentation tests. */ +char* iupClassGetDefaultAttribute(const char* classname, const char *attrib_name); + + +/* Other functions declared in and implemented here. +IupGetClassType +IupGetClassName +*/ + + +#ifdef __cplusplus +} +#endif + +#include "iup_classbase.h" + +#endif diff --git a/iup/src/iup_classattrib.c b/iup/src/iup_classattrib.c new file mode 100755 index 0000000..df8f873 --- /dev/null +++ b/iup/src/iup_classattrib.c @@ -0,0 +1,508 @@ +/** \file + * \brief Ihandle Class Attribute Management + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_str.h" +#include "iup_attrib.h" +#include "iup_assert.h" +#include "iup_register.h" +#include "iup_globalattrib.h" + + +typedef struct _IattribFunc +{ + IattribGetFunc get; + IattribSetFunc set; + const char* default_value; + const char* system_default; + int call_global_default; + int flags; +} IattribFunc; + + +static int iClassIsGlobalDefault(const char* name) +{ + if (iupStrEqual(name, "DEFAULTFONT")) + return 1; + if (iupStrEqual(name, "DLGBGCOLOR")) + return 1; + if (iupStrEqual(name, "DLGFGCOLOR")) + return 1; + if (iupStrEqual(name, "TXTBGCOLOR")) + return 1; + if (iupStrEqual(name, "TXTFGCOLOR")) + return 1; + if (iupStrEqual(name, "MENUBGCOLOR")) + return 1; + return 0; +} + +static const char* iClassFindId(const char* name) +{ + while(*name) + { + if (*name >= '0' && *name <= '9') + return name; + if (*name == '*' || *name == ':') + return name; + + name++; + } + return NULL; +} + +static const char* iClassCutNameId(const char* name, const char* name_id) +{ + char* str; + int len = name_id - name; + if (len == 0) + return NULL; + + str = iupStrGetMemory(len+1); + memcpy(str, name, len); + str[len] = 0; + return str; +} + + +static char* iClassGetDefaultValue(IattribFunc* afunc) +{ + if (afunc->call_global_default) + return IupGetGlobal(afunc->default_value); + else + return (char*)afunc->default_value; +} + +int iupClassObjectSetAttribute(Ihandle* ih, const char* name, const char * value, int *inherit) +{ + IattribFunc* afunc; + + if (ih->iclass->has_attrib_id) + { + const char* name_id = iClassFindId(name); + if (name_id) + { + IattribFunc* afunc; + const char* partial_name = iClassCutNameId(name, name_id); + if (!partial_name) + partial_name = "IDVALUE"; /* pure numbers are used as attributes in IupList and IupMatrix, + translate them into IDVALUE. */ + afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, partial_name); + if (afunc) + { + *inherit = 0; /* id numbered attributes are NON inheritable always */ + + if (afunc->flags & IUPAF_READONLY) + { + if (afunc->flags & IUPAF_NO_STRING) + return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */ + return 0; + } + + if (afunc->set && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED)) + { + /* id numbered attributes have default value NULL always */ + IattribSetIdFunc id_set = (IattribSetIdFunc)afunc->set; + return id_set(ih, name_id, value); + } + + if (afunc->flags & IUPAF_NO_STRING) + return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */ + + return 1; /* if the function exists, then must return here */ + } + } + } + + /* if not has_attrib_id, or not found an ID, or not found the partial name, check using the full name */ + + afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name); + *inherit = 1; /* default is inheritable */ + if (afunc) + { + *inherit = !(afunc->flags & IUPAF_NO_INHERIT) && !(afunc->flags & IUPAF_NO_STRING); + + if (afunc->flags & IUPAF_READONLY) + { + if (afunc->flags & IUPAF_NO_STRING) + return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */ + return 0; + } + + if (afunc->set && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED)) + { + int ret; + if (!value) + { + /* inheritable attributes when reset must check the parent value */ + if (*inherit && ih->parent) + value = iupAttribGetInherit(ih->parent, name); + + if (!value) + value = iClassGetDefaultValue(afunc); + } + + if (afunc->flags & IUPAF_HAS_ID) + { + IattribSetIdFunc id_set = (IattribSetIdFunc)afunc->set; + return id_set(ih, "", value); /* empty Id */ + } + else + ret = afunc->set(ih, value); + + if (ret == 1 && afunc->flags & IUPAF_NO_STRING) + return -1; /* value is NOT a string, can NOT call iupAttribStoreStr */ + + if (*inherit) + return 1; /* inheritable attributes are always stored in the hash table, */ + else /* to indicate that they are set at the control. */ + return ret; + } + } + + return 1; +} + +char* iupClassObjectGetAttribute(Ihandle* ih, const char* name, char* *def_value, int *inherit) +{ + IattribFunc* afunc; + + if (ih->iclass->has_attrib_id) + { + const char* name_id = iClassFindId(name); + if (name_id) + { + IattribFunc* afunc; + const char* partial_name = iClassCutNameId(name, name_id); + if (!partial_name) + partial_name = "IDVALUE"; /* pure numbers are used as attributes in IupList and IupMatrix, + translate them into IDVALUE. */ + afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, partial_name); + if (afunc) + { + *def_value = NULL; /* id numbered attributes have default value NULL always */ + *inherit = 0; /* id numbered attributes are NON inheritable always */ + + if (afunc->flags & IUPAF_WRITEONLY) + return NULL; + + if (afunc->get && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED)) + { + IattribGetIdFunc id_get = (IattribGetIdFunc)afunc->get; + return id_get(ih, name_id); + } + else + return NULL; /* if the function exists, then must return here */ + } + } + } + + /* if not has_attrib_id, or not found an ID, or not found the partial name, check using the full name */ + + afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name); + *def_value = NULL; + *inherit = 1; /* default is inheritable */ + if (afunc) + { + *def_value = iClassGetDefaultValue(afunc); + *inherit = !(afunc->flags & IUPAF_NO_INHERIT) && !(afunc->flags & IUPAF_NO_STRING); + + if (afunc->flags & IUPAF_WRITEONLY) + return NULL; + + if (afunc->get && (ih->handle || afunc->flags & IUPAF_NOT_MAPPED)) + { + if (afunc->flags & IUPAF_HAS_ID) + { + IattribGetIdFunc id_get = (IattribGetIdFunc)afunc->get; + return id_get(ih, ""); /* empty Id */ + } + else + return afunc->get(ih); + } + } + return NULL; +} + +void iupClassObjectGetAttributeInfo(Ihandle* ih, const char* name, char* *def_value, int *inherit) +{ + IattribFunc* afunc; + + if (ih->iclass->has_attrib_id) + { + const char* name_id = iClassFindId(name); + if (name_id) + { + IattribFunc* afunc; + const char* partial_name = iClassCutNameId(name, name_id); + if (!partial_name) + partial_name = "IDVALUE"; /* pure numbers are used as attributes in IupList and IupMatrix, + translate them into IDVALUE. */ + afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, partial_name); + if (afunc) + { + *def_value = NULL; /* id numbered attributes have default value NULL always */ + *inherit = 0; /* id numbered attributes are NON inheritable always */ + return; /* if the function exists, then must return here */ + } + } + } + + /* if not has_attrib_id, or not found an ID, or not found the partial name, check using the full name */ + + afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name); + *def_value = NULL; + *inherit = 1; /* default is inheritable */ + if (afunc) + { + *def_value = iClassGetDefaultValue(afunc); + *inherit = !(afunc->flags & IUPAF_NO_INHERIT) && !(afunc->flags & IUPAF_NO_STRING); + } +} + +int iupClassObjectCurAttribIsInherit(Iclass* ic) +{ + IattribFunc* afunc = (IattribFunc*)iupTableGetCurr(ic->attrib_func); + if (afunc && !(afunc->flags & IUPAF_NO_INHERIT)) + return 1; + return 0; +} + +int iupClassObjectAttribIsNotString(Ihandle* ih, const char* name) +{ + IattribFunc* afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name); + if (afunc && afunc->flags & IUPAF_NO_STRING) + return 1; + return 0; +} + +void iupClassRegisterAttribute(Iclass* ic, const char* name, + IattribGetFunc _get, IattribSetFunc _set, + const char* _default_value, const char* _system_default, int _flags) +{ + IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name); + if (afunc) + free(afunc); /* overwrite a previous registration */ + + afunc = (IattribFunc*)malloc(sizeof(IattribFunc)); + afunc->get = _get; + afunc->set = _set; + if (_default_value == IUPAF_SAMEASSYSTEM) + afunc->default_value = _system_default; + else + afunc->default_value = _default_value; + afunc->system_default = _system_default; + afunc->flags = _flags; + + if (iClassIsGlobalDefault(afunc->default_value)) + afunc->call_global_default = 1; + else + afunc->call_global_default = 0; + + iupTableSet(ic->attrib_func, name, (void*)afunc, IUPTABLE_POINTER); +} + +void iupClassRegisterAttributeId(Iclass* ic, const char* name, + IattribGetIdFunc _get, IattribSetIdFunc _set, + int _flags) +{ + IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name); + if (afunc) + free(afunc); /* overwrite a previous registration */ + + afunc = (IattribFunc*)malloc(sizeof(IattribFunc)); + afunc->get = (IattribGetFunc)_get; + afunc->set = (IattribSetFunc)_set; + afunc->default_value = NULL; + afunc->system_default = NULL; + afunc->flags = _flags|IUPAF_HAS_ID|IUPAF_NO_INHERIT|IUPAF_NO_DEFAULTVALUE; + afunc->call_global_default = 0; + + iupTableSet(ic->attrib_func, name, (void*)afunc, IUPTABLE_POINTER); +} + +void iupClassRegisterGetAttribute(Iclass* ic, const char* name, + IattribGetFunc *_get, IattribSetFunc *_set, + const char* *_default_value, const char* *_system_default, int *_flags) +{ + IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name); + if (afunc) + { + if (_get) *_get = afunc->get; + if (_set) *_set = afunc->set; + if (_default_value) *_default_value = afunc->default_value; + if (_system_default) *_system_default = afunc->system_default; + if (_flags) *_flags = afunc->flags; + } +} + +void iupClassRegisterCallback(Iclass* ic, const char* name, const char* format) +{ + /* Since attributes and callbacks do not conflict + we can use the same structure to store the callback format using the default_value. */ + iupClassRegisterAttribute(ic, name, NULL, NULL, format, NULL, IUPAF_NO_INHERIT); +} + +char* iupClassCallbackGetFormat(Iclass* ic, const char* name) +{ + IattribFunc* afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name); + if (afunc) + return (char*)afunc->default_value; + return NULL; +} + +int IupGetClassAttributes(const char* classname, char** names, int n) +{ + Iclass* ic; + int i = 0; + char* name; + + iupASSERT(classname!=NULL); + if (!classname) + return 0; + + ic = iupRegisterFindClass(classname); + if (!ic) + return -1; + + if (!names || !n) + return iupTableCount(ic->attrib_func); + + name = iupTableFirst(ic->attrib_func); + while (name) + { + names[i] = name; + i++; + if (i == n) + break; + + name = iupTableNext(ic->attrib_func); + } + + return i; +} + +void IupSetClassDefaultAttribute(const char* classname, const char *name, const char* default_value) +{ + Iclass* ic; + IattribFunc* afunc; + + iupASSERT(classname!=NULL); + if (!classname) + return; + + iupASSERT(name!=NULL); + if (!name) + return; + + ic = iupRegisterFindClass(name); + if (!ic) + return; + + afunc = (IattribFunc*)iupTableGet(ic->attrib_func, name); + if (afunc && (!(afunc->flags & IUPAF_NO_DEFAULTVALUE) || !(afunc->flags & IUPAF_NO_STRING) || !(afunc->flags & IUPAF_HAS_ID))) + { + if (default_value == IUPAF_SAMEASSYSTEM) + afunc->default_value = afunc->system_default; + else + afunc->default_value = default_value; + + if (iClassIsGlobalDefault(afunc->default_value)) + afunc->call_global_default = 1; + else + afunc->call_global_default = 0; + } + else if (default_value) + iupClassRegisterAttribute(ic, name, NULL, NULL, default_value, NULL, IUPAF_DEFAULT); +} + +void IupSaveClassAttributes(Ihandle* ih) +{ + Iclass* ic; + char *name; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + ic = ih->iclass; + + name = iupTableFirst(ic->attrib_func); + while (name) + { + IattribFunc* afunc = (IattribFunc*)iupTableGet(ih->iclass->attrib_func, name); + if (afunc && !(afunc->flags & IUPAF_NO_STRING)) + { + int inherit; + char *def_value; + char *value = iupClassObjectGetAttribute(ih, name, &def_value, &inherit); + if (value && value != iupAttribGet(ih, name)) + iupAttribStoreStr(ih, name, value); + } + + name = iupTableNext(ic->attrib_func); + } +} + +void iupClassObjectEnsureDefaultAttributes(Ihandle* ih) +{ + Iclass* ic; + char *name; + + ic = ih->iclass; + + name = iupTableFirst(ic->attrib_func); + while (name) + { + IattribFunc* afunc = (IattribFunc*)iupTableGetCurr(ic->attrib_func); + if (afunc && afunc->set && (afunc->default_value || afunc->system_default) && + (!(afunc->flags & IUPAF_NO_DEFAULTVALUE) || !(afunc->flags & IUPAF_NO_STRING) || !(afunc->flags & IUPAF_HAS_ID))) + { + if ((!iupStrEqualNoCase(afunc->default_value, afunc->system_default)) || + (afunc->call_global_default && iupGlobalDefaultColorChanged(afunc->default_value))) + { + if ((!ih->handle && (afunc->flags & IUPAF_NOT_MAPPED)) || + (ih->handle && !(afunc->flags & IUPAF_NOT_MAPPED) && !iupAttribGet(ih, name))) + afunc->set(ih, iClassGetDefaultValue(afunc)); + } + } + + name = iupTableNext(ic->attrib_func); + } +} + +char* iupClassGetDefaultAttribute(const char* classname, const char *attrib_name) +{ + Iclass* ic; + IattribFunc* afunc; + + iupASSERT(classname!=NULL); + if (!classname) + return NULL; + + iupASSERT(attrib_name!=NULL); + if (!attrib_name) + return NULL; + + ic = iupRegisterFindClass(classname); + if (!ic) + return NULL; + + afunc = (IattribFunc*)iupTableGet(ic->attrib_func, attrib_name); + if (afunc) + return (char*)afunc->default_value; + else + return NULL; +} diff --git a/iup/src/iup_classbase.c b/iup/src/iup_classbase.c new file mode 100755 index 0000000..9cb9e63 --- /dev/null +++ b/iup/src/iup_classbase.c @@ -0,0 +1,466 @@ +/** \file + * \brief Ihandle Class Base Functions + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_str.h" +#include "iup_attrib.h" +#include "iup_assert.h" + + +void iupBaseCallValueChangedCb(Ihandle* ih) +{ + IFn vc_cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (vc_cb) + vc_cb(ih); +} + +int iupBaseTypeVoidMapMethod(Ihandle* ih) +{ + ih->handle = (InativeHandle*)-1; /* fake value just to indicate that it is already mapped */ + return IUP_NOERROR; +} + +char* iupBaseGetWidAttrib(Ihandle *ih) +{ + return (char*)ih->handle; +} + +void iupBaseUpdateSizeFromFont(Ihandle* ih) +{ + char* value = iupAttribGet(ih, "SIZE"); + if (!value) + return; + + iupBaseSetSizeAttrib(ih, value); +} + +int iupBaseSetSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + /* if not specified, the value is 0 */ + int w = 0, h = 0; + int charwidth, charheight; + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + iupStrToIntInt(value, &w, &h, 'x'); + if (w < 0) w = 0; + if (h < 0) h = 0; + + ih->userwidth = iupWIDTH2RASTER(w, charwidth); + ih->userheight = iupHEIGHT2RASTER(h, charheight); + } + return 1; /* always save in the hash table, so when FONT is changed SIZE can be updated */ +} + +char* iupBaseGetSizeAttrib(Ihandle* ih) +{ + char* str; + int charwidth, charheight, width, height; + + if (ih->handle) + { + width = ih->currentwidth; + height = ih->currentheight; + } + else + { + width = ih->userwidth; + height = ih->userheight; + } + + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + if (charwidth == 0 || charheight == 0) + return NULL; /* if font failed get from the hash table */ + + str = iupStrGetMemory(50); + sprintf(str, "%dx%d", iupRASTER2WIDTH(width, charwidth), + iupRASTER2HEIGHT(height, charheight)); + return str; +} + +int iupBaseSetRasterSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + /* if not specified, the value is 0 */ + int w = 0, h = 0; + iupStrToIntInt(value, &w, &h, 'x'); + if (w < 0) w = 0; + if (h < 0) h = 0; + ih->userwidth = w; + ih->userheight = h; + } + iupAttribSetStr(ih, "SIZE", NULL); /* clear SIZE in hash table */ + return 0; +} + +char* iupBaseGetRasterSizeAttrib(Ihandle* ih) +{ + char* str; + int width, height; + + if (ih->handle) + { + width = ih->currentwidth; + height = ih->currentheight; + } + else + { + width = ih->userwidth; + height = ih->userheight; + } + + if (!width && !height) + return NULL; + + str = iupStrGetMemory(50); + sprintf(str, "%dx%d", width, height); + return str; +} + +char* iupBaseGetCharSizeAttrib(Ihandle* ih) +{ + char* str; + int charwidth, charheight; + + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + if (charwidth == 0 || charheight == 0) + return NULL; + + str = iupStrGetMemory(50); + sprintf(str, "%dx%d", charwidth, charheight); + return str; +} + +static char* iBaseGetPositionAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(50); + sprintf(str, "%d,%d", ih->x, ih->y); + return str; +} + +static int iBaseSetPositionAttrib(Ihandle* ih, const char* value) +{ + if (ih->is_floating) + iupStrToIntInt(value, &ih->x, &ih->y, ','); + return 0; +} + +char* iupBaseGetActiveAttrib(Ihandle *ih) +{ + if (iupdrvIsActive(ih)) + return "YES"; + else + return "NO"; +} + +static int iBaseNativeParentIsActive(Ihandle* ih) +{ + if (!ih->parent) + return 1; + + if (ih->parent->iclass->nativetype == IUP_TYPEVOID) + return iBaseNativeParentIsActive(ih->parent); + else + return iupdrvIsActive(ih->parent); +} + +int iupBaseSetActiveAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + { + if (iBaseNativeParentIsActive(ih)) + iupdrvSetActive(ih, 1); + } + else + iupdrvSetActive(ih, 0); + return 0; +} + +char* iupBaseGetVisibleAttrib(Ihandle* ih) +{ + if (iupdrvIsVisible(ih)) + return "YES"; + else + return "NO"; +} + +int iupBaseSetVisibleAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetVisible(ih, iupStrBoolean(value)); + return 0; +} + +char* iupBaseNativeParentGetBgColorAttrib(Ihandle* ih) +{ + /* Used only by those who need a transparent background */ + char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR"); + if (!color) color = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + if (!color) color = IupGetGlobal("DLGBGCOLOR"); + return color; +} + +char* iupBaseNativeParentGetBgColor(Ihandle* ih) +{ + /* Used in SetBgColorAttrib */ + char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR"); + if (!color) color = IupGetGlobal("DLGBGCOLOR"); + return color; +} + +int iupBaseGetScrollbar(Ihandle* ih) +{ + int sb = IUP_SB_NONE; /* NO scrollbar by default */ + char* value = IupGetAttribute(ih, "SCROLLBAR"); + if (value) + { + if (iupStrEqualNoCase(value, "YES")) + sb = IUP_SB_HORIZ | IUP_SB_VERT; + else if (iupStrEqualNoCase(value, "HORIZONTAL")) + sb = IUP_SB_HORIZ; + else if (iupStrEqualNoCase(value, "VERTICAL")) + sb = IUP_SB_VERT; + } + return sb; +} + +static int iBaseSetNormalizerGroupAttrib(Ihandle* ih, const char* value) +{ + Ihandle* ih_normalizer = IupGetHandle(value); + if (!ih_normalizer) + { + ih_normalizer = IupNormalizer(NULL); + IupSetHandle(value, ih_normalizer); + } + + IupSetAttribute(ih_normalizer, "ADDCONTROL_HANDLE", (char*)ih); + return 1; +} + +static Ihandle* iBaseFindChild(Ihandle* ih, const char* name) +{ + Ihandle* child = ih->firstchild; + while (child) + { + char* child_name = iupAttribGet(child, "NAME"); + if (child_name && iupStrEqualNoCase(name, child_name)) + return child; + + if (child->firstchild) + { + Ihandle* c = iBaseFindChild(child, name); + if (c) return c; + } + + child = child->brother; + } + return NULL; +} + +Ihandle* IupGetDialogChild(Ihandle* ih, const char* name) +{ + Ihandle *child, *dialog; + char attrib[1024] = "_IUP_DIALOG_CHILD_"; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + if (!name) + return NULL; + + dialog = IupGetDialog(ih); + if (dialog) ih = dialog; + + strcat(attrib, name); + child = (Ihandle*)iupAttribGet(ih, attrib); + if (child) return child; + + if (ih->firstchild) + { + child = iBaseFindChild(ih, name); + if (child) return child; + } + return NULL; +} + +int iupBaseSetNameAttrib(Ihandle* ih, const char* value) +{ + Ihandle* dialog = IupGetDialog(ih); + if (dialog) + { + char attrib[1024] = "_IUP_DIALOG_CHILD_"; + strcat(attrib, value); + iupAttribSetStr(dialog, attrib, (char*)ih); + } + return 1; +} + +static int iBaseSetFloatingAttrib(Ihandle* ih, const char* value) +{ + ih->is_floating = iupStrBoolean(value); + return 0; +} + +static char* iBaseGetFloatingAttrib(Ihandle* ih) +{ + if (ih->is_floating) + return "YES"; + else + return "NO"; +} + +static int iBaseSetMaxSizeAttrib(Ihandle* ih, const char* value) +{ + if (value) + ih->has_maxsize = 1; + else + ih->has_maxsize = 0; + return 1; +} + +static int iBaseSetMinSizeAttrib(Ihandle* ih, const char* value) +{ + if (value) + ih->has_minsize = 1; + else + ih->has_minsize = 0; + return 1; +} + +static int iBaseSetExpandAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "YES")) + ih->expand = IUP_EXPAND_BOTH; + else if (iupStrEqualNoCase(value, "HORIZONTAL")) + ih->expand = IUP_EXPAND_WIDTH; + else if (iupStrEqualNoCase(value, "VERTICAL")) + ih->expand = IUP_EXPAND_HEIGHT; + else + ih->expand = IUP_EXPAND_NONE; + return 0; +} + +static char* iBaseGetExpandAttrib(Ihandle* ih) +{ + if (ih->expand & IUP_EXPAND_BOTH) + return "YES"; + else if (ih->expand & IUP_EXPAND_WIDTH) + return "HORIZONTAL"; + else if (ih->expand & IUP_EXPAND_HEIGHT) + return "VERTICAL"; + else + return "NO"; +} + +void iupBaseContainerUpdateExpand(Ihandle* ih) +{ + char *expand = iupAttribGetInherit(ih, "EXPAND"); + if (!expand) + ih->expand = IUP_EXPAND_BOTH; /* default for containers is YES */ + else + { + if (iupStrEqualNoCase(expand, "NO")) + ih->expand = IUP_EXPAND_NONE; + else if (iupStrEqualNoCase(expand, "HORIZONTAL")) + ih->expand = IUP_EXPAND_WIDTH; + else if (iupStrEqualNoCase(expand, "VERTICAL")) + ih->expand = IUP_EXPAND_HEIGHT; + else + ih->expand = IUP_EXPAND_BOTH; /* default for containers is YES */ + } +} + +/* EXPAND is registered with IUP_NO_INHERIT because it is not inheritable, + but it is inheritable for containers. + So if you set at a container it will not affect its children, + but children that are containers will get the same value. */ +char* iupBaseContainerGetExpandAttrib(Ihandle* ih) +{ + return iupAttribGetInherit(ih, "EXPAND"); +} + +void iupBaseRegisterCommonAttrib(Iclass* ic) +{ + iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FLOATING", iBaseGetFloatingAttrib, iBaseSetFloatingAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "EXPAND", iBaseGetExpandAttrib, iBaseSetExpandAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NORMALIZERGROUP", NULL, iBaseSetNormalizerGroupAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* make sure everyone has the correct default value */ + iupClassRegisterAttribute(ic, "VISIBLE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "ACTIVE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + if (ic->is_interactive) + iupClassRegisterAttribute(ic, "CANFOCUS", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + else + iupClassRegisterAttribute(ic, "CANFOCUS", NULL, NULL, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iupBaseSetSizeAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iupBaseSetRasterSizeAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CHARSIZE", iupBaseGetCharSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "POSITION", iBaseGetPositionAttrib, iBaseSetPositionAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MAXSIZE", NULL, iBaseSetMaxSizeAttrib, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MINSIZE", NULL, iBaseSetMinSizeAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */ + iupClassRegisterAttribute(ic, "FONT", iupGetFontAttrib, iupSetFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "FONTSTYLE", iupGetFontStyleAttrib, iupSetFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FONTSIZE", iupGetFontSizeAttrib, iupSetFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FONTFACE", iupGetFontFaceAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvBaseRegisterCommonAttrib(ic); +} + +void iupBaseRegisterVisualAttrib(Iclass* ic) +{ + iupClassRegisterAttribute(ic, "VISIBLE", iupBaseGetVisibleAttrib, iupBaseSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); /* VISIBLE inheritance comes from the native system */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + + iupClassRegisterAttribute(ic, "ZORDER", NULL, iupdrvBaseSetZorderAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "X", iupdrvBaseGetXAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "Y", iupdrvBaseGetYAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "TIP", NULL, iupdrvBaseSetTipAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TIPVISIBLE", NULL, iupdrvBaseSetTipVisibleAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TIPDELAY", NULL, NULL, IUPAF_SAMEASSYSTEM, "5000", IUPAF_NOT_MAPPED); /* 5 seconds */ + iupClassRegisterAttribute(ic, "TIPBGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "255 255 225", IUPAF_NOT_MAPPED); /* Light Yellow */ + iupClassRegisterAttribute(ic, "TIPFGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED); /* black */ +} + +void iupBaseRegisterCommonCallbacks(Iclass* ic) +{ + iupClassRegisterAttribute(ic, "MAP_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "UNMAP_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "GETFOCUS_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "KILLFOCUS_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ENTERWINDOW_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LEAVEWINDOW_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HELP_CB", NULL, NULL, "", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "K_ANY", NULL, NULL, "i", NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/iup_classbase.h b/iup/src/iup_classbase.h new file mode 100755 index 0000000..1ced9c6 --- /dev/null +++ b/iup/src/iup_classbase.h @@ -0,0 +1,175 @@ +/** \file + * \brief Base Class + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_CLASSBASE_H +#define __IUP_CLASSBASE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup iclassbase Base Class + * \par + * See \ref iup_classbase.h + * \ingroup iclass + */ + + +/** Register all common base attributes: \n + * WID \n + * SIZE, RASTERSIZE, POSITION \n + * FONT (and derived) \n\n + * All controls that are positioned inside a dialog must register all common base attributes. + * \ingroup iclassbase */ +void iupBaseRegisterCommonAttrib(Iclass* ic); + +/** Register all visual base attributes: \n + * VISIBLE, ACTIVE \n + * ZORDER, X, Y \n + * TIP (and derived) \n\n + * All controls that are positioned inside a dialog must register all visual base attributes. + * \ingroup iclassbase */ +void iupBaseRegisterVisualAttrib(Iclass* ic); + +/** Register all common callbacks: \n +* MAP_CB, UNMAP_CB, GETFOCUS_CB, KILLFOCUS_CB, ENTERWINDOW_CB, LEAVEWINDOW_CB, K_ANY, HELP_CB. +* \ingroup iclassbase */ +void iupBaseRegisterCommonCallbacks(Iclass* ic); + +/* Register driver dependent common attributes. + Used only from iupBaseRegisterCommonAttrib */ +void iupdrvBaseRegisterCommonAttrib(Iclass* ic); + +/** Updates the expand member of the IUP object from the EXPAND attribute. + * Should be called in the beginning of the ComputeNaturalSize for a container. + * \ingroup iclassbase */ +void iupBaseContainerUpdateExpand(Ihandle* ih); + +/** Initializes the natural size using the user size, then + * if a container then update the "expand" member from the EXPAND attribute, then + * call \ref iupClassObjectComputeNaturalSize for containers if they have children or + * call \ref iupClassObjectComputeNaturalSize for non-containers if user size is not defined. + * Must be called for each children in the container. \n + * First call is in iupLayoutCompute. + * \ingroup iclassbase */ +void iupBaseComputeNaturalSize(Ihandle* ih); + +/** Update the current size from the available size, the natural size, expand and shrink. + * Call \ref iupClassObjectSetChildrenCurrentSize for containers if they have children. + * Must be called for each children in the container. \n + * First call is in iupLayoutCompute. + * \ingroup iclassbase */ +void iupBaseSetCurrentSize(Ihandle* ih, int w, int h, int shrink); + +/** Set the current position and update children position for containers. + * Call \ref iupClassObjectSetChildrenPosition for containers if they have children. + * Must be called for each children in the container. \n + * First call is in iupLayoutCompute. + * \ingroup iclassbase */ +void iupBaseSetPosition(Ihandle* ih, int x, int y); + +/* Updates the SIZE attribute if defined. + Called only from iupdrvSetStandardFontAttrib. */ +void iupBaseUpdateSizeFromFont(Ihandle* ih); + + +/** \defgroup iclassbasemethod Base Class Methods + * \par + * See \ref iup_classbase.h + * \ingroup iclassbase + */ + +/** Driver dependent \ref Iclass::LayoutUpdate method. + * \ingroup iclassbasemethod */ +void iupdrvBaseLayoutUpdateMethod(Ihandle *ih); + +/** Driver dependent \ref Iclass::UnMap method. + * \ingroup iclassbasemethod */ +void iupdrvBaseUnMapMethod(Ihandle* ih); + +/** Native type void \ref Iclass::Map method. + * \ingroup iclassbasemethod */ +int iupBaseTypeVoidMapMethod(Ihandle* ih); + + +/** \defgroup iclassbaseattribfunc Base Class Attribute Functions + * \par + * Used by the controls for iupClassRegisterAttribute. + * \par + * See \ref iup_classbase.h + * \ingroup iclassbase + * @{ + */ + +/* common */ +char* iupBaseGetWidAttrib(Ihandle* ih); +int iupBaseSetNameAttrib(Ihandle* ih, const char* value); +int iupBaseSetRasterSizeAttrib(Ihandle* ih, const char* value); +int iupBaseSetSizeAttrib(Ihandle* ih, const char* value); +char* iupBaseGetSizeAttrib(Ihandle* ih); +char* iupBaseGetRasterSizeAttrib(Ihandle* ih); + +/* visual */ +char* iupBaseGetVisibleAttrib(Ihandle* ih); +int iupBaseSetVisibleAttrib(Ihandle* ih, const char* value); +char* iupBaseGetActiveAttrib(Ihandle *ih); +int iupBaseSetActiveAttrib(Ihandle* ih, const char* value); +int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value); +char *iupdrvBaseGetXAttrib(Ihandle *ih); +char *iupdrvBaseGetYAttrib(Ihandle *ih); +int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value); +int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value); +int iupdrvBaseSetBgColorAttrib(Ihandle* ih, const char* value); +int iupdrvBaseSetFgColorAttrib(Ihandle* ih, const char* value); +char* iupBaseNativeParentGetBgColorAttrib(Ihandle* ih); + +/* other */ +char* iupBaseContainerGetExpandAttrib(Ihandle* ih); +int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value); +char* iupdrvBaseGetClientSizeAttrib(Ihandle* ih); + +/* Windows Only */ +char* iupdrvBaseGetTitleAttrib(Ihandle* ih); +int iupdrvBaseSetTitleAttrib(Ihandle* ih, const char* value); + +/** @} */ + + + +/** \defgroup iclassbaseutil Base Class Utilities + * \par + * See \ref iup_classbase.h + * \ingroup iclassbase + * @{ + */ + +#define iupMAX(_a,_b) ((_a)>(_b)?(_a):(_b)) +#define iupROUND(_x) ((int)((_x)>0? (_x)+0.5: (_x)-0.5)) + +#define iupCOLOR8TO16(_x) ((unsigned short)(_x*257)) /* 65535/255 = 257 */ +#define iupCOLOR16TO8(_x) ((unsigned char)(_x/257)) + +#define iupBYTECROP(_x) ((unsigned char)((_x)<0?0:((_x)>255)?255:(_x))) + +enum{IUP_ALIGN_ALEFT, IUP_ALIGN_ACENTER, IUP_ALIGN_ARIGHT}; +#define IUP_ALIGN_ABOTTOM IUP_ALIGN_ARIGHT +#define IUP_ALIGN_ATOP IUP_ALIGN_ALEFT + +enum{IUP_SB_NONE, IUP_SB_HORIZ, IUP_SB_VERT}; +int iupBaseGetScrollbar(Ihandle* ih); + +char* iupBaseNativeParentGetBgColor(Ihandle* ih); +void iupBaseCallValueChangedCb(Ihandle* ih); + +/** @} */ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_colordlg.c b/iup/src/iup_colordlg.c new file mode 100755 index 0000000..d3835cd --- /dev/null +++ b/iup/src/iup_colordlg.c @@ -0,0 +1,44 @@ +/** \file + * \brief IupColorDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + + +Ihandle* IupColorDlg(void) +{ + return IupCreate("colordlg"); +} + +Iclass* iupColorDlgGetClass(void) +{ + Iclass* ic = iupClassNew(iupDialogGetClass()); + + ic->name = "colordlg"; + ic->nativetype = IUP_TYPEDIALOG; + ic->is_interactive = 1; + + /* reset not used native dialog methods */ + ic->parent->LayoutUpdate = NULL; + ic->parent->SetChildrenPosition = NULL; + ic->parent->Map = NULL; + ic->parent->UnMap = NULL; + + iupdrvColorDlgInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_dialog.c b/iup/src/iup_dialog.c new file mode 100755 index 0000000..d70e12c --- /dev/null +++ b/iup/src/iup_dialog.c @@ -0,0 +1,747 @@ +/** \file + * \brief IupDialog class + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_class.h" +#include "iup_object.h" +#include "iup_dlglist.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_drvfont.h" +#include "iup_focus.h" +#include "iup_str.h" +#define _IUPDLG_PRIVATE +#include "iup_dialog.h" + + +static int dlg_popup_level = 1; + +InativeHandle* iupDialogGetNativeParent(Ihandle* ih) +{ + Ihandle* parent = IupGetAttributeHandle(ih, "PARENTDIALOG"); + if (parent && parent->handle) + return parent->handle; + else + return (InativeHandle*)iupAttribGet(ih, "NATIVEPARENT"); +} + +static void iupDialogAdjustPos(Ihandle *ih, int *x, int *y) +{ + int cursor_x = 0, cursor_y = 0; + int screen_width = 0, screen_height = 0; + int current_x = 0, current_y = 0; + int parent_x = 0, parent_y = 0; + + /* the dialog is already mapped here */ + + if (*x == IUP_CURRENT || *y == IUP_CURRENT) + { + /* if first time, there is no current position */ + if (!ih->data->first_show) + { + int center = IUP_CENTER; + InativeHandle* parent = iupDialogGetNativeParent(ih); + if (parent) + center = IUP_CENTERPARENT; + + if (*x == IUP_CURRENT) *x = center; + if (*y == IUP_CURRENT) *y = center; + } + else + iupdrvDialogGetPosition(ih->handle, ¤t_x, ¤t_y); + } + + if (*x == IUP_CENTER || *y == IUP_CENTER || + *x == IUP_RIGHT || *y == IUP_RIGHT || + *x == IUP_CENTERPARENT || *y == IUP_CENTERPARENT) + iupdrvGetScreenSize(&screen_width, &screen_height); + + if (*x == IUP_CENTERPARENT || *y == IUP_CENTERPARENT) + { + InativeHandle* parent = iupDialogGetNativeParent(ih); + if (parent) + { + iupdrvDialogGetPosition(parent, &parent_x, &parent_y); + + if (*x == IUP_CENTERPARENT && *y == IUP_CENTERPARENT) + iupdrvDialogGetSize(parent, &screen_width, &screen_height); + else if (*x == IUP_CENTERPARENT) + iupdrvDialogGetSize(parent, &screen_width, NULL); + else if (*y == IUP_CENTERPARENT) + iupdrvDialogGetSize(parent, NULL, &screen_height); + } + } + + if (*x == IUP_MOUSEPOS || *y == IUP_MOUSEPOS) + iupdrvGetCursorPos(&cursor_x, &cursor_y); + + if (iupAttribGetBoolean(ih, "MDICHILD")) + { + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + if (client) + { + /* position is relative to mdi client */ + parent_x = 0; + parent_y = 0; + + /* screen size is now the size of the mdi client */ + screen_width = client->currentwidth; + screen_height = client->currentheight; + + iupdrvScreenToClient(client, ¤t_x, ¤t_y); + iupdrvScreenToClient(client, &cursor_x, &cursor_y); + } + } + + switch (*x) + { + case IUP_CENTERPARENT: + *x = (screen_width - ih->currentwidth)/2 + parent_x; + break; + case IUP_CENTER: + *x = (screen_width - ih->currentwidth)/2; + break; + case IUP_LEFT: + *x = 0; + break; + case IUP_RIGHT: + *x = screen_width - ih->currentwidth; + break; + case IUP_MOUSEPOS: + *x = cursor_x; + break; + case IUP_CURRENT: + *x = current_x; + break; + } + + switch (*y) + { + case IUP_CENTERPARENT: + *y = (screen_height - ih->currentheight)/2 + parent_y; + break; + case IUP_CENTER: + *y = (screen_height - ih->currentheight)/2; + break; + case IUP_LEFT: + *y = 0; + break; + case IUP_RIGHT: + *y = screen_height - ih->currentheight; + break; + case IUP_MOUSEPOS: + *y = cursor_y; + break; + case IUP_CURRENT: + *y = current_y; + break; + } +} + +static void iDialogSetModal(Ihandle* ih_popup) +{ + Ihandle *ih; + iupAttribSetStr(ih_popup, "MODAL", "YES"); + + /* disable all visible dialogs, and mark popup level */ + for (ih = iupDlgListFirst(); ih; ih = iupDlgListNext()) + { + if (ih != ih_popup && + ih->handle && + iupdrvDialogIsVisible(ih) && + ih->data->popup_level == 0) + { + iupdrvSetActive(ih, 0); + ih->data->popup_level = dlg_popup_level; + } + } + + dlg_popup_level++; +} + +static void iDialogUnSetModal(Ihandle* ih_popup) +{ + Ihandle *ih; + if (!iupAttribGetBoolean(ih_popup, "MODAL")) + return; + + iupAttribSetStr(ih_popup, "MODAL", NULL); + + /* must enable all visible dialogs at the marked popup level */ + for (ih = iupDlgListFirst(); ih; ih = iupDlgListNext()) + { + if (ih->handle) + { + if (ih->data->popup_level == dlg_popup_level-1) + { + iupdrvSetActive(ih, 1); + ih->data->popup_level = 0; + } + } + } + + dlg_popup_level--; +} + +static int iDialogCreateMethod(Ihandle* ih, void** params) +{ + ih->data = iupALLOCCTRLDATA(); + + ih->data->child_id = 100; /* initial number */ + ih->data->show_state = IUP_HIDE; + + if (params) + { + Ihandle** iparams = (Ihandle**)params; + if (*iparams) + IupAppend(ih, *iparams); + } + + iupDlgListAdd(ih); + + return IUP_NOERROR; +} + +static void iDialogDestroyMethod(Ihandle* ih) +{ + iupDlgListRemove(ih); +} + +static void iDialogComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int decorwidth, decorheight; + Ihandle* child = ih->firstchild; + + iupDialogGetDecorSize(ih, &decorwidth, &decorheight); + *w = decorwidth; + *h = decorheight; + + if (child) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + *expand = child->expand; + *w += child->naturalwidth; + *h += child->naturalheight; + } +} + +static void iDialogSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + int decorwidth, decorheight, client_width, client_height; + + if (shrink) + { + client_width = ih->currentwidth; + client_height = ih->currentheight; + } + else + { + client_width = iupMAX(ih->naturalwidth, ih->currentwidth); + client_height = iupMAX(ih->naturalheight, ih->currentheight); + } + + iupDialogGetDecorSize(ih, &decorwidth, &decorheight); + + client_width -= decorwidth; + client_height -= decorheight; + if (client_width < 0) client_width = 0; + if (client_height < 0) client_height = 0; + + iupBaseSetCurrentSize(ih->firstchild, client_width, client_height, shrink); +} + +static void iDialogSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + (void)x; + (void)y; + + /* Child coordinates are relative to client left-top corner. */ + iupBaseSetPosition(ih->firstchild, 0, 0); +} + +static void iDialogAfterShow(Ihandle* ih) +{ + Ihandle* old_focus; + IFni show_cb; + + /* process all pending messages */ + IupFlush(); + + old_focus = IupGetFocus(); + + show_cb = (IFni)IupGetCallback(ih, "SHOW_CB"); + if (show_cb && show_cb(ih, ih->data->show_state) == IUP_CLOSE) + { + IupExitLoop(); + return; + } + + if (ih->data->show_state == IUP_SHOW) + { + if (show_cb) + IupFlush(); /* again to update focus */ + + /* do it only if show_cb did NOT changed the current focus */ + if (old_focus == IupGetFocus()) + { + Ihandle *startfocus = IupGetAttributeHandle(ih, "STARTFOCUS"); + if (startfocus) + IupSetFocus(startfocus); + else + IupNextField(ih); + } + } +} + +int iupDialogGetChildId(Ihandle* ih) +{ + int id; + ih = IupGetDialog(ih); + if (!ih) return -1; + id = ih->data->child_id; + ih->data->child_id = id+1; + return id; +} + +char* iupDialogGetChildIdStr(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + Ihandle* dialog = IupGetDialog(ih); + sprintf(str, "iup-%s-%d", ih->iclass->name, dialog->data->child_id); + return str; +} + +int iupDialogPopup(Ihandle* ih, int x, int y) +{ + int was_visible; + + int ret = iupClassObjectDlgPopup(ih, x, y); + if (ret != IUP_INVALID) /* IUP_INVALID means it is not implemented */ + return ret; + + ih->data->show_state = IUP_SHOW; + + /* save visible state before iupdrvDialogSetPlacement */ + /* because it can also show the window when changing placement. */ + was_visible = iupdrvDialogIsVisible(ih); + + /* Update the position and placement */ + if (!iupdrvDialogSetPlacement(ih)) + { + iupDialogAdjustPos(ih, &x, &y); + iupdrvDialogSetPosition(ih, x, y); + } + + if (was_visible) /* already visible */ + { + /* only re-show to raise the window */ + iupdrvDialogSetVisible(ih, 1); + + /* flush, then process show_cb and startfocus */ + iDialogAfterShow(ih); + return IUP_NOERROR; + } + + if (iupAttribGetBoolean(ih, "MODAL")) /* already a popup */ + return IUP_NOERROR; + + iDialogSetModal(ih); + + ih->data->first_show = 1; + + /* actually show the window */ + /* test if placement turn the dialog visible */ + if (!iupdrvDialogIsVisible(ih)) + iupdrvDialogSetVisible(ih, 1); + + /* increment visible count */ + iupDlgListVisibleInc(); + + /* flush, then process show_cb and startfocus */ + iDialogAfterShow(ih); + + /* interrupt processing here */ + IupMainLoop(); + + /* if window is still valid (IupDestroy not called), + hide the dialog if still visible. */ + if (iupObjectCheck(ih)) + { + iDialogUnSetModal(ih); + IupHide(ih); + } + + return IUP_NOERROR; +} + +int iupDialogShowXY(Ihandle* ih, int x, int y) +{ + int was_visible; + + /* Calling IupShow for a visible dialog shown with IupPopup does nothing. */ + if (iupAttribGetBoolean(ih, "MODAL")) /* already a popup */ + return IUP_NOERROR; + + if (ih->data->popup_level != 0) + { + /* was disabled by a Popup, re-enable it */ + iupdrvSetActive(ih, 1); + ih->data->popup_level = 0; /* Now it is at the current popup level */ + } + + /* save visible state before iupdrvDialogSetPlacement */ + /* because it can also show the window when changing placement. */ + was_visible = iupdrvDialogIsVisible(ih); + + /* Update the position and placement */ + if (!iupdrvDialogSetPlacement(ih)) + { + iupDialogAdjustPos(ih, &x, &y); + iupdrvDialogSetPosition(ih, x, y); + } + + if (was_visible) /* already visible */ + { + /* only re-show to raise the window */ + iupdrvDialogSetVisible(ih, 1); + + /* flush, then process show_cb and startfocus */ + iDialogAfterShow(ih); + return IUP_NOERROR; + } + + ih->data->first_show = 1; + + /* actually show the window */ + /* test if placement turn the dialog visible */ + if (!iupdrvDialogIsVisible(ih)) + iupdrvDialogSetVisible(ih, 1); + + /* increment visible count */ + iupDlgListVisibleInc(); + + /* flush, then process show_cb and startfocus */ + iDialogAfterShow(ih); + + return IUP_NOERROR; +} + +void iupDialogHide(Ihandle* ih) +{ + /* hidden at the system and marked hidden in IUP */ + if (!iupdrvDialogIsVisible(ih) && ih->data->show_state == IUP_HIDE) + return; + + /* marked hidden in IUP */ + ih->data->show_state = IUP_HIDE; + + /* if called IupHide for a Popup window */ + if (iupAttribGetBoolean(ih, "MODAL")) + { + iDialogUnSetModal(ih); + IupExitLoop(); + } + + ih->data->ignore_resize = 1; + + /* actually hide the window */ + iupdrvDialogSetVisible(ih, 0); + + ih->data->ignore_resize = 0; + + /* decrement visible count */ + iupDlgListVisibleDec(); + + if (iupDlgListVisibleCount() <= 0) + { + /* if this is the last window visible, + exit message loop except when LOCKLOOP==YES */ + if (!iupStrBoolean(IupGetGlobal("LOCKLOOP"))) + IupExitLoop(); + } + + /* flush, then process show_cb and startfocus */ + iDialogAfterShow(ih); +} + + +/****************************************************************/ + + +static int iDialogSizeGetScale(const char* sz) +{ + if (!sz || sz[0] == 0) return 0; + if (iupStrEqualNoCase(sz, "FULL")) return 1; + if (iupStrEqualNoCase(sz, "HALF")) return 2; + if (iupStrEqualNoCase(sz, "THIRD")) return 3; + if (iupStrEqualNoCase(sz, "QUARTER")) return 4; + if (iupStrEqualNoCase(sz, "EIGHTH")) return 8; + return 0; +} + +static int iDialogSetSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + char *sh, sw[40]; + strcpy(sw, value); + sh = strchr(sw, 'x'); + if (!sh) + sh = ""; + else + { + *sh = '\0'; /* to mark the end of sw */ + ++sh; + } + + { + int charwidth, charheight; + int screen_width, screen_height; + int wscale = iDialogSizeGetScale(sw); + int hscale = iDialogSizeGetScale(sh); + + int width = 0, height = 0; + iupStrToIntInt(value, &width, &height, 'x'); + if (width < 0) width = 0; + if (height < 0) height = 0; + + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + + /* desktop size, excluding task bars and menu bars */ + iupdrvGetScreenSize(&screen_width, &screen_height); + + if (wscale) + width = screen_width/wscale; + else + width = iupWIDTH2RASTER(width, charwidth); + + if (hscale) + height = screen_height/hscale; + else + height = iupHEIGHT2RASTER(height, charheight); + + ih->userwidth = width; + ih->userheight = height; + } + } + + /* must reset the current size, */ + /* so the user or the natural size will be used to resize the dialog */ + ih->currentwidth = 0; + ih->currentheight = 0; + + return 0; +} + +static int iDialogSetRasterSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + int w = 0, h = 0; + iupStrToIntInt(value, &w, &h, 'x'); + if (w < 0) w = 0; + if (h < 0) h = 0; + ih->userwidth = w; + ih->userheight = h; + } + + /* must reset the current size also, */ + /* so the user or the natural size will be used to resize the dialog */ + ih->currentwidth = 0; + ih->currentheight = 0; + + return 0; +} + +static int iDialogSetVisibleAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + IupShow(ih); + else + IupHide(ih); + return 0; +} + +void iupDialogUpdatePosition(Ihandle* ih) +{ + /* Used by pre-defined popup native dialogs */ + int x = iupAttribGetInt(ih, "_IUPDLG_X"); + int y = iupAttribGetInt(ih, "_IUPDLG_Y"); + iupdrvDialogUpdateSize(ih); + /* handle always as visible for the first time */ + ih->data->first_show = 0; + iupDialogAdjustPos(ih, &x, &y); + iupdrvDialogSetPosition(ih, x, y); +} + +void iupDialogGetDecorSize(Ihandle* ih, int *decorwidth, int *decorheight) +{ + int border, caption, menu; + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + *decorwidth = 2*border; + *decorheight = 2*border + caption + menu; +} + +static int iDialogSetHideTaskbarAttrib(Ihandle *ih, const char *value) +{ + iupdrvDialogSetVisible(ih, !iupStrBoolean(value)); + return 0; +} + +static int iDialogSetMenuAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) + { + Ihandle* menu = IupGetHandle(value); + ih->data->menu = menu; + return 1; + } + + if (!value) + { + if (ih->data->menu && ih->data->menu->handle) + { + ih->data->ignore_resize = 1; + IupUnmap(ih->data->menu); /* this will remove the menu from the dialog */ + ih->data->ignore_resize = 0; + + ih->data->menu = NULL; + } + } + else + { + Ihandle* menu = IupGetHandle(value); + if (!menu || menu->iclass->nativetype != IUP_TYPEMENU || menu->parent) + return 0; + + /* already the current menu and it is mapped */ + if (ih->data->menu && ih->data->menu==menu && menu->handle) + return 1; + + /* the current menu is mapped, so unmap it */ + if (ih->data->menu && ih->data->menu->handle && ih->data->menu!=menu) + { + ih->data->ignore_resize = 1; + IupUnmap(ih->data->menu); /* this will remove the menu from the dialog */ + ih->data->ignore_resize = 0; + } + + ih->data->menu = menu; + + menu->parent = ih; /* use this to create a menu bar instead of a popup menu */ + + ih->data->ignore_resize = 1; + IupMap(menu); /* this will automatically add the menu to the dialog */ + ih->data->ignore_resize = 0; + } + return 1; +} + + +/****************************************************************/ + + +Ihandle* IupDialog(Ihandle* child) +{ + void *params[2]; + params[0] = child; + params[1] = NULL; + return IupCreatev("dialog", params); +} + +Iclass* iupDialogGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "dialog"; + ic->format = "H"; /* one optional ihandle */ + ic->nativetype = IUP_TYPEDIALOG; + ic->childtype = IUP_CHILD_ONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iDialogCreateMethod; + ic->Destroy = iDialogDestroyMethod; + ic->ComputeNaturalSize = iDialogComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iDialogSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iDialogSetChildrenPositionMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "SHOW_CB", "i"); + iupClassRegisterCallback(ic, "DROPFILES_CB", "siii"); + iupClassRegisterCallback(ic, "RESIZE_CB", "ii"); + iupClassRegisterCallback(ic, "CLOSE_CB", ""); + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Attribute functions */ + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iDialogSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iDialogSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "POSITION", NULL, NULL, NULL, NULL, IUPAF_WRITEONLY|IUPAF_READONLY|IUPAF_NO_INHERIT); /* forbidden in dialog */ + + /* Base Container */ + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "VISIBLE", iupBaseGetVisibleAttrib, iDialogSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NO_INHERIT); /* the only case where VISIBLE default is NO */ + + /* IupDialog only */ + iupClassRegisterAttribute(ic, "MENU", NULL, iDialogSetMenuAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HIDETASKBAR", NULL, iDialogSetHideTaskbarAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MAXBOX", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MENUBOX", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MINBOX", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RESIZE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BORDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "DEFAULTENTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DEFAULTESC", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DIALOGFRAME", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PARENTDIALOG", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHRINK", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "STARTFOCUS", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MODAL", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PLACEMENT", NULL, NULL, "NORMAL", NULL, IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "NATIVEPARENT", NULL, NULL, NULL, NULL, IUPAF_NO_STRING); + + iupdrvDialogInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_dialog.h b/iup/src/iup_dialog.h new file mode 100755 index 0000000..a127111 --- /dev/null +++ b/iup/src/iup_dialog.h @@ -0,0 +1,89 @@ +/** \file + * \brief Dialog Public and Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_DIALOG_H +#define __IUP_DIALOG_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* PUBLIC */ + +/* Shows the dialog in the given position and disable interaction with other dialogs. + * The element must be already mapped. + * Must return IUP_ERROR or IUP_NOERROR. + * Called only from IupPopup. */ +int iupDialogPopup(Ihandle* ih, int x, int y); + +/* Shows the dialog in the given position. + * The dialog must be already mapped. + * Must return IUP_ERROR or IUP_NOERROR. + * Called only from IupShow and IupShowXY. */ +int iupDialogShowXY(Ihandle* ih, int x, int y); + +/* Hides the dialog. + * Called only from IupHide. */ +void iupDialogHide(Ihandle* ih); + +/* Returns a unique number to be as child id. */ +int iupDialogGetChildId(Ihandle* ih); +char* iupDialogGetChildIdStr(Ihandle* ih); + +/* Returns the size of the decoration */ +void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu); + +/* Returns the native parent. Can be PARENTDIALOG or NATIVEPARENT attributes. Parent must be mapped. */ +InativeHandle* iupDialogGetNativeParent(Ihandle* ih); + +/* Updates the dialog initial position from internal attributes. + Used mostly by the native pre-defined dialogs. */ +void iupDialogUpdatePosition(Ihandle* ih); + + +/*********************************************************************/ + /* PRIVATE */ +/*********************************************************************/ + +#ifdef _IUPDLG_PRIVATE + +/* retrieve the decorations size that offsets the window size of the client size. */ +void iupDialogGetDecorSize(Ihandle* ih, int *decorwidth, int *decorheight); + +struct _IcontrolData +{ + int show_state, /* save the state to be used used in SHOW_CB */ + first_show, /* boolean flag to indicate that the dialog was shown for the first time */ + ignore_resize, /* flag to ignore the next resize */ + popup_level, /* popup level of the dialog if IupPopup used */ + child_id, /* serial number used by child controls */ + cmd_show; /* parameters for ShowWindow in Windows driver */ + Ihandle* menu; +}; + + +/******************************/ +/* Driver dependent functions */ +/******************************/ + +void iupdrvDialogInitClass(Iclass* iclass); + +void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y); +void iupdrvDialogSetVisible(Ihandle* ih, int visible); +int iupdrvDialogSetPlacement(Ihandle* ih); +void iupdrvDialogSetPosition(Ihandle *ih, int x, int y); +void iupdrvDialogUpdateSize(Ihandle* ih); +void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h); +int iupdrvDialogIsVisible(Ihandle* ih); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_dlglist.c b/iup/src/iup_dlglist.c new file mode 100755 index 0000000..c385b50 --- /dev/null +++ b/iup/src/iup_dlglist.c @@ -0,0 +1,130 @@ +/** \file + * \brief list of all created dialogs + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include "iup_dlglist.h" +#include "iup_object.h" +#include "iup_assert.h" + + +typedef struct Idiallst_ +{ + Ihandle *ih; + struct Idiallst_ *next; +} Idiallst; + +static Idiallst *idlglist = NULL; /* list of all created dialogs */ +static int idlg_count = 0; + +void iupDlgListAdd(Ihandle *ih) +{ + if (ih) + { + Idiallst *p=(Idiallst *)malloc(sizeof(Idiallst)); + if (!p) + return; + p->ih = ih; + p->next = idlglist; + idlglist = p; + idlg_count++; + } +} + +void iupDlgListRemove(Ihandle *ih) +{ + if (!idlglist || !ih) + return; + + if (idlglist->ih == ih) /* ih is header */ + { + Idiallst *p = idlglist->next; + free(idlglist); + idlglist = p; + idlg_count--; + } + else + { + Idiallst *p; /* current pointer */ + Idiallst *b; /* before pointer */ + for (b = idlglist, p = idlglist->next; p; b = p, p = p->next) + { + if (p->ih == ih) + { + b->next = p->next; + free (p); + idlg_count--; + return; + } + } + } +} + +static Idiallst *idlg_first = NULL; + +Ihandle *iupDlgListFirst (void) +{ + idlg_first = idlglist; + return iupDlgListNext(); +} + +Ihandle *iupDlgListNext (void) +{ + Ihandle *ih = NULL; + if (idlg_first) + { + ih = idlg_first->ih; + idlg_first = idlg_first->next; + } + return ih; +} + +static int idlg_nvisiblewin = 0; + +void iupDlgListVisibleInc(void) +{ + iupASSERT(idlg_nvisiblewin < idlg_count); + if (idlg_nvisiblewin == idlg_count) + return; + idlg_nvisiblewin++; +} + +void iupDlgListVisibleDec(void) +{ + iupASSERT(idlg_nvisiblewin > 0); + idlg_nvisiblewin--; +} + +int iupDlgListVisibleCount(void) +{ + return idlg_nvisiblewin; +} + +void iupDlgListDestroyAll(void) +{ + int i = 0, count; + Ihandle** ih_array = (Ihandle**)malloc(idlg_count * sizeof(Ihandle*)); + Idiallst *list; + for (list = idlglist; list; list = list->next) + { + if (iupObjectCheck(list->ih)) + { + ih_array[i] = list->ih; + i++; + } + } + + count = i; + for (i = 0; i < count; i++) + { + if (iupObjectCheck(ih_array[i])) + IupDestroy(ih_array[i]); /* this will also destroy the list */ + } + + free(ih_array); +} diff --git a/iup/src/iup_dlglist.h b/iup/src/iup_dlglist.h new file mode 100755 index 0000000..99d3184 --- /dev/null +++ b/iup/src/iup_dlglist.h @@ -0,0 +1,58 @@ +/** \file + * \brief list of all created dialogs + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_DLGLIST_H +#define __IUP_DLGLIST_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup dlglist List of Dialogs + * \par + * See \ref iup_dlglist.h + * \ingroup cpi */ + + +/** Adds a dialog to the list. Used only in IupDialog. + * \ingroup dlglist */ +void iupDlgListAdd(Ihandle *ih); + +/** Removes a dialog from the list. Used only in IupDestroy. + * \ingroup dlglist */ +void iupDlgListRemove(Ihandle *ih); + +/** Starts a loop for all the created dialogs. + * \ingroup dlglist */ +Ihandle* iupDlgListFirst(void); + +/** Retrieve the next dialog on the list. Must call iupDlgListFirst first. + * \ingroup dlglist */ +Ihandle* iupDlgListNext(void); + +/** Increments the number of visible dialogs. + * \ingroup dlglist */ +void iupDlgListVisibleInc(void); + +/** Decrements the number of visible dialogs. + * \ingroup dlglist */ +void iupDlgListVisibleDec(void); + +/** Returns the number of visible dialogs. + * \ingroup dlglist */ +int iupDlgListVisibleCount(void); + +/* Destroy all dialogs and the list. + Called only from IupClose. */ +void iupDlgListDestroyAll(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_dll.rc b/iup/src/iup_dll.rc new file mode 100755 index 0000000..a1c78d8 --- /dev/null +++ b/iup/src/iup_dll.rc @@ -0,0 +1,41 @@ +TECGRAF_ICON ICON "..\\etc\\tecgraf.ico" + +1 VERSIONINFO + FILEVERSION 3,0,0,0 + PRODUCTVERSION 3,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0" + VALUE "CompanyName", "Tecgraf/PUC-Rio\0" + VALUE "FileDescription", "IUP - Portable User Interface\0" + VALUE "FileVersion", "3.0.0\0" + VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0" + VALUE "OriginalFilename", "iup.dll\0" + VALUE "ProductName", "IUP for Windows\0" + VALUE "ProductVersion", "3.0.0\0" + END + END +END + +CURSOR_PEN CURSOR "..\\etc\\pen.cur" + +/* To avoid the inclusion of */ +#define WS_CHILD 0x40000000L +#define WS_VISIBLE 0x10000000L +#define WS_CLIPSIBLINGS 0x04000000L +#define DS_3DLOOK 0x0004L +#define DS_CONTROL 0x0400L +#define SS_OWNERDRAW 0x0000000DL +#define WS_EX_STATICEDGE 0x00020000L + +#define IUP_PREVIEWCANVAS 3000 + +iupPreviewDlg DIALOG DISCARDABLE 0, 0, 250, 95 +STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE +END diff --git a/iup/src/iup_drv.h b/iup/src/iup_drv.h new file mode 100755 index 0000000..5cdb8e7 --- /dev/null +++ b/iup/src/iup_drv.h @@ -0,0 +1,99 @@ +/** \file + * \brief Driver Interface. Each driver must export the symbols defined here. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_DRV_H +#define __IUP_DRV_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup drv Driver Interface + * \par + * Each driver must export the symbols defined here. + * \par + * See \ref iup_drv.h + */ + + +/** Sets a global environment attribute. Called from IupSetGlobal and IupStoreGlobal. + * Must return 1 is process the atribute, or 0 is not. + * \ingroup drv */ +int iupdrvSetGlobal(const char* name, const char* value); + +/** Returns a global environment attribute. Called from IupGetGlobal. + * \ingroup drv */ +char* iupdrvGetGlobal(const char* name); + +/** Changes the idle callback. Called from IupSetFunction. + * \ingroup drv */ +void iupdrvSetIdleFunction(Icallback func); + +/** Convert the coordinates from screen relative to client area releative. + * \ingroup drv */ +void iupdrvScreenToClient(Ihandle* ih, int *x, int *y); + +/** Returns true if the element is visible. + * \ingroup drv */ +int iupdrvIsVisible(Ihandle* ih); + +/** Returns true if the element is active. + * \ingroup drv */ +int iupdrvIsActive(Ihandle* ih); + +/** Actually changes the focus to the given element. + * \ingroup drv */ +void iupdrvSetFocus(Ihandle* ih); + +/** Changes the visible state of an element. + * Not used for dialogs. + * \ingroup drv */ +void iupdrvSetVisible(Ihandle* ih, int enable); + +/** Changes the active state of an element. + * \ingroup drv */ +void iupdrvSetActive(Ihandle* ih, int enable); + +/** Post a redraw of a control. + * \ingroup drv */ +void iupdrvDisplayUpdate(Ihandle *ih); + +/** Force a redraw of a control. + * \ingroup drv */ +void iupdrvDisplayRedraw(Ihandle *ih); + +/** Reparent the native control. + * \ingroup drv */ +void iupdrvReparent(Ihandle* ih); + +/** Draws a focus rectangle + * \ingroup drv */ +void iupdrvDrawFocusRect(Ihandle* ih, void* gc, int x, int y, int w, int h); + +/** Size of the scroolbar. + * \ingroup drv */ +int iupdrvGetScrollbarSize(void); + +/** Activates a control. + * \ingroup drv */ +void iupdrvActivate(Ihandle* ih); + +/** Returns the height of a menu bar. + * \ingroup drv */ +int iupdrvMenuGetMenuBarSize(Ihandle* ih); + + +/* Called only from IupOpen/IupClose. */ +int iupdrvOpen(int *argc, char ***argv); +void iupdrvClose(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_drvfont.h b/iup/src/iup_drvfont.h new file mode 100755 index 0000000..d6fb137 --- /dev/null +++ b/iup/src/iup_drvfont.h @@ -0,0 +1,116 @@ +/** \file + * \brief Driver Font Management + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_DRVFONT_H +#define __IUP_DRVFONT_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup drvfont Driver Font Interface + * \par + * Each driver must export the symbols defined here. + * \par + * See \ref iup_drvfont.h + * \ingroup drv */ + +/* Called only from IupOpen/IupClose. */ +void iupdrvFontInit(void); +void iupdrvFontFinish(void); + +/** Retrieve the character size for the selected font. + * Should be used only to calculate the SIZE attribute. + * \ingroup drvfont */ +void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight); + +/** Retrieve the string width for the selected font. + * \ingroup drvfont */ +int iupdrvFontGetStringWidth(Ihandle* ih, const char* str); + +/** Retrieve the multi-lined string size for the selected font. \n + * Width is the maximum line width. \n + * Height is charheight*number_of_lines (this will avoid line size variations). + * \ingroup drvfont */ +void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h); + +/** Returns the System default font. + * \ingroup drvfont */ +char* iupdrvGetSystemFont(void); + +/** STANDARDFONT attribute set function. + * \ingroup drvfont */ +int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value); + + + +/** FONT attribute get function. + * \ingroup drvfont */ +char* iupGetFontAttrib(Ihandle* ih); + +/** FONT attribute set function. + * \ingroup drvfont */ +int iupSetFontAttrib(Ihandle* ih, const char* value); + +/** Parse the common font format description. + * Returns a non zero value if successful. + * \ingroup drvfont */ +int iupFontParsePango(const char *value, char *typeface, int *size, int *bold, int *italic, int *underline, int *strikeout); + +/** Parse the old IUP Windows font format description. + * Returns a non zero value if successful. + * \ingroup drvfont */ +int iupFontParseWin(const char *value, char *fontname, int *height, int *bold, int *italic, int *underline, int *strikeout); + +/** Parse the X-Windows font format description. + * Returns a non zero value if successful. + * \ingroup drvfont */ +int iupFontParseX(const char *value, char *fontname, int *height, int *bold, int *italic, int *underline, int *strikeout); + + +/** Changes the FONT style only. + * \ingroup attribfunc */ +int iupSetFontStyleAttrib(Ihandle* ih, const char* value); + +/** Changes the FONT size only. + * \ingroup attribfunc */ +int iupSetFontSizeAttrib(Ihandle* ih, const char* value); + +/** Returns the FONT style. + * \ingroup attribfunc */ +char* iupGetFontStyleAttrib(Ihandle* ih); + +/** Returns the FONT size. + * \ingroup attribfunc */ +char* iupGetFontSizeAttrib(Ihandle* ih); + +/** Returns the FONT face. + * \ingroup attribfunc */ +char* iupGetFontFaceAttrib(Ihandle* ih); + +/* Used in GLobal Attributes */ +void iupSetDefaultFontSizeGlobalAttrib(const char* value); +char* iupGetDefaultFontSizeGlobalAttrib(void); + + +/* Updates the STANDARDFONT attrib. + * Called only from IupMap. + */ +void iupUpdateStandardFontAttrib(Ihandle* ih); + +/* Used to map foreign names into native names */ +const char* iupFontGetWinName(const char* name); +const char* iupFontGetXName(const char* name); +const char* iupFontGetPangoName(const char* name); + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_drvinfo.h b/iup/src/iup_drvinfo.h new file mode 100755 index 0000000..7ff303f --- /dev/null +++ b/iup/src/iup_drvinfo.h @@ -0,0 +1,103 @@ +/** \file + * \brief Driver Information Functions + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_DRVINFO_H +#define __IUP_DRVINFO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup drvinfo Driver Information Interface + * \par + * Each driver must export the symbols defined here. + * But in this case the functions are shared by different drivers in the same system. + * \par + * For example, the GTK driver and the Windows driver share the same implementation + * of these functions when the GTK driver is compiled in Windows. + * The GTK driver and the Motif driver share the same implementation + * of these functions when the GTK driver is compiled in UNIX. + * \par + * See \ref iup_drvinfo.h + * \ingroup drv */ + + +/** Retrieve the main desktop full size. + * \ingroup drvinfo */ +void iupdrvGetFullSize(int *width, int *height); + +/** Retrieve the main desktop available size. + * \ingroup drvinfo */ +void iupdrvGetScreenSize(int *width, int *height); + +/** Retrieve the default desktop bits per pixel. + * \ingroup drvinfo */ +int iupdrvGetScreenDepth(void); + +/** Returns a string with the system version number. + * \ingroup drvinfo */ +char *iupdrvGetSystemVersion(void); + +/** Returns a string with the system name. + * \ingroup drvinfo */ +char* iupdrvGetSystemName(void); + +/** Returns a string with the computer name. + * \ingroup drvinfo */ +char* iupdrvGetComputerName(void); + +/** Returns a string with the user name. + * \ingroup drvinfo */ +char* iupdrvGetUserName(void); + +/** Returns the key state for Shift, Ctrl, Alt and sYs, in this order. + * Left and right keys are considered. + * Should declare "char key[5]". + * Values could be space (" ") or "SCAY". + * \ingroup drvinfo */ +void iupdrvGetKeyState(char* key); + +/** Returns the current position of the mouse cursor. + * \ingroup drvinfo */ +void iupdrvGetCursorPos(int *x, int *y); + +/** Returns the driver "Display" in UNIX and NULL in Windows. + * Must be implemented somewhere else. + * \ingroup drvinfo */ +void* iupdrvGetDisplay(void); + +/** Returns the decoration size of the native window. + * In Windows will also includes the menu if any. + * Used in DialogGetDecoration. + * \ingroup drvinfo */ +int iupdrvGetWindowDecor(void* wnd, int *border, int *caption); + +/** Returns the current directory. + * \ingroup drvinfo */ +char* iupdrvGetCurrentDirectory(void); + +/** Changes the current directory. + * \ingroup drvinfo */ +int iupdrvSetCurrentDirectory(const char* dir); + +/** Returns true if the given name is an existant file. + * \ingroup drvinfo */ +int iupdrvIsFile(const char* name); + +/** Returns true if the given name is an existant directory. + * \ingroup drvinfo */ +int iupdrvIsDirectory(const char* name); + +/** Creates a new direcotry. + * \ingroup drvinfo */ +int iupdrvMakeDirectory(const char* name); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_filedlg.c b/iup/src/iup_filedlg.c new file mode 100755 index 0000000..e764143 --- /dev/null +++ b/iup/src/iup_filedlg.c @@ -0,0 +1,67 @@ +/** \file + * \brief IupFileDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + + +Ihandle* IupFileDlg(void) +{ + return IupCreate("filedlg"); +} + +Iclass* iupFileDlgGetClass(void) +{ + Iclass* ic = iupClassNew(iupDialogGetClass()); + + ic->name = "filedlg"; + ic->nativetype = IUP_TYPEDIALOG; + ic->is_interactive = 1; + + iupClassRegisterCallback(ic, "FILE_CB", "ss"); + + /* reset not used native dialog methods */ + ic->parent->LayoutUpdate = NULL; + ic->parent->SetChildrenPosition = NULL; + ic->parent->Map = NULL; + ic->parent->UnMap = NULL; + + iupdrvFileDlgInitClass(ic); + + /* only the default value */ + iupClassRegisterAttribute(ic, "NOCHANGEDIR", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DIALOGTYPE", NULL, NULL, IUPAF_SAMEASSYSTEM, "OPEN", IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "PREVIEWDC", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY|IUPAF_NO_STRING); + + iupClassRegisterAttribute(ic, "PREVIEWWIDTH", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "PREVIEWHEIGHT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY|IUPAF_NO_STRING); + + iupClassRegisterAttribute(ic, "ALLOWNEW", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DIRECTORY", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NOOVERWRITEPROMPT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWHIDDEN", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWPREVIEW", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "FILEEXIST", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY); + iupClassRegisterAttribute(ic, "STATUS", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY); + iupClassRegisterAttribute(ic, "VALUE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY); + + return ic; +} diff --git a/iup/src/iup_fill.c b/iup/src/iup_fill.c new file mode 100755 index 0000000..4cad3c0 --- /dev/null +++ b/iup/src/iup_fill.c @@ -0,0 +1,242 @@ +/** \file + * \brief Fill Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" + + +enum {IUP_FILL_NONE, IUP_FILL_HORIZ, IUP_FILL_VERT}; + +struct _IcontrolData +{ + int dir; +}; + +static int iFillGetDir(Ihandle* ih) +{ + if (!ih->parent) + return IUP_FILL_NONE; + + if (ih->data->dir != IUP_FILL_NONE) + return ih->data->dir; + + /* Its parent must be an IupHbox or an IupVbox. */ + if (ih->parent->iclass->nativetype == IUP_TYPEVOID) + { + if (iupStrEqual(ih->parent->iclass->name, "hbox")) + ih->data->dir = IUP_FILL_HORIZ; + else if (iupStrEqual(ih->parent->iclass->name, "vbox")) + ih->data->dir = IUP_FILL_VERT; + } + + return ih->data->dir; +} + +static int iFillMapMethod(Ihandle* ih) +{ + iFillGetDir(ih); + return iupBaseTypeVoidMapMethod(ih); +} + +static void iFillUnMapMethod(Ihandle* ih) +{ + ih->data->dir = IUP_FILL_NONE; +} + +static int iFillSetRasterSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + int s = 0; + if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not yet a child of a Vbox or Hbox */ + { + iupAttribSetStr(ih, "SIZE", NULL); + return 1; + } + + iupStrToInt(value, &s); + if (s > 0) + { + if (iFillGetDir(ih) == IUP_FILL_HORIZ) + { + ih->userwidth = s; /* inside HBOX */ + ih->userheight = 0; + } + else + { + ih->userheight = s; /* inside VBOX */ + ih->userwidth = 0; + } + } + } + iupAttribSetStr(ih, "SIZE", NULL); + return 0; +} + +static int iFillSetSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + int s = 0; + if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not yet a child of a Vbox or Hbox */ + { + iupAttribSetStr(ih, "RASTERSIZE", NULL); + return 1; + } + + iupStrToInt(value, &s); + if (s > 0) + { + int charwidth, charheight; + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + if (iFillGetDir(ih) == IUP_FILL_HORIZ) + { + ih->userwidth = iupWIDTH2RASTER(s, charwidth); /* inside HBOX */ + ih->userheight = 0; + } + else + { + ih->userheight = iupHEIGHT2RASTER(s, charheight); /* inside VBOX */ + ih->userwidth = 0; + } + } + } + iupAttribSetStr(ih, "RASTERSIZE", NULL); + return 1; +} + +static char* iFillGetExpandAttrib(Ihandle* ih) +{ + if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not yet a child of a Vbox or Hbox */ + return "NO"; + + /* if size is not defined, then expansion on that direction is permited */ + if (iFillGetDir(ih) == IUP_FILL_HORIZ) + { + if (ih->userwidth <= 0) + return "HORIZONTAL"; + } + else + { + if (ih->userheight <= 0) + return "VERTICAL"; + } + + return "NO"; +} + +static void iFillUpdateSize(Ihandle* ih) +{ + char* value = iupAttribGet(ih, "SIZE"); + if (value) + { + iFillSetSizeAttrib(ih, value); + iupAttribSetStr(ih, "SIZE", NULL); + } + value = iupAttribGet(ih, "RASTERSIZE"); + if (value) + { + iFillSetRasterSizeAttrib(ih, value); + iupAttribSetStr(ih, "RASTERSIZE", NULL); + } +} + +static void iFillComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + (void)expand; /* unset if not a container */ + + /* EXPAND is initialized as none for FILL */ + ih->expand = IUP_EXPAND_NONE; + + iFillUpdateSize(ih); + + /* always initialize the natural size using the user size, + must do this again because of iFillUpdateSize */ + ih->naturalwidth = ih->userwidth; + ih->naturalheight = ih->userheight; + + if (iFillGetDir(ih) == IUP_FILL_NONE) /* if Fill is not a child of a Vbox or Hbox */ + return; + + /* if size is NOT defined, then expansion on that direction is permited */ + if (iFillGetDir(ih) == IUP_FILL_HORIZ) + { + if (ih->naturalwidth <= 0) + ih->expand = IUP_EXPAND_W0; + } + else + { + if (ih->naturalheight <= 0) + ih->expand = IUP_EXPAND_H0; + } + + *w = ih->naturalwidth; + *h = ih->naturalheight; +} + +static int iFillCreateMethod(Ihandle* ih, void** params) +{ + (void)params; + ih->data = iupALLOCCTRLDATA(); + return IUP_NOERROR; +} + +/******************************************************************************/ + +Ihandle* IupFill(void) +{ + return IupCreate("fill"); +} + +Iclass* iupFillGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "fill"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iFillCreateMethod; + ic->Map = iFillMapMethod; + ic->UnMap = iFillUnMapMethod; + ic->ComputeNaturalSize = iFillComputeNaturalSizeMethod; + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iFillSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iFillSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Base */ + iupClassRegisterAttribute(ic, "EXPAND", iFillGetExpandAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/iup_focus.c b/iup/src/iup_focus.c new file mode 100755 index 0000000..be54b75 --- /dev/null +++ b/iup/src/iup_focus.c @@ -0,0 +1,281 @@ +/** \file + * \brief Keyboard Focus navigation + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_focus.h" +#include "iup_class.h" +#include "iup_assert.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" + + +Ihandle* iupFocusNextInteractive(Ihandle *ih) +{ + Ihandle *c; + + if (!ih) + return NULL; + + for (c = ih->brother; c; c = c->brother) + { + if (c->iclass->is_interactive) + return c; + } + + return NULL; +} + +int iupFocusCanAccept(Ihandle *ih) +{ + if (ih->iclass->is_interactive && /* interactive */ + iupAttribGetBoolean(ih, "CANFOCUS") && /* can receive focus */ + ih->handle && /* mapped */ + IupGetInt(ih, "ACTIVE") && /* active */ + IupGetInt(ih, "VISIBLE")) /* visible */ + return 1; + else + return 0; +} + +static int iFocusCheckActiveRadio(Ihandle *ih) +{ + if (iupStrEqual(ih->iclass->name, "toggle") && + IupGetInt(ih, "RADIO") && + !IupGetInt(ih, "VALUE")) + return 0; + else + return 1; +} + +static Ihandle* iFocusFindAtBrothers(Ihandle *start, int checkradio) +{ + Ihandle *c; + Ihandle *nf; + + for (c = start; c; c = c->brother) + { + /* check itself */ + if (iupFocusCanAccept(c) && (!checkradio || iFocusCheckActiveRadio(c))) + return c; + + /* then check its children */ + nf = iFocusFindAtBrothers(c->firstchild, checkradio); + if (nf) + return nf; + } + + return NULL; +} + +static Ihandle* iFocusFindNext(Ihandle *ih, int checkradio) +{ + Ihandle *nf, *p; + + if (!ih) + return NULL; + + /* look down in the child tree */ + if (ih->firstchild) + { + nf = iFocusFindAtBrothers(ih->firstchild, checkradio); + if (nf) return nf; + } + + /* look in the same level */ + if (ih->brother) + { + nf = iFocusFindAtBrothers(ih->brother, checkradio); + if (nf) return nf; + } + + /* look up in the brothers of the parent level */ + if (ih->parent) + { + for (p = ih->parent; p; p = p->parent) + { + if (p->brother) + { + nf = iFocusFindAtBrothers(p->brother, checkradio); + if (nf) return nf; + } + } + } + + return NULL; +} + +Ihandle* IupNextField(Ihandle *ih) +{ + Ihandle *ih_next; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + ih_next = iFocusFindNext(ih, 1); + if (!ih_next) + { + /* not found after the element, then start over from the begining, + at the dialog. */ + ih_next = iFocusFindNext(IupGetDialog(ih), 1); + if (ih_next == ih) + return NULL; + } + + if (ih_next) + { + iupdrvSetFocus(ih_next); + return ih_next; + } + + return NULL; +} + +void iupFocusNext(Ihandle *ih) +{ + Ihandle *ih_next = iFocusFindNext(ih, 0); + if (!ih_next) + { + /* not found after the element, then start over from the begining, + at the dialog. */ + ih_next = iFocusFindNext(IupGetDialog(ih), 0); + if (ih_next == ih) + return; + } + if (ih_next) + iupdrvSetFocus(ih_next); +} + +static int iFocusFindPrevious(Ihandle *parent, Ihandle **previous, Ihandle *ih, int checkradio) +{ + Ihandle *c; + + if (!parent) + return 0; + + for (c = parent->firstchild; c; c = c->brother) + { + if (c == ih) + { + /* if found child, returns the current previous. + but if previous is NULL, then keep searching until the last element. */ + if (*previous) + return 1; + } + else + { + /* save the possible previous */ + if (iupFocusCanAccept(c) && (!checkradio || iFocusCheckActiveRadio(c))) + *previous = c; + } + + /* then check its children */ + if (iFocusFindPrevious(c, previous, ih, checkradio)) + return 1; + } + + return 0; +} + +Ihandle* IupPreviousField(Ihandle *ih) +{ + Ihandle *previous = NULL; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + + /* search from the dialog down to the element */ + iFocusFindPrevious(IupGetDialog(ih), &previous, ih, 1); + + if (previous) + { + iupdrvSetFocus(previous); + return previous; + } + + return NULL; +} + +void iupFocusPrevious(Ihandle *ih) +{ + Ihandle *previous = NULL; + + /* search from the dialog down to the element */ + iFocusFindPrevious(IupGetDialog(ih), &previous, ih, 0); + + if (previous) + iupdrvSetFocus(previous); +} + +/* local variables */ +static Ihandle* iup_current_focus = NULL; + +Ihandle *IupSetFocus(Ihandle *ih) +{ + Ihandle* old_focus = iup_current_focus; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return old_focus; + + /* iup_current_focus is NOT set here, + only in the iupCallGetFocusCb */ + + if (iupFocusCanAccept(ih)) + iupdrvSetFocus(ih); + + return old_focus; +} + +Ihandle *IupGetFocus(void) +{ + return iup_current_focus; +} + +void iupCallGetFocusCb(Ihandle *ih) +{ + Icallback cb; + + if (ih == iup_current_focus) /* avoid duplicate messages */ + return; + + cb = (Icallback)IupGetCallback(ih, "GETFOCUS_CB"); + if (cb) cb(ih); + + if (ih->iclass->nativetype == IUP_TYPECANVAS) + { + IFni cb2 = (IFni)IupGetCallback(ih, "FOCUS_CB"); + if (cb2) cb2(ih, 1); + } + + iup_current_focus = ih; +} + +void iupCallKillFocusCb(Ihandle *ih) +{ + Icallback cb; + + if (ih != iup_current_focus) /* avoid duplicate messages */ + return; + + cb = IupGetCallback(ih, "KILLFOCUS_CB"); + if (cb) cb(ih); + + if (ih->iclass->nativetype == IUP_TYPECANVAS) + { + IFni cb2 = (IFni)IupGetCallback(ih, "FOCUS_CB"); + if (cb2) cb2(ih, 0); + } + + iup_current_focus = NULL; +} diff --git a/iup/src/iup_focus.h b/iup/src/iup_focus.h new file mode 100755 index 0000000..239e233 --- /dev/null +++ b/iup/src/iup_focus.h @@ -0,0 +1,53 @@ +/** \file + * \brief Keyboard Focus navigation + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_FOCUS_H +#define __IUP_FOCUS_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup focus Keyboard Focus + * \par + * See \ref iup_focus.h + * \ingroup cpi */ + + +/** Utility to check if a control can have the keyboard input focus. + * To receive the focus must be interactive, has CANFOCUS=YES, is mapped, is visible and is active. + * \ingroup focus */ +int iupFocusCanAccept(Ihandle *ih); + +/** Call GETFOCUS_CB and FOCUS_CB. + * \ingroup focus */ +void iupCallGetFocusCb(Ihandle *ih); + +/** Call KILLFOCUS_CB and FOCUS_CB. + * \ingroup focus */ +void iupCallKillFocusCb(Ihandle *ih); + +/** Returns the next interactive brother. Independs if it can receive the focus. + * \ingroup focus */ +Ihandle* iupFocusNextInteractive(Ihandle *ih); + +/* Used only in iupKeyProcessNavigation */ +void iupFocusNext(Ihandle *ih); +void iupFocusPrevious(Ihandle *ih); + + +/* Other functions declared in and implemented here. +IupPreviousField +IupNextField +*/ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_font.c b/iup/src/iup_font.c new file mode 100755 index 0000000..869bd2a --- /dev/null +++ b/iup/src/iup_font.c @@ -0,0 +1,714 @@ +/** \file + * \brief Font mapping + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_drvfont.h" +#include "iup_assert.h" +#include "iup_attrib.h" +#include "iup_class.h" + +typedef struct _IfontNameMap { + const char* pango; + const char* x; + const char* win; +} IfontNameMap; + +#define IFONT_NAME_MAP_SIZE 7 + +static IfontNameMap ifont_name_map[IFONT_NAME_MAP_SIZE] = { + {"sans", "helvetica", "arial"}, + {NULL, "new century schoolbook", "century schoolbook"}, + {"monospace", "courier", "courier new"}, + {NULL, "lucida", "lucida sans unicode"}, + {NULL, "lucidabright", "lucida bright"}, + {NULL, "lucidatypewriter", "lucida console"}, + {"serif", "times", "times new roman"} +}; + +const char* iupFontGetPangoName(const char* name) +{ + int i; + if (!name) + return NULL; + for (i=0; i str && isspace(*(last - 1))) + last--; + + result = last; + while (result > str && !isspace(*(result - 1))) + result--; + + *wordlen = last - result; + + return result; +} + +int iupFontParsePango(const char *standardfont, char *typeface, int *size, int *bold, int *italic, int *underline, int *strikeout) +{ + const char *p, *last; + int len, wordlen, style = 0; + + if (standardfont[0] == '-') /* X font, abort */ + return 0; + + len = (int)strlen(standardfont); + last = standardfont + len; + p = iFontGetWord(standardfont, last, &wordlen); + + /* Look for a size at the end of the string */ + if (wordlen != 0) + { + int new_size = atoi(p); + if (new_size != 0) + { + *size = new_size; + last = p; + } + } + + /* Now parse style words */ + p = iFontGetWord(standardfont, last, &wordlen); + while (wordlen != 0) + { + int new_style = 0; + + if (!iFontFindStyleName(p, wordlen, &new_style)) + break; + else + { + style |= new_style; + + last = p; + p = iFontGetWord(standardfont, last, &wordlen); + } + } + + *bold = 0; + *italic = 0; + *underline = 0; + *strikeout = 0; + + if (style&FONT_BOLD) + *bold = 1; + if (style&FONT_ITALIC) + *italic = 1; + if (style&FONT_UNDERLINE) + *underline = 1; + if (style&FONT_STRIKEOUT) + *strikeout = 1; + + /* Remainder is font family list. */ + + /* Trim off trailing white space */ + while (last > standardfont && isspace(*(last - 1))) + last--; + + /* Trim off trailing commas */ + if (last > standardfont && *(last - 1) == ',') + last--; + + /* Again, trim off trailing white space */ + while (last > standardfont && isspace(*(last - 1))) + last--; + + /* Trim off leading white space */ + while (last > standardfont && isspace(*standardfont)) + standardfont++; + + if (standardfont != last) + { + len = (last - standardfont); + strncpy(typeface, standardfont, len); + typeface[len] = 0; + return 1; + } + else + return 0; +} + +int iupFontParseWin(const char *value, char *fontname, int *height, int *bold, int *italic, int *underline, int *strikeout) +{ + int c; + + if (value[0] == '-') /* X font, abort */ + return 0; + + if (strstr(value, ":") == NULL) + return 0; + + if (value[0] == ':') /* check if it has the typeface */ + value++; /* jump separator */ + else + { + c = (int)strcspn(value, ":"); /* extract typeface */ + if (c == 0) return 0; + strncpy(fontname, value, c); + fontname[c]='\0'; + value += c+1; /* jump typeface and separator */ + } + + *bold = 0; + *italic = 0; + *underline = 0; + *strikeout = 0; + + if (value[0] == ':') /* check if it has attributes */ + value++; /* jump separator */ + else + { + do /* extract style (bold/italic etc) */ + { + char style[30]; + + c = (int)strcspn(value, ":,"); + if (c == 0) + break; + + strncpy(style, value, c); + style[c] = '\0'; + + if(iupStrEqual(style, "BOLD")) + *bold = 1; + else if(iupStrEqual(style,"ITALIC")) + *italic = 1; + else if(iupStrEqual(style,"UNDERLINE")) + *underline = 1; + else if(iupStrEqual(style,"STRIKEOUT")) + *strikeout = 1; + + value += c; /* jump only the attribute */ + + if(value[0] == ':') /* end of attribute list */ + { + value++; + break; + } + + value++; /* jump separator */ + } while (value[0]); + } + + /* extract size in points */ + if (!iupStrToInt(value, height)) + return 0; + + if (height == 0) + return 0; + + return 1; +} + +int iupFontParseX(const char *standardfont, char *typeface, int *size, int *bold, int *italic, int *underline, int *strikeout) +{ + char style1[30], style2[30]; + char* token; + char font[1024]; + + if (standardfont[0] != '-') + return 0; + + strcpy(font, standardfont+1); /* skip first '-' */ + + *bold = 0; + *italic = 0; + *underline = 0; + *strikeout = 0; + + /* fndry */ + token = strtok(font, "-"); + if (!token) return 0; + + /* fmly */ + token = strtok(NULL, "-"); + if (!token) return 0; + strcpy(typeface, token); + + /* wght */ + token = strtok(NULL, "-"); + if (!token) return 0; + strcpy(style1, token); + if (strstr("bold", style1)) + *bold = 1; + + /* slant */ + token = strtok(NULL, "-"); + if (!token) return 0; + strcpy(style2, token); + if (*style2 == 'i' || *style2 == 'o') + *italic = 1; + + /* sWdth */ + token = strtok(NULL, "-"); + if (!token) return 0; + /* adstyl */ + token = strtok(NULL, "-"); + if (!token) return 0; + + /* pxlsz */ + token = strtok(NULL, "-"); + if (!token) return 0; + *size = -atoi(token); /* size in pixels */ + + if (*size < 0) + return 1; + + /* ptSz */ + token = strtok(NULL, "-"); + if (!token) return 0; + *size = atoi(token)/10; /* size in deci-points */ + + if (*size > 0) + return 1; + + return 0; +} + diff --git a/iup/src/iup_fontdlg.c b/iup/src/iup_fontdlg.c new file mode 100755 index 0000000..9e0f05c --- /dev/null +++ b/iup/src/iup_fontdlg.c @@ -0,0 +1,48 @@ +/** \file + * \brief IupFontDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + + +Ihandle* IupFontDlg(void) +{ + return IupCreate("fontdlg"); +} + +Iclass* iupFontDlgGetClass(void) +{ + Iclass* ic = iupClassNew(iupDialogGetClass()); + + ic->name = "fontdlg"; + ic->nativetype = IUP_TYPEDIALOG; + ic->is_interactive = 1; + + /* reset not used native dialog methods */ + ic->parent->LayoutUpdate = NULL; + ic->parent->SetChildrenPosition = NULL; + ic->parent->Map = NULL; + ic->parent->UnMap = NULL; + + /* IupFontDialog only */ + iupClassRegisterAttribute(ic, "STATUS", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_READONLY); + iupClassRegisterAttribute(ic, "VALUE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + iupdrvFontDlgInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_frame.c b/iup/src/iup_frame.c new file mode 100755 index 0000000..e1d0a13 --- /dev/null +++ b/iup/src/iup_frame.c @@ -0,0 +1,165 @@ +/** \file + * \brief Frame Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_frame.h" + + +int iupFrameGetTitleHeight(Ihandle* ih) +{ + int charheight; + iupdrvFontGetCharSize(ih, NULL, &charheight); + return charheight; +} + +static void iFrameGetDecorSize(Ihandle* ih, int *width, int *height) +{ + *width = 5; + *height = 5; + + if (iupAttribGet(ih, "_IUPFRAME_HAS_TITLE") || iupAttribGet(ih, "TITLE")) + { + (*height) += iupFrameGetTitleHeight(ih); + } +} + +static char* iFrameGetClientSizeAttrib(Ihandle* ih) +{ + int width, height, decorwidth, decorheight; + char* str = iupStrGetMemory(20); + width = ih->currentwidth; + height = ih->currentheight; + iFrameGetDecorSize(ih, &decorwidth, &decorheight); + width -= decorwidth; + height -= decorheight; + if (width < 0) width = 0; + if (height < 0) height = 0; + sprintf(str, "%dx%d", width, height); + return str; +} + +static int iFrameCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + Ihandle** iparams = (Ihandle**)params; + if (*iparams) + IupAppend(ih, *iparams); + } + + return IUP_NOERROR; +} + +static void iFrameComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int decorwidth, decorheight; + Ihandle* child = ih->firstchild; + + iFrameGetDecorSize(ih, &decorwidth, &decorheight); + *w = decorwidth; + *h = decorheight; + + if (child) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + *expand = child->expand; + *w += child->naturalwidth; + *h += child->naturalheight; + } +} + +static void iFrameSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + int width, height, decorwidth, decorheight; + + iFrameGetDecorSize(ih, &decorwidth, &decorheight); + + width = ih->currentwidth-decorwidth; + height = ih->currentheight-decorheight; + if (width < 0) width = 0; + if (height < 0) height = 0; + + iupBaseSetCurrentSize(ih->firstchild, width, height, shrink); +} + +static void iFrameSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + /* IupFrame is the native parent of its children, + so the position is restarted at (0,0) */ + + iupdrvFrameGetDecorOffset(ih, &x, &y); + + /* Child coordinates are relative to client left-top corner. */ + iupBaseSetPosition(ih->firstchild, x, y); +} + + +/******************************************************************************/ + + +Ihandle* IupFrame(Ihandle* child) +{ + void *params[2]; + params[0] = (void*)child; + params[1] = NULL; + return IupCreatev("frame", params); +} + +Iclass* iupFrameGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "frame"; + ic->format = "H"; /* one optional ihandle */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILD_ONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iFrameCreateMethod; + + ic->ComputeNaturalSize = iFrameComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iFrameSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iFrameSetChildrenPositionMethod; + + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Common Callbacks */ + iupClassRegisterCallback(ic, "MAP_CB", ""); + iupClassRegisterCallback(ic, "UNMAP_CB", ""); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* Base Container */ + iupClassRegisterAttribute(ic, "CLIENTSIZE", iFrameGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupFrame only */ + iupClassRegisterAttribute(ic, "SUNKEN", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + iupdrvFrameInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_frame.h b/iup/src/iup_frame.h new file mode 100755 index 0000000..a7fd520 --- /dev/null +++ b/iup/src/iup_frame.h @@ -0,0 +1,22 @@ +/** \file + * \brief Frame Control Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_FRAME_H +#define __IUP_FRAME_H + +#ifdef __cplusplus +extern "C" { +#endif + +void iupdrvFrameInitClass(Iclass* ic); +void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y); +int iupFrameGetTitleHeight(Ihandle* ih); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_func.c b/iup/src/iup_func.c new file mode 100755 index 0000000..76683c7 --- /dev/null +++ b/iup/src/iup_func.c @@ -0,0 +1,78 @@ +/** \file + * \brief function table manager + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_table.h" +#include "iup_func.h" +#include "iup_drv.h" +#include "iup_assert.h" + + +static Itable *ifunc_table = NULL; /* the function hast table indexed by the name string */ +static const char *ifunc_action_name = NULL; /* name of the action being retrieved in IupGetFunction */ + +void iupFuncInit(void) +{ + ifunc_table = iupTableCreate(IUPTABLE_STRINGINDEXED); +} + +void iupFuncFinish(void) +{ + iupTableDestroy(ifunc_table); + ifunc_table = NULL; +} + +const char *IupGetActionName(void) +{ + return ifunc_action_name; +} + +Icallback IupGetFunction(const char *name) +{ + void* value; + Icallback func; + + iupASSERT(name!=NULL); + if (!name) + return NULL; + + ifunc_action_name = name; /* store the retrieved name */ + + func = (Icallback)iupTableGetFunc(ifunc_table, name, &value); + + /* if not defined and not the idle, then check for the DEFAULT_ACTION */ + if (!func && !iupStrEqual(name, "IDLE_ACTION")) + func = (Icallback)iupTableGetFunc(ifunc_table, "DEFAULT_ACTION", &value); + + return func; +} + +Icallback IupSetFunction(const char *name, Icallback func) +{ + void* value; + Icallback old_func; + + iupASSERT(name!=NULL); + if (!name) + return NULL; + + old_func = (Icallback)iupTableGetFunc(ifunc_table, name, &value); + + if (!func) + iupTableRemove(ifunc_table, name); + else + iupTableSetFunc(ifunc_table, name, (Ifunc)func); + + /* notifies the driver if changing the Idle */ + if (iupStrEqual(name, "IDLE_ACTION")) + iupdrvSetIdleFunction(func); + + return old_func; +} diff --git a/iup/src/iup_func.h b/iup/src/iup_func.h new file mode 100755 index 0000000..8372163 --- /dev/null +++ b/iup/src/iup_func.h @@ -0,0 +1,28 @@ +/** \file + * \brief Global Function table. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_FUNC_H +#define __IUP_FUNC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* called only in IupOpen and IupClose */ +void iupFuncInit(void); +void iupFuncFinish(void); + +/* Other functions declared in and implemented here. +IupGetActionName +IupGetFunction +IupSetFunction +*/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_getparam.c b/iup/src/iup_getparam.c new file mode 100755 index 0000000..1418aa5 --- /dev/null +++ b/iup/src/iup_getparam.c @@ -0,0 +1,1254 @@ +/** \file + * \brief IupGetParam + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_strmessage.h" +#include "iup_drvfont.h" + + +#define RAD2DEG 57.296f /* radians to degrees */ + + +/******************************************************************************************* + Internal Callbacks +*******************************************************************************************/ + +static int iParamButtonOK_CB(Ihandle* self) +{ + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + iupAttribSetStr(dlg, "STATUS", "1"); + if (cb && !cb(dlg, -1, (void*)iupAttribGet(dlg, "USER_DATA"))) + return IUP_DEFAULT; + else + return IUP_CLOSE; +} + +static int iParamButtonCancel_CB(Ihandle* self) +{ + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + iupAttribSetStr(dlg, "STATUS", "0"); + if (cb) cb(dlg, -3, (void*)iupAttribGet(dlg, "USER_DATA")); + return IUP_CLOSE; +} + +static int iParamToggleAction_CB(Ihandle *self, int v) +{ + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + int old_v = iupAttribGetInt(param, "VALUE"); + + if (v == 1) + iupAttribSetStr(param, "VALUE", "1"); + else + iupAttribSetStr(param, "VALUE", "0"); + + if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA"))) + { + /* Undo */ + if (old_v == 1) + { + iupAttribSetStr(param, "VALUE", "1"); + IupSetAttribute(self, "VALUE", "1"); + } + else + { + iupAttribSetStr(param, "VALUE", "0"); + IupSetAttribute(self, "VALUE", "0"); + } + + /* there is no IUP_IGNORE for IupToggle */ + return IUP_DEFAULT; + } + + /* update the interface */ + if (v == 1) + IupStoreAttribute(self, "TITLE", iupAttribGet(param, "_IUPGP_TRUE")); + else + IupStoreAttribute(self, "TITLE", iupAttribGet(param, "_IUPGP_FALSE")); + + return IUP_DEFAULT; +} + +static int iParamTextAction_CB(Ihandle *self, int c, char *after) +{ + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + Ihandle* aux = (Ihandle*)iupAttribGet(param, "AUXCONTROL"); + (void)c; + + iupAttribStoreStr(param, "VALUE", after); + + if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA"))) + { + /* Undo */ + iupAttribStoreStr(param, "VALUE", IupGetAttribute(self, "VALUE")); + return IUP_IGNORE; + } + + if (aux) + { + if (iupStrEqual(iupAttribGet(param, "TYPE"), "COLOR")) + IupStoreAttribute(aux, "BGCOLOR", after); + else + IupStoreAttribute(aux, "VALUE", after); + } + + if (IupGetInt(self, "SPIN")) + { + if (iupAttribGet(self, "_IUPGP_SPINREAL")) + { + float min = iupAttribGetFloat(param, "MIN"); + float step = iupAttribGetFloat(self, "_IUPGP_INCSTEP"); + float val; + if (iupStrToFloat(after, &val)) + IupSetfAttribute(self, "SPINVALUE", "%d", (int)((val-min)/step + 0.5)); + } + else + { + int val; + if (iupStrToInt(after, &val)) + IupSetfAttribute(self, "SPINVALUE", "%d", val); + } + } + + return IUP_DEFAULT; +} + +static int iParamValAction_CB(Ihandle *self) +{ + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* text = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_TEXT"); + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + float old_value = iupAttribGetFloat(param, "VALUE"); + float val = IupGetFloat(self, "VALUE"); + + char* type = iupAttribGet(param, "TYPE"); + if (iupStrEqual(type, "INTEGER")) + { + iupAttribSetStrf(param, "VALUE", "%d", (int)val); + } + else + { + if (iupAttribGetInt(param, "ANGLE")) + { + float old_angle; + + if (val == 0) + { + old_angle = iupAttribGetFloat(param, "VALUE"); + iupAttribSetStrf(param, "_IUPGP_OLD_ANGLE", "%g", old_angle); + } + else + old_angle = iupAttribGetFloat(param, "_IUPGP_OLD_ANGLE"); + + val = old_angle + val*RAD2DEG; + + if (iupAttribGetInt(param, "INTERVAL")) + { + float min = iupAttribGetFloat(param, "MIN"); + float max = iupAttribGetFloat(param, "MAX"); + if (val < min) + val = min; + if (val > max) + val = max; + } + else if (iupAttribGetInt(param, "PARTIAL")) + { + float min = iupAttribGetFloat(param, "MIN"); + if (val < min) + val = min; + } + } + + iupAttribSetStrf(param, "VALUE", "%g", val); + } + + if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA"))) + { + /* Undo */ + iupAttribSetStrf(param, "VALUE", "%g", old_value); + + if (!iupAttribGetInt(param, "ANGLE")) + IupSetfAttribute(self, "VALUE", "%g", old_value); + + /* there is no IUP_IGNORE for IupVal */ + return IUP_DEFAULT; + } + + type = iupAttribGet(param, "TYPE"); + if (iupStrEqual(type, "INTEGER")) + IupSetfAttribute(text, "VALUE", "%d", (int)val); + else + IupSetfAttribute(text, "VALUE", "%g", val); + + if (IupGetInt(text, "SPIN")) + { + if (iupAttribGet(text, "_IUPGP_SPINREAL")) + { + float min = iupAttribGetFloat(param, "MIN"); + float step = iupAttribGetFloat(text, "_IUPGP_INCSTEP"); + float val = IupGetFloat(text, "VALUE"); + IupSetfAttribute(text, "SPINVALUE", "%d", (int)((val-min)/step + 0.5)); + } + else + { + int val = IupGetInt(text, "VALUE"); + IupSetfAttribute(text, "SPINVALUE", "%d", val); + } + } + + return IUP_DEFAULT; +} + +static int iParamListAction_CB(Ihandle *self, char *t, int i, int v) +{ + (void)t; + if (v == 1) + { + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + int old_i = iupAttribGetInt(param, "VALUE"); + + iupAttribSetStrf(param, "VALUE", "%d", i-1); + + if (cb && !cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA"))) + { + /* Undo */ + iupAttribSetStrf(param, "VALUE", "%d", old_i); + IupSetfAttribute(self, "VALUE", "%d", old_i+1); + + /* there is no IUP_IGNORE for IupList */ + return IUP_DEFAULT; + } + } + + return IUP_DEFAULT; +} + +static int iParamFileButton_CB(Ihandle *self) +{ + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* textbox = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_TEXT"); + + Ihandle* dlg = IupFileDlg(); + + IupSetAttributeHandle(dlg, "PARENTDIALOG", IupGetDialog(self)); + IupSetAttribute(dlg, "TITLE", iupAttribGet(param, "TITLE")); + IupSetAttribute(dlg, "VALUE", iupAttribGet(param, "VALUE")); + + IupSetAttribute(dlg, "DIALOGTYPE", iupAttribGet(param, "_IUPGP_DIALOGTYPE")); + IupSetAttribute(dlg, "FILTER", iupAttribGet(param, "_IUPGP_FILTER")); + IupSetAttribute(dlg, "DIRECTORY", iupAttribGet(param, "_IUPGP_DIRECTORY")); + IupSetAttribute(dlg, "NOCHANGEDIR", iupAttribGet(param, "_IUPGP_NOCHANGEDIR")); + IupSetAttribute(dlg, "NOOVERWRITEPROMPT", iupAttribGet(param, "_IUPGP_NOOVERWRITEPROMPT")); + + IupPopup(dlg, IUP_CENTER, IUP_CENTER); + + if (IupGetInt(dlg, "STATUS") != -1) + { + IupSetAttribute(textbox, "VALUE", iupAttribGet(dlg, "VALUE")); + iupAttribStoreStr(param, "VALUE", iupAttribGet(dlg, "VALUE")); + } + + IupDestroy(dlg); + + return IUP_DEFAULT; +} + +static int iParamColorButton_CB(Ihandle *self, int button, int pressed) +{ + if (button==IUP_BUTTON1 && pressed) + { + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* textbox = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_TEXT"); + + Ihandle* dlg = IupColorDlg(); + + IupSetAttributeHandle(dlg, "PARENTDIALOG", IupGetDialog(self)); + IupSetAttribute(dlg, "TITLE", iupAttribGet(param, "TITLE")); + IupSetAttribute(dlg, "VALUE", iupAttribGet(param, "VALUE")); + + IupPopup(dlg, IUP_CENTER, IUP_CENTER); + + if (IupGetInt(dlg, "STATUS") != -1) + { + char* value = IupGetAttribute(dlg, "VALUE"); + IupSetAttribute(textbox, "VALUE", value); + iupAttribStoreStr(param, "VALUE", value); + IupStoreAttribute(self, "BGCOLOR", value); + } + + IupDestroy(dlg); + } + + return IUP_DEFAULT; +} + +static int iParamSpinReal_CB(Ihandle *self, int pos) +{ + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + Ihandle* text = (Ihandle*)iupAttribGet(param, "CONTROL"); + float min = iupAttribGetFloat(param, "MIN"); + float max = iupAttribGetFloat(param, "MAX"); + float val, step = iupAttribGetFloat(text, "_IUPGP_INCSTEP"); + + /* here spin is always [0-spinmax] converted to [min-max] */ + val = (float)pos*step + min; + if (val < min) + val = min; + if (val > max) + val = max; + + iupAttribSetStrf(param, "VALUE", "%g", (double)val); + + if (cb) + { + int ret; + iupAttribSetStr(dlg, "SPINNING", "1"); + ret = cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA")); + iupAttribSetStr(dlg, "SPINNING", NULL); + if (!ret) + return IUP_IGNORE; + } + + IupSetfAttribute(text, "VALUE", "%g", (double)val); + + { + Ihandle* aux = (Ihandle*)iupAttribGet(param, "AUXCONTROL"); + if (aux) + IupSetfAttribute(aux, "VALUE", "%g", (double)val); + } + + return IUP_DEFAULT; +} + +static int iParamSpinInt_CB(Ihandle *self, int pos) +{ + Ihandle* param = (Ihandle*)iupAttribGetInherit(self, "_IUPGP_PARAM"); + Ihandle* dlg = IupGetDialog(self); + Iparamcb cb = (Iparamcb)IupGetCallback(dlg, "PARAM_CB"); + Ihandle* text = (Ihandle*)iupAttribGet(param, "CONTROL"); + + /* here spin is always [min-max] */ + + iupAttribSetInt(param, "VALUE", pos); + + if (cb) + { + int ret; + iupAttribSetStr(dlg, "SPINNING", "1"); + ret = cb(dlg, iupAttribGetInt(param, "INDEX"), (void*)iupAttribGet(dlg, "USER_DATA")); + iupAttribSetStr(dlg, "SPINNING", NULL); + if (!ret) + return IUP_IGNORE; + } + + IupSetfAttribute(text, "VALUE", "%g", (double)pos); + + { + Ihandle* aux = (Ihandle*)iupAttribGet(param, "AUXCONTROL"); + if (aux) + IupSetfAttribute(aux, "VALUE", "%g", (double)pos); + } + + return IUP_DEFAULT; +} + +/******************************************************************************************* + Creates One Parameter Box +*******************************************************************************************/ + +static Ihandle* iParamCreateBox(Ihandle* param) +{ + Ihandle *box, *ctrl = NULL, *label; + char *type; + + label = IupLabel(iupAttribGet(param, "TITLE")); + + type = iupAttribGet(param, "TYPE"); + if (iupStrEqual(type, "SEPARATOR")) + { + box = IupHbox(label, NULL); + IupSetAttribute(box,"ALIGNMENT","ACENTER"); + } + else + { + if (iupStrEqual(type, "STRING") && iupAttribGetInt(param, "MULTILINE")) + { + Ihandle* hbox1 = IupHbox(IupSetAttributes(IupFill(), "SIZE=5"), label, NULL); + IupSetAttribute(hbox1,"ALIGNMENT","ACENTER"); + + box = IupVbox(hbox1, NULL); + IupSetAttribute(box,"ALIGNMENT","ALEFT"); + } + else + { + box = IupHbox(IupSetAttributes(IupFill(), "SIZE=5"), label, NULL); + IupSetAttribute(box,"ALIGNMENT","ACENTER"); + } + } + + IupSetAttribute(box,"MARGIN","0x0"); + + type = iupAttribGet(param, "TYPE"); + if (iupStrEqual(type, "BOOLEAN")) + { + int value = iupAttribGetInt(param, "VALUE"); + if (value) + { + ctrl = IupToggle(iupAttribGet(param, "_IUPGP_TRUE"), NULL); + IupSetAttribute(ctrl, "VALUE", "ON"); + } + else + { + ctrl = IupToggle(iupAttribGet(param, "_IUPGP_FALSE"), NULL); + IupSetAttribute(ctrl, "VALUE", "OFF"); + } + IupSetCallback(ctrl, "ACTION", (Icallback)iParamToggleAction_CB); + + IupAppend(box, ctrl); + iupAttribSetStr(param, "DATA_TYPE", "1"); + } + else if (iupStrEqual(type, "SEPARATOR")) + { + ctrl = IupLabel(""); + IupSetAttribute(ctrl, "SEPARATOR", "HORIZONTAL"); + + IupAppend(box, ctrl); + iupAttribSetStr(param, "DATA_TYPE", "-1"); + } + else if (iupStrEqual(type, "LIST")) + { + char str[20] = "1"; + int i = 1; + ctrl = IupList(NULL); + IupSetCallback(ctrl, "ACTION", (Icallback)iParamListAction_CB); + IupSetAttribute(ctrl, "DROPDOWN", "YES"); + IupSetfAttribute(ctrl, "VALUE", "%d", iupAttribGetInt(param, "VALUE")+1); + + while (*iupAttribGet(param, str) != 0) + { + IupStoreAttribute(ctrl, str, iupAttribGet(param, str)); + i++; + sprintf(str, "%d", i); + } + IupStoreAttribute(ctrl, str, NULL); + + IupAppend(box, ctrl); + iupAttribSetStr(param, "DATA_TYPE", "1"); + } + else if (iupStrEqual(type, "STRING")) + { + if (iupAttribGetInt(param, "MULTILINE")) + { + Ihandle* hbox; + + ctrl = IupMultiLine(NULL); + IupSetAttribute(ctrl, "SIZE", "100x50"); + IupSetAttribute(ctrl, "EXPAND", "YES"); + + hbox = IupHbox(IupSetAttributes(IupFill(), "SIZE=5"), ctrl, NULL); + IupSetAttribute(hbox,"ALIGNMENT","ACENTER"); + + IupAppend(box, hbox); + } + else + { + ctrl = IupText(NULL); + IupSetAttribute(ctrl, "SIZE", "100x"); + IupSetAttribute(ctrl, "EXPAND", "HORIZONTAL"); + IupAppend(box, ctrl); + } + IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB); + IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE")); + + { + char* mask = iupAttribGet(param, "MASK"); + if (mask) + IupStoreAttribute(ctrl, "MASK", mask); + } + + iupAttribSetStr(param, "DATA_TYPE", "0"); + iupAttribSetStr(param, "EXPAND", "1"); + } + else if (iupStrEqual(type, "FILE")) + { + Ihandle* aux; + + ctrl = IupText(NULL); + IupSetAttribute(ctrl, "SIZE", "100x"); + IupSetAttribute(ctrl, "EXPAND", "HORIZONTAL"); + IupAppend(box, ctrl); + + IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB); + IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE")); + + iupAttribSetStr(param, "DATA_TYPE", "0"); + iupAttribSetStr(param, "EXPAND", "1"); + + + aux = IupButton("...", ""); + IupSetAttribute(aux, "EXPAND", "NO"); + + IupSetCallback(aux, "ACTION", (Icallback)iParamFileButton_CB); + iupAttribSetStr(aux, "_IUPGP_PARAM", (char*)param); + iupAttribSetStr(aux, "_IUPGP_TEXT", (char*)ctrl); + IupSetAttribute(aux, "EXPAND", "NO"); + + IupAppend(box, aux); + } + else if (iupStrEqual(type, "COLOR")) + { + Ihandle* aux; + + ctrl = IupText(NULL); + IupSetAttribute(ctrl, "SIZE", "100x"); + IupSetAttribute(ctrl, "EXPAND", "HORIZONTAL"); + IupAppend(box, ctrl); + + IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB); + IupSetAttribute(ctrl, "MASK", "(/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5)) (/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5)) (/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5)) (/d|/d/d|1/d/d|2(0|1|2|3|4)/d|25(0|1|2|3|4|5))"); + IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE")); + + iupAttribSetStr(param, "DATA_TYPE", "0"); + iupAttribSetStr(param, "EXPAND", "1"); + + + aux = IupCanvas(NULL); + IupSetAttribute(aux, "SIZE", "20x10"); + IupSetAttribute(aux, "EXPAND", "NO"); + IupStoreAttribute(aux, "BGCOLOR", iupAttribGet(param, "VALUE")); + + IupSetCallback(aux, "BUTTON_CB", (Icallback)iParamColorButton_CB); + iupAttribSetStr(param, "AUXCONTROL", (char*)aux); + iupAttribSetStr(aux, "_IUPGP_PARAM", (char*)param); + iupAttribSetStr(aux, "_IUPGP_TEXT", (char*)ctrl); + IupSetAttribute(aux, "EXPAND", "NO"); + + IupAppend(box, aux); + } + else /* INTEGER, REAL */ + { + ctrl = IupText(NULL); + IupSetCallback(ctrl, "ACTION", (Icallback)iParamTextAction_CB); + IupStoreAttribute(ctrl, "VALUE", iupAttribGet(param, "VALUE")); + + type = iupAttribGet(param, "TYPE"); + if (iupStrEqual(type, "REAL")) + { + if (iupAttribGetInt(param, "INTERVAL")) + { + float min = iupAttribGetFloat(param, "MIN"); + float max = iupAttribGetFloat(param, "MAX"); + float step = iupAttribGetFloat(param, "STEP"); + float val = iupAttribGetFloat(param, "VALUE"); + if (step == 0) step = (max-min)/20.0f; + IupSetfAttribute(ctrl, "MASKFLOAT", "%f:%f", (double)min, (double)max); + + /* here spin is always [0-spinmax] converted to [min-max] */ + + IupSetAttribute(ctrl, "SPIN", "YES"); /* spin only for intervals */ + IupSetAttribute(ctrl, "SPINAUTO", "NO"); + IupAppend(box, ctrl); + IupSetCallback(ctrl, "SPIN_CB", (Icallback)iParamSpinReal_CB); + /* SPINMIN=0 and SPININC=1 */ + IupSetfAttribute(ctrl, "SPINMAX", "%d", (int)((max-min)/step + 0.5)); + IupSetfAttribute(ctrl, "SPINVALUE", "%d", (int)((val-min)/step + 0.5)); + + iupAttribSetStrf(ctrl, "_IUPGP_INCSTEP", "%g", step); + iupAttribSetStr(ctrl, "_IUPGP_SPINREAL", "1"); + } + else if (iupAttribGetInt(param, "PARTIAL")) + { + float min = iupAttribGetFloat(param, "MIN"); + if (min == 0) + IupSetAttribute(ctrl, "MASK", IUP_MASK_UFLOAT); + else + IupSetfAttribute(ctrl, "MASKFLOAT", "%f:%f", (double)min, (double)1.0e10); + IupAppend(box, ctrl); + } + else + { + IupSetAttribute(ctrl, "MASK", IUP_MASK_FLOAT); + IupAppend(box, ctrl); + } + + iupAttribSetStr(param, "DATA_TYPE", "2"); + IupSetAttribute(ctrl, "SIZE", "50x"); + } + else /* INTEGER*/ + { + int val = iupAttribGetInt(param, "VALUE"); + IupSetAttribute(ctrl, "SPIN", "YES"); /* spin always */ + IupSetAttribute(ctrl, "SPINAUTO", "NO"); /* manually update spin so the callback can also updated it */ + IupAppend(box, ctrl); + IupSetCallback(ctrl, "SPIN_CB", (Icallback)iParamSpinInt_CB); + iupAttribSetStr(ctrl, "_IUPGP_INCSTEP", "1"); + IupSetfAttribute(ctrl, "SPINVALUE", "%d", val); + + /* here spin is always [min-max] */ + + if (iupAttribGetInt(param, "INTERVAL")) + { + int min = iupAttribGetInt(param, "MIN"); + int max = iupAttribGetInt(param, "MAX"); + int step = iupAttribGetInt(param, "STEP"); + if (step) + { + iupAttribSetStrf(ctrl, "_IUPGP_INCSTEP", "%d", step); + IupSetfAttribute(ctrl, "SPININC", "%d", step); + } + IupSetfAttribute(ctrl, "SPINMAX", "%d", max); + IupSetfAttribute(ctrl, "SPINMIN", "%d", min); + } + else if (iupAttribGetInt(param, "PARTIAL")) + { + int min = iupAttribGetInt(param, "MIN"); + if (min == 0) + IupSetAttribute(ctrl, "MASK", IUP_MASK_UINT); + else + IupSetfAttribute(ctrl, "MASKINT", "%d:2147483647", min); + IupSetfAttribute(ctrl, "SPINMIN", "%d", min); + IupSetAttribute(ctrl, "SPINMAX", "2147483647"); + } + else + { + IupSetAttribute(ctrl, "SPINMIN", "-2147483647"); + IupSetAttribute(ctrl, "SPINMAX", "2147483647"); + IupSetAttribute(ctrl, "MASK", IUP_MASK_INT); + } + + iupAttribSetStr(param, "DATA_TYPE", "1"); + IupSetAttribute(ctrl, "SIZE", "50x"); + } + + if (iupAttribGetInt(param, "INTERVAL") || iupAttribGetInt(param, "ANGLE")) + { + Ihandle* aux; + + if (iupAttribGetInt(param, "ANGLE")) + { + aux = IupCreatep("dial", "HORIZONTAL", NULL); + if (aux) + { + IupSetfAttribute(aux, "VALUE", "%g", (double)(iupAttribGetFloat(param, "VALUE")/RAD2DEG)); + IupSetAttribute(aux, "SIZE", "50x10"); + } + } + else + { + char* step; + aux = IupVal("HORIZONTAL"); + IupStoreAttribute(aux, "MIN", iupAttribGet(param, "MIN")); + IupStoreAttribute(aux, "MAX", iupAttribGet(param, "MAX")); + IupStoreAttribute(aux, "VALUE", iupAttribGet(param, "VALUE")); + IupSetAttribute(aux, "EXPAND", "HORIZONTAL"); + iupAttribSetStr(param, "AUXCONTROL", (char*)aux); + iupAttribSetStr(param, "EXPAND", "1"); + step = iupAttribGet(param, "STEP"); + if (step) + IupSetfAttribute(aux, "STEP", "%g", iupAttribGetFloat(param, "STEP")/(iupAttribGetFloat(param, "MAX")-iupAttribGetFloat(param, "MIN"))); + else if (iupStrEqual(type, "INTEGER")) + IupSetfAttribute(aux, "STEP", "%g", 1.0/(iupAttribGetFloat(param, "MAX")-iupAttribGetFloat(param, "MIN"))); + } + + if (aux) + { + IupSetCallback(aux, "VALUECHANGED_CB", (Icallback)iParamValAction_CB); + iupAttribSetStr(aux, "_IUPGP_PARAM", (char*)param); + iupAttribSetStr(aux, "_IUPGP_TEXT", (char*)ctrl); + + IupAppend(box, aux); + } + } + } + + if (ctrl) IupStoreAttribute(ctrl, "TIP", iupAttribGet(param, "TIP")); + iupAttribSetStr(box, "_IUPGP_PARAM", (char*)param); + iupAttribSetStr(param, "CONTROL", (char*)ctrl); + iupAttribSetStr(param, "LABEL", (char*)label); + return box; +} + +/******************************************************************************************* + Creates the Dialog and Normalize Sizes +*******************************************************************************************/ + +static Ihandle* IupParamDlgP(Ihandle** params) +{ + Ihandle *dlg, *button_ok, *button_cancel, + *dlg_box, *button_box, *param_box; + int i, lbl_width, p, expand; + + button_ok = IupButton("OK", NULL); + IupSetAttribute(button_ok, "PADDING", "20x0"); + IupSetCallback(button_ok, "ACTION", (Icallback)iParamButtonOK_CB); + + button_cancel = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL); + IupSetAttribute(button_cancel, "PADDING", "20x0"); + IupSetCallback(button_cancel, "ACTION", (Icallback)iParamButtonCancel_CB); + + param_box = IupVbox(NULL); + + i = 0; expand = 0; + while (params[i] != NULL) + { + IupAppend(param_box, iParamCreateBox(params[i])); + + if (IupGetInt(params[i], "EXPAND")) + expand = 1; + + i++; + } + + button_box = IupHbox( + IupFill(), + button_ok, + button_cancel, + NULL); + IupSetAttribute(button_box,"MARGIN","0x0"); + IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL"); + + dlg_box = IupVbox( + IupFrame(param_box), + button_box, + NULL); + IupSetAttribute(dlg_box, "MARGIN", "10x10"); + IupSetAttribute(dlg_box, "GAP", "5"); + + dlg = IupDialog(dlg_box); + + IupSetAttribute(dlg, "MINBOX", "NO"); + IupSetAttribute(dlg, "MAXBOX", "NO"); + if (!expand) + { + IupSetAttribute(dlg, "RESIZE", "NO"); + IupSetAttribute(dlg, "DIALOGFRAME", "YES"); + IupSetAttribute(dlg,"DIALOGHINT","YES"); + } + IupSetAttributeHandle(dlg, "DEFAULTENTER", button_ok); + IupSetAttributeHandle(dlg, "DEFAULTESC", button_cancel); + IupSetAttribute(dlg, "TITLE", "ParamDlg"); + IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG")); + IupSetAttribute(dlg, "ICON", IupGetGlobal("ICON")); + iupAttribSetStr(dlg, "OK", (char*)button_ok); + iupAttribSetStr(dlg, "CANCEL", (char*)button_cancel); + + IupMap(dlg); + + /* get the largest label size and set INDEX */ + i = 0; lbl_width = 0, p = 0; + while (params[i] != NULL) + { + int w; + + char* type = iupAttribGet(params[i], "TYPE"); + if (!iupStrEqual(type, "SEPARATOR")) + { + char str[20]; + sprintf(str, "PARAM%d", p); + IupSetAttribute(dlg, str, (char*)params[i]); + iupAttribSetStrf(params[i], "INDEX", "%d", p); + p++; + } + + w = IupGetInt((Ihandle*)iupAttribGet(params[i], "LABEL"), "SIZE"); + if (w > lbl_width) + lbl_width = w; + + i++; + } + + i = 0; + while (params[i] != NULL) + { + char* type = iupAttribGet(params[i], "TYPE"); + if (!iupStrEqual(type, "SEPARATOR")) + { + if (iupStrEqual(type, "LIST")) + { + /* set a minimum size for lists */ + Ihandle* ctrl = (Ihandle*)iupAttribGet(params[i], "CONTROL"); + if (IupGetInt(ctrl, "SIZE") < 50) + IupSetAttribute(ctrl, "SIZE", "50x"); + } + else if (iupStrEqual(type, "BOOLEAN")) + { + /* reserve enough space for boolean strings */ + Ihandle* ctrl = (Ihandle*)iupAttribGet(params[i], "CONTROL"); + int wf = iupdrvFontGetStringWidth(ctrl, iupAttribGet(params[i], "_IUPGP_FALSE")); + int wt = iupdrvFontGetStringWidth(ctrl, iupAttribGet(params[i], "_IUPGP_TRUE")); + int w = IupGetInt(ctrl, "SIZE"); + int v = IupGetInt(ctrl, "VALUE"); + if (v) /* True */ + { + int box = w - wt; + wf += box; + if (wf > w) + IupSetfAttribute(ctrl, "SIZE", "%dx", wf+8); + } + else + { + int box = w - wf; + wt += box; + if (wt > w) + IupSetfAttribute(ctrl, "SIZE", "%dx", wt+8); + } + } + + IupSetfAttribute((Ihandle*)iupAttribGet(params[i], "LABEL"), "SIZE", "%dx", lbl_width); + } + + i++; + } + + IupSetAttribute(dlg, "SIZE", NULL); + + return dlg; +} + +/******************************************************************************************* + Parameter String Parsing +*******************************************************************************************/ + +static char* iParamGetNextStrItem(char* line, char sep, int *count) +{ + int i = 0; + + while (line[i] != '\n' && line[i] != 0) + { + if (line[i] == sep) + { + line[i] = 0; + *count = i+1; + return line; + } + + i++; + } + + /* last item may not have the separator */ + line[i] = 0; + *count = i; + return line; +} + +static void iParamSetBoolNames(char* extra, Ihandle* param) +{ + char *falsestr = NULL, *truestr = NULL; + int count; + + if (extra) + { + falsestr = iParamGetNextStrItem(extra, ',', &count); extra += count; + truestr = iParamGetNextStrItem(extra, ',', &count); + } + + if (falsestr && truestr) + { + iupAttribStoreStr(param, "_IUPGP_TRUE", truestr); + iupAttribStoreStr(param, "_IUPGP_FALSE", falsestr); + } + else + { +/* iupAttribStoreStr(param, "_IUPGP_TRUE", iupStrMessageGet("IUP_TRUE")); */ +/* iupAttribStoreStr(param, "_IUPGP_FALSE", iupStrMessageGet("IUP_FALSE")); */ + iupAttribStoreStr(param, "_IUPGP_TRUE", ""); + iupAttribStoreStr(param, "_IUPGP_FALSE", ""); + } +} + +static void iParamSetInterval(char* extra, Ihandle* param) +{ + char *min, *max, *step; + int count; + + if (!extra) + return; + + min = iParamGetNextStrItem(extra, ',', &count); extra += count; + max = iParamGetNextStrItem(extra, ',', &count); extra += count; + step = iParamGetNextStrItem(extra, ',', &count); + + if (max[0]) + { + iupAttribSetStr(param, "INTERVAL", "1"); + iupAttribStoreStr(param, "MIN", min); + iupAttribStoreStr(param, "MAX", max); + if (step[0]) + iupAttribStoreStr(param, "STEP", step); + } + else + { + iupAttribSetStr(param, "PARTIAL", "1"); + iupAttribStoreStr(param, "MIN", min); + } +} + +static void iParamSetFileOptions(char* extra, Ihandle* param) +{ + char *type, *filter, *directory, *nochangedir, *nooverwriteprompt; + int count; + + if (!extra) + return; + + type = iParamGetNextStrItem(extra, '|', &count); extra += count; + filter = iParamGetNextStrItem(extra, '|', &count); extra += count; + directory = iParamGetNextStrItem(extra, '|', &count); extra += count; + nochangedir = iParamGetNextStrItem(extra, '|', &count); extra += count; + nooverwriteprompt = iParamGetNextStrItem(extra, '|', &count); extra += count; + + iupAttribStoreStr(param, "_IUPGP_DIALOGTYPE", type); + iupAttribStoreStr(param, "_IUPGP_FILTER", filter); + iupAttribStoreStr(param, "_IUPGP_DIRECTORY", directory); + iupAttribStoreStr(param, "_IUPGP_NOCHANGEDIR", nochangedir); + iupAttribStoreStr(param, "_IUPGP_NOOVERWRITEPROMPT", nooverwriteprompt); +} + +static void iParamSetListItems(char* extra, Ihandle* param) +{ + int d = 1, count; + char str[20], *item; + + if (!extra) + return; + + item = iParamGetNextStrItem(extra, '|', &count); extra += count; + while (*item) + { + sprintf(str, "%d", d); + iupAttribStoreStr(param, str, item); + + item = iParamGetNextStrItem(extra, '|', &count); extra += count; + d++; + } + + sprintf(str, "%d", d); + iupAttribSetStr(param, str, ""); +} + +static char* iParamGetStrExtra(char* line, char start, char end, int *count) +{ + int i = 0, end_pos = -1; + + if (*line != start) + { + *count = 0; + return NULL; + } + line++; /* skip start */ + + while (line[i] != '\n' && line[i] != 0) + { + if (line[i] == end) + end_pos = i; + + i++; + } + + if (end_pos != -1) + { + line[end_pos] = 0; + *count = 1+end_pos+1; + return line; + } + else + { + *count = 0; + return NULL; + } +} + +static int iParamCopyStrLine(char* line, const char* format) +{ + int i = 0; + while (format[i] != '\n' && format[i] != 0) + { + line[i] = format[i]; + i++; + if (i > 4094) /* to avoid being bigger than the local array */ + break; + } + line[i] = '\n'; + line[i+1] = 0; + return i+1; +} + +char iupGetParamType(const char* format, int *line_size) +{ + char* type = strchr(format, '%'); + char* line_end = strchr(format, '\n'); + if (line_end) + *line_size = line_end-format+1; + if (type) + return *(type+1); + else + return 0; +} + +static Ihandle *IupParamf(const char* format, int *line_size) +{ + Ihandle* param; + char line[4096]; + char* line_ptr = &line[0], *title, type, *tip, *extra, *mask; + int count; + + *line_size = iParamCopyStrLine(line, format); + + title = iParamGetNextStrItem(line_ptr, '%', &count); line_ptr += count; + param = IupUser(); + iupAttribStoreStr(param, "TITLE", title); + + type = *line_ptr; + line_ptr++; + + switch(type) + { + case 'b': + iupAttribSetStr(param, "TYPE", "BOOLEAN"); + iupAttribSetStr(param, "DATA_TYPE", "1"); /* integer */ + extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count; + iParamSetBoolNames(extra, param); + break; + case 'l': + iupAttribSetStr(param, "TYPE", "LIST"); + iupAttribSetStr(param, "DATA_TYPE", "1"); /* integer */ + extra = iParamGetStrExtra(line_ptr, '|', '|', &count); line_ptr += count; + iParamSetListItems(extra, param); + break; + case 'a': + iupAttribSetStr(param, "TYPE", "REAL"); + iupAttribSetStr(param, "DATA_TYPE", "2"); /* real */ + iupAttribSetStr(param, "ANGLE", "1"); + extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count; + iParamSetInterval(extra, param); + break; + case 'm': + iupAttribSetStr(param, "MULTILINE", "1"); + /* continue */ + case 's': + iupAttribSetStr(param, "TYPE", "STRING"); + iupAttribSetStr(param, "DATA_TYPE", "0"); /* string */ + mask = iParamGetNextStrItem(line_ptr, '{', &count); + if (*mask) + iupAttribStoreStr(param, "MASK", mask); + line_ptr += count-1; /* ignore the fake separator */ + line_ptr[0] = '{'; /* restore possible separator */ + break; + case 'i': + iupAttribSetStr(param, "TYPE", "INTEGER"); + iupAttribSetStr(param, "DATA_TYPE", "1"); /* integer */ + extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count; + iParamSetInterval(extra, param); + break; + case 'r': + iupAttribSetStr(param, "TYPE", "REAL"); + iupAttribSetStr(param, "DATA_TYPE", "2"); /* real */ + extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count; + iParamSetInterval(extra, param); + break; + case 'f': + iupAttribSetStr(param, "TYPE", "FILE"); + iupAttribSetStr(param, "DATA_TYPE", "0"); /* string */ + extra = iParamGetStrExtra(line_ptr, '[', ']', &count); line_ptr += count; + iParamSetFileOptions(extra, param); + break; + case 'c': + iupAttribSetStr(param, "TYPE", "COLOR"); + iupAttribSetStr(param, "DATA_TYPE", "0"); /* string */ + break; + case 't': + iupAttribSetStr(param, "TYPE", "SEPARATOR"); + iupAttribSetStr(param, "DATA_TYPE", "-1"); /* NONE */ + break; + default: + return NULL; + } + + tip = iParamGetStrExtra(line_ptr, '{', '}', &count); + if (tip) + iupAttribStoreStr(param, "TIP", tip); + + return param; +} + +/******************************************************************************************* + Exported Functions +*******************************************************************************************/ + +int iupGetParamCount(const char *format, int *param_extra) +{ + int param_count = 0, sep = 0; + const char* s = format; + + *param_extra = 0; + while(*s) + { + if (*s == '%' && *(s+1) == 't') /* do not count separator lines */ + { + sep = 1; + (*param_extra)++; + } + + if (*s == '\n') + { + if (sep) + sep = 0; + else + param_count++; + } + + s++; + } + + return param_count; +} + +static void iParamDestroyAll(Ihandle **params) +{ + int i = 0; + while (params[i] != NULL) + { + IupDestroy(params[i]); + i++; + } +} + +int IupGetParamv(const char* title, Iparamcb action, void* user_data, const char* format, int param_count, int param_extra, void** param_data) +{ + Ihandle *dlg, *params[50]; + int i, line_size, p; + + assert(title && format); + if (!title || !format) + return 0; + + for (i = 0, p = 0; i < param_count+param_extra; i++) + { + int data_type; + + params[i] = IupParamf(format, &line_size); + assert(params[i]); + if (!params[i]) + return 0; + + data_type = IupGetInt(params[i], "DATA_TYPE"); + if (data_type == 1) + { + int *data_int = (int*)(param_data[p]); + if (!data_int) return 0; + iupAttribSetStrf(params[i], "VALUE", "%d", *data_int); + p++; + } + else if (data_type == 2) + { + float *data_float = (float*)(param_data[p]); + if (!data_float) return 0; + iupAttribSetStrf(params[i], "VALUE", "%g", *data_float); + p++; + } + else if (data_type == 0) + { + char *data_str = (char*)(param_data[p]); + if (!data_str) return 0; + iupAttribStoreStr(params[i], "VALUE", data_str); + p++; + } + + format += line_size; + } + params[i] = NULL; + + dlg = IupParamDlgP(params); + IupSetAttribute(dlg, "TITLE", (char*)title); + IupSetCallback(dlg, "PARAM_CB", (Icallback)action); + iupAttribSetStr(dlg, "USER_DATA", (char*)user_data); + + if (action) + action(dlg, -2, user_data); + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + + if (!IupGetInt(dlg, "STATUS")) + { + iParamDestroyAll(params); + IupDestroy(dlg); + return 0; + } + else + { + for (i = 0, p = 0; i < param_count; i++) + { + Ihandle* param; + int data_type; + char str[20]; + + sprintf(str, "PARAM%d", i); + param = (Ihandle*)iupAttribGet(dlg, str); + + data_type = iupAttribGetInt(param, "DATA_TYPE"); + if (data_type == 1) + { + int *data_int = (int*)(param_data[i]); + *data_int = iupAttribGetInt(param, "VALUE"); + p++; + } + else if (data_type == 2) + { + float *data_float = (float*)(param_data[i]); + *data_float = iupAttribGetFloat(param, "VALUE"); + p++; + } + else + { + char *data_str = (char*)(param_data[i]); + strcpy(data_str, iupAttribGet(param, "VALUE")); + p++; + } + } + + iParamDestroyAll(params); + IupDestroy(dlg); + return 1; + } +} + +int IupGetParam(const char* title, Iparamcb action, void* user_data, const char* format,...) +{ + int param_count, param_extra, i; + void* param_data[50]; + va_list arg; + + param_count = iupGetParamCount(format, ¶m_extra); + + va_start(arg, format); + for (i = 0; i < param_count; i++) + { + param_data[i] = (void*)(va_arg(arg, void*)); + } + va_end(arg); + + return IupGetParamv(title, action, user_data, format, param_count, param_extra, param_data); +} + diff --git a/iup/src/iup_globalattrib.c b/iup/src/iup_globalattrib.c new file mode 100755 index 0000000..00586fb --- /dev/null +++ b/iup/src/iup_globalattrib.c @@ -0,0 +1,153 @@ +/** \file + * \brief global attributes enviroment + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" + +#include "iup_table.h" +#include "iup_globalattrib.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_assert.h" +#include "iup_str.h" + + +static Itable *iglobal_table = NULL; + +void iupGlobalAttribInit(void) +{ + iglobal_table = iupTableCreate(IUPTABLE_STRINGINDEXED); +} + +void iupGlobalAttribFinish(void) +{ + iupTableDestroy(iglobal_table); + iglobal_table = NULL; +} + +static int iGlobalChangingDefaultColor(const char *name) +{ + if (iupStrEqual(name, "DLGBGCOLOR") || + iupStrEqual(name, "DLGFGCOLOR") || + iupStrEqual(name, "MENUBGCOLOR") || + iupStrEqual(name, "MENUFGCOLOR") || + iupStrEqual(name, "TXTBGCOLOR") || + iupStrEqual(name, "TXTFGCOLOR")) + { + char str[50] = "_IUP_USER_DEFAULT_"; + strcat(str, name); + iupTableSet(iglobal_table, str, (void*)"1", IUPTABLE_POINTER); /* mark as changed by the User */ + return 1; + } + return 0; +} + +int iupGlobalDefaultColorChanged(const char *name) +{ + char str[50] = "_IUP_USER_DEFAULT_"; + strcat(str, name); + return iupTableGet(iglobal_table, str) != NULL; +} + +void iupGlobalSetDefaultColorAttrib(const char* name, int r, int g, int b) +{ + if (!iupGlobalDefaultColorChanged(name)) + { + char value[50]; + sprintf(value, "%3d %3d %3d", r, g, b); + iupTableSet(iglobal_table, name, (void*)value, IUPTABLE_STRING); + } +} + +void IupSetGlobal(const char *name, const char *value) +{ + iupASSERT(name!=NULL); + if (!name) return; + + if (iupStrEqual(name, "DEFAULTFONTSIZE")) + { + iupSetDefaultFontSizeGlobalAttrib(value); + return; + } + + if (iGlobalChangingDefaultColor(name) || iupdrvSetGlobal(name, value)) + { + if (!value) + iupTableRemove(iglobal_table, name); + else + iupTableSet(iglobal_table, name, (void*)value, IUPTABLE_POINTER); + } +} + +void IupStoreGlobal(const char *name, const char *value) +{ + iupASSERT(name!=NULL); + if (!name) return; + + if (iupStrEqual(name, "DEFAULTFONTSIZE")) + { + iupSetDefaultFontSizeGlobalAttrib(value); + return; + } + + if (iGlobalChangingDefaultColor(name) || iupdrvSetGlobal(name, value)) + { + if (!value) + iupTableRemove(iglobal_table, name); + else + iupTableSet(iglobal_table, name, (void*)value, IUPTABLE_STRING); + } +} + +char *IupGetGlobal(const char *name) +{ + char* value; + + iupASSERT(name!=NULL); + if (!name) + return NULL; + + if (iupStrEqual(name, "DEFAULTFONTSIZE")) + return iupGetDefaultFontSizeGlobalAttrib(); + + value = iupdrvGetGlobal(name); + + if (!value) + value = (char*)iupTableGet(iglobal_table, name); + + return value; +} + +int iupGlobalIsPointer(const char* name) +{ + static struct { + const char *name; + } ptr_table[] = { +#ifdef WIN32 + {"HINSTANCE"}, +#else + {"XDISPLAY"}, + {"XSCREEN"}, + {"APPSHELL"}, +#endif + }; +#define PTR_TABLE_SIZE ((sizeof ptr_table)/(sizeof ptr_table[0])) + + if (name) + { + int i; + for (i = 0; i < PTR_TABLE_SIZE; i++) + { + if (iupStrEqualNoCase(name, ptr_table[i].name)) + return 1; + } + } + + return 0; +} diff --git a/iup/src/iup_globalattrib.h b/iup/src/iup_globalattrib.h new file mode 100755 index 0000000..706a6ac --- /dev/null +++ b/iup/src/iup_globalattrib.h @@ -0,0 +1,33 @@ +/** \file + * \brief global attributes enviroment + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_GLOBALATTRIB_H +#define __IUP_GLOBALATTRIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* called only in IupOpen and IupClose */ +void iupGlobalAttribInit(void); +void iupGlobalAttribFinish(void); + +int iupGlobalIsPointer(const char* name); + +int iupGlobalDefaultColorChanged(const char *name); /* check if user changed */ +void iupGlobalSetDefaultColorAttrib(const char* name, int r, int g, int b); /* internal change method */ + +/* Other functions declared in and implemented here. +IupSetGlobal +IupStoreGlobal +IupGetGlobal +*/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_hbox.c b/iup/src/iup_hbox.c new file mode 100755 index 0000000..e790636 --- /dev/null +++ b/iup/src/iup_hbox.c @@ -0,0 +1,309 @@ +/** \file + * \brief Hbox Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_box.h" + + +static int iHboxSetRasterSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + int s = 0; + iupStrToInt(value, &s); + if (s > 0) + { + ih->userheight = 0; + ih->userwidth = s; + } + } + iupAttribSetStr(ih, "SIZE", NULL); /* clear SIZE in hash table */ + return 0; +} + +static int iHboxSetSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + int s = 0; + iupStrToInt(value, &s); + if (s > 0) + { + int charwidth, charheight; + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + ih->userheight = 0; + ih->userwidth = iupWIDTH2RASTER(s, charwidth); + } + } + return 1; +} + +static int iHboxSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "ABOTTOM")) + ih->data->alignment = IUP_ALIGN_ABOTTOM; + else if (iupStrEqualNoCase(value, "ACENTER")) + ih->data->alignment = IUP_ALIGN_ACENTER; + else if (iupStrEqualNoCase(value, "ATOP")) + ih->data->alignment = IUP_ALIGN_ATOP; + return 0; +} + +static char* iHboxGetAlignmentAttrib(Ihandle* ih) +{ + static char* align2str[3] = {"ATOP", "ACENTER", "ABOTTOM"}; + return align2str[ih->data->alignment]; +} + +static void iHboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + Ihandle* child; + int children_naturalwidth, children_naturalheight; + + /* calculate total children natural size */ + int children_expand = 0; + int children_count = 0; + int children_natural_totalwidth = 0; + int children_natural_maxwidth = 0; + int children_natural_maxheight = 0; + + for (child = ih->firstchild; child; child = child->brother) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + if (!child->is_floating) + { + children_expand |= child->expand; + children_natural_maxwidth = iupMAX(children_natural_maxwidth, child->naturalwidth); + children_natural_maxheight = iupMAX(children_natural_maxheight, child->naturalheight); + children_count++; + } + } + + /* reset to max natural width and/or height if NORMALIZESIZE is defined */ + if (ih->data->normalize_size) + iupNormalizeSizeBoxChild(ih, ih->data->normalize_size, children_natural_maxwidth, children_natural_maxheight); + + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + children_natural_totalwidth += child->naturalwidth; + } + + /* leave room at the element for the maximum natural size of the children when is_homogeneous */ + if (ih->data->is_homogeneous) + children_natural_totalwidth = children_natural_maxwidth*children_count; + + /* compute the Hbox contents natural size */ + children_naturalwidth = children_natural_totalwidth + (children_count-1)*ih->data->gap + 2*ih->data->margin_x; + children_naturalheight = children_natural_maxheight + 2*ih->data->margin_y; + + /* Store to be used in iHboxCalcEmptyWidth */ + ih->data->children_naturalsize = children_naturalwidth; + + *expand = children_expand; + *w = children_naturalwidth; + *h = children_naturalheight; +} + +static int iHboxCalcHomogeneousWidth(Ihandle *ih) +{ + Ihandle* child; + int homogeneous_width; + + int children_count=0; + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + children_count++; + } + if (children_count == 0) + return 0; + + /* equal spaces for all elements */ + homogeneous_width = (ih->currentwidth - (children_count-1)*ih->data->gap - 2*ih->data->margin_x)/children_count; + if (homogeneous_width<0) homogeneous_width = 0; + return homogeneous_width; +} + +static int iHboxCalcEmptyWidth(Ihandle *ih, int expand) +{ + /* This is the space that the child can be expanded. */ + Ihandle* child; + int empty_width; + + int expand_count=0; + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating && child->expand & expand) + expand_count++; + } + if (expand_count == 0) + return 0; + + /* equal spaces for all expandable elements */ + empty_width = (ih->currentwidth - ih->data->children_naturalsize)/expand_count; + if (empty_width < 0) empty_width = 0; + return empty_width; +} + +static void iHboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + /* update children */ + Ihandle* child; + int empty_w0 = 0, empty_w1 = 0, client_height; + + if (ih->data->expand_children) + ih->expand |= ih->data->expand_children; + + if (ih->data->is_homogeneous) + ih->data->homogeneous_size = iHboxCalcHomogeneousWidth(ih); + else + { + ih->data->homogeneous_size = 0; + + /* must calculate the space left for each control to grow inside the container */ + /* W1 means there is an EXPAND enabled inside */ + if (ih->expand & IUP_EXPAND_W1) + empty_w1 = iHboxCalcEmptyWidth(ih, IUP_EXPAND_W1); + /* Not W1 and W0 means that EXPAND is not enabled but there are some IupFill inside */ + else if (ih->expand & IUP_EXPAND_W0) + empty_w0 = iHboxCalcEmptyWidth(ih, IUP_EXPAND_W0); + } + + client_height = ih->currentheight - 2*ih->data->margin_y; + if (client_height<0) client_height=0; + + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + { + int old_expand = child->expand; + if (ih->data->expand_children) + child->expand |= ih->data->expand_children; + + if (ih->data->homogeneous_size) + iupBaseSetCurrentSize(child, ih->data->homogeneous_size, client_height, shrink); + else + { + int empty = (child->expand & IUP_EXPAND_W1)? empty_w1: ((child->expand & IUP_EXPAND_W0)? empty_w0: 0); + iupBaseSetCurrentSize(child, child->naturalwidth+empty, client_height, shrink); + } + + if (ih->data->expand_children) + child->expand = old_expand; + } + else + { + /* update children to their own natural size */ + iupBaseSetCurrentSize(child, child->naturalwidth, child->naturalheight, shrink); + } + } +} + +static void iHboxSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + int dy, client_height; + Ihandle* child; + + x += ih->data->margin_x; + y += ih->data->margin_y; + + client_height = ih->currentheight - 2*ih->data->margin_y; + if (client_height<0) client_height=0; + + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + { + if (ih->data->alignment == IUP_ALIGN_ACENTER) + dy = (client_height - child->currentheight)/2; + else if (ih->data->alignment == IUP_ALIGN_ABOTTOM) + dy = client_height - child->currentheight; + else /* IUP_ALIGN_ATOP */ + dy = 0; + if (dy<0) dy = 0; + + /* update child */ + iupBaseSetPosition(child, x, y+dy); + + /* calculate next */ + if (ih->data->homogeneous_size) + x += ih->data->homogeneous_size + ih->data->gap; + else + x += child->currentwidth + ih->data->gap; + } + } +} + + +/******************************************************************************/ + + +Ihandle *IupHboxv(Ihandle **children) +{ + return IupCreatev("hbox", (void**)children); +} + +Ihandle *IupHbox(Ihandle* child, ...) +{ + Ihandle **children; + Ihandle *ih; + + va_list arglist; + va_start(arglist, child); + children = (Ihandle **)iupObjectGetParamList(child, arglist); + va_end(arglist); + + ih = IupCreatev("hbox", (void**)children); + free(children); + + return ih; +} + +Iclass* iupHboxGetClass(void) +{ + Iclass* ic = iupBoxClassBase(); + + ic->name = "hbox"; + + /* Class functions */ + ic->ComputeNaturalSize = iHboxComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iHboxSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iHboxSetChildrenPositionMethod; + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iHboxSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iHboxSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Hbox only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", iHboxGetAlignmentAttrib, iHboxSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ATOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/iup_image.c b/iup/src/iup_image.c new file mode 100755 index 0000000..12b1169 --- /dev/null +++ b/iup/src/iup_image.c @@ -0,0 +1,1017 @@ +/** \file + * \brief Image Resource. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_assert.h" +#include "iup_stdcontrols.h" + + +typedef struct _IimageStock +{ + iupImageStockCreateFunc func; + Ihandle* image; /* cache image */ + const char* native_name; /* used to map to GTK stock images */ +} IimageStock; + +static Itable *istock_table = NULL; /* the function hast table indexed by the name string */ + +void iupImageStockInit(void) +{ + istock_table = iupTableCreate(IUPTABLE_STRINGINDEXED); +} + +void iupImageStockFinish(void) +{ + char* name = iupTableFirst(istock_table); + while (name) + { + IimageStock* istock = (IimageStock*)iupTableGetCurr(istock_table); + if (iupObjectCheck(istock->image)) + IupDestroy(istock->image); + free(istock); + name = iupTableNext(istock_table); + } + + iupTableDestroy(istock_table); + istock_table = NULL; +} + +void iupImageStockSet(const char *name, iupImageStockCreateFunc func, const char* native_name) +{ + IimageStock* istock = (IimageStock*)iupTableGet(istock_table, name); + if (istock) + free(istock); /* overwrite a previous registration */ + + istock = (IimageStock*)malloc(sizeof(IimageStock)); + istock->func = func; + istock->image = NULL; + istock->native_name = native_name; + + iupTableSet(istock_table, name, (void*)istock, IUPTABLE_POINTER); +} + +static void iImageStockGet(const char* name, Ihandle* *ih, const char* *native_name) +{ + IimageStock* istock = (IimageStock*)iupTableGet(istock_table, name); + if (istock) + { + if (istock->image) + *ih = istock->image; + else if (istock->native_name) + *native_name = istock->native_name; + else if (istock->func) + { + istock->image = istock->func(); + *ih = istock->image; + } + } +} + +void iupImageStockLoad(const char *name) +{ + /* Used only in iupImageLibLoadAll */ + const char* native_name = NULL; + Ihandle* ih = NULL; + iImageStockGet(name, &ih, &native_name); + if (ih) + IupSetHandle(name, ih); + else if (native_name) + { + /* dummy image to save the GTK stock name */ + void* handle = iupdrvImageLoad(native_name, IUPIMAGE_IMAGE); + if (handle) + { + int w, h, bpp; + iupdrvImageGetInfo(handle, &w, &h, &bpp); + if (bpp == 32) + ih = IupImageRGBA(w,h,NULL); + else + ih = IupImageRGB(w,h,NULL); + IupSetHandle(native_name, ih); + } + } +} + + +/**************************************************************************************************/ +/**************************************************************************************************/ + + +int iupImageNormBpp(int bpp) +{ + if (bpp <= 8) return 8; + if (bpp <= 24) return 24; + return 32; +} + +static void iupColorSet(iupColor *c, unsigned char r, unsigned char g, unsigned char b, unsigned char a) +{ + c->r = r; + c->g = g; + c->b = b; + c->a = a; +} + +int iupImageInitColorTable(Ihandle *ih, iupColor* colors, int *colors_count) +{ + char attr[6], *value; + unsigned char red, green, blue; + int i, has_alpha = 0; + static iupColor default_colors[] = { + { 0,0,0,255 }, { 128,0,0,255 }, { 0,128,0,255 }, { 128,128,0,255 }, + { 0,0,128,255 }, { 128,0,128,255 }, { 0,128,128,255 }, { 192,192,192,255 }, + { 128,128,128,255 }, { 255,0,0,255 }, { 0,255,0,255 }, { 255,255,0,255 }, + { 0,0,255,255 }, { 255,0,255,255 }, { 0,255,255,255 }, { 255,255,255,255 } }; + + memset(colors, 0, sizeof(iupColor)*256); + + for (i=0;i<16;i++) + { + sprintf(attr, "%d", i); + value = iupAttribGet(ih, attr); + + if (value) + { + if (iupStrEqual(value, "BGCOLOR")) + { + iupColorSet(&colors[i], 0, 0, 0, 0); + has_alpha = 1; + } + else + { + if (!iupStrToRGB(value, &red, &green, &blue)) + iupColorSet(&colors[i], default_colors[i].r, default_colors[i].g, default_colors[i].b, 255); + else + iupColorSet(&colors[i], red, green, blue, 255); + } + } + else + { + iupColorSet(&colors[i], default_colors[i].r, default_colors[i].g, default_colors[i].b, 255); + } + } + + for (;i<256;i++) + { + sprintf(attr, "%d", i); + value = iupAttribGet(ih, attr); + if (!value) + break; + + if (iupStrEqual(value, "BGCOLOR")) + { + iupColorSet(&colors[i], 0, 0, 0, 0); + has_alpha = 1; + } + else + { + if (!iupStrToRGB(value, &red, &green, &blue)) + break; + + iupColorSet(&colors[i], red, green, blue, 255); + } + } + + if (colors_count) *colors_count = i; + + return has_alpha; +} + +void iupImageInitNonBgColors(Ihandle* ih, unsigned char *colors) +{ + char attr[6], *value; + int i; + + memset(colors, 0, 256); + + for (i=0;i<16;i++) + { + sprintf(attr, "%d", i); + value = iupAttribGet(ih, attr); + if (!iupStrEqual(value, "BGCOLOR")) + colors[i] = 1; + } + + for (;i<256;i++) + { + sprintf(attr, "%d", i); + value = iupAttribGet(ih, attr); + if (!value) + break; + + if (!iupStrEqual(value, "BGCOLOR")) + colors[i] = 1; + } +} + +void iupImageColorMakeInactive(unsigned char *r, unsigned char *g, unsigned char *b, unsigned char bg_r, unsigned char bg_g, unsigned char bg_b) +{ + if (*r==bg_r && *g==bg_g && *b==bg_b) /* preserve colors identical to the background color */ + { + *r = bg_r; + *g = bg_g; + *b = bg_b; + } + else + { + int ir = 0, ig = 0, ib = 0, + i = (*r+*g+*b)/3, + bg_i = (bg_r+bg_g+bg_b)/3; + + if (bg_i) + { + ir = (bg_r*i)/bg_i; + ig = (bg_g*i)/bg_i; + ib = (bg_b*i)/bg_i; + } + +#define LIGHTER(_c) ((255 + _c)/2) + ir = LIGHTER(ir); + ig = LIGHTER(ig); + ib = LIGHTER(ib); + + *r = iupBYTECROP(ir); + *g = iupBYTECROP(ig); + *b = iupBYTECROP(ib); + } +} + + +/**************************************************************************************************/ +/**************************************************************************************************/ + + +void* iupImageGetMask(const char* name) +{ + void* mask; + Ihandle *ih; + + if (!name) + return NULL; + + /* get handle from name */ + ih = IupGetHandle(name); + if (!ih) + return NULL; + + /* Check for an already created icon */ + mask = iupAttribGet(ih, "_IUPIMAGE_MASK"); + if (mask) + return mask; + + /* Not created, tries to create the mask */ + mask = iupdrvImageCreateMask(ih); + + /* save the pixbuf */ + iupAttribSetStr(ih, "_IUPIMAGE_MASK", (char*)mask); + + return mask; +} + +void* iupImageGetIcon(const char* name) +{ + void* icon; + Ihandle *ih; + + if (!name) + return NULL; + + /* Check first in the system resources. */ + icon = iupdrvImageLoad(name, IUPIMAGE_ICON); + if (icon) + return icon; + + /* get handle from name */ + ih = IupGetHandle(name); + if (!ih) + return NULL; + + /* Check for an already created icon */ + icon = iupAttribGet(ih, "_IUPIMAGE_ICON"); + if (icon) + return icon; + + /* Not created, tries to create the icon */ + icon = iupdrvImageCreateIcon(ih); + + /* save the pixbuf */ + iupAttribSetStr(ih, "_IUPIMAGE_ICON", (char*)icon); + + return icon; +} + +void* iupImageGetCursor(const char* name) +{ + void* cursor; + Ihandle *ih; + + if (!name) + return NULL; + + /* Check first in the system resources. */ + cursor = iupdrvImageLoad(name, IUPIMAGE_CURSOR); + if (cursor) + return cursor; + + /* get handle from name */ + ih = IupGetHandle(name); + if (!ih) + return NULL; + + /* Check for an already created cursor */ + cursor = iupAttribGet(ih, "_IUPIMAGE_CURSOR"); + if (cursor) + return cursor; + + /* Not created, tries to create the cursor */ + cursor = iupdrvImageCreateCursor(ih); + + /* save the pixbuf */ + iupAttribSetStr(ih, "_IUPIMAGE_CURSOR", (char*)cursor); + + return cursor; +} + +void iupImageGetInfo(const char* name, int *w, int *h, int *bpp) +{ + void* handle; + Ihandle *ih; + + if (!name) + return; + + /* Check first in the system resources. */ + handle = iupdrvImageLoad(name, IUPIMAGE_IMAGE); + if (handle) + { + iupdrvImageGetInfo(handle, w, h, bpp); + return; + } + + /* get handle from name */ + ih = IupGetHandle(name); + if (!ih) + { + /* Check in the stock images. */ + const char* native_name = NULL; + iImageStockGet(name, &ih, &native_name); + + if (native_name) + { + handle = iupdrvImageLoad(native_name, IUPIMAGE_IMAGE); + if (handle) + { + iupdrvImageGetInfo(handle, w, h, bpp); + return; + } + } + + if (!ih) + return; + } + + if (w) *w = ih->currentwidth; + if (h) *h = ih->currentheight; + if (bpp) *bpp = IupGetInt(ih, "BPP"); +} + +void* iupImageGetImage(const char* name, Ihandle* ih_parent, int make_inactive) +{ + char cache_name[100] = "_IUPIMAGE_IMAGE"; + char* bgcolor; + void* handle; + Ihandle *ih; + int bg_concat = 0; + + if (!name) + return NULL; + + /* Check first in the system resources. */ + handle = iupdrvImageLoad(name, IUPIMAGE_IMAGE); + if (handle) + return handle; + + /* get handle from name */ + ih = IupGetHandle(name); + if (!ih) + { + /* Check in the stock images. */ + const char* native_name = NULL; + iImageStockGet(name, &ih, &native_name); + + if (native_name) + { + handle = iupdrvImageLoad(native_name, IUPIMAGE_IMAGE); + if (handle) + return handle; + } + + if (!ih) + return NULL; + } + + bgcolor = iupAttribGet(ih, "BGCOLOR"); + if (ih_parent && !bgcolor) + bgcolor = IupGetAttribute(ih_parent, "BGCOLOR"); /* Use IupGetAttribute to use inheritance and native implementation */ + + if (make_inactive) + strcat(cache_name, "_INACTIVE"); + + if (iupAttribGet(ih, "_IUP_BGCOLOR_DEPEND") && bgcolor) + { + strcat(cache_name, "("); + strcat(cache_name, bgcolor); + strcat(cache_name, ")"); + bg_concat = 1; + } + + /* Check for an already created native image */ + handle = (void*)iupAttribGet(ih, cache_name); + if (handle) + return handle; + + if (ih_parent && iupAttribGetStr(ih_parent, "FLAT_ALPHA")) + iupAttribSetStr(ih, "FLAT_ALPHA", "1"); + + /* Creates the native image */ + handle = iupdrvImageCreateImage(ih, bgcolor, make_inactive); + + if (ih_parent && iupAttribGetStr(ih_parent, "FLAT_ALPHA")) + iupAttribSetStr(ih, "FLAT_ALPHA", NULL); + + if (iupAttribGet(ih, "_IUP_BGCOLOR_DEPEND") && bgcolor && !bg_concat) /* _IUP_BGCOLOR_DEPEND could be set during creation */ + { + strcat(cache_name, "("); + strcat(cache_name, bgcolor); + strcat(cache_name, ")"); + } + + /* save the native image in the cache */ + iupAttribSetStr(ih, cache_name, (char*)handle); + + return handle; +} + +void iupImageUpdateParent(Ihandle *ih) /* ih here is the element that contains images */ +{ + int inherit; + + /* Called when BGCOLOR is changed */ + /* it will re-create the image, if the case */ + + char* value = iupAttribGet(ih, "IMAGE"); + if (value) + iupClassObjectSetAttribute(ih, "IMAGE", value, &inherit); + + value = iupAttribGet(ih, "IMINACTIVE"); + if (value) + iupClassObjectSetAttribute(ih, "IMINACTIVE", value, &inherit); + + value = iupAttribGet(ih, "IMPRESS"); + if (value) + iupClassObjectSetAttribute(ih, "IMPRESS", value, &inherit); +} + +static char* iImageGetWidthAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(50); + sprintf(str, "%d", ih->currentwidth); + return str; +} + +static char* iImageGetHeightAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(50); + sprintf(str, "%d", ih->currentheight); + return str; +} + +void iupImageClearCache(Ihandle* ih, void* handle) +{ + char *name; + void* cur_handle; + + name = iupTableFirst(ih->attrib); + while (name) + { + if (iupStrEqualPartial(name, "_IUPIMAGE_")) + { + cur_handle = iupTableGetCurr(ih->attrib); + if (cur_handle == handle) + { + iupTableRemoveCurr(ih->attrib); + return; + } + } + + name = iupTableNext(ih->attrib); + } +} + +static void iImageUnMapMethod(Ihandle* ih) +{ + char *name; + void* handle; + + handle = iupAttribGet(ih, "_IUPIMAGE_ICON"); + if (handle) + { + iupdrvImageDestroy(handle, IUPIMAGE_ICON); + iupAttribSetStr(ih, "_IUPIMAGE_ICON", NULL); + } + + handle = iupAttribGet(ih, "_IUPIMAGE_CURSOR"); + if (handle) + { + iupdrvImageDestroy(handle, IUPIMAGE_CURSOR); + iupAttribSetStr(ih, "_IUPIMAGE_CURSOR", NULL); + } + + /* the remaining images are all IUPIMAGE_IMAGE */ + name = iupTableFirst(ih->attrib); + while (name) + { + if (iupStrEqualPartial(name, "_IUPIMAGE_")) + { + handle = iupTableGetCurr(ih->attrib); + if (handle) iupdrvImageDestroy(handle, IUPIMAGE_IMAGE); + } + + name = iupTableNext(ih->attrib); + } +} + +static int iImageCreate(Ihandle* ih, void** params, int bpp) +{ + int width, height, channels, count; + unsigned char *imgdata; + + iupASSERT(params!=NULL); + if (!params) + return IUP_ERROR; + + width = (int)(params[0]); + height = (int)(params[1]); + + iupASSERT(width>0); + iupASSERT(height>0); + + if (width <= 0 || height <= 0) + return IUP_ERROR; + + ih->currentwidth = width; + ih->currentheight = height; + + channels = 1; + if (bpp == 24) + channels = 3; + else if (bpp == 32) + channels = 4; + + count = width*height*channels; + imgdata = (unsigned char *)malloc(count); + + if (((int)(params[2])==-1) || ((int)(params[3])==-1)) /* compacted in one pointer */ + { + if ((int)(params[2])!=-1) + memcpy(imgdata, params[2], count); + } + else /* one param for each element */ + { + int i; + for(i=0; iname = name; + ic->format = "iiC"; /* (int,int,unsigned char*) */ + ic->nativetype = IUP_TYPEIMAGE; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = create_func; + ic->Destroy = iImageDestroyMethod; + ic->Map = iupBaseTypeVoidMapMethod; + ic->UnMap = iImageUnMapMethod; + + /* Attribute functions */ + iupClassRegisterAttribute(ic, "WID", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "WIDTH", iImageGetWidthAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HEIGHT", iImageGetHeightAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "BPP", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CHANNELS", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "HOTSPOT", NULL, NULL, "0:0", NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} + +Iclass* iupImageGetClass(void) +{ + return iImageGetClassBase("image", iImageCreateMethod); +} + +Iclass* iupImageRGBGetClass(void) +{ + return iImageGetClassBase("imagergb", iImageRGBCreateMethod); +} + +Iclass* iupImageRGBAGetClass(void) +{ + return iImageGetClassBase("imagergba", iImageRGBACreateMethod); +} + +static int SaveImageC(const char* file_name, Ihandle* ih, const char* name, FILE* packfile) +{ + int y, x, width, height, channels, linesize; + unsigned char* data; + FILE* file; + + if (packfile) + file = packfile; + else + file = fopen(file_name, "wb"); + + if (!file) + return 0; + + width = IupGetInt(ih, "WIDTH"); + height = IupGetInt(ih, "HEIGHT"); + channels = IupGetInt(ih, "CHANNELS"); + linesize = width*channels; + + data = (unsigned char*)IupGetAttribute(ih, "WID"); + + if (fprintf(file, "static Ihandle* load_image_%s(void)\n", name)<0) + { + if (!packfile) + fclose(file); + return 0; + } + + fprintf(file, "{\n"); + fprintf(file, " unsigned char imgdata[] = {\n"); + + for (y = 0; y < height; y++) + { + fprintf(file, " "); + + for (x = 0; x < linesize; x++) + { + if (x != 0) + fprintf(file, ", "); + + fprintf(file, "%d", (int)data[y*linesize+x]); + } + + if (y == height-1) + fprintf(file, "};\n\n"); + else + fprintf(file, ",\n"); + } + + if (channels == 1) + { + int c; + char str[20]; + char* color; + + fprintf(file, " Ihandle* image = IupImage(%d, %d, imgdata);\n\n", width, height); + + for (c = 0; c < 256; c++) + { + sprintf(str, "%d", c); + color = IupGetAttribute(ih, str); + if (!color) + break; + + fprintf(file, " IupSetAttribute(image, \"%d\", \"%s\");\n", c, color); + } + + fprintf(file, "\n"); + } + else if (channels == 3) + fprintf(file, " Ihandle* image = IupImageRGB(%d, %d, imgdata);\n", width, height); + else /* channels == 4 */ + fprintf(file, " Ihandle* image = IupImageRGBA(%d, %d, imgdata);\n", width, height); + + fprintf(file, " return image;\n"); + fprintf(file, "}\n\n"); + + if (!packfile) + fclose(file); + + return 1; +} + +static int SaveImageLua(const char* file_name, Ihandle* ih, const char* name, FILE* packfile) +{ + int y, x, width, height, channels, linesize; + unsigned char* data; + FILE* file; + + if (packfile) + file = packfile; + else + file = fopen(file_name, "wb"); + + if (!file) + return 0; + + width = IupGetInt(ih, "WIDTH"); + height = IupGetInt(ih, "HEIGHT"); + channels = IupGetInt(ih, "CHANNELS"); + linesize = width*channels; + + data = (unsigned char*)IupGetAttribute(ih, "WID"); + + if (fprintf(file, "function load_image_%s()\n", name)<0) + { + if (!packfile) + fclose(file); + return 0; + } + + if (channels == 1) + fprintf(file, " local %s = iup.image\n", name); + else if (channels == 3) + fprintf(file, " local %s = iup.imagergb\n", name); + else /* channels == 4 */ + fprintf(file, " local %s = iup.imagergba\n", name); + + fprintf(file, " {\n"); + + fprintf(file, " width = %d,\n", width); + fprintf(file, " height = %d,\n", height); + fprintf(file, " pixels = {\n"); + + for (y = 0; y < height; y++) + { + fprintf(file, " "); + for (x = 0; x < linesize; x++) + { + fprintf(file, "%d, ", (int)data[y*linesize+x]); + } + fprintf(file, "\n"); + } + + fprintf(file, " },\n"); + + if (channels == 1) + { + int c; + char* color; + unsigned int r, g, b; + char str[20]; + + fprintf(file, " colors = {\n"); + + for(c = 0; c < 256; c++) + { + sprintf(str, "%d", c); + color = IupGetAttribute(ih, str); + if (!color) + break; + + if (iupStrEqualNoCase(color, "BGCOLOR")) + fprintf(file, " \"BGCOLOR\",\n"); + else + { + sscanf(color, "%d %d %d", &r, &g, &b); + fprintf(file, " \"%d %d %d\",\n", r, g, b); + } + } + + fprintf(file, " }\n"); + } + + fprintf(file, " }\n"); + + fprintf(file, " return %s\n", name); + fprintf(file, "end\n\n"); + + if (!packfile) + fclose(file); + + return 1; +} + +static int SaveImageLED(const char* file_name, Ihandle* ih, const char* name, FILE* packfile) +{ + int y, x, width, height, channels, linesize; + unsigned char* data; + FILE* file; + + if (packfile) + file = packfile; + else + file = fopen(file_name, "wb"); + + if (!file) + return 0; + + width = IupGetInt(ih, "WIDTH"); + height = IupGetInt(ih, "HEIGHT"); + channels = IupGetInt(ih, "CHANNELS"); + linesize = width*channels; + + data = (unsigned char*)IupGetAttribute(ih, "WID"); + + if (channels == 1) + { + int c; + unsigned int r, g, b; + char str[20]; + char* color; + + if (fprintf(file, "%s = IMAGE\n", name)<0) + { + if (!packfile) + fclose(file); + return 0; + } + + fprintf(file, "[\n"); + for(c = 0; c < 256; c++) + { + sprintf(str, "%d", c); + color = IupGetAttribute(ih, str); + if (!color) + { + if (c < 16) + continue; + else + break; + } + + if (c != 0) + fprintf(file, ",\n"); + + if (iupStrEqualNoCase(color, "BGCOLOR")) + fprintf(file, " %d = \"BGCOLOR\"", c); + else + { + sscanf(color, "%d %d %d", &r, &g, &b); + fprintf(file, " %d = \"%d %d %d\"", c, r, g, b); + } + } + fprintf(file, "\n]\n"); + } + else if (channels == 3) + { + if (fprintf(file, "%s = IMAGERGB\n", name)<0) + { + if (!packfile) + fclose(file); + return 0; + } + } + else /* channels == 4 */ + { + if (fprintf(file, "%s = IMAGERGBA\n", name)<0) + { + if (!packfile) + fclose(file); + return 0; + } + } + + fprintf(file, "(%d, %d,\n", width, height); + + for (y = 0; y < height; y++) + { + fprintf(file, " "); + for (x = 0; x < linesize; x++) + { + if (y == height-1 && x==linesize-1) + fprintf(file, "%d", (int)data[y*linesize+x]); + else + fprintf(file, "%d, ", (int)data[y*linesize+x]); + } + fprintf(file, "\n"); + } + + fprintf(file, ")\n\n"); + + if (!packfile) + fclose(file); + + return 1; +} + +int iupSaveImageAsText(Ihandle* ih, FILE* packfile, const char* format, const char* name) +{ + int ret = 0; + if (iupStrEqualNoCase(format, "LED")) + ret = SaveImageLED(NULL, ih, name, packfile); + else if (iupStrEqualNoCase(format, "LUA")) + ret = SaveImageLua(NULL, ih, name, packfile); + else if (iupStrEqualNoCase(format, "C") || iupStrEqualNoCase(format, "H")) + ret = SaveImageC(NULL, ih, name, packfile); + return ret; +} + +int IupSaveImageAsText(Ihandle* ih, const char* file_name, const char* format, const char* name) +{ + int ret = 0; + if (!name) + { + name = IupGetName(ih); + if (!name) + name = "image"; + } + if (iupStrEqualNoCase(format, "LED")) + ret = SaveImageLED(file_name, ih, name, NULL); + else if (iupStrEqualNoCase(format, "LUA")) + ret = SaveImageLua(file_name, ih, name, NULL); + else if (iupStrEqualNoCase(format, "C") || iupStrEqualNoCase(format, "H")) + ret = SaveImageC(file_name, ih, name, NULL); + return ret; +} diff --git a/iup/src/iup_image.h b/iup/src/iup_image.h new file mode 100755 index 0000000..89e6795 --- /dev/null +++ b/iup/src/iup_image.h @@ -0,0 +1,61 @@ +/** \file + * \brief Image Resource Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_IMAGE_H +#define __IUP_IMAGE_H + +#ifdef __cplusplus +extern "C" { +#endif + +void* iupdrvImageCreateMask(Ihandle *ih); +void* iupdrvImageCreateIcon(Ihandle *ih); +void* iupdrvImageCreateCursor(Ihandle *ih); +void* iupdrvImageCreateImage(Ihandle *ih, const char* bgcolor, int make_inactive); + +enum {IUPIMAGE_IMAGE, IUPIMAGE_ICON, IUPIMAGE_CURSOR}; +void* iupdrvImageLoad(const char* name, int type); +void iupdrvImageDestroy(void* handle, int type); +int iupdrvImageGetInfo(void* handle, int *w, int *h, int *bpp); /* only for IUPIMAGE_IMAGE */ + +void* iupImageGetMask(const char* name); +void* iupImageGetIcon(const char* name); +void* iupImageGetCursor(const char* name); +void* iupImageGetImage(const char* name, Ihandle* parent, int make_inactive); +void iupImageGetInfo(const char* name, int *w, int *h, int *bpp); +void iupImageUpdateParent(Ihandle *parent); +void iupImageClearCache(Ihandle* ih, void* handle); + +typedef struct _iupColor { + unsigned char r, g, b, a; +} iupColor; + +int iupImageInitColorTable(Ihandle *ih, iupColor* colors, int *colors_count); +void iupImageInitNonBgColors(Ihandle* ih, unsigned char *colors); +void iupImageColorMakeInactive(unsigned char *r, unsigned char *g, unsigned char *b, + unsigned char bg_r, unsigned char bg_g, unsigned char bg_b); +int iupImageNormBpp(int bpp); + +#define iupALPHABLEND(_src,_dst,_alpha) (unsigned char)(((_src) * (_alpha) + (_dst) * (255 - (_alpha))) / 255) + +/* In Windows, RAW data is a DIB handle. + imgdata here is bottom-up arranged and has separated planes */ +void* iupdrvImageCreateImageRaw(int width, int height, int bpp, iupColor* colors, int colors_count, unsigned char *imgdata); +int iupdrvImageGetRawInfo(void* handle, int *w, int *h, int *bpp, iupColor* colors, int *colors_count); +void iupdrvImageGetRawData(void* handle, unsigned char* imgdata); + +void iupImageStockInit(void); +void iupImageStockFinish(void); +typedef Ihandle* (*iupImageStockCreateFunc)(void); +void iupImageStockSet(const char *name, iupImageStockCreateFunc func, const char* native_name); +void iupImageStockLoad(const char *name); /* Used only in iupImageLibLoadAll */ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_key.c b/iup/src/iup_key.c new file mode 100755 index 0000000..6c57c60 --- /dev/null +++ b/iup/src/iup_key.c @@ -0,0 +1,269 @@ +/** \file + * \brief Manage keys encoding and decoding. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupkey.h" +#include "iupcbs.h" + +#include "iup_key.h" +#include "iup_str.h" +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_focus.h" + + +static struct +{ + char *name; + int code; +} ikey_map_list[]= + { + {"K_exclam", K_exclam}, + {"K_grave", K_grave}, + {"K_quotedbl", K_quotedbl}, + {"K_numbersign", K_numbersign}, + {"K_dollar", K_dollar}, + {"K_percent", K_percent}, + {"K_ampersand", K_ampersand}, + {"K_apostrophe", K_apostrophe}, + {"K_parentleft", K_parentleft}, + {"K_parentright", K_parentright}, + {"K_asterisk", K_asterisk}, {"K_sAsterisk",K_sAsterisk},{"K_cAsterisk",K_cAsterisk},{"K_mAsterisk",K_mAsterisk},{"K_yAsterisk",K_yAsterisk}, + {"K_plus", K_plus}, {"K_sPlus", K_sPlus}, {"K_cPlus", K_cPlus}, {"K_mPlus", K_mPlus}, {"K_yPlus", K_yPlus}, + {"K_comma", K_comma}, {"K_sComma", K_sComma}, {"K_cComma", K_cComma}, {"K_mComma", K_mComma}, {"K_yComma", K_yComma}, + {"K_minus", K_minus}, {"K_sMinus", K_sMinus}, {"K_cMinus", K_cMinus}, {"K_mMinus", K_mMinus}, {"K_yMinus", K_yMinus}, + {"K_period", K_period}, {"K_sPeriod", K_sPeriod}, {"K_cPeriod", K_cPeriod}, {"K_mPeriod", K_mPeriod}, {"K_yPeriod", K_yPeriod}, + {"K_slash", K_slash}, {"K_sSlash", K_sSlash}, {"K_cSlash", K_cSlash}, {"K_mSlash", K_mSlash}, {"K_ySlash", K_ySlash}, + {"K_colon", K_colon}, + {"K_semicolon ", K_semicolon}, {"K_cSemicolon ", K_cSemicolon}, {"K_mSemicolon ", K_mSemicolon}, {"K_ySemicolon ", K_ySemicolon}, + {"K_less", K_less}, + {"K_equal", K_equal}, {"K_cEqual", K_cEqual}, {"K_mEqual", K_mEqual}, {"K_yEqual", K_yEqual}, + {"K_greater", K_greater}, + {"K_question", K_question}, + {"K_bracketleft", K_bracketleft}, {"K_cBracketleft", K_cBracketleft}, {"K_mBracketleft", K_mBracketleft}, {"K_yBracketleft", K_yBracketleft}, + {"K_backslash", K_backslash}, {"K_cBackslash", K_cBackslash}, {"K_mBackslash", K_mBackslash}, {"K_yBackslash", K_yBackslash}, + {"K_bracketright", K_bracketright}, {"K_cBracketright", K_cBracketright}, {"K_mBracketright", K_mBracketright}, {"K_yBracketright", K_yBracketright}, + {"K_circum", K_circum}, + {"K_underscore", K_underscore}, + {"K_at", K_at}, + {"K_braceleft", K_braceleft}, + {"K_bar", K_bar}, + {"K_braceright", K_braceright}, + {"K_tilde", K_tilde}, + {"K_acute", K_acute}, + {"K_ccedilla" ,K_ccedilla}, {"K_Ccedilla" ,K_Ccedilla}, {"K_cCcedilla" ,K_cCcedilla}, {"K_mCcedilla" ,K_mCcedilla}, {"K_yCcedilla" ,K_yCcedilla}, + {"K_ESC" ,K_ESC}, {"K_sESC" ,K_sESC}, {"K_cESC" ,K_cESC}, {"K_mESC" ,K_mESC}, {"K_yESC" ,K_yESC}, + {"K_PAUSE" ,K_PAUSE}, {"K_sPAUSE" ,K_sPAUSE}, {"K_cPAUSE" ,K_cPAUSE}, {"K_mPAUSE" ,K_mPAUSE}, {"K_yPAUSE" ,K_yPAUSE}, + {"K_HOME" ,K_HOME}, {"K_sHOME" ,K_sHOME}, {"K_cHOME" ,K_cHOME}, {"K_mHOME" ,K_mHOME}, {"K_yHOME" ,K_yHOME}, + {"K_UP" ,K_UP}, {"K_sUP" ,K_sUP}, {"K_cUP" ,K_cUP}, {"K_mUP" ,K_mUP}, {"K_yUP" ,K_yUP}, + {"K_PGUP" ,K_PGUP}, {"K_sPGUP" ,K_sPGUP}, {"K_cPGUP" ,K_cPGUP}, {"K_mPGUP" ,K_mPGUP}, {"K_yPGUP" ,K_yPGUP}, + {"K_LEFT" ,K_LEFT}, {"K_sLEFT" ,K_sLEFT}, {"K_cLEFT" ,K_cLEFT}, {"K_mLEFT" ,K_mLEFT}, {"K_yLEFT" ,K_yLEFT}, + {"K_MIDDLE",K_MIDDLE}, {"K_sMIDDLE",K_sMIDDLE},{"K_cMIDDLE",K_cMIDDLE},{"K_mMIDDLE",K_mMIDDLE}, {"K_yMIDDLE",K_yMIDDLE}, + {"K_RIGHT" ,K_RIGHT}, {"K_sRIGHT" ,K_sRIGHT}, {"K_cRIGHT" ,K_cRIGHT}, {"K_mRIGHT" ,K_mRIGHT}, {"K_yRIGHT" ,K_yRIGHT}, + {"K_END" ,K_END}, {"K_sEND" ,K_sEND}, {"K_cEND" ,K_cEND}, {"K_mEND" ,K_mEND}, {"K_yEND" ,K_yEND}, + {"K_DOWN" ,K_DOWN}, {"K_sDOWN" ,K_sDOWN}, {"K_cDOWN" ,K_cDOWN}, {"K_mDOWN" ,K_mDOWN}, {"K_yDOWN" ,K_yDOWN}, + {"K_PGDN" ,K_PGDN}, {"K_sPGDN" ,K_sPGDN}, {"K_cPGDN" ,K_cPGDN}, {"K_mPGDN" ,K_mPGDN}, {"K_yPGDN" ,K_yPGDN}, + {"K_INS" ,K_INS}, {"K_sINS" ,K_sINS}, {"K_cINS" ,K_cINS}, {"K_mINS" ,K_mINS}, {"K_yINS" ,K_yINS}, + {"K_DEL" ,K_DEL}, {"K_sDEL" ,K_sDEL}, {"K_cDEL" ,K_cDEL}, {"K_mDEL" ,K_mDEL}, {"K_yDEL" ,K_yDEL}, + {"K_SP" ,K_SP}, {"K_sSP" ,K_sSP}, {"K_cSP" ,K_cSP}, {"K_mSP" ,K_mSP}, {"K_ySP" ,K_ySP}, + {"K_TAB" ,K_TAB}, {"K_sTAB" ,K_sTAB}, {"K_cTAB" ,K_cTAB}, {"K_mTAB" ,K_mTAB}, {"K_yTAB" ,K_yTAB}, + {"K_CR" ,K_CR}, {"K_sCR" ,K_sCR}, {"K_cCR" ,K_cCR}, {"K_mCR" ,K_mCR}, {"K_yCR" ,K_yCR}, + {"K_BS" ,K_BS}, {"K_sBS" ,K_sBS}, {"K_cBS" ,K_cBS}, {"K_mBS" ,K_mBS}, {"K_yBS" ,K_yBS}, + {"K_Print" ,K_Print}, {"K_sPrint" ,K_sPrint}, {"K_cPrint" ,K_cPrint}, {"K_mPrint" ,K_mPrint}, {"K_yPrint" ,K_yPrint}, + {"K_Menu" ,K_Menu}, {"K_sMenu" ,K_sMenu}, {"K_cMenu" ,K_cMenu}, {"K_mMenu" ,K_mMenu}, {"K_yMenu" ,K_yMenu}, + {"K_0", K_0}, {"K_c0", K_c0}, {"K_m0", K_m0}, {"K_y0", K_y0}, + {"K_1", K_1}, {"K_c1", K_c1}, {"K_m1", K_m1}, {"K_y1", K_y1}, + {"K_2", K_2}, {"K_c2", K_c2}, {"K_m2", K_m2}, {"K_y2", K_y2}, + {"K_3", K_3}, {"K_c3", K_c3}, {"K_m3", K_m3}, {"K_y3", K_y3}, + {"K_4", K_4}, {"K_c4", K_c4}, {"K_m4", K_m4}, {"K_y4", K_y4}, + {"K_5", K_5}, {"K_c5", K_c5}, {"K_m5", K_m5}, {"K_y5", K_y5}, + {"K_6", K_6}, {"K_c6", K_c6}, {"K_m6", K_m6}, {"K_y6", K_y6}, + {"K_7", K_7}, {"K_c7", K_c7}, {"K_m7", K_m7}, {"K_y7", K_y7}, + {"K_8", K_8}, {"K_c8", K_c8}, {"K_m8", K_m8}, {"K_y8", K_y8}, + {"K_9", K_9}, {"K_c9", K_c9}, {"K_m9", K_m9}, {"K_y9", K_y9}, + {"K_a", K_a}, {"K_A", K_A}, {"K_cA" ,K_cA}, {"K_mA" ,K_mA}, {"K_yA" ,K_yA}, + {"K_b", K_b}, {"K_B", K_B}, {"K_cB" ,K_cB}, {"K_mB" ,K_mB}, {"K_yB" ,K_yB}, + {"K_c", K_c}, {"K_C", K_C}, {"K_cC" ,K_cC}, {"K_mC" ,K_mC}, {"K_yC" ,K_yC}, + {"K_d", K_d}, {"K_D", K_D}, {"K_cD" ,K_cD}, {"K_mD" ,K_mD}, {"K_yD" ,K_yD}, + {"K_e", K_e}, {"K_E", K_E}, {"K_cE" ,K_cE}, {"K_mE" ,K_mE}, {"K_yE" ,K_yE}, + {"K_f", K_f}, {"K_F", K_F}, {"K_cF" ,K_cF}, {"K_mF" ,K_mF}, {"K_yF" ,K_yF}, + {"K_g", K_g}, {"K_G", K_G}, {"K_cG" ,K_cG}, {"K_mG" ,K_mG}, {"K_yG" ,K_yG}, + {"K_h", K_h}, {"K_H", K_H}, {"K_cH" ,K_cH}, {"K_mH" ,K_mH}, {"K_yH" ,K_yH}, + {"K_i", K_i}, {"K_I", K_I}, {"K_cI" ,K_cI}, {"K_mI" ,K_mI}, {"K_yI" ,K_yI}, + {"K_j", K_j}, {"K_J", K_J}, {"K_cJ" ,K_cJ}, {"K_mJ" ,K_mJ}, {"K_yJ" ,K_yJ}, + {"K_k", K_k}, {"K_K", K_K}, {"K_cK" ,K_cK}, {"K_mK" ,K_mK}, {"K_yK" ,K_yK}, + {"K_l", K_l}, {"K_L", K_L}, {"K_cL" ,K_cL}, {"K_mL" ,K_mL}, {"K_yL" ,K_yL}, + {"K_m", K_m}, {"K_M", K_M}, {"K_cM" ,K_cM}, {"K_mM" ,K_mM}, {"K_yM" ,K_yM}, + {"K_n", K_n}, {"K_N", K_N}, {"K_cN" ,K_cN}, {"K_mN" ,K_mN}, {"K_yN" ,K_yN}, + {"K_o", K_o}, {"K_O", K_O}, {"K_cO" ,K_cO}, {"K_mO" ,K_mO}, {"K_yO" ,K_yO}, + {"K_p", K_p}, {"K_P", K_P}, {"K_cP" ,K_cP}, {"K_mP" ,K_mP}, {"K_yP" ,K_yP}, + {"K_q", K_q}, {"K_Q", K_Q}, {"K_cQ" ,K_cQ}, {"K_mQ" ,K_mQ}, {"K_yQ" ,K_yQ}, + {"K_r", K_r}, {"K_R", K_R}, {"K_cR" ,K_cR}, {"K_mR" ,K_mR}, {"K_yR" ,K_yR}, + {"K_s", K_s}, {"K_S", K_S}, {"K_cS" ,K_cS}, {"K_mS" ,K_mS}, {"K_yS" ,K_yS}, + {"K_t", K_t}, {"K_T", K_T}, {"K_cT" ,K_cT}, {"K_mT" ,K_mT}, {"K_yT" ,K_yT}, + {"K_u", K_u}, {"K_U", K_U}, {"K_cU" ,K_cU}, {"K_mU" ,K_mU}, {"K_yU" ,K_yU}, + {"K_v", K_v}, {"K_V", K_V}, {"K_cV" ,K_cV}, {"K_mV" ,K_mV}, {"K_yV" ,K_yV}, + {"K_w", K_w}, {"K_W", K_W}, {"K_cW" ,K_cW}, {"K_mW" ,K_mW}, {"K_yW" ,K_yW}, + {"K_x", K_x}, {"K_X", K_X}, {"K_cX" ,K_cX}, {"K_mX" ,K_mX}, {"K_yX" ,K_yX}, + {"K_y", K_y}, {"K_Y", K_Y}, {"K_cY" ,K_cY}, {"K_mY" ,K_mY}, {"K_yY" ,K_yY}, + {"K_z", K_z}, {"K_Z", K_Z}, {"K_cZ" ,K_cZ}, {"K_mZ" ,K_mZ}, {"K_yZ" ,K_yZ}, + {"K_F1" ,K_F1}, {"K_sF1" ,K_sF1}, {"K_cF1" ,K_cF1}, {"K_mF1" ,K_mF1}, {"K_yF1" ,K_yF1}, + {"K_F2" ,K_F2}, {"K_sF2" ,K_sF2}, {"K_cF2" ,K_cF2}, {"K_mF2" ,K_mF2}, {"K_yF2" ,K_yF2}, + {"K_F3" ,K_F3}, {"K_sF3" ,K_sF3}, {"K_cF3" ,K_cF3}, {"K_mF3" ,K_mF3}, {"K_yF3" ,K_yF3}, + {"K_F4" ,K_F4}, {"K_sF4" ,K_sF4}, {"K_cF4" ,K_cF4}, {"K_mF4" ,K_mF4}, {"K_yF4" ,K_yF4}, + {"K_F5" ,K_F5}, {"K_sF5" ,K_sF5}, {"K_cF5" ,K_cF5}, {"K_mF5" ,K_mF5}, {"K_yF5" ,K_yF5}, + {"K_F6" ,K_F6}, {"K_sF6" ,K_sF6}, {"K_cF6" ,K_cF6}, {"K_mF6" ,K_mF6}, {"K_yF6" ,K_yF6}, + {"K_F7" ,K_F7}, {"K_sF7" ,K_sF7}, {"K_cF7" ,K_cF7}, {"K_mF7" ,K_mF7}, {"K_yF7" ,K_yF7}, + {"K_F8" ,K_F8}, {"K_sF8" ,K_sF8}, {"K_cF8" ,K_cF8}, {"K_mF8" ,K_mF8}, {"K_yF8" ,K_yF8}, + {"K_F9" ,K_F9}, {"K_sF9" ,K_sF9}, {"K_cF9" ,K_cF9}, {"K_mF9" ,K_mF9}, {"K_yF9" ,K_yF9}, + {"K_F10" ,K_F10}, {"K_sF10" ,K_sF10}, {"K_cF10" ,K_cF10}, {"K_mF10" ,K_mF10}, {"K_yF10" ,K_yF10}, + {"K_F11" ,K_F11}, {"K_sF11" ,K_sF11}, {"K_cF11" ,K_cF11}, {"K_mF11" ,K_mF11}, {"K_yF11" ,K_yF11}, + {"K_F12" ,K_F12}, {"K_sF12" ,K_sF12}, {"K_cF12" ,K_cF12}, {"K_mF12" ,K_mF12}, {"K_yF12" ,K_yF12}, + {NULL ,0} + }; + +static char* ikey_map[IUP_NUMMAXCODES]; + +void iupKeyInit(void) +{ + int i; + memset(ikey_map, 0, IUP_NUMMAXCODES*sizeof(char*)); + for (i = 0; ikey_map_list[i].name; i++) + ikey_map[ikey_map_list[i].code] = ikey_map_list[i].name; +} + +int iupKeyCanCaps(int code) +{ + if (code >= K_a && code <= K_z) + return 1; + if (code == K_ccedilla) + return 1; + return 0; +} + +char* iupKeyCodeToName(int code) +{ + if (code < 0 || code > IUP_NUMMAXCODES) + return NULL; + return ikey_map[code]; +} + +int iupKeyNameToCode(const char *name) +{ + int i; + for (i = 0; ikey_map_list[i].name; i++) + if (iupStrEqual(name, ikey_map_list[i].name)) + return ikey_map_list[i].code; + + return 0; +} + +void iupKeyForEach(void (*func)(const char *name, int code, void* user_data), void* user_data) +{ + int i; + for (i = 0; ikey_map_list[i].name; ++i) + func(ikey_map_list[i].name, ikey_map_list[i].code, user_data); +} + +int iupKeyCallKeyCb(Ihandle *ih, int code) +{ + char* name = iupKeyCodeToName(code); + for (; ih; ih = ih->parent) + { + IFni cb = NULL; + if (name) + cb = (IFni)IupGetCallback(ih, name); + if (!cb) + cb = (IFni)IupGetCallback(ih, "K_ANY"); + + if (cb) + { + int ret = cb(ih, code); + if (ret != IUP_CONTINUE) + return ret; + } + } + return IUP_DEFAULT; +} + +int iupKeyCallKeyPressCb(Ihandle *ih, int code, int press) +{ + IFnii cb = (IFnii)IupGetCallback(ih, "KEYPRESS_CB"); + if (cb) return cb(ih, code, press); + return IUP_DEFAULT; +} + +int iupKeyProcessNavigation(Ihandle* ih, int key, int shift) +{ + /* this is called after K_ANY is processed, + so the user may change its behavior */ + + if (key == K_cTAB) + { + int is_multiline = (iupStrEqual(ih->iclass->name, "multiline") || + (iupStrEqual(ih->iclass->name, "text") && IupGetInt(ih, "MULTILINE"))); + if (is_multiline) + { + if (shift) + IupPreviousField(ih); + else + IupNextField(ih); + return 0; /* abort default processing */ + } + } + else if (key == K_TAB || key == K_sTAB) + { + int is_multiline = (iupStrEqual(ih->iclass->name, "multiline") || + (iupStrEqual(ih->iclass->name, "text") && IupGetInt(ih, "MULTILINE"))); + if (!is_multiline) + { + if (key == K_sTAB) + IupPreviousField(ih); + else + IupNextField(ih); + return 0; /* abort default processing */ + } + } + else if (key == K_UP || key == K_DOWN) + { + int is_button = (iupStrEqual(ih->iclass->name, "button") || + iupStrEqual(ih->iclass->name, "toggle")); + if (is_button) + { + if (key == K_UP) + iupFocusPrevious(ih); + else + iupFocusNext(ih); + return 0; /* abort default processing */ + } + } + else if (key==K_ESC) + { + Ihandle* bt = IupGetAttributeHandle(IupGetDialog(ih), "DEFAULTESC"); + if (iupObjectCheck(bt) && iupStrEqual(bt->iclass->name, "button")) + iupdrvActivate(bt); + return 0; /* abort default processing */ + } + else if (key==K_CR || key==K_cCR) + { + int is_multiline = (iupStrEqual(ih->iclass->name, "multiline") || + (iupStrEqual(ih->iclass->name, "text") && IupGetInt(ih, "MULTILINE"))); + + if ((key==K_CR && !is_multiline) || (key==K_cCR && is_multiline)) + { + Ihandle* bt = IupGetAttributeHandle(IupGetDialog(ih), "DEFAULTENTER"); + if (iupObjectCheck(bt) && iupStrEqual(bt->iclass->name, "button")) + iupdrvActivate(bt); + return 0; /* abort default processing */ + } + } + + return 1; +} + diff --git a/iup/src/iup_key.h b/iup/src/iup_key.h new file mode 100755 index 0000000..37d6c9d --- /dev/null +++ b/iup/src/iup_key.h @@ -0,0 +1,70 @@ +/** \file + * \brief Manage keys encoding and decoding. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_KEY_H +#define __IUP_KEY_H + + +/** \defgroup key Key Coding and Key Callbacks + * \par + * See \ref iup_key.h + * \ingroup cpi */ + + +/** Returns the key name from its code. + * Returns NULL if code not found. + * \ingroup key */ +char *iupKeyCodeToName(int code); + +/** Returns the key code from its name. + * Returns 0 if name not found. + * \ingroup key */ +int iupKeyNameToCode(const char *name); + +/** Returns true if the key code can be changed by CAPSLOCK. + * \ingroup key */ +int iupKeyCanCaps(int code); + +/** Calls a function for each defined key. + * \ingroup key */ +void iupKeyForEach(void (*func)(const char *name, int code, void* user_data), void* user_data); + +/** Calls the K_ANY or K_* callbacks. Should be called when a keyboard event occoured. + * \ingroup key */ +int iupKeyCallKeyCb(Ihandle *ih, int c); + +/** Calls the KEYPRESS_CB callback. Should be called when a keyboard event occoured. + * \ingroup key */ +int iupKeyCallKeyPressCb(Ihandle *ih, int code, int press); + +/** Process Tab, DEFAULTENTER and DEFAULTESC in key press events. + * \ingroup key */ +int iupKeyProcessNavigation(Ihandle* ih, int key, int shift); + + +/* Called only from IupOpen. */ +void iupKeyInit(void); + + +#define IUPKEY_STATUS_SIZE 11 /* 10 chars + null */ +#define IUPKEY_STATUS_INIT " " /* 10 spaces */ +#define iupKEYSETSHIFT(_s) (_s[0]='S') +#define iupKEYSETCONTROL(_s) (_s[1]='C') +#define iupKEYSETBUTTON1(_s) (_s[2]='1') +#define iupKEYSETBUTTON2(_s) (_s[3]='2') +#define iupKEYSETBUTTON3(_s) (_s[4]='3') +#define iupKEYSETDOUBLE(_s) (_s[5]='D') +#define iupKEYSETALT(_s) (_s[6]='A') +#define iupKEYSETSYS(_s) (_s[7]='Y') +#define iupKEYSETBUTTON4(_s) (_s[8]='4') +#define iupKEYSETBUTTON5(_s) (_s[9]='5') + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_label.c b/iup/src/iup_label.c new file mode 100755 index 0000000..33d96af --- /dev/null +++ b/iup/src/iup_label.c @@ -0,0 +1,183 @@ +/** \file + * \brief Label Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_label.h" +#include "iup_image.h" + + +static int iLabelSetSeparatorAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (value) + { + if (iupStrEqualNoCase(value, "HORIZONTAL")) + ih->expand = IUP_EXPAND_WIDTH; + else if (iupStrEqualNoCase(value, "VERTICAL")) + ih->expand = IUP_EXPAND_HEIGHT; + else + return 0; + } + + return 1; +} + +static char* iLabelGetSeparatorAttrib(Ihandle* ih) +{ + if (ih->handle) + { + if (ih->data->type == IUP_LABEL_SEP_HORIZ) + return "HORIZONTAL"; + else if (ih->data->type == IUP_LABEL_SEP_VERT) + return "VERTICAL"; + } + return NULL; +} + +char* iupLabelGetPaddingAttrib(Ihandle* ih) +{ + if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding); + return str; + } + else + return NULL; +} + + +/**************************************************************************************/ + + +static int iLabelCreateMethod(Ihandle* ih, void** params) +{ + if (params && params[0]) + iupAttribStoreStr(ih, "TITLE", (char*)(params[0])); + + ih->data = iupALLOCCTRLDATA(); + + /* used only by the Windows driver */ + ih->data->vert_alignment = IUP_ALIGN_ACENTER; + return IUP_NOERROR; +} + +static void iLabelComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w = 0, + natural_h = 0, + type = ih->data->type; + (void)expand; /* unset if not a container */ + + if (!ih->handle) + { + /* if not mapped must initialize the internal values */ + char* value = iupAttribGet(ih, "SEPARATOR"); + if (value) + { + if (iupStrEqualNoCase(value, "HORIZONTAL")) + type = IUP_LABEL_SEP_HORIZ; + else /* "VERTICAL" */ + type = IUP_LABEL_SEP_VERT; + } + else + { + value = iupAttribGet(ih, "IMAGE"); + if (value) + type = IUP_LABEL_IMAGE; + else + type = IUP_LABEL_TEXT; + } + } + + if (type == IUP_LABEL_SEP_HORIZ) + natural_h = 2; + else if (type == IUP_LABEL_SEP_VERT) + natural_w = 2; + else if (type == IUP_LABEL_IMAGE) + { + iupImageGetInfo(iupAttribGet(ih, "IMAGE"), &natural_w, &natural_h, NULL); + + natural_w += 2*ih->data->horiz_padding; + natural_h += 2*ih->data->vert_padding; + } + else /* IUP_LABEL_TEXT */ + { + /* must use IupGetAttribute to check from the native implementation */ + char* title = IupGetAttribute(ih, "TITLE"); + char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */ + iupdrvFontGetMultiLineStringSize(ih, str, &natural_w, &natural_h); + if (str && str!=title) free(str); + + natural_w += 2*ih->data->horiz_padding; + natural_h += 2*ih->data->vert_padding; + } + + *w = natural_w; + *h = natural_h; +} + + +/******************************************************************************/ + + +Ihandle* IupLabel(const char* title) +{ + void *params[2]; + params[0] = (void*)title; + params[1] = NULL; + return IupCreatev("label", params); +} + +Iclass* iupLabelGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "label"; + ic->format = "S"; /* one optional string */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iLabelCreateMethod; + ic->ComputeNaturalSize = iLabelComputeNaturalSizeMethod; + + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Common Callbacks */ + iupClassRegisterCallback(ic, "MAP_CB", ""); + iupClassRegisterCallback(ic, "UNMAP_CB", ""); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupLabel only */ + iupClassRegisterAttribute(ic, "SEPARATOR", iLabelGetSeparatorAttrib, iLabelSetSeparatorAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvLabelInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_label.h b/iup/src/iup_label.h new file mode 100755 index 0000000..f50d26f --- /dev/null +++ b/iup/src/iup_label.h @@ -0,0 +1,37 @@ +/** \file + * \brief Label Controls Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_LABEL_H +#define __IUP_LABEL_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupdrvLabelInitClass(Iclass* ic); + +char* iupLabelGetPaddingAttrib(Ihandle* ih); + +enum{IUP_LABEL_SEP_HORIZ, IUP_LABEL_SEP_VERT, IUP_LABEL_IMAGE, IUP_LABEL_TEXT}; + +struct _IcontrolData +{ + int type, /* the 4 labels possibilities */ + horiz_padding, vert_padding; /* label margin */ + + /* used only by the Windows driver */ + int horiz_alignment, vert_alignment, + text_style; + unsigned long fgcolor; +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_layout.c b/iup/src/iup_layout.c new file mode 100755 index 0000000..b96293c --- /dev/null +++ b/iup/src/iup_layout.c @@ -0,0 +1,273 @@ +/** \file + * \brief Abstract Layout Management + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_layout.h" +#include "iup_assert.h" + + +void IupRefresh(Ihandle* ih) +{ + Ihandle* dialog; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + dialog = IupGetDialog(ih); + if (dialog) + { + iupLayoutCompute(dialog); + if (dialog->handle) + iupLayoutUpdate(dialog); + } +} + +static void iLayoutDisplayUpdateChildren(Ihandle *ih) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + iLayoutDisplayUpdateChildren(child); + + if (child->handle && child->iclass->nativetype != IUP_TYPEVOID) + iupdrvDisplayUpdate(child); + } +} + +void IupUpdate(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->handle && ih->iclass->nativetype != IUP_TYPEVOID) + iupdrvDisplayUpdate(ih); +} + +void IupUpdateChildren(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + iLayoutDisplayUpdateChildren(ih); +} + +static void iLayoutDisplayRedrawChildren(Ihandle *ih) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + iLayoutDisplayRedrawChildren(child); + + if (child->handle && child->iclass->nativetype != IUP_TYPEVOID) + iupdrvDisplayRedraw(child); + } +} + +void IupRedraw(Ihandle* ih, int children) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->handle && ih->iclass->nativetype != IUP_TYPEVOID) + iupdrvDisplayRedraw(ih); + + if (children) + iLayoutDisplayRedrawChildren(ih); +} + +void iupLayoutUpdate(Ihandle* ih) +{ + Ihandle* child; + + /* update size and position of the native control */ + iupClassObjectLayoutUpdate(ih); + + /* update its children */ + for (child = ih->firstchild; child; child = child->brother) + { + if (child->handle) + iupLayoutUpdate(child); + } +} + +void iupLayoutCompute(Ihandle* ih) +{ + int shrink = iupAttribGetBoolean(ih, "SHRINK"); + + /* Compute the natural size for all elements in the dialog, + using the minimum visible size and the defined user size. + The minimum visible size is the size where all the controls can display + all their contents. + The defined user size is used to increase the value of the minimum visible size for containers, + for standard controls will replace the minimum visible size. + So the native size will be the maximum value between + minimum visible size and defined user size. + Also calculates the expand configuration for each element, but expand is used only in SetChildrenCurrentSize. + SEQUENCE: will first calculate the native size for the children, then for the element. */ + iupBaseComputeNaturalSize(ih); + + /* Set the current size (not reflected in the native element yet) based on + the natural size and the expand configuration. + If shrink is 0 (default) the current size of containers can be only larger than the natural size, + the result will depend on the EXPAND attribute. + If shrink is 1 the containers can be resized to sizes smaller than the natural size. + SEQUENCE: will first calculate the current size of the element, then for the children. */ + iupBaseSetCurrentSize(ih, 0, 0, shrink); + + /* Now that the current size is known, set the position of the elements + relative to the parent. + SEQUENCE: will first set the position of the element, then for the children. */ + iupBaseSetPosition(ih, 0, 0); +} + +static void iLayoutSetMinMaxSize(Ihandle* ih, int *w, int *h) +{ + if (ih->has_minsize) + { + char* value = iupAttribGet(ih, "MINSIZE"); + int min_w = 0, min_h = 0; /* MINSIZE default value */ + iupStrToIntInt(value, &min_w, &min_h, 'x'); + if (*w < min_w) *w = min_w; + if (*h < min_h) *h = min_h; + } + + if (ih->has_maxsize) + { + char* value = iupAttribGet(ih, "MAXSIZE"); + int max_w = 65535, max_h = 65535; /* MAXSIZE default value */ + iupStrToIntInt(value, &max_w, &max_h, 'x'); + if (*w > max_w) *w = max_w; + if (*h > max_h) *h = max_h; + } +} + +void iupBaseComputeNaturalSize(Ihandle* ih) +{ + /* always initialize the natural size using the user size */ + ih->naturalwidth = ih->userwidth; + ih->naturalheight = ih->userheight; + + if (ih->iclass->childtype!=IUP_CHILDNONE || ih->iclass->nativetype == IUP_TYPEDIALOG) + { + int w=0, h=0, children_expand; + + /* if a container then update the "expand" member from the EXPAND attribute */ + iupBaseContainerUpdateExpand(ih); + children_expand = ih->expand; /* use it as default value */ + + iupClassObjectComputeNaturalSize(ih, &w, &h, &children_expand); + + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + { + /* only update the natural size if user size is not defined. */ + /* IupDialog is the only container where this must be done */ + /* if the natural size is bigger than the actual dialog size then + the dialog will be resized, if smaller then the dialog remains with the same size. */ + ih->expand |= children_expand; + if (ih->naturalwidth <= 0) ih->naturalwidth = iupMAX(ih->currentwidth, w); + if (ih->naturalheight <= 0) ih->naturalheight = iupMAX(ih->currentheight, h); + } + else + { + ih->expand &= children_expand; /* combine but only expand where the element can expand */ + ih->naturalwidth = iupMAX(ih->naturalwidth, w); + ih->naturalheight = iupMAX(ih->naturalheight, h); + + /* crop the natural size */ + iLayoutSetMinMaxSize(ih, &(ih->naturalwidth), &(ih->naturalheight)); + } + } + else + { + /* for non-container only compute if user size is not defined */ + if (ih->naturalwidth <= 0 || ih->naturalheight <= 0) + { + int w=0, h=0; + iupClassObjectComputeNaturalSize(ih, &w, &h, NULL); + + if (ih->naturalwidth <= 0) ih->naturalwidth = w; + if (ih->naturalheight <= 0) ih->naturalheight = h; + } + + /* crop the natural size */ + iLayoutSetMinMaxSize(ih, &(ih->naturalwidth), &(ih->naturalheight)); + } +} + +void iupBaseSetCurrentSize(Ihandle* ih, int w, int h, int shrink) +{ + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + { + /* w and h parameters here are ignored, because they are always 0 for the dialog. */ + + /* current size is zero before map and when reset by the application */ + /* after that the current size must follow the actual size of the dialog */ + if (!ih->currentwidth) ih->currentwidth = ih->naturalwidth; + if (!ih->currentheight) ih->currentheight = ih->naturalheight; + + if (ih->firstchild) + iupClassObjectSetChildrenCurrentSize(ih, shrink); + } + else + { + if (ih->iclass->childtype!=IUP_CHILDNONE) + { + if (shrink) + { + /* if expand then use the given size, else use the natural size */ + /* this expand is a combination of the expand defined for the element and its children */ + ih->currentwidth = (ih->expand & IUP_EXPAND_WIDTH)? w: ih->naturalwidth; + ih->currentheight = (ih->expand & IUP_EXPAND_HEIGHT)? h: ih->naturalheight; + } + else + { + /* if expand then use the given size (if greater than natural size), else use the natural size */ + /* this expand is a combination of the expand defined for the element and its children */ + ih->currentwidth = (ih->expand & IUP_EXPAND_WIDTH)? iupMAX(ih->naturalwidth, w): ih->naturalwidth; + ih->currentheight = (ih->expand & IUP_EXPAND_HEIGHT)? iupMAX(ih->naturalheight, h): ih->naturalheight; + } + + if (ih->firstchild) + iupClassObjectSetChildrenCurrentSize(ih, shrink); + } + else + { + /* shrink is only used by containers, usually is 0 */ + /* for non containers is always 1, so they always can be smaller than the natural size */ + + /* if expand use the given size, else use the natural size */ + /* this expand is the defined for the element */ + ih->currentwidth = (ih->expand & IUP_EXPAND_WIDTH)? w: ih->naturalwidth; + ih->currentheight = (ih->expand & IUP_EXPAND_HEIGHT)? h: ih->naturalheight; + } + + /* crop the current size if expanded */ + if (ih->expand & IUP_EXPAND_WIDTH || ih->expand & IUP_EXPAND_HEIGHT) + iLayoutSetMinMaxSize(ih, &(ih->currentwidth), &(ih->currentheight)); + } +} + +void iupBaseSetPosition(Ihandle* ih, int x, int y) +{ + ih->x = x; + ih->y = y; + + if (ih->firstchild) + iupClassObjectSetChildrenPosition(ih, x, y); +} diff --git a/iup/src/iup_layout.h b/iup/src/iup_layout.h new file mode 100755 index 0000000..a2a0c29 --- /dev/null +++ b/iup/src/iup_layout.h @@ -0,0 +1,28 @@ +/** \file + * \brief Abstract Layout Management + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_LAYOUT_H +#define __IUP_LAYOUT_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* called from IupMap and IupRefresh */ +void iupLayoutCompute(Ihandle* ih); /* can be called before map */ +void iupLayoutUpdate(Ihandle* ih); /* called only after map */ + +/* Other functions declared in and implemented here. +IupRefresh +*/ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_ledlex.c b/iup/src/iup_ledlex.c new file mode 100755 index 0000000..3283a43 --- /dev/null +++ b/iup/src/iup_ledlex.c @@ -0,0 +1,366 @@ +/** \file + * \brief lexical analysis manager for LED + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_class.h" +#include "iup_ledlex.h" +#include "iup_str.h" +#include "iup_table.h" +#include "iup_register.h" + + +static struct /* lexical variables */ +{ + const char* filename; /* file name */ + const char* f; + FILE* file; /* file handle */ + int token; /* lookahead iLexToken */ + char name[40960]; /* lexical identifier value */ + float number; /* lexical number value */ + int line; /* line number */ + Iclass *ic; /* control class when func is CONTROL_ */ +} ilex = {NULL, NULL, NULL, 0, "", (float) 0.0, 0, NULL}; + +static int iLexGetChar (void); +static int iLexToken(int *erro); +static int iLexCapture (char* dlm); +static int iLexSkip (char* dlm); +static int iLexCaptureAttr (void); + +int iupLexStart(const char* filename, int is_file) /* initialize lexical analysis */ +{ + ilex.filename = filename; + if (is_file) + { + ilex.file = fopen (ilex.filename,"r"); + if (!ilex.file) + return iupLexError (IUPLEX_FILENOTOPENED, filename); + } + else + { + ilex.f = ilex.filename; + ilex.file = NULL; + } + ilex.line = 0; + ilex.line = 1; + return iupLexAdvance(); +} + +void iupLexClose(void) +{ + if (!ilex.file) + return; + fclose (ilex.file); + ilex.file = NULL; +} + +static void iLexUngetc(int c) +{ + if (ilex.file) + ungetc(c, ilex.file); + else + { + if (*ilex.f != 0) + *(char*)ilex.f = (char)c; /* write back to the string ???? */ + } +} + +static int iLexGetc(void) +{ + if (ilex.file) + return getc(ilex.file); + else + { + if (*ilex.f != 0) + ilex.f++; + if (*ilex.f == 0) + return EOF; + return *ilex.f; + } +} + +int iupLexLookAhead(void) +{ + return ilex.token; +} + +int iupLexAdvance(void) +{ + int erro = 0; + ilex.token = iLexToken(&erro); + return erro; +} + +int iupLexFollowedBy(int t) +{ + return (ilex.token==t); +} + +int iupLexMatch(int t) +{ + if (ilex.token==t) + return iupLexAdvance(); + else + return iupLexError (IUPLEX_NOTMATCH, ilex.token, t); +} + + +int iupLexSeenMatch(int t, int *erro) +{ + if (ilex.token==t) + { + *erro = iupLexAdvance(); + return 1; + } + else + return 0; +} + +unsigned char iupLexByte(void) +{ + unsigned int b; + sscanf(ilex.name,"%u", &b); /* read as integer to avoid reading number as characters */ + if (b>255) b = 255; + return (unsigned char)b; +} + +int iupLexInt(void) +{ + int i; + sscanf(ilex.name,"%d", &i); + return i; +} + +float iupLexFloat(void) +{ + float f; + sscanf(ilex.name,"%g", &f); + return f; +} + +char* iupLexGetName(void) +{ + if (ilex.name) + return iupStrDup(ilex.name); + else + return NULL; +} + +char* iupLexName(void) +{ + return ilex.name; +} + +float iupLexGetNumber(void) +{ + return ilex.number; +} + +Iclass *iupLexGetClass(void) +{ + return ilex.ic; +} + +static int iLexToken(int *erro) +{ + for (;;) + { + int c = iLexGetChar(); + switch (c) + { + case 26: + case EOF: + return IUPLEX_TK_END; + + case ']': + return IUPLEX_TK_ENDATTR; + + case '#': /* iLexSkip comment */ + case '%': /* iLexSkip comment */ + iLexSkip ("\n\r"); + continue; + + case ' ': /* ignore whitespace */ + case '\t': + case '\n': + case '\r': + case '\f': + case '\v': + continue; + + case '=': /* attribuicao */ + return IUPLEX_TK_SET; + + case ',': + return IUPLEX_TK_COMMA; + + case '(': /* begin parameters */ + return IUPLEX_TK_BEGP; + + case ')': /* end parameters */ + return IUPLEX_TK_ENDP; + + case '[': /* attributes */ + if (iLexCaptureAttr() == IUPLEX_TK_END) + { + *erro=iupLexError (IUPLEX_NOTENDATTR); + return 0; + } + return IUPLEX_TK_ATTR; + + case '\"': /* string */ + iLexCapture ("\""); + return IUPLEX_TK_STR; + + case '\'': /* string */ + iLexCapture ("\'"); + return IUPLEX_TK_STR; + + default: + if (c > 32) /* identifier */ + { + char class_name[50]; + iLexUngetc(c); + iLexUngetc(iLexCapture ("=[](), \t\n\r\f\v")); + iupStrLower(class_name, iupLexName()); + ilex.ic = iupRegisterFindClass(class_name); + if (ilex.ic) + return IUPLEX_TK_FUNC; + else + return IUPLEX_TK_NAME; + } + } + return c; + } +} + +static int iLexCapture (char* dlm) +{ + int i=0; + int c; + do + { + c = iLexGetChar (); + if (i < sizeof(ilex.name)) + ilex.name[i++] = (char) c; + } while ((c > 0) && !strchr (dlm,c)); + ilex.name[i-1]='\0'; /* discard delimiter */ + return c; /* return delimiter */ +} + +static int iLexCaptureAttr (void) +{ + int i=0; + int c; + int aspas=0; + do + { + c = iLexGetChar (); + if (i < sizeof(ilex.name)) + ilex.name[i++] = (char) c; + if (c == '"') + ++aspas; + } while ((c > 0) && ((aspas & 1) || c != ']')); + ilex.name[i-1]='\0'; /* discard delimiter */ + return c; /* return delimiter */ +} + +static int iLexSkip (char* dlm) +{ + int c; + do + { + c = iLexGetChar (); + } while ((c > 0) && !strchr (dlm,c)); + return c; /* return delimiter */ +} + +static int iLexGetChar (void) +{ + int c = iLexGetc(); if (c == '\n') ++ilex.line; + if (c == '\\') + { + c = iLexGetc(); + if (c == 'n') + return '\n'; + else if (c == '\\') + return '\\'; + } + return c; +} + +static char* iupTokenStr(int t) +{ + switch (t) + { + case IUPLEX_TK_END : return "end of file"; + case IUPLEX_TK_BEGP : return "("; + case IUPLEX_TK_ENDP : return ")"; + case IUPLEX_TK_ATTR : return "["; + case IUPLEX_TK_STR : return "string"; + case IUPLEX_TK_NAME : return "identifier"; + case IUPLEX_TK_NUMB : return "number"; + case IUPLEX_TK_SET : return "="; + case IUPLEX_TK_COMMA: return ","; + case IUPLEX_TK_FUNC : return "function"; + case IUPLEX_TK_ENDATTR : return "]"; + } + return ""; +} + +static char ilex_erromsg[10240]; + +char *iupLexGetError(void) +{ + return ilex_erromsg; +} + +int iupLexError (int n, ...) +{ + char msg[10240]; + va_list va; + va_start(va,n); + switch (n) + { + case IUPLEX_FILENOTOPENED: + { + char *fn=va_arg(va,char *); + sprintf (msg, "cannot open file %s", fn); + } + break; + case IUPLEX_NOTMATCH: + { + int tr=va_arg(va,int); /* iLexToken read */ + int te=va_arg(va,int); /* iLexToken expected */ + char *str=iupTokenStr(tr); + char *ste=iupTokenStr(te); + sprintf (msg, "expected %s but found %s", ste, str); + } + break; + case IUPLEX_NOTENDATTR: + { + sprintf (msg, "missing ']'"); + } + break; + case IUPLEX_PARSEERROR: + { + char* s=va_arg(va,char*); /* iLexToken expected */ + sprintf(msg,"%.*s",(int)(sizeof(msg)-1),s); + } + break; + } + va_end(va); + sprintf(ilex_erromsg, "led(%s): bad input at line %d - %s\n", ilex.filename, ilex.line, msg); + return n; +} diff --git a/iup/src/iup_ledlex.h b/iup/src/iup_ledlex.h new file mode 100755 index 0000000..ad79ee1 --- /dev/null +++ b/iup/src/iup_ledlex.h @@ -0,0 +1,54 @@ +/** \file + * \brief lexical analysis manager for LED. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_LEX_H +#define __IUP_LEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* TOKENS */ +#define IUPLEX_TK_END -1 +#define IUPLEX_TK_BEGP 1 +#define IUPLEX_TK_ENDP 2 +#define IUPLEX_TK_ATTR 3 +#define IUPLEX_TK_STR 4 +#define IUPLEX_TK_NAME 5 +#define IUPLEX_TK_NUMB 6 +#define IUPLEX_TK_SET 7 +#define IUPLEX_TK_COMMA 8 +#define IUPLEX_TK_FUNC 9 +#define IUPLEX_TK_ENDATTR 10 + +/* ERRORS */ +#define IUPLEX_FILENOTOPENED 1 +#define IUPLEX_NOTMATCH 2 +#define IUPLEX_NOTENDATTR 3 +#define IUPLEX_PARSEERROR 4 + +char* iupLexGetError (void); +int iupLexStart (const char *filename, int is_file); +void iupLexClose (void); +int iupLexLookAhead (void); +int iupLexAdvance (void); +int iupLexFollowedBy (int t); +int iupLexMatch (int t); +int iupLexSeenMatch (int t, int *erro); +unsigned char iupLexByte (void); +int iupLexInt (void); +float iupLexFloat (void); +char* iupLexGetName (void); +char* iupLexName (void); +float iupLexGetNumber (void); +int iupLexError (int n, ...); +Iclass* iupLexGetClass (void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_ledparse.c b/iup/src/iup_ledparse.c new file mode 100755 index 0000000..2878e0b --- /dev/null +++ b/iup/src/iup_ledparse.c @@ -0,0 +1,288 @@ +/** \file + * \brief parser for LED. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_ledlex.h" +#include "iup_str.h" +#include "iup_assert.h" + + +#define IPARSE_SYMBEXIST 1 +#define IPARSE_SYMBNOTDEF 2 + +static Ihandle* iParseExp (void); +static Ihandle* iParseFunction (Iclass *ic); +static int iParseError (int err, char *s); + +static int iparse_error = 0; +#define IPARSE_RETURN_IF_ERRO(_e) {iparse_error=(_e); if (iparse_error) return NULL;} +#define IPARSE_RETURN_IF_ERRO2(_e, _x) {iparse_error=(_e); if (iparse_error) { if (_x) free(_x); return NULL;} } + + +char* IupLoad(const char *filename) +{ + iupASSERT(filename!=NULL); + if (!filename) + return "invalid file name"; + + iparse_error = iupLexStart(filename, 1); + if (iparse_error) + { + iupLexClose(); + return iupLexGetError(); + } + + while (iupLexLookAhead() != IUPLEX_TK_END) + { + iParseExp(); + if (iparse_error) + { + iupLexClose(); + return iupLexGetError(); + } + } + + iupLexClose(); + return NULL; +} + +char* IupLoadBuffer(const char *buffer) +{ + iupASSERT(buffer!=NULL); + if (!buffer) + return "invalid buffer"; + + iparse_error = iupLexStart(buffer, 0); + if (iparse_error) + { + iupLexClose(); + return iupLexGetError(); + } + + while (iupLexLookAhead() != IUPLEX_TK_END) + { + iParseExp(); + if (iparse_error) + { + iupLexClose(); + return iupLexGetError(); + } + } + + iupLexClose(); + return NULL; +} + +static Ihandle* iParseExp(void) +{ + char* nm = NULL; + Ihandle* ih = NULL; + + int match = iupLexSeenMatch(IUPLEX_TK_FUNC,&iparse_error); + IPARSE_RETURN_IF_ERRO(iparse_error); + + if (match) + return iParseFunction(iupLexGetClass()); + + if (iupLexLookAhead() == IUPLEX_TK_NAME) + { + nm = iupLexGetName(); + IPARSE_RETURN_IF_ERRO(iupLexAdvance()); + } + else + { + iparse_error = iupLexMatch(IUPLEX_TK_NAME); + return NULL; /* force iparse_error */ + } + + match = iupLexSeenMatch(IUPLEX_TK_SET,&iparse_error); + IPARSE_RETURN_IF_ERRO(iparse_error); + + if (match) + { + ih = iParseExp(); + IPARSE_RETURN_IF_ERRO(iparse_error); + IupSetHandle(nm, ih); + } + else + { + ih = IupGetHandle(nm); + if (!ih) + IPARSE_RETURN_IF_ERRO(iParseError(IPARSE_SYMBNOTDEF,nm)); + } + + if (nm) free(nm); + return ih; +} + +static void* iParseControlParam(char type) +{ + switch(type) + { + case 'a': + IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME)); + return iupLexGetName(); + + case 's': + IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_STR)); + return iupLexGetName(); + + case 'b': + case 'c': + IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME)); + return (void*)(unsigned long)iupLexByte(); + + case 'i': + case 'j': + IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME)); + return (void*)(unsigned long)iupLexInt(); + + case 'f': + IPARSE_RETURN_IF_ERRO(iupLexMatch(IUPLEX_TK_NAME)); + { + float f = iupLexFloat(); + unsigned long* l = (unsigned long*)&f; + return (void*)*l; + } + + case 'g': + case 'h': + { + char *new_control = (char*)iParseExp(); + IPARSE_RETURN_IF_ERRO(iparse_error); + return new_control; + } + + default: + return 0; + } +} + +static Ihandle* iParseControl(Iclass *ic) +{ + const char *format = ic->format; + if (!format || format[0] == 0) + return iupObjectCreate(ic, NULL); + else + { + Ihandle *new_control; + void** params; + int i, alloc_arg, num_arg, + num_format = strlen(format); + + num_arg = num_format; + alloc_arg = num_arg+20; + params = (void**)malloc(sizeof(void*)*alloc_arg); + + for (i = 0; i < num_arg; ) + { + char p_format = (char)tolower(format[i]); /* there is no optional parameters in LED */ + + if (i > 0) + IPARSE_RETURN_IF_ERRO2(iupLexMatch (IUPLEX_TK_COMMA), params); + + if (p_format != 'j' && /* not array */ + p_format != 'g' && + p_format != 'c') + { + params[i] = iParseControlParam(p_format); + i++; + IPARSE_RETURN_IF_ERRO2(iparse_error, params); + } + else /* array */ + { + int match; + do + { + if (num_arg == i) + { + num_arg++; + if (num_arg >= alloc_arg) + { + alloc_arg = num_arg+20; + params = realloc(params, sizeof(void*)*alloc_arg); + } + } + params[i] = iParseControlParam(p_format); + i++; + IPARSE_RETURN_IF_ERRO2(iparse_error, params); + match = iupLexSeenMatch(IUPLEX_TK_COMMA,&iparse_error); + IPARSE_RETURN_IF_ERRO2(iparse_error, params); + } while (match); + + /* after an array of parameters there are no more parameters */ + break; + } + } + + params[i] = NULL; + new_control = iupObjectCreate(ic, params); + + for (i = 0; params[i] && i +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_assert.h" +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_mask.h" +#include "iup_list.h" + + +void iupListSingleCallDblClickCallback(Ihandle* ih, IFnis cb, int pos) +{ + char *text; + char str[30]; + + if (pos<=0) + return; + + sprintf(str, "%d", pos); + text = IupGetAttribute(ih, str); + + if (cb(ih, pos, text) == IUP_CLOSE) + IupExitLoop(); +} + +static void iListCallActionCallback(Ihandle* ih, IFnsii cb, int pos, int state) +{ + char *text; + char str[30]; + + if (pos<=0) + return; + + sprintf(str, "%d", pos); + text = IupGetAttribute(ih, str); + + if (cb(ih, text, pos, state) == IUP_CLOSE) + IupExitLoop(); +} + +void iupListSingleCallActionCallback(Ihandle* ih, IFnsii cb, int pos) +{ + char* old_str = iupAttribGet(ih, "_IUPLIST_OLDVALUE"); + if (old_str) + { + int oldpos = atoi(old_str); + if (oldpos != pos) + { + iListCallActionCallback(ih, cb, oldpos, 0); + iListCallActionCallback(ih, cb, pos, 1); + } + } + else + iListCallActionCallback(ih, cb, pos, 1); + iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos); +} + +void iupListMultipleCallActionCallback(Ihandle* ih, IFnsii cb, IFns multi_cb, int* pos, int sel_count) +{ + int i, count = iupdrvListGetCount(ih); + + char* old_str = iupAttribGet(ih, "_IUPLIST_OLDVALUE"); + int old_count = old_str? strlen(old_str): 0; + + char* str = iupStrGetMemory(count+1); + memset(str, '-', count); + str[count]=0; + for (i=0; i= old_count) /* new items, if selected then call the callback */ + { + if (str[i] == '+') + iListCallActionCallback(ih, cb, i+1, 1); + } + else if (str[i] != old_str[i]) + { + if (str[i] == '+') + iListCallActionCallback(ih, cb, i+1, 1); + else + iListCallActionCallback(ih, cb, i+1, 0); + } + } + } + + iupAttribStoreStr(ih, "_IUPLIST_OLDVALUE", str); +} + +int iupListGetPos(Ihandle* ih, const char* name_id) +{ + int pos; + if (iupStrToInt(name_id, &pos)) + { + int count = iupdrvListGetCount(ih); + + pos--; /* IUP items start at 1 */ + + if (pos < 0) return -1; + if (pos > count-1) return -1; + + return pos; + } + return -1; +} + +void iupListSetInitialItems(Ihandle* ih) +{ + char str[20], *value; + int i = 1; + sprintf(str, "%d", i); + while ((value = iupAttribGet(ih, str))!=NULL) + { + iupdrvListAppendItem(ih, value); + iupAttribSetStr(ih, str, NULL); + + i++; + sprintf(str, "%d", i); + } +} + +char* iupListGetSpacingAttrib(Ihandle* ih) +{ + if (!ih->data->is_dropdown) + { + char *str = iupStrGetMemory(50); + sprintf(str, "%d", ih->data->spacing); + return str; + } + else + return NULL; +} + +char* iupListGetPaddingAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding); + return str; + } + else + return NULL; +} + +char* iupListGetNCAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char* str = iupStrGetMemory(100); + sprintf(str, "%d", ih->data->nc); + return str; + } + else + return NULL; +} + +int iupListSetIdValueAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int pos; + if (iupStrToInt(name_id, &pos)) + { + int count = iupdrvListGetCount(ih); + + pos--; /* IUP starts at 1 */ + + if (!value) + { + if (pos >= 0 && pos <= count-1) + { + if (pos == 0) + iupdrvListRemoveAllItems(ih); + else + { + int i = pos; + while (i < count) + { + iupdrvListRemoveItem(ih, pos); + i++; + } + } + } + } + else + { + if (pos >= 0 && pos <= count-1) + { + iupdrvListRemoveItem(ih, pos); + iupdrvListInsertItem(ih, pos, value); + } + else if (pos == count) + iupdrvListAppendItem(ih, value); + } + } + return 1; +} + +static int iListSetAppendItemAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if (value) + iupdrvListAppendItem(ih, value); + return 0; +} + +static int iListSetInsertItemAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if (value) + { + int pos = iupListGetPos(ih, name_id); + if (pos!=-1) + iupdrvListInsertItem(ih, pos, value); + } + return 0; +} + +static int iListSetRemoveItemAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if (!value) + iupdrvListRemoveAllItems(ih); + else + { + int pos = iupListGetPos(ih, value); + if (pos!=-1) + iupdrvListRemoveItem(ih, pos); + } + return 0; +} + +static int iListGetCount(Ihandle* ih) +{ + int count; + if (ih->handle) + count = iupdrvListGetCount(ih); + else + { + char str[20]; + count = 0; + sprintf(str, "%d", count+1); + while (iupAttribGet(ih, str)) + { + count++; + sprintf(str, "%d", count+1); + } + } + return count; +} + +static char* iListGetCountAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(50); + sprintf(str, "%d", iListGetCount(ih)); + return str; +} + +static int iListSetDropdownAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + { + ih->data->is_dropdown = 1; + ih->data->is_multiple = 0; + } + else + ih->data->is_dropdown = 0; + + return 0; +} + +static char* iListGetDropdownAttrib(Ihandle* ih) +{ + if (ih->data->is_dropdown) + return "YES"; + else + return "NO"; +} + +static int iListSetMultipleAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + { + ih->data->is_multiple = 1; + ih->data->is_dropdown = 0; + ih->data->has_editbox = 0; + } + else + ih->data->is_multiple = 0; + + return 0; +} + +static char* iListGetMultipleAttrib(Ihandle* ih) +{ + if (ih->data->is_multiple) + return "YES"; + else + return "NO"; +} + +static int iListSetEditboxAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + { + ih->data->has_editbox = 1; + ih->data->is_multiple = 0; + } + else + ih->data->has_editbox = 0; + + return 0; +} + +static char* iListGetEditboxAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + return "YES"; + else + return "NO"; +} + +static int iListSetScrollbarAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + else if (iupStrBoolean(value)) + ih->data->sb = 1; + else + ih->data->sb = 0; + + return 0; +} + +static char* iListGetScrollbarAttrib(Ihandle* ih) +{ + if (ih->data->sb) + return "YES"; + else + return "NO"; +} + +static char* iListGetMaskDataAttrib(Ihandle* ih) +{ + if (!ih->data->has_editbox) + return NULL; + + /* Used only by the OLD iupmask API */ + return (char*)ih->data->mask; +} + +static int iListSetMaskAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + if (!value) + { + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + } + else + { + int casei = iupAttribGetInt(ih, "MASKCASEI"); + Imask* mask = iupMaskCreate(value,casei); + if (mask) + { + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + ih->data->mask = mask; + return 1; + } + } + + return 0; +} + +static int iListSetMaskIntAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + if (!value) + { + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + iupAttribSetStr(ih, "MASK", NULL); + } + else + { + Imask* mask; + int min, max; + + if (iupStrToIntInt(value, &min, &max, ':')!=2) + return 0; + + mask = iupMaskCreateInt(min,max); + + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + ih->data->mask = mask; + + if (min < 0) + iupAttribSetStr(ih, "MASK", IUP_MASK_INT); + else + iupAttribSetStr(ih, "MASK", IUP_MASK_UINT); + } + + return 0; +} + +static int iListSetMaskFloatAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + if (!value) + { + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + iupAttribSetStr(ih, "MASK", NULL); + } + else + { + Imask* mask; + float min, max; + + if (iupStrToFloatFloat(value, &min, &max, ':')!=2) + return 0; + + mask = iupMaskCreateFloat(min,max); + + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + ih->data->mask = mask; + + if (min < 0) + iupAttribSetStr(ih, "MASK", IUP_MASK_FLOAT); + else + iupAttribSetStr(ih, "MASK", IUP_MASK_UFLOAT); + } + + return 0; +} + + +/*****************************************************************************************/ + + +static int iListCreateMethod(Ihandle* ih, void** params) +{ + if (params && params[0]) + iupAttribStoreStr(ih, "ACTION", (char*)(params[0])); + + ih->data = iupALLOCCTRLDATA(); + ih->data->sb = 1; + + return IUP_NOERROR; +} + +static void iListGetNaturalItemsSize(Ihandle *ih, int *w, int *h) +{ + char *value; + int visiblecolumns, + count = iListGetCount(ih); + + *w = 0; + *h = 0; + + iupdrvFontGetCharSize(ih, w, h); /* one line height, and one character width */ + + visiblecolumns = iupAttribGetInt(ih, "VISIBLECOLUMNS"); + if (visiblecolumns) + { + *w = iupdrvFontGetStringWidth(ih, "WWWWWWWWWW"); + *w = (visiblecolumns*(*w))/10; + } + else + { + int item_w, i; + char str[20]; + + for (i=1; i<=count; i++) + { + sprintf(str, "%d", i); + value = IupGetAttribute(ih, str); /* must use IupGetAttribute to check the native system */ + if (value) + { + item_w = iupdrvFontGetStringWidth(ih, value); + if (item_w > *w) + *w = item_w; + } + } + + if (*w == 0) /* default is 5 characters in 1 item */ + *w = iupdrvFontGetStringWidth(ih, "WWWWW"); + } + + /* compute height for multiple lines, drodown is just 1 line */ + if (!ih->data->is_dropdown) + { + int visiblelines, num_lines, line_size = *h; + + iupdrvListAddItemSpace(ih, h); /* this independs from spacing */ + + *h += 2*ih->data->spacing; /* this will be multiplied by the number of lines */ + *w += 2*ih->data->spacing; /* include also horizontal spacing */ + + num_lines = count; + if (num_lines == 0) num_lines = 1; + + visiblelines = iupAttribGetInt(ih, "VISIBLELINES"); + if (visiblelines) + num_lines = visiblelines; + + *h = *h * num_lines; + + if (ih->data->has_editbox) + *h += line_size; + } +} + +static void iListComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w, natural_h; + int sb_size = iupdrvGetScrollbarSize(); + (void)expand; /* unset if not a container */ + + iListGetNaturalItemsSize(ih, &natural_w, &natural_h); + + /* compute the borders space */ + iupdrvListAddBorders(ih, &natural_w, &natural_h); + + if (ih->data->is_dropdown) + { + /* add room for dropdown box */ + natural_w += sb_size; + + if (natural_h < sb_size) + natural_h = sb_size; + } + else + { + /* add room for scrollbar */ + if (ih->data->sb) + { + natural_h += sb_size; + natural_w += sb_size; + } + } + + if (ih->data->has_editbox) + { + natural_w += 2*ih->data->horiz_padding; + natural_h += 2*ih->data->vert_padding; + } + + *w = natural_w; + *h = natural_h; +} + +static void iListDestroyMethod(Ihandle* ih) +{ + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); +} + + +/******************************************************************************/ + + +Ihandle* IupList(const char* action) +{ + void *params[2]; + params[0] = (void*)action; + params[1] = NULL; + return IupCreatev("list", params); +} + +Iclass* iupListGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "list"; + ic->format = "A"; /* one optional callback name */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + ic->has_attrib_id = 1; + + /* Class functions */ + ic->Create = iListCreateMethod; + ic->Destroy = iListDestroyMethod; + ic->ComputeNaturalSize = iListComputeNaturalSizeMethod; + + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "ACTION", "sii"); + iupClassRegisterCallback(ic, "MULTISELECT_CB", "s"); + iupClassRegisterCallback(ic, "DROPFILES_CB", "siii"); + iupClassRegisterCallback(ic, "DROPDOWN_CB", "i"); + iupClassRegisterCallback(ic, "DBLCLICK_CB", "is"); + iupClassRegisterCallback(ic, "VALUECHANGED_CB", ""); + + iupClassRegisterCallback(ic, "EDIT_CB", "is"); + iupClassRegisterCallback(ic, "CARET_CB", "iii"); + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupList only */ + iupClassRegisterAttribute(ic, "SCROLLBAR", iListGetScrollbarAttrib, iListSetScrollbarAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MULTIPLE", iListGetMultipleAttrib, iListSetMultipleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DROPDOWN", iListGetDropdownAttrib, iListSetDropdownAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "EDITBOX", iListGetEditboxAttrib, iListSetEditboxAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "COUNT", iListGetCountAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "INSERTITEM", NULL, iListSetInsertItemAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPENDITEM", NULL, iListSetAppendItemAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "REMOVEITEM", NULL, iListSetRemoveItemAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AUTOHIDE", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "MASKCASEI", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MASK", NULL, iListSetMaskAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MASKINT", NULL, iListSetMaskIntAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MASKFLOAT", NULL, iListSetMaskFloatAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "OLD_MASK_DATA", iListGetMaskDataAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "VISIBLECOLUMNS", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VISIBLELINES", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvListInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_list.h b/iup/src/iup_list.h new file mode 100755 index 0000000..045116b --- /dev/null +++ b/iup/src/iup_list.h @@ -0,0 +1,53 @@ +/** \file + * \brief List Control + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_LIST_H +#define __IUP_LIST_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupdrvListInitClass(Iclass* ic); +void iupdrvListAddBorders(Ihandle* ih, int *w, int *h); +void iupdrvListAddItemSpace(Ihandle* ih, int *h); +int iupdrvListGetCount(Ihandle* ih); +void iupdrvListAppendItem(Ihandle* ih, const char* value); +void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value); +void iupdrvListRemoveItem(Ihandle* ih, int pos); +void iupdrvListRemoveAllItems(Ihandle* ih); + +int iupListGetPos(Ihandle* ih, const char* name_id); +int iupListSetIdValueAttrib(Ihandle* ih, const char* name_id, const char* value); +void iupListSetInitialItems(Ihandle* ih); +void iupListSingleCallActionCallback(Ihandle* ih, IFnsii cb, int pos); +void iupListMultipleCallActionCallback(Ihandle* ih, IFnsii cb, IFns multi_cb, int* pos, int sel_count); +char* iupListGetNCAttrib(Ihandle* ih); +char* iupListGetPaddingAttrib(Ihandle* ih); +char* iupListGetSpacingAttrib(Ihandle* ih); +void iupListSingleCallDblClickCallback(Ihandle* ih, IFnis cb, int pos); + +struct _IcontrolData +{ + int sb, /* scrollbar configuration, can be changed only before map */ + nc, + spacing, + horiz_padding, + vert_padding, + last_caret_pos, + is_multiple, + is_dropdown, + has_editbox; + Imask* mask; +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_mask.c b/iup/src/iup_mask.c new file mode 100755 index 0000000..f241a22 --- /dev/null +++ b/iup/src/iup_mask.c @@ -0,0 +1,146 @@ +/** \file + * \brief mask pattern matching + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup_maskparse.h" +#include "iup_mask.h" +#include "iup_str.h" + + +#define IUP_MASK_FLOAT "[+/-]?(/d+/.?/d*|/./d+)" +#define IUP_MASK_UFLOAT "(/d+/.?/d*|/./d+)" +#define IUP_MASK_INT "[+/-]?/d+" +#define IUP_MASK_UINT "/d+" + +struct _Imask +{ + char* mask_str; + ImaskParsed* fsm; + int casei; + char type; + float fmin, + fmax; + int imin, + imax; +}; + + +int iupMaskCheck(Imask* mask, const char *val) +{ + int ret; + + /* empty text or no mask */ + if (!val || !(*val) || !mask) + return 1; + + ret = iupMaskMatch(val,mask->fsm,0,NULL,NULL,NULL,mask->casei); + if (ret == IMASK_PARTIALMATCH) + return -1; + if (ret != (int)strlen(val)) + return 0; + + switch(mask->type) + { + case 'I': + { + int ival = 0; + sscanf(val,"%d",&ival); + if(ival < mask->imin || ival > mask->imax) + return 0; + break; + } + case 'F': + { + float fval = 0; + sscanf(val,"%f",&fval); + if(fval < mask->fmin || fval > mask->fmax) + return 0; + break; + } + } + + return 1; +} + +Imask* iupMaskCreate(const char* mask_str, int casei) +{ + ImaskParsed* fsm; + Imask* mask; + char* copy_mask_str; + + if (!mask_str) + return NULL; + + /* Parse the mask first */ + copy_mask_str = iupStrDup(mask_str); + if (iupMaskParse(copy_mask_str, &fsm) != IMASK_PARSE_OK) + { + free(copy_mask_str); + return NULL; + } + + mask = (Imask*)malloc(sizeof(Imask)); + memset(mask, 0, sizeof(Imask)); + + mask->mask_str = copy_mask_str; + mask->casei = casei; + mask->fsm = fsm; + + return mask; +} + +Imask* iupMaskCreateInt(int min, int max) +{ + Imask* mask; + + if (min < 0) + mask = iupMaskCreate(IUP_MASK_INT, 0); + else + mask = iupMaskCreate(IUP_MASK_UINT, 0); + + if (mask) + { + mask->imin = min; + mask->imax = max; + mask->type = 'I'; + } + + return mask; +} + +Imask* iupMaskCreateFloat(float min, float max) +{ + Imask* mask; + + if (min < 0) + mask = iupMaskCreate(IUP_MASK_FLOAT, 0); + else + mask = iupMaskCreate(IUP_MASK_UFLOAT, 0); + + if (mask) + { + mask->fmin = min; + mask->fmax = max; + mask->type = 'F'; + } + + return mask; +} + +void iupMaskDestroy(Imask* mask) +{ + free(mask->mask_str); + free(mask->fsm); + free(mask); +} + +char* iupMaskGetStr(Imask* mask) +{ + return mask->mask_str; +} diff --git a/iup/src/iup_mask.h b/iup/src/iup_mask.h new file mode 100755 index 0000000..5e87f24 --- /dev/null +++ b/iup/src/iup_mask.h @@ -0,0 +1,55 @@ +/** \file + * \brief Mask functions + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_MASK_H +#define __IUP_MASK_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup mask Text Mask + * \par + * Used to filter text input in IupText. + * \par + * See \ref iup_mask.h + * \ingroup util */ + +typedef struct _Imask Imask; + +/** Creates a mask given a string. \n + * If casei is true, will turn the mask case insensitive. + * \ingroup mask */ +Imask* iupMaskCreate(const char* mask_str, int casei); + +/** Creates an integer mask with limits. + * \ingroup mask */ +Imask* iupMaskCreateInt(int min, int max); + +/** Creates a float mask with limits. + * \ingroup mask */ +Imask* iupMaskCreateFloat(float min, float max); + +/** Destroys the mask. + * \ingroup mask */ +void iupMaskDestroy(Imask* mask); + +/** Check if the value is valid using the mask to filter it. + * Returns 1 if full match, -1 if partial match, and 0 otherwise. + * \ingroup mask */ +int iupMaskCheck(Imask* mask, const char *value); + +/** Returns the mask string. + * \ingroup mask */ +char* iupMaskGetStr(Imask* mask); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_maskmatch.c b/iup/src/iup_maskmatch.c new file mode 100755 index 0000000..f0aa9fd --- /dev/null +++ b/iup/src/iup_maskmatch.c @@ -0,0 +1,582 @@ +/** \file + * \brief iupmask imask_match_functions + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup_maskparse.h" +#include "iup_maskmatch.h" + + +#define IMASK_MIN_STACK_ELEMENTS 1000 +enum {IMASK_CAPT_OPEN, IMASK_CAPT_CLOSE}; + +typedef struct _ImaskCapt +{ + struct _ImaskCapt* next_one; + int type; + short which_one; + long pos; +} ImaskCapt; + +typedef struct _ImaskMatchVars +{ + const char *text; + ImaskParsed *fsm; + iMaskMatchFunc function; + short *tested; + void *user; +} ImaskMatchVars; + + +typedef struct _ImaskStack +{ + short *stack; + short size; +} ImaskStack; + + +#define isalphanum(_x) (isalnum((int)(_x)) || ((_x) == '_')) + + +/* match functions corresponding to regular expressions */ + +static int match_blanks (const char *text, long j) +{ + return (((text[j] == '\t') || (text[j] == '\xff') || (text[j] == ' ') || + (text[j] == '\n'))) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH; +} + +static int match_non_blanks (const char *text, long j) +{ + return (!((text[j] == '\t') || (text[j] == '\xff') || + (text[j] == ' ') || (text[j] == '\n'))) + ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH; +} + +static int match_alpha (const char *text, long j) +{ + return (isalpha((int)text[j])) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH; +} + +static int match_non_alpha (const char *text, long j) +{ + return (!isalpha((int)text[j]) && (text[j] != '\0')) + ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH; +} + +static int match_digit (const char *text, long j) +{ + return (isdigit((int)text[j])) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH; +} + +static int match_non_digit (const char *text, long j) +{ + return (!isdigit((int)text[j]) && (text[j] != '\0')) + ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH; +} + +static int match_alphanum (const char *text, long j) +{ + return isalphanum (text[j]) ? IMASK_NORMAL_MATCH : IMASK_NO_MATCH; +} + +static int match_non_alphanum (const char *text, long j) +{ + return (isalphanum (text[j]) || (text[j] == '\0')) + ? IMASK_NO_MATCH : IMASK_NORMAL_MATCH; +} + +static int match_word_boundary (const char *text, long j) +{ + if ((j == 0) && isalphanum (text[j])) + return IMASK_NO_CHAR_MATCH; + + else if (isalphanum (text[j - 1]) && !isalphanum (text[j])) + return IMASK_NO_CHAR_MATCH; + + else if (isalphanum (text[j]) && !isalphanum (text[j - 1])) + return IMASK_NO_CHAR_MATCH; + + return IMASK_NO_MATCH; + +} + +static ImaskMatchFunc imask_match_functions[] = +{ + {'w', &match_alphanum}, + {'W', &match_non_alphanum}, + {'d', &match_digit}, + {'D', &match_non_digit}, + {'S', &match_non_blanks}, + {'s', &match_blanks}, + {'b', &match_word_boundary}, + {'l', &match_alpha}, + {'L', &match_non_alpha}, + {'\0', NULL} +}; + +ImaskMatchFunc* iupMaskMatchGetFuncs(void) +{ + return imask_match_functions; +} + +static void iMaskMatchCaptureResult (ImaskMatchVars * vars, ImaskCapt * capture) +{ + ImaskCapt *next = NULL; + + while (capture != NULL) + { + ImaskCapt *cap = capture->next_one; + + capture->next_one = next; + next = capture; + capture = cap; + } + + capture = next; + next = NULL; + + while (capture != NULL) + { + if (capture->type == IMASK_CAPT_OPEN) + { + ImaskCapt *cap = capture->next_one; + + capture->next_one = next; + next = capture; + capture = cap; + } + else + { + if (capture->pos >= next->pos) + (*vars->function)((char)capture->which_one, next->pos, capture->pos, vars->text, vars->user); + + next = next->next_one; + capture = capture->next_one; + } + } +} + +static long iMaskMatchRecursive (ImaskMatchVars * vars, long j, int state, ImaskCapt * capture, int size) +{ + switch (vars->fsm[state].command) + { + case IMASK_NULL_CMD: + if (vars->fsm[state].next1 == 0) /*se chegou ao fim da maquina de estados */ + { + if (vars->function != NULL) + iMaskMatchCaptureResult (vars, capture); /* guarda capturas */ + + return j; + } + + /* verifica o estado atual ja foi avaliado antes */ + { + int count; + for (count = 0; count < size; count++) + if (vars->tested[count] == state) + return IMASK_NOMATCH; + } + + vars->tested[size++] = (short)state; /* indicada que o estado foi testado */ + + /* se houverem dois ramos, chama a funcao recursivamente, + retornando com o primeiro que completar a maquina */ + + if (vars->fsm[state].next1 != vars->fsm[state].next2) + { + long a; + + a = iMaskMatchRecursive (vars, j, vars->fsm[state].next2, capture, size); + + if (a != IMASK_NOMATCH) /* se deu match */ + return a; + + a = iMaskMatchRecursive (vars, j, vars->fsm[state].next1, capture, size); + + return a; + } + break; + + case IMASK_CAP_OPEN_CMD: + { + long a; + ImaskCapt new_cap; + + new_cap.next_one = capture; + new_cap.type = IMASK_CAPT_OPEN; + new_cap.pos = j; + new_cap.which_one = vars->fsm[state].ch; + + a = iMaskMatchRecursive (vars, j, vars->fsm[state].next1, &new_cap, size); + + return a; + } + break; + + case IMASK_CAP_CLOSE_CMD: + { + long a; + ImaskCapt new_cap; + + new_cap.next_one = capture; + new_cap.type = IMASK_CAPT_CLOSE; + new_cap.pos = j - 1; + new_cap.which_one = vars->fsm[state].ch; + + a = iMaskMatchRecursive (vars, j, vars->fsm[state].next1, &new_cap, size); + + return a; + } + + case IMASK_CLASS_CMD: + { + int temp, found = 0, negate; + + temp = vars->fsm[state].next1; + negate = vars->fsm[state].next2; + state++; + + while (vars->fsm[state].command != IMASK_NULL_CMD) + { + if (vars->fsm[state].command == IMASK_CLASS_CMD_RANGE) + { + if ((vars->text[j] >= vars->fsm[state].ch) && + (vars->text[j] <= vars->fsm[state].next1)) + { + found = 1; + break; + } + } + + else if ((vars->fsm[state].command == IMASK_CLASS_CMD_CHAR) && + (vars->text[j] == vars->fsm[state].ch)) + { + found = 1; + break; + }; + state++; + } + + if (found ^ negate) + { + if (vars->text[j] == '\0') + return IMASK_NOMATCH; + j++; + vars->tested = &vars->tested[size + 1]; + size = 0; + return iMaskMatchRecursive (vars, j, temp, capture, size); + } + else + return IMASK_NOMATCH; + } + + case IMASK_CHAR_CMD: + if (vars->text[j] != vars->fsm[state].ch) + return IMASK_NOMATCH; + j++; + vars->tested = &vars->tested[size + 1]; + size = 0; + break; + + case IMASK_ANY_CMD: + if ((vars->text[j] == '\0') || (vars->text[j] == '\n')) + return IMASK_NOMATCH; + j++; + vars->tested = &vars->tested[size + 1]; + size = 0; + break; + + case IMASK_SPC_CMD: + { + long a; + + a = (*imask_match_functions[(int) vars->fsm[state].ch].function) (vars->text, j); + + switch (a) + { + case IMASK_NO_MATCH: + return IMASK_NOMATCH; + + case IMASK_NORMAL_MATCH: + j++; + vars->tested = &vars->tested[size + 1]; + size = 0; + break; + + case IMASK_NO_CHAR_MATCH:; /* does nothing */ + } + } + break; + + case IMASK_BEGIN_CMD: + if (!((vars->text[j - 1] == '\n') || (j == 0))) + return IMASK_NOMATCH; + + break; + + case IMASK_END_CMD: + if (!((vars->text[j] == '\n') || (vars->text[j] == '\0'))) + return IMASK_NOMATCH; + + break; + } + + return iMaskMatchRecursive (vars, j, vars->fsm[state].next1, capture, size); +} + +static int iMaskInStack (ImaskStack * stack, int state) +{ + int a; + for (a = 0; a < stack->size; a++) + if (stack->stack[a] == state) + return 1; + + return 0; +} + +static void iMaskNewStack (ImaskStack * new_stack, short *stack) +{ + new_stack->size = 0; + new_stack->stack = stack; +} + +static void iMaskPushStack (ImaskStack * stack, int value) +{ + stack->stack[stack->size++] = (short)value; +} + +static void iMaskMoveStack (ImaskStack * dest, ImaskStack * source) +{ + short *temp = dest->stack; + dest->stack = source->stack; + source->stack = temp; + + dest->size = source->size; + source->size = 0; +} + +/* non recursive */ +static long iMaskMatchLocal (const char *text, ImaskParsed * fsm, long start, char *addchar, int casei) +{ + int finished = IMASK_NOMATCH; + ImaskStack now, next; + short a1[IMASK_MIN_STACK_ELEMENTS]; + short a2[IMASK_MIN_STACK_ELEMENTS]; + int state; + int j = 0; + int pos; + + if (addchar) addchar[0] = 0; + + j = start; + + iMaskNewStack(&now, a1); + iMaskNewStack(&next, a2); + + iMaskPushStack (&now, fsm[0].next1); + + for (;;) + { + for (pos = 0; pos < now.size; pos++) + { + state = now.stack[pos]; + + if (state == 0) + { + finished = j - start; + continue; + } + + if (fsm[state].command == IMASK_NULL_CMD) + { + if(!iMaskInStack (&now, fsm[state].next2)) + iMaskPushStack (&now, fsm[state].next2); + + if(fsm[state].next1 != fsm[state].next2) + { + if(!iMaskInStack (&now, fsm[state].next1)) + iMaskPushStack (&now, fsm[state].next1); + } + } + else if (text[j] == '\0'); /* ignore \0 */ + else if (((fsm[state].command == IMASK_CHAR_CMD) && + ((!casei && fsm[state].ch == text[j]) || + (casei && tolower(fsm[state].ch) == tolower(text[j])) + ) + ) || + ((fsm[state].command == IMASK_ANY_CMD) && + (text[j] != '\n') + ) + ) + iMaskPushStack (&next, fsm[state].next1); + else if (fsm[state].command == IMASK_SPC_CMD) + { + int ret; + + ret = (*(imask_match_functions[(int) fsm[state].ch].function))(text, j); + switch (ret) + { + case IMASK_NO_MATCH: + break; + + case IMASK_NORMAL_MATCH: + iMaskPushStack (&next, fsm[state].next1); + break; + + case IMASK_NO_CHAR_MATCH: + iMaskPushStack (&now, fsm[state].next1); + break; + } + } + else if (fsm[state].command == IMASK_CLASS_CMD) + { + int temp, found = 0, negate; + + temp = fsm[state].next1; + negate = fsm[state].next2; + state++; + + while (fsm[state].command != IMASK_NULL_CMD) + { + if (fsm[state].command == IMASK_CLASS_CMD_RANGE) + { + if((!casei && (text[j]>=fsm[state].ch) && + (text[j]<=fsm[state].next1) + ) || + (casei && (tolower(text[j])>=tolower(fsm[state].ch)) && + (tolower(text[j])<=tolower(fsm[state].next1)) + ) + ) + { + found = 1; + break; + } + } + else if ((fsm[state].command == IMASK_CLASS_CMD_CHAR) && + ((!casei && text[j] == fsm[state].ch) || + (casei && tolower(text[j]) == tolower(fsm[state].ch)) + ) + ) + { + found = 1; + break; + } + state++; + } + + if(found ^ negate) + { + iMaskPushStack (&next, temp); + state = temp; + } + } + else if (fsm[state].command == IMASK_BEGIN_CMD) + { + if (text[j - 1] == '\n' || j == 0) + iMaskPushStack (&now, fsm[state].next1); + } + else if (fsm[state].command == IMASK_END_CMD) + { + if (text[j] == '\n' || text[j] == '\0') + iMaskPushStack (&now, fsm[state].next1); + } + } + + if (text[j] == '\0') + { + if(next.size == 0 && finished == j) + { + return finished; + } + else if(addchar) + { + int pos; + + for (pos = 0; pos < now.size; pos++) + { + state = now.stack[pos]; + if (fsm[state].command == IMASK_CHAR_CMD) + { + iMaskPushStack (&next, state); + } + else if (fsm[state].command != IMASK_NULL_CMD) + { + next.size = 0; + break; + } + else + { + if (!iMaskInStack (&now, fsm[state].next2)) + iMaskPushStack (&now, fsm[state].next2); + + if (fsm[state].next1 != fsm[state].next2) + { + if (!iMaskInStack (&now, fsm[state].next1)) + iMaskPushStack (&now, fsm[state].next1); + } + } + } + + iMaskMoveStack (&now, &next); + + if (now.size == 1) + { + int inx=0; + state = now.stack[0]; + while(fsm[state].next1 == fsm[state].next2) + { + if(fsm[state].command == IMASK_CHAR_CMD) + addchar[inx++] = fsm[state].ch; + else if(fsm[state].command != IMASK_NULL_CMD) + break; + + state = fsm[state].next1; + } + addchar[inx]=0; + } + } + return IMASK_PARTIALMATCH; + } + + j++; + + if (next.size == 0) + { + if (finished > IMASK_NOMATCH) + return finished; + + return IMASK_NOMATCH; + } + + iMaskMoveStack (&now, &next); + } +} + +int iupMaskMatch (const char *text, ImaskParsed * fsm, long start, iMaskMatchFunc function, void *user, char *addchar, int icase) +{ + long ret; + short tested[10000]; /* to be eliminated */ + ImaskMatchVars vars; + + /* use recursive only for standard capture */ + + if (fsm[0].ch == IMASK_NOCAPTURE) + return iMaskMatchLocal (text, fsm, start, addchar, icase); + + vars.text = text; + vars.fsm = fsm; + vars.tested = tested; + vars.function = function; + vars.user = user; + + ret = iMaskMatchRecursive (&vars, start, fsm[0].next1, NULL, 0); + + return (int)((ret >= start) ? ret - start : ret); +} diff --git a/iup/src/iup_maskmatch.h b/iup/src/iup_maskmatch.h new file mode 100755 index 0000000..d0c7918 --- /dev/null +++ b/iup/src/iup_maskmatch.h @@ -0,0 +1,62 @@ +/** \file + * \brief Mask match private definitions + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_MASKMATCH_H +#define __IUP_MASKMATCH_H + +#ifdef __cplusplus +extern "C" { +#endif + + +enum +{ + IMASK_NULL_CMD=1, + IMASK_ANY_CMD=2, + IMASK_CHAR_CMD=3, + IMASK_SPC_CMD=4, + IMASK_CLASS_CMD=5, + IMASK_BEGIN_CMD=6, + IMASK_END_CMD=7, + IMASK_CAP_OPEN_CMD=71, + IMASK_CAP_CLOSE_CMD=72, + IMASK_NEG_OPEN_CMD=81, + IMASK_NEG_CLOSE_CMD=82 +}; + +enum +{ + IMASK_CLASS_CMD_RANGE=50, + IMASK_CLASS_CMD_CHAR=51 +}; + +enum +{ + IMASK_NORMAL_MATCH, + IMASK_NO_CHAR_MATCH, + IMASK_NO_MATCH +}; + +enum +{ + IMASK_CAPTURE=100, + IMASK_NOCAPTURE=101 +}; + +typedef struct _ImaskMatchFunc +{ + char ch; + int (*function) (const char *, long); +} ImaskMatchFunc; + +ImaskMatchFunc* iupMaskMatchGetFuncs(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_maskparse.c b/iup/src/iup_maskparse.c new file mode 100755 index 0000000..859d951 --- /dev/null +++ b/iup/src/iup_maskparse.c @@ -0,0 +1,547 @@ +/** \file + * \brief imask parser + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include "iup_maskparse.h" +#include "iup_maskmatch.h" + +/* + * Table of characters (customizaveis atraves de iupMaskSetChar) + */ + +static char *imask_parse_chars = "|*+()[]-^/.?^${}~"; +/* 01234567890123456 */ + +#define OR_CH imask_parse_chars[0] /* OR CHaracter */ +#define CL_CH imask_parse_chars[1] /* CLosure CHaracter */ +#define OOM_CH imask_parse_chars[2] /* One Or More CHaracter */ +#define OPGR_CH imask_parse_chars[3] /* OPen GRoup CHaracter */ +#define CLGR_CH imask_parse_chars[4] /* CLose GRoup CHaracter */ +#define OPCL_CH imask_parse_chars[5] /* OPen CLass CHaracter */ +#define CLCL_CH imask_parse_chars[6] /* CLose CLass CHaracter */ +#define SEPCL_CH imask_parse_chars[7] /* SEParate CLass CHaracter */ +#define NEGCL_CH imask_parse_chars[8] /* NEGation CLass CHaracter */ +#define SPC_CH imask_parse_chars[9] /* SPeCial function CHaracter */ +#define ANY_CH imask_parse_chars[10] /* ANY CHaracter */ +#define ONE_CH imask_parse_chars[11] /* ONE or no CHaracter */ +#define BEGIN_CH imask_parse_chars[12] /* BEGINning of a line CHaracter*/ +#define END_CH imask_parse_chars[13] /* END of a line CHaracter */ +#define CAP_OPEN_CH imask_parse_chars[14] /* CAPture OPEN CHaracter */ +#define CAP_CLOSE_CH imask_parse_chars[15] /* CAPture CLOSE CHaracter */ +#define NEG_CH imask_parse_chars[16] /* NEGation CHaracter */ + +#define SPC2_CH '\\' /* SPeCial 2 CHaracter */ + +#define isvalid(c) (c != 0 && c != OR_CH && c != OPGR_CH && c != CLGR_CH &&\ + c != CL_CH && c != OPCL_CH && c != CLCL_CH &&\ + c != CAP_OPEN_CH && c != CAP_CLOSE_CH && c != OOM_CH) + +#define STATE_BLOCK 30 + +typedef struct _ImaskParseVars +{ + const char *string; + int state, j, num_states; + ImaskParsed *fsm; + short capture[30]; + short size; + char nextcap; + jmp_buf env; +} ImaskParseVars; + +static int iMaskParseExpression (ImaskParseVars * vars); +static int iMaskParseTerm (ImaskParseVars * vars); +static int iMaskParseFactor (ImaskParseVars * vars); +static void iMaskParseError (ImaskParseVars *vars); +static void iMaskParseNewState (ImaskParseVars * vars); +static void iMaskParseSetState (ImaskParseVars * vars, int state, char ch, char command, int next1, int next2); + +int iupMaskSetChar (int char_number, char new_char) +{ + if ((char_number < 0) || (char_number > (int)strlen(imask_parse_chars))) + return 0; + + imask_parse_chars[char_number] = new_char; + + return 1; +} + + /* + * Funcao de interface, recebe padrao e retorna array contendo as finite + * state machines (fsm) construidas a partir do padrao + */ + +int iupMaskParse(const char *text, ImaskParsed ** fsm) +{ + int t; + ImaskParseVars vars; + + /* inicializacao das variaveis */ + + vars.state = 1; + vars.j = 0; + vars.num_states = 0; + vars.size = 0; + vars.nextcap = 0; + vars.string = text; + + if ((vars.fsm = (ImaskParsed *) malloc (STATE_BLOCK * sizeof (ImaskParsed))) == NULL) + return IMASK_MEM_ERROR; + + vars.num_states = STATE_BLOCK; + + /* a principio, nao ha captura. Se ocorrer uma, ele e setado + para IMASK_CAPTURE */ + + vars.fsm[0].ch = IMASK_NOCAPTURE; + + if (setjmp (vars.env) == 0) + t = iMaskParseExpression (&vars); + + else + { + free (vars.fsm); + return IMASK_PARSE_ERROR; + } + + /* seta os estados inicial e final, guardando no inicial + (fsm[0].next1) o tamanho da maquina */ + + iMaskParseSetState (&vars, 0, vars.fsm[0].ch, IMASK_NULL_CMD, t, vars.state + 1); + iMaskParseSetState (&vars, vars.state, 0, IMASK_NULL_CMD, 0, 0); + + *fsm = vars.fsm; + + return IMASK_PARSE_OK; +} + +static int iMaskParseExpression (ImaskParseVars * vars) +{ + int r, t1; + int last_state = vars->state - 1; + + t1 = iMaskParseTerm (vars); + r = t1; + + if (vars->string[vars->j] == OR_CH) + { + int t2 = vars->state; + int t3; + + r = t2; + + vars->j++; + iMaskParseNewState (vars); + + t3 = iMaskParseExpression (vars); /* pega o 2o ramo do OR */ + + /* faz o primeiro state antes do OR apontar para o state de entrada + * do OR */ + + if (vars->fsm[last_state].next1 == t1) + vars->fsm[last_state].next1 = t2; + + if (vars->fsm[last_state].next2 == t1) + vars->fsm[last_state].next2 = t2; + + /* faz o ultimo state do primeiro ramo do OR apontar para o + * state de saida do OR */ + + if (vars->fsm[t2 - 1].next1 == t2) + vars->fsm[t2 - 1].next1 = vars->state; + + if (vars->fsm[t2 - 1].next2 == t2) + vars->fsm[t2 - 1].next2 = vars->state; + + iMaskParseSetState (vars, t2, 0, IMASK_NULL_CMD, t1, t3); + iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, + vars->state + 1); + + iMaskParseNewState (vars); + } + return r; +} + +static int iMaskParseTerm (ImaskParseVars * vars) +{ + int r; + + r = iMaskParseFactor (vars); + + if ((vars->string[vars->j] == OPGR_CH) || + (isvalid (vars->string[vars->j])) || + (vars->string[vars->j] == OPCL_CH) || + (vars->string[vars->j] == CAP_OPEN_CH) || + (vars->string[vars->j] == NEG_CH)) + iMaskParseTerm (vars); + + if (!((vars->string[vars->j] == OR_CH) || + (vars->string[vars->j] == CLGR_CH) || + (vars->string[vars->j] == '\0') || + (vars->string[vars->j] == CAP_CLOSE_CH))) + iMaskParseError (vars); + + return r; +} + +static int iMaskParseFactor (ImaskParseVars * vars) +{ + int r, t1, t2 = 0; + + t1 = vars->state; + + if (vars->string[vars->j] == OPGR_CH) + { + vars->j++; + t2 = iMaskParseExpression (vars); + + if (vars->string[vars->j] == CLGR_CH) + vars->j++; + else + iMaskParseError (vars); + } + + else if (vars->string[vars->j] == CAP_OPEN_CH) + { + vars->fsm[0].ch = IMASK_CAPTURE; + iMaskParseSetState (vars, vars->state, vars->nextcap, + IMASK_CAP_OPEN_CMD, vars->state + 1, vars->state + 1); + t2 = vars->state; + iMaskParseNewState (vars); + vars->capture[++vars->size] = vars->nextcap++; + vars->j++; + + iMaskParseExpression (vars); + + if (vars->string[vars->j] == CAP_CLOSE_CH) + { + iMaskParseSetState (vars, vars->state, (char)vars->capture[vars->size--], + IMASK_CAP_CLOSE_CMD, vars->state + 1, vars->state + 1); + + iMaskParseNewState (vars); + vars->j++; + } + else + iMaskParseError (vars); + + } + + else if (vars->string[vars->j] == ANY_CH) + { + iMaskParseSetState (vars, vars->state, 1, IMASK_ANY_CMD, vars->state + 1, vars->state + 1); + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + } + + else if (vars->string[vars->j] == NEG_CH) + { + int t6; + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + t6 = iMaskParseFactor (vars); + iMaskParseSetState (vars, t2, 1, IMASK_NEG_OPEN_CMD, t6, vars->state); + iMaskParseSetState (vars, vars->state, 1, IMASK_NEG_CLOSE_CMD, vars->state + 1, vars->state + 1); + iMaskParseNewState (vars); + } + + else if (vars->string[vars->j] == BEGIN_CH) + { + iMaskParseSetState (vars, vars->state, 1, IMASK_BEGIN_CMD, vars->state + 1, + vars->state + 1); + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + } + else if (vars->string[vars->j] == END_CH) + { + iMaskParseSetState (vars, vars->state, 1, IMASK_END_CMD, vars->state + 1, + vars->state + 1); + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + } + + else if (isvalid (vars->string[vars->j]) && (vars->string[vars->j] + != SPC_CH) && (vars->string[vars->j] != ANY_CH)) + { + iMaskParseSetState (vars, vars->state, vars->string[vars->j], + IMASK_CHAR_CMD, vars->state + 1, vars->state + 1); + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + } + + else if (vars->string[vars->j] == OPCL_CH) + { + vars->j++; + iMaskParseSetState (vars, vars->state, 0, IMASK_CLASS_CMD, 0, 0); + + if (vars->string[vars->j] == NEGCL_CH) + { + vars->fsm[vars->state].next2 = 1; + vars->j++; + } + + t2 = vars->state; + iMaskParseNewState (vars); + + if (vars->string[vars->j] == SEPCL_CH) + iMaskParseError (vars); + + while ((vars->string[vars->j] != CLCL_CH) && (vars->string[vars->j] != '\n') + && (vars->string[vars->j] != '\0')) + { + if (vars->string[vars->j] == SPC_CH) + { + char temp; + + vars->j++; + switch (vars->string[vars->j]) + { + case 'n': + temp = '\n'; + break; + + case 't': + temp = '\t'; + break; + + case 'e': + temp = 27; + break; + + default: + temp = vars->string[vars->j]; + } + iMaskParseSetState (vars, vars->state, temp, IMASK_CLASS_CMD_CHAR, 0, 0); + vars->j++; + iMaskParseNewState (vars); + } + else if (vars->string[vars->j] == SEPCL_CH) + { + char temp = 0; + + vars->j++; + + if (vars->string[vars->j] == SPC_CH) + { + vars->j++; + switch (vars->string[vars->j]) + { + case 'n': + temp = '\n'; + break; + + case 't': + temp = '\t'; + break; + + case 'e': + temp = 27; + break; + + default: + temp = vars->string[vars->j]; + } + } + else if (vars->string[vars->j] != CLCL_CH) + temp = vars->string[vars->j]; + + else + iMaskParseError (vars); + + iMaskParseSetState (vars, vars->state - 1, vars->fsm[vars->state - 1].ch, + IMASK_CLASS_CMD_RANGE, temp, 0); + vars->j++; + } + else if (vars->string[vars->j] == BEGIN_CH) + { + iMaskParseSetState (vars, vars->state, 1, IMASK_BEGIN_CMD, vars->state + 1, vars->state + 1); + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + } + else if (vars->string[vars->j] == END_CH) + { + iMaskParseSetState (vars, vars->state, 1, IMASK_END_CMD, vars->state + 1, vars->state + 1); + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + } + + else + { + iMaskParseSetState (vars, vars->state, vars->string[vars->j], IMASK_CLASS_CMD_CHAR, 0, 0); + vars->j++; + iMaskParseNewState (vars); + } + + } + if (vars->string[vars->j] != CLCL_CH) + iMaskParseError (vars); + iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, vars->state + 1); + vars->fsm[t2].next1 = vars->state; + vars->j++; + iMaskParseNewState (vars); + + } + + else if (vars->string[vars->j] == SPC_CH) + { + int loop1 = 0; + ImaskMatchFunc* match_functions = iupMaskMatchGetFuncs(); + + vars->j++; + + while (match_functions[loop1].ch != '\0' && + match_functions[loop1].ch != vars->string[vars->j]) + loop1++; + + if (match_functions[loop1].ch == '\0') + { + int temp; + + switch (vars->string[vars->j]) + { + case 'n': + temp = '\n'; + break; + + case 't': + temp = '\t'; + break; + + case 'e': + temp = 27; + break; + + case 'x': + vars->j++; + sscanf (&vars->string[vars->j], "%2x", &temp); + vars->j++; + break; + + case 'o': + vars->j++; + sscanf (&vars->string[vars->j], "%3o", &temp); + vars->j += 2; + break; + + default: + if (isdigit((int)vars->string[vars->j])) + { + sscanf (&vars->string[vars->j], "%3d", &temp); + if (temp > 255) + { + iMaskParseError (vars); + } + vars->j += 2; + } + else + temp = vars->string[vars->j]; + } + iMaskParseSetState (vars, vars->state, (char)temp, IMASK_CHAR_CMD, vars->state + 1, vars->state + 1); + } + + else + { + iMaskParseSetState (vars, vars->state, (char)loop1, IMASK_SPC_CMD, vars->state + 1, vars->state + 1); + } + + t2 = vars->state; + vars->j++; + iMaskParseNewState (vars); + } + else + iMaskParseError (vars); + + if (vars->string[vars->j] == CL_CH) + { + iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, t2); + r = vars->state; + + if (vars->fsm[t1 - 1].next1 == t1) + vars->fsm[t1 - 1].next1 = vars->state; + + if (vars->fsm[t1 - 1].next2 == t1) + vars->fsm[t1 - 1].next2 = vars->state; + + vars->j++; + iMaskParseNewState (vars); + } + + else if (vars->string[vars->j] == ONE_CH) + { + iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, t2); + r = vars->state; + + if (vars->fsm[t1 - 1].next1 == t1) + vars->fsm[t1 - 1].next1 = vars->state; + + if (vars->fsm[t1 - 1].next2 == t1) + vars->fsm[t1 - 1].next2 = vars->state; + + if (vars->fsm[vars->state - 1].next1 == vars->state) + vars->fsm[vars->state - 1].next1 = vars->state + 1; + + if (vars->fsm[vars->state - 1].next2 == vars->state) + vars->fsm[vars->state - 1].next2 = vars->state + 1; + + vars->j++; + iMaskParseNewState (vars); + + iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, vars->state + 1); + + iMaskParseNewState (vars); + } + else if (vars->string[vars->j] == OOM_CH) + { + iMaskParseSetState (vars, vars->state, 0, IMASK_NULL_CMD, vars->state + 1, t2); + r = t2; + + vars->j++; + + iMaskParseNewState (vars); + + } + else + r = t2; + + return r; +} + +static void iMaskParseError (ImaskParseVars * vars) +{ + longjmp (vars->env, 1); +} + +static void iMaskParseNewState (ImaskParseVars * vars) +{ + + if (vars->state >= vars->num_states - 1) + { + ImaskParsed *new_fsm = (ImaskParsed*) realloc (vars->fsm, (vars->num_states + STATE_BLOCK) * sizeof (ImaskParsed)); + vars->fsm = new_fsm; + vars->num_states += STATE_BLOCK; + } + + vars->state++; +} + +static void iMaskParseSetState (ImaskParseVars * vars, int state, char ch, char command, int next1, int next2) +{ + vars->fsm[state].ch = ch; + vars->fsm[state].command = command; + vars->fsm[state].next1 = next1; + vars->fsm[state].next2 = next2; +} diff --git a/iup/src/iup_maskparse.h b/iup/src/iup_maskparse.h new file mode 100755 index 0000000..a12a7fa --- /dev/null +++ b/iup/src/iup_maskparse.h @@ -0,0 +1,46 @@ +/** \file + * \brief Mask internal functions + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_MASKPARSE_H +#define __IUP_MASKPARSE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct _ImaskParsed +{ + char ch; + int command; + int next1; + int next2; +} ImaskParsed; + +typedef int (*iMaskMatchFunc) (char which_one, long next_pos, long capture_pos, const char *text, void* user_data); + +/* Parse the mask and if it is ok create and returns the internal structure. */ +int iupMaskParse(const char* mask, ImaskParsed** imk); + +/* Do the pattern matching on the given text. */ +int iupMaskMatch(const char* text, ImaskParsed* imk, long start, iMaskMatchFunc mask_func, void* user_data, char *addchar, int icase); + +/* Change a control character. */ +int iupMaskSetChar(int char_number, char new_char); + +/* iupMaskMatch return codes */ +#define IMASK_PARSE_OK 0 /* No error */ +#define IMASK_NOMATCH -1 /* no match */ +#define IMASK_MEM_ERROR -2 /* memory error */ +#define IMASK_PARSE_ERROR -3 /* parser error */ +#define IMASK_PARTIALMATCH -4 /* partial match */ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_menu.c b/iup/src/iup_menu.c new file mode 100755 index 0000000..7e62744 --- /dev/null +++ b/iup/src/iup_menu.c @@ -0,0 +1,364 @@ +/** \file + * \brief Menu Resources. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_assert.h" +#include "iup_key.h" +#include "iup_stdcontrols.h" +#include "iup_drvinfo.h" +#include "iup_menu.h" + + +struct _IcontrolData +{ + int child_id; /* serial number used by child controls */ +}; + +static Ihandle* iMenuGetTopMenu(Ihandle* ih) +{ + for (; ih->parent; ih = ih->parent) + ; /* empty*/ + return ih; +} + +int iupMenuGetChildId(Ihandle* ih) +{ + Ihandle* dlg = IupGetDialog(ih); + if (dlg) + return iupDialogGetChildId(ih); + else + { + int id; + ih = iMenuGetTopMenu(ih); + if (!ih) return -1; + id = ih->data->child_id; + if (id == 0) id = 100; /* initial number */ + ih->data->child_id = id+1; + return id; + } +} + +char* iupMenuGetChildIdStr(Ihandle* ih) +{ + Ihandle* dlg = IupGetDialog(ih); + if (dlg) + return iupDialogGetChildIdStr(ih); + else + { + char *str = iupStrGetMemory(50); + Ihandle* dialog = iMenuGetTopMenu(ih); + sprintf(str, "iup-%s-%d", ih->iclass->name, dialog->data->child_id); + return str; + } +} + +int iupMenuIsMenuBar(Ihandle* ih) +{ + if (ih->parent && ih->parent->iclass->nativetype == IUP_TYPEDIALOG) + return 1; + else + return 0; +} + +static void iMenuAdjustPos(int *x, int *y) +{ + int cursor_x = 0, cursor_y = 0; + int screen_width = 0, screen_height = 0; + + if (*x == IUP_CENTER || *y == IUP_CENTER || + *x == IUP_RIGHT || *y == IUP_RIGHT || + *x == IUP_CENTERPARENT || *y == IUP_CENTERPARENT) + iupdrvGetScreenSize(&screen_width, &screen_height); + + if (*x == IUP_MOUSEPOS || *y == IUP_MOUSEPOS) + iupdrvGetCursorPos(&cursor_x, &cursor_y); + + switch (*x) + { + case IUP_CENTER: + *x = screen_width/2; + break; + case IUP_LEFT: + *x = 0; + break; + case IUP_RIGHT: + *x = screen_width; + break; + case IUP_MOUSEPOS: + *x = cursor_x; + break; + } + + switch (*y) + { + case IUP_CENTER: + *y = screen_height/2; + break; + case IUP_LEFT: + *y = 0; + break; + case IUP_RIGHT: + *y = screen_height; + break; + case IUP_MOUSEPOS: + *y = cursor_y; + break; + } +} + +char* iupMenuProcessTitle(Ihandle* ih, const char* title) +{ + int keychar; + char* str; + + char* key = iupAttribGet(ih, "KEY"); + if (!key) return (char*)title; + + keychar = iupKeyNameToCode(key); + if (!keychar) return (char*)title; + + str = strchr(title, keychar); + if (str) + { + int len = strlen(title); + char *new_title = malloc(len+1+1); + int pos = str-title; + memcpy(new_title, title, pos); + new_title[pos] = '&'; + memcpy(new_title+pos+1, title+pos, len-pos+1); + return new_title; + } + + return (char*)title; +} + +int iupMenuPopup(Ihandle* ih, int x, int y) +{ + iMenuAdjustPos(&x, &y); + return iupdrvMenuPopup(ih, x, y); +} + + +/******************************************************************/ + + +static int iItemCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0])); + if (params[1]) iupAttribStoreStr(ih, "ACTION", (char*)(params[1])); + } + return IUP_NOERROR; +} + +static int iSubmenuCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0])); + if (params[1]) + { + Ihandle* child = (Ihandle*)(params[1]); + if (child->iclass->nativetype == IUP_TYPEMENU) + IupAppend(ih, child); + } + } + return IUP_NOERROR; +} + +static int iMenuCreateMethod(Ihandle* ih, void** params) +{ + ih->data = iupALLOCCTRLDATA(); + + if (params) + { + Ihandle** iparams = (Ihandle**)params; + while (*iparams) + { + Ihandle* child = (Ihandle*)(*iparams); + if (child->iclass->nativetype == IUP_TYPEMENU) + IupAppend(ih, child); + iparams++; + } + } + + return IUP_NOERROR; +} + + +/******************************************************************************************/ + + +Iclass* iupSeparatorGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "separator"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPEMENU; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Common */ + iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvSeparatorInitClass(ic); + + return ic; +} + +Iclass* iupItemGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "item"; + ic->format = "SA"; /* one optional string and one optional callback name */ + ic->nativetype = IUP_TYPEMENU; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iItemCreateMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "HIGHLIGHT_CB", ""); + iupClassRegisterCallback(ic, "ACTION", ""); + + /* Common Callbacks */ + iupClassRegisterCallback(ic, "MAP_CB", ""); + iupClassRegisterCallback(ic, "UNMAP_CB", ""); + iupClassRegisterCallback(ic, "HELP_CB", ""); + + /* Common */ + iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "AUTOTOGGLE", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "KEY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvItemInitClass(ic); + + return ic; +} + +Iclass* iupSubmenuGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "submenu"; + ic->format = "SH"; /* one string and one Ihandle (both optional) */ + ic->nativetype = IUP_TYPEMENU; + ic->childtype = IUP_CHILD_ONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iSubmenuCreateMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "HIGHLIGHT_CB", ""); + + /* Common Callbacks */ + iupClassRegisterCallback(ic, "MAP_CB", ""); + iupClassRegisterCallback(ic, "UNMAP_CB", ""); + + /* Common */ + iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "KEY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvSubmenuInitClass(ic); + + return ic; +} + +Iclass* iupMenuGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "menu"; + ic->format = "g"; /* (Ihandle**) */ + ic->nativetype = IUP_TYPEMENU; + ic->childtype = IUP_CHILDMANY; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iMenuCreateMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "OPEN_CB", ""); + iupClassRegisterCallback(ic, "MENUCLOSE_CB", ""); + + /* Common Callbacks */ + iupClassRegisterCallback(ic, "MAP_CB", ""); + iupClassRegisterCallback(ic, "UNMAP_CB", ""); + + /* Common */ + iupClassRegisterAttribute(ic, "WID", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "NAME", NULL, iupBaseSetNameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "RADIO", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvMenuInitClass(ic); + + return ic; +} + +/************************************************************************/ + +Ihandle* IupItem(const char* title, const char* action) +{ + void *params[2]; + params[0] = (void*)title; + params[1] = (void*)action; + return IupCreatev("item", params); +} + +Ihandle* IupSubmenu(const char* title, Ihandle* child) +{ + void *params[2]; + params[0] = (void*)title; + params[1] = (void*)child; + return IupCreatev("submenu", params); +} + +Ihandle *IupMenuv(Ihandle **children) +{ + return IupCreatev("menu", (void**)children); +} + +Ihandle *IupMenu(Ihandle *child, ...) +{ + Ihandle **children; + Ihandle *ih; + + va_list arglist; + va_start(arglist, child); + children = (Ihandle **)iupObjectGetParamList(child, arglist); + va_end(arglist); + + ih = IupCreatev("menu", (void**)children); + free(children); + + return ih; +} + +Ihandle* IupSeparator(void) +{ + return IupCreate("separator"); +} diff --git a/iup/src/iup_menu.h b/iup/src/iup_menu.h new file mode 100755 index 0000000..f1eb164 --- /dev/null +++ b/iup/src/iup_menu.h @@ -0,0 +1,35 @@ +/** \file + * \brief IUP Menu Class + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_MENU_H +#define __IUP_MENU_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Shows a popup menu in the given position. +* Must return IUP_ERROR or IUP_NOERROR. +* Called only from IupPopup. +*/ +int iupMenuPopup(Ihandle* ih, int x, int y); + +int iupdrvMenuPopup(Ihandle* ih, int x, int y); +void iupdrvSeparatorInitClass(Iclass* ic); +void iupdrvItemInitClass(Iclass* ic); +void iupdrvMenuInitClass(Iclass* ic); +void iupdrvSubmenuInitClass(Iclass* ic); + +char* iupMenuProcessTitle(Ihandle* ih, const char* title); +int iupMenuGetChildId(Ihandle* ih); +char* iupMenuGetChildIdStr(Ihandle* ih); +int iupMenuIsMenuBar(Ihandle* ih); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_messagedlg.c b/iup/src/iup_messagedlg.c new file mode 100755 index 0000000..816e740 --- /dev/null +++ b/iup/src/iup_messagedlg.c @@ -0,0 +1,70 @@ +/** \file + * \brief IupMessageDlg class + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_stdcontrols.h" + + +Ihandle* IupMessageDlg(void) +{ + return IupCreate("messagedlg"); +} + +Iclass* iupMessageDlgGetClass(void) +{ + Iclass* ic = iupClassNew(iupDialogGetClass()); + + ic->name = "messagedlg"; + ic->nativetype = IUP_TYPEDIALOG; + ic->is_interactive = 1; + + /* reset not used native dialog methods */ + ic->parent->LayoutUpdate = NULL; + ic->parent->SetChildrenPosition = NULL; + ic->parent->Map = NULL; + ic->parent->UnMap = NULL; + + iupdrvMessageDlgInitClass(ic); + + /* only the default values */ + iupClassRegisterAttribute(ic, "DIALOGTYPE", NULL, NULL, IUPAF_SAMEASSYSTEM, "MESSAGE", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BUTTONS", NULL, NULL, IUPAF_SAMEASSYSTEM, "OK", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BUTTONDEFAULT", NULL, NULL, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BUTTONRESPONSE", NULL, NULL, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT); + + return ic; +} + +void IupMessage(const char* title, const char* message) +{ + Ihandle* dlg = IupCreate("messagedlg"); + + IupSetAttribute(dlg, "TITLE", (char*)title); + IupSetAttribute(dlg, "VALUE", (char*)message); + IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG")); + + IupPopup(dlg, IUP_CENTER, IUP_CENTER); + IupDestroy(dlg); +} + +void IupMessagef(const char *title, const char *format, ...) +{ + static char message[SHRT_MAX]; + va_list arglist; + va_start(arglist, format); + vsprintf(message, format, arglist); + va_end (arglist); + IupMessage(title, message); +} diff --git a/iup/src/iup_names.c b/iup/src/iup_names.c new file mode 100755 index 0000000..9ec01a6 --- /dev/null +++ b/iup/src/iup_names.c @@ -0,0 +1,193 @@ +/** \file + * \brief Ihandle <-> Name table manager. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_table.h" +#include "iup_names.h" +#include "iup_object.h" +#include "iup_class.h" +#include "iup_assert.h" +#include "iup_str.h" + + +static Itable *inames_strtable = NULL; /* table indexed by name containing Ihandle* address */ +static Itable *inames_ihtable = NULL; /* table indexed by Ihandle* address containing names */ + +void iupNamesDestroyHandles(void) +{ + char *name; + Ihandle** ih_array, *ih; + int count, i = 0; + + count = iupTableCount(inames_strtable); + if (!count) + return; + + ih_array = (Ihandle**)malloc(count * sizeof(Ihandle*)); + + /* store the names before updating so we can remove elements in the loop */ + name = iupTableFirst(inames_strtable); + while (name) + { + ih = (Ihandle*)iupTableGetCurr(inames_strtable); + if (iupObjectCheck(ih)) + { + ih_array[i] = ih; + i++; + } + name = iupTableNext(inames_strtable); + } + + count = i; + for (i = 0; i < count; i++) + { + if (iupObjectCheck(ih_array[i])) + IupDestroy(ih_array[i]); + } + + free(ih_array); +} + +void iupNamesInit(void) +{ + inames_strtable = iupTableCreate(IUPTABLE_STRINGINDEXED); + inames_ihtable = iupTableCreate(IUPTABLE_POINTERINDEXED); +} + +void iupNamesFinish(void) +{ + iupTableDestroy(inames_strtable); + inames_strtable = NULL; + + iupTableDestroy(inames_ihtable); + inames_ihtable = NULL; +} + +void iupRemoveAllNames(Ihandle* ih) +{ + char *name; + Ihandle *cur_ih; + + name = iupTableFirst(inames_strtable); + while (name) + { + cur_ih = (Ihandle*)iupTableGetCurr(inames_strtable); + if (iupObjectCheck(cur_ih) && cur_ih == ih) + iupTableRemoveCurr(inames_strtable); + + name = iupTableNext(inames_strtable); + } + + iupTableRemove(inames_ihtable, (char*)ih); +} + +Ihandle *IupGetHandle(const char *name) +{ + if (!name) /* no iupASSERT needed here */ + return NULL; + return (Ihandle*)iupTableGet (inames_strtable, name); +} + +Ihandle* IupSetHandle(const char *name, Ihandle *ih) +{ + Ihandle *old_ih; + + iupASSERT(name!=NULL); + if (!name) + return NULL; + + old_ih = iupTableGet(inames_strtable, name); + if (ih != NULL) + { + iupTableSet(inames_strtable, name, ih, IUPTABLE_POINTER); + iupTableSet(inames_ihtable, (char*)ih, (char*)name, IUPTABLE_STRING); /* keep only the last name set */ + } + else + { + ih = iupTableGet(inames_strtable, name); + iupTableRemove(inames_strtable, name); + if (ih) + { + char* cur_name = iupTableGet(inames_ihtable, (char*)ih); + if (iupStrEqualNoCase(cur_name, name)) + iupTableRemove(inames_ihtable, (char*)ih); + } + } + return old_ih; +} + +int IupGetAllNames(char** names, int n) +{ + int i = 0; + char* name; + + if (!names || !n) + return iupTableCount(inames_strtable); + + name = iupTableFirst(inames_strtable); + while (name) + { + names[i] = name; + i++; + if (i == n) + break; + + name = iupTableNext(inames_strtable); + } + return i; +} + +static int iNamesCountDialogs(void) +{ + int i = 0; + char* name = iupTableFirst(inames_strtable); + while (name) + { + Ihandle* dlg = (Ihandle*)iupTableGetCurr(inames_strtable); + if (iupObjectCheck(dlg) && dlg->iclass->nativetype == IUP_TYPEDIALOG) + i++; + + name = iupTableNext(inames_strtable); + } + return i; +} + +int IupGetAllDialogs(char** names, int n) +{ + int i = 0; + char* name; + + if (!names || !n) + return iNamesCountDialogs(); + + name = iupTableFirst(inames_strtable); + while (name) + { + Ihandle* dlg = (Ihandle*)iupTableGetCurr(inames_strtable); + if (iupObjectCheck(dlg) && dlg->iclass->nativetype == IUP_TYPEDIALOG) + { + names[i] = name; + i++; + if (i == n) + break; + } + + name = iupTableNext(inames_strtable); + } + return i; +} + +char* IupGetName(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return NULL; + return iupTableGet(inames_ihtable, (char*)ih); +} diff --git a/iup/src/iup_names.h b/iup/src/iup_names.h new file mode 100755 index 0000000..9d3adc7 --- /dev/null +++ b/iup/src/iup_names.h @@ -0,0 +1,34 @@ +/** \file + * \brief Ihandle <-> Name table manager. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_NAMES_H +#define __IUP_NAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* called only in IupOpen and IupClose */ +void iupNamesInit(void); +void iupNamesFinish(void); +void iupNamesDestroyHandles(void); + +/* called from IupDestroy */ +void iupRemoveAllNames(Ihandle* ih); + +/* Other functions declared in and implemented here. +IupGetName +IupGetAllDialogs +IupGetAllNames +IupSetHandle +IupGetHandle +*/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_normalizer.c b/iup/src/iup_normalizer.c new file mode 100755 index 0000000..7f7a5ff --- /dev/null +++ b/iup/src/iup_normalizer.c @@ -0,0 +1,188 @@ +/** \file + * \brief Normalizer Element. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_array.h" +#include "iup_stdcontrols.h" + + +enum {NORMALIZE_NONE, NORMALIZE_WIDTH, NORMALIZE_HEIGHT}; + +struct _IcontrolData +{ + Iarray* ih_array; +}; + +int iupNormalizeGetNormalizeSize(const char* value) +{ + if (!value) + return NORMALIZE_NONE; + if (iupStrEqualNoCase(value, "HORIZONTAL")) + return NORMALIZE_WIDTH; + if (iupStrEqualNoCase(value, "VERTICAL")) + return NORMALIZE_HEIGHT; + if (iupStrEqualNoCase(value, "BOTH")) + return NORMALIZE_WIDTH|NORMALIZE_HEIGHT; + return NORMALIZE_NONE; +} + +char* iupNormalizeGetNormalizeSizeStr(int normalize) +{ + char* int2str[] = {"NONE", "HORIZONTAL", "VERTICAL", "BOTH"}; + return int2str[normalize]; +} + +void iupNormalizeSizeBoxChild(Ihandle *ih, int normalize, int children_natural_maxwidth, int children_natural_maxheight) +{ + /* It is called from Vbox and Hbox ComputeNaturalSizeMethod after the natural size is calculated */ + /* reset the natural width and/or height */ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating && (child->iclass->nativetype != IUP_TYPEVOID || !iupStrEqual(child->iclass->name, "fill"))) + { + if (normalize & NORMALIZE_WIDTH) + child->naturalwidth = children_natural_maxwidth; + if (normalize & NORMALIZE_HEIGHT) + child->naturalheight = children_natural_maxheight; + } + } +} + +static int iNormalizerSetNormalizeAttrib(Ihandle* ih, const char* value) +{ + int i, count; + Ihandle** ih_list; + Ihandle* ih_control; + int natural_maxwidth = 0, natural_maxheight = 0; + int normalize = iupNormalizeGetNormalizeSize(value); + if (!normalize) + return 1; + + count = iupArrayCount(ih->data->ih_array); + ih_list = (Ihandle**)iupArrayGetData(ih->data->ih_array); + + for (i = 0; i < count; i++) + { + ih_control = ih_list[i]; + iupBaseComputeNaturalSize(ih_control); + natural_maxwidth = iupMAX(natural_maxwidth, ih_control->naturalwidth); + natural_maxheight = iupMAX(natural_maxheight, ih_control->naturalheight); + } + + for (i = 0; i < count; i++) + { + ih_control = ih_list[i]; + if (!ih_control->is_floating && (ih_control->iclass->nativetype != IUP_TYPEVOID || !iupStrEqual(ih_control->iclass->name, "fill"))) + { + if (normalize & NORMALIZE_WIDTH) + ih_control->userwidth = natural_maxwidth; + if (normalize & NORMALIZE_HEIGHT) + ih_control->userheight = natural_maxheight; + } + } + return 1; +} + +static int iNormalizerSetAddControlHandleAttrib(Ihandle* ih, const char* value) +{ + Ihandle* ih_control = (Ihandle*)value; + Ihandle** ih_list = (Ihandle**)iupArrayInc(ih->data->ih_array); + int count = iupArrayCount(ih->data->ih_array); + ih_list[count-1] = ih_control; + return 0; +} + +static int iNormalizerSetAddControlAttrib(Ihandle* ih, const char* value) +{ + return iNormalizerSetAddControlHandleAttrib(ih, (char*)IupGetHandle(value)); +} + +static void iNormalizerComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + (void)w; + (void)h; + (void)expand; + iNormalizerSetNormalizeAttrib(ih, iupAttribGetStr(ih, "NORMALIZE")); +} + +static int iNormalizerCreateMethod(Ihandle* ih, void** params) +{ + ih->data = iupALLOCCTRLDATA(); + ih->data->ih_array = iupArrayCreate(10, sizeof(Ihandle*)); + + if (params) + { + Ihandle** iparams = (Ihandle**)params; + Ihandle** ih_list; + int i = 0; + while (*iparams) + { + ih_list = (Ihandle**)iupArrayInc(ih->data->ih_array); + ih_list[i] = *iparams; + i++; + iparams++; + } + } + + return IUP_NOERROR; +} + +static void iNormalizerDestroy(Ihandle* ih) +{ + iupArrayDestroy(ih->data->ih_array); +} + +Iclass* iupNormalizerGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "normalizer"; + ic->format = "g"; /* array of Ihandle */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iNormalizerCreateMethod; + ic->Map = iupBaseTypeVoidMapMethod; + ic->ComputeNaturalSize = iNormalizerComputeNaturalSizeMethod; + ic->Destroy = iNormalizerDestroy; + + iupClassRegisterAttribute(ic, "NORMALIZE", NULL, iNormalizerSetNormalizeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ADDCONTROL_HANDLE", NULL, iNormalizerSetAddControlHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ADDCONTROL", NULL, iNormalizerSetAddControlAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} + +Ihandle *IupNormalizerv(Ihandle **ih_list) +{ + return IupCreatev("normalizer", (void**)ih_list); +} + +Ihandle *IupNormalizer(Ihandle* ih_first, ...) +{ + Ihandle **ih_list; + Ihandle *ih; + + va_list arglist; + va_start(arglist, ih_first); + ih_list = (Ihandle **)iupObjectGetParamList(ih_first, arglist); + va_end(arglist); + + ih = IupCreatev("normalizer", (void**)ih_list); + free(ih_list); + + return ih; +} diff --git a/iup/src/iup_object.c b/iup/src/iup_object.c new file mode 100755 index 0000000..7f4ce23 --- /dev/null +++ b/iup/src/iup_object.c @@ -0,0 +1,180 @@ +/** \file + * \brief Ihandle management + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_assert.h" +#include "iup_register.h" +#include "iup_names.h" + + +static Ihandle* iHandleCreate(void) +{ + Ihandle *ih = (Ihandle*)malloc(sizeof(Ihandle)); + memset(ih, 0, sizeof(Ihandle)); + + ih->sig[0] = 'I'; + ih->sig[1] = 'U'; + ih->sig[2] = 'P'; + ih->sig[3] = 0; + + ih->serial = -1; + + ih->attrib = iupTableCreate(IUPTABLE_STRINGINDEXED); + + return ih; +} + +static void iHandleDestroy(Ihandle* ih) +{ + iupTableDestroy(ih->attrib); + memset(ih, 0, sizeof(Ihandle)); + free(ih); +} + +int iupObjectCheck(Ihandle* ih) +{ + char* sig = (char*)ih; + + if (!ih) return 0; + + if (sig[0] != 'I' || + sig[1] != 'U' || + sig[2] != 'P' || + sig[3] != 0) + return 0; + + return 1; +} + +Ihandle* iupObjectCreate(Iclass* iclass, void** params) +{ + /* create the base handle structure */ + Ihandle* ih = iHandleCreate(); + + ih->iclass = iclass; + + /* create the element */ + if (iupClassObjectCreate(ih, params) == IUP_ERROR) + { + iupERROR1("IUP object creation failed (%s).", iclass->name); + iHandleDestroy(ih); + return NULL; + } + + /* ensure attributes default values, at this time only the ones that can be set before map */ + iupClassObjectEnsureDefaultAttributes(ih); + + return ih; +} + +void** iupObjectGetParamList(void* first, va_list arglist) +{ + const int INITIAL_NUMBER = 50; + void **params; + void *param; + int max_count = INITIAL_NUMBER, count = 0; + + params = (void **) malloc (sizeof (void *) * INITIAL_NUMBER); + + param = first; + + while (param != NULL) + { + params[count] = param; + count++; + + /* verifica se precisa realocar memoria */ + if (count >= max_count) + { + void **new_params = NULL; + + max_count += INITIAL_NUMBER; + + new_params = (void **) realloc (params, sizeof (void *) * max_count); + + params = new_params; + } + + param = va_arg (arglist, void*); + } + params[count] = NULL; + + return params; +} + +Ihandle* IupCreatev(const char *name, void **params) +{ + Iclass *ic; + iupASSERT(name!=NULL); + ic = iupRegisterFindClass(name); + if (ic) + return iupObjectCreate(ic, params); + else + return NULL; +} + +Ihandle *IupCreatep(const char *name, void* first, ...) +{ + va_list arglist; + void **params; + Ihandle *ih; + iupASSERT(name!=NULL); + + va_start(arglist, first); + params = iupObjectGetParamList(first, arglist); + va_end(arglist); + + ih = IupCreatev(name, params); + free(params); + + return ih; +} + +Ihandle* IupCreate(const char *name) +{ + iupASSERT(name!=NULL); + return IupCreatev(name, NULL); +} + +void IupDestroy(Ihandle *ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* Hide before destroy to avoid children redraw */ + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + IupHide(ih); + + /* Destroy all its children. + Just need to remove the first child, + IupDetach will update firstchild. */ + while (ih->firstchild) + IupDestroy(ih->firstchild); + + /* unmap if mapped and remove from its parent child list */ + IupDetach(ih); + + /* destroy the element */ + iupClassObjectDestroy(ih); + + /* destroy the private data */ + if (ih->data) + free(ih->data); + + /* removes all the names associated with the element */ + iupRemoveAllNames(ih); + + /* destroy the base handle structure */ + iHandleDestroy(ih); +} diff --git a/iup/src/iup_object.h b/iup/src/iup_object.h new file mode 100755 index 0000000..6f6b668 --- /dev/null +++ b/iup/src/iup_object.h @@ -0,0 +1,132 @@ +/** \file + * \brief Ihandle Object Definition + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_OBJECT_H +#define __IUP_OBJECT_H + +#include +#include "iup_class.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup object Ihandle Object + * \par + * Object handle for all the elements. + * \par + * See \ref iup_object.h + * \ingroup cpi */ + + +/* SIZE to RASTERSIZE + * \ingroup object */ +#define iupWIDTH2RASTER(_w, _cw) ((int)((_w * _cw)/4.0 + 0.5)) +/* SIZE to RASTERSIZE + * \ingroup object */ +#define iupHEIGHT2RASTER(_h, _ch) ((int)((_h * _ch)/8.0 + 0.5)) + +/* RASTERSIZE to SIZE + * \ingroup object */ +#define iupRASTER2WIDTH(_w, _cw) ((int)((_w * 4.0)/_cw + 0.5)) +/* RASTERSIZE to SIZE + * \ingroup object */ +#define iupRASTER2HEIGHT(_h, _ch) ((int)((_h * 8.0)/_ch + 0.5)) + + +/** Expand configuration + * \ingroup object */ +enum Iexpand { + IUP_EXPAND_NONE = 0x00, + IUP_EXPAND_H0 = 0x01, /* only set by IupFill */ + IUP_EXPAND_H1 = 0x02, + IUP_EXPAND_W0 = 0x04, /* only set by IupFill */ + IUP_EXPAND_W1 = 0x08 +}; + +/** Expand configuration + * \ingroup object */ +#define IUP_EXPAND_WIDTH (IUP_EXPAND_W1 | IUP_EXPAND_W0) +/** Expand configuration + * \ingroup object */ +#define IUP_EXPAND_HEIGHT (IUP_EXPAND_H1 | IUP_EXPAND_H0) +/** Expand configuration + * \ingroup object */ +#define IUP_EXPAND_BOTH (IUP_EXPAND_WIDTH | IUP_EXPAND_HEIGHT) + + +/** A simple definition that do not depends on the native system, + but helps a lot when writing native code. See \ref iup_object.h for definitions. + * \ingroup object */ +#if defined(GTK_MAJOR_VERSION) +typedef struct _GtkWidget InativeHandle; +#elif defined(XmVERSION) +typedef struct _WidgetRec InativeHandle; +#elif defined(WINVER) +typedef struct HWND__ InativeHandle; +#else +typedef struct _InativeHandle InativeHandle; +#endif + +/** Each control may define its own structure in its private module. + * \ingroup object */ +typedef struct _IcontrolData IcontrolData; +/** IcontrolData allocation utility. + * \ingroup object */ +#define iupALLOCCTRLDATA() ((IcontrolData*)calloc(1, sizeof(IcontrolData))) + + +/** Structure used by all the elements. + * \ingroup object */ +struct Ihandle_ +{ + char sig[4]; /**< IUP Signature, initialized with "IUP", cleared on destroy */ + Iclass* iclass; /**< Ihandle Class */ + Itable* attrib; /**< attributes table */ + int serial; /**< serial number used for controls that need a numeric id, initialized with -1 */ + InativeHandle* handle; /**< native handle. initialized when mapped. InativeHandle definition is system dependent. */ + int expand; /**< expand configuration, a combination of \ref Iexpand, for containers is a combination of the children expand's */ + int is_floating; /**< floating attribute */ + int x, y; /**< upper-left corner relative to the native parent. always 0 for the dialog. */ + int userwidth, userheight; /**< user defined size for the control using SIZE or RASTERSIZE */ + int naturalwidth, naturalheight; /**< the calculated size based in the control contents and the user size */ + int currentwidth, currentheight; /**< actual size of the control in pixels (window size, including decorations and margins). */ + int has_maxsize, has_minsize; /**< indicates that the control has the attributes MAXSIZE and/or MINSIZE */ + Ihandle* parent; /**< previous control in the hierarchy tree */ + Ihandle* firstchild; /**< first child control in the hierarchy tree */ + Ihandle* brother; /**< next control inside parent */ + IcontrolData* data; /**< private control data. automatically freed if not NULL in destroy */ +}; + + +/* Creates an object. initializes iclass and nativetype. + * Called only from IupCreate and IupLoad. */ +Ihandle* iupObjectCreate(Iclass* ic, void** params); + + +/** Utility that returns an array of parameters. Must call free for the returned value after usage. + * Used by the creation functions of objects that receives a NULL terminated array of parameters. + * \ingroup object */ +void** iupObjectGetParamList(void* first, va_list arglist); + +/** Checks if the handle is still valid based on the signature. + * \ingroup object */ +int iupObjectCheck(Ihandle* ih); + + +/* Other functions declared in and implemented here. +IupCreate +IupCreatev +IupCreatep +IupDestroy +*/ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_open.c b/iup/src/iup_open.c new file mode 100755 index 0000000..e02561e --- /dev/null +++ b/iup/src/iup_open.c @@ -0,0 +1,119 @@ +/** \file + * \brief Windows Driver Core + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_globalattrib.h" +#include "iup_names.h" +#include "iup_func.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_drvfont.h" +#include "iup_predial.h" +#include "iup_class.h" +#include "iup_register.h" +#include "iup_key.h" +#include "iup_image.h" +#include "iup_dlglist.h" +#include "iup_assert.h" +#include "iup_strmessage.h" + + +static int iup_opened = 0; +static int iup_dummy_argc = 0; +static char ** iup_dummy_argv = {0}; + +int iupIsOpened(void) +{ + return iup_opened; +} + +int IupOpen(int *argc, char ***argv) +{ + if (iup_opened) + return IUP_OPENED; + iup_opened = 1; + + if (!argc || !(*argc) || !argv) + { + argc = &iup_dummy_argc; + argv = &iup_dummy_argv; + } + + iupNamesInit(); + iupFuncInit(); + iupStrMessageInit(); + iupGlobalAttribInit(); + iupRegisterInit(); + iupKeyInit(); + iupImageStockInit(); + + IupSetLanguage("ENGLISH"); + IupSetGlobal("VERSION", IupVersion()); + IupSetGlobal("COPYRIGHT", IUP_COPYRIGHT); + + if (iupdrvOpen(argc, argv) == IUP_NOERROR) + { + char* value; + + iupdrvFontInit(); + + IupStoreGlobal("SYSTEM", iupdrvGetSystemName()); + IupStoreGlobal("SYSTEMVERSION", iupdrvGetSystemVersion()); + IupStoreGlobal("COMPUTERNAME", iupdrvGetComputerName()); + IupStoreGlobal("USERNAME", iupdrvGetUserName()); + IupSetGlobal("DEFAULTFONT", iupdrvGetSystemFont()); /* Use SetGlobal because iupdrvGetSystemFont returns a static string */ + + iupRegisterInternalClasses(); + + value = getenv("IUP_QUIET"); + if (value && !iupStrBoolean(value)) /* if not defined do NOT print */ + printf("IUP %s %s\n", IupVersion(), IUP_COPYRIGHT); + + value = getenv("IUP_VERSION"); + if (iupStrBoolean(value)) + iupVersionDlg(); + + return IUP_NOERROR; + } + else + { +#ifdef IUP_ASSERT + /* can not use pre-defined dialogs here, so only output to console. */ + fprintf(stderr, "IUP ERROR: IupOpen failed.\n"); +#endif + return IUP_ERROR; + } +} + +void IupClose(void) +{ + if (!iup_opened) + return; + iup_opened = 0; + + iupdrvSetIdleFunction(NULL); /* stop any idle */ + + iupDlgListDestroyAll(); /* destroy all dialogs */ + iupNamesDestroyHandles(); /* destroy everything else that have names */ + iupImageStockFinish(); /* release stock images hash table and the images */ + + iupRegisterFinish(); /* release native classes */ + + iupdrvFontFinish(); /* release font cache */ + iupdrvClose(); /* release native handles and allocated memory */ + + iupGlobalAttribFinish(); /* release global hash table */ + iupStrMessageFinish(); /* release messages hash table */ + iupFuncFinish(); /* release callbacks hash table */ + iupNamesFinish(); /* release names hash table */ + + iupStrGetMemory(-1); /* Frees internal buffer */ +} diff --git a/iup/src/iup_predial.c b/iup/src/iup_predial.c new file mode 100755 index 0000000..b48e246 --- /dev/null +++ b/iup/src/iup_predial.c @@ -0,0 +1,510 @@ +/** \file + * \brief pre-defined dialogs + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_predial.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_strmessage.h" + + +static int CB_button_OK (Ihandle* ih) +{ + iupAttribSetStr(IupGetDialog(ih), "STATUS", "1"); + return IUP_CLOSE; +} + +static int CB_button_CANCEL (Ihandle* ih) +{ + iupAttribSetStr(IupGetDialog(ih), "STATUS", "-1"); + return IUP_CLOSE; +} + +static int CB_lista (Ihandle *h, char *n, int o, int v) +{ + static clock_t oldtimesel = 0; + static int oldopc = 0; + (void)n; /* not used */ + if (v) + { + clock_t timesel = clock(); + + iupAttribSetStrf(IupGetDialog(h), "_IUP_LIST_NUMBER", "%d", o-1); + + if (((timesel-oldtimesel) < 500) && (o == oldopc)) + return IUP_CLOSE; + + oldtimesel = timesel; + oldopc = o; + } + return IUP_DEFAULT; +} + +int IupListDialog (int type, const char *title, int size, const char** list_str, + int op, int max_col, int max_lin, int* marks) +{ + Ihandle *lst, *ok, *dlg, *cancel, *dlg_box, *button_box; + int i, bt; + char attrib_str[20]; + char *m=NULL; + + if (size > 999) + size = 999; + + lst = IupList(NULL); + + for (i=0;isize) op=1; + iupAttribSetStrf(dlg, "_IUP_LIST_NUMBER", "%d", op-1); + IupSetfAttribute(lst,"VALUE","%d",op); + IupSetCallback(lst, "ACTION", (Icallback)CB_lista); + } + else if ((type == 2) && (marks != NULL)) + { + m=(char *)marks; + for (i=0;i len) + len = len2; + } + if (b3) + { + int len3 = strlen(b3); + if (len3 > len) + len = len3; + } + + if (len > 7) + padding = "12x2"; + else + padding = "18x5"; + + button_box = IupHbox(NULL); + IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL"); + IupSetAttribute(button_box,"MARGIN","0x0"); + IupAppend(button_box, IupFill()); /* to center the buttons */ + + button = IupButton(b1, NULL); + iupAttribSetStrf(button, "_IUP_BUTTON_NUMBER", "1"); + IupSetAttribute(button, "PADDING", padding); + IupAppend(button_box, button); + IupSetCallback (button, "ACTION", (Icallback)iAlarmButtonAction_CB); + default_enter = button; + default_esc = button; + + if (b2 != NULL) + { + button = IupButton(b2, NULL); + iupAttribSetStr(button, "_IUP_BUTTON_NUMBER", "2"); + IupSetAttribute(button, "PADDING", padding); + IupAppend(button_box, button); + IupSetCallback (button, "ACTION", (Icallback)iAlarmButtonAction_CB); + default_esc = button; + } + + if (b3 != NULL) + { + button = IupButton(b3, NULL); + iupAttribSetStr(button, "_IUP_BUTTON_NUMBER", "3"); + IupSetAttribute(button, "PADDING", padding); + IupAppend(button_box, button); + IupSetCallback (button, "ACTION", (Icallback)iAlarmButtonAction_CB); + default_esc = button; + } + + IupAppend(button_box, IupFill()); /* to center the buttons */ + + dlg_box = IupVbox( + IupLabel(msg), + IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL"), + button_box, + NULL); + + IupSetAttribute(dlg_box,"MARGIN","10x10"); + IupSetAttribute(dlg_box,"GAP","10"); + + dlg = IupDialog(dlg_box); + + IupSetAttribute(dlg,"TITLE", title); + IupSetAttribute(dlg,"DIALOGFRAME","YES"); + IupSetAttribute(dlg,"DIALOGHINT","YES"); + IupSetAttributeHandle(dlg,"DEFAULTENTER", default_enter); + IupSetAttributeHandle(dlg,"DEFAULTESC", default_esc); + IupSetAttribute(dlg,"PARENTDIALOG", IupGetGlobal("PARENTDIALOG")); + IupSetAttribute(dlg,"ICON", IupGetGlobal("ICON")); + + IupPopup(dlg,IUP_CENTERPARENT,IUP_CENTERPARENT); + + bt = iupAttribGetInt(dlg, "_IUP_BUTTON_NUMBER"); + + IupDestroy(dlg); + + return bt; +} + +int iupDataEntry(int maxlin, + int* maxcol, + int* maxscr, + char* title, + char** text, + char** data) +{ + int i, bt; + Ihandle *ok, *cancel, *dlg, *vb, *hb, **txt, **lbl, *button_box, *dlg_box; + + txt = (Ihandle **)calloc(maxlin, sizeof(Ihandle*)); + if (txt == NULL) return -2; + lbl = (Ihandle **)calloc(maxlin+1, sizeof(Ihandle*)); + + vb = IupVbox(NULL); + + for (i=0; i=0; i--) + { + if (filename[i] == '\\' || filename[i] == '/') + { + if (dir) + { + strncpy(dir, filename, i+1); + dir[i+1] = 0; + } + + if (filter) + { + strcpy(filter, filename+i+1); + filter[n-i] = 0; + } + + return; + } + } +} + +int IupGetFile(char* filename) +{ + Ihandle *dlg = 0; + int ret; + char filter[4096] = "*.*"; + static char dir[4096] = ""; /* static will make the dir persist from one call to another if not defined */ + + if (!filename) return -1; + + dlg = IupFileDlg(); + + iupStrSplitFileName(filename, dir, filter); + + IupSetAttribute(dlg, "FILTER", filter); + IupSetAttribute(dlg, "DIRECTORY", dir); + IupSetAttribute(dlg, "ALLOWNEW", "YES"); + IupSetAttribute(dlg, "NOCHANGEDIR", "YES"); + IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG")); + IupSetAttribute(dlg, "ICON", IupGetGlobal("ICON")); + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + + ret = IupGetInt(dlg, "STATUS"); + if (ret != -1) + { + char* value = IupGetAttribute(dlg, "VALUE"); + if (value) + { + strcpy(filename, value); + iupStrSplitFileName(filename, dir, NULL); + } + } + + IupDestroy(dlg); + + return ret; +} + +int IupGetText(const char* title, char* text) +{ + Ihandle *ok, *cancel, *multi_text, *button_box, *dlg_box, *dlg; + int bt; + + multi_text = IupMultiLine(NULL); + IupSetAttribute(multi_text,"EXPAND", "YES"); + IupSetAttribute(multi_text,"VALUE", text); + IupSetAttribute(multi_text,"FONT", "Courier, 12"); + IupSetAttribute(multi_text, "VISIBLELINES", "10"); + IupSetAttribute(multi_text, "VISIBLECOLUMNS", "50"); + + ok = IupButton("OK", NULL); + IupSetAttribute(ok, "PADDING", "20x5"); + IupSetCallback(ok, "ACTION", (Icallback)CB_button_OK); + + cancel = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL); + IupSetAttribute(cancel, "PADDING", "20x5"); + IupSetCallback(cancel, "ACTION", (Icallback)CB_button_CANCEL); + + button_box = IupHbox( + IupFill(), + ok, + cancel, + NULL); + IupSetAttribute(button_box,"MARGIN","0x0"); + IupSetAttribute(button_box, "NORMALIZESIZE", "HORIZONTAL"); + + dlg_box = IupVbox( + multi_text, + button_box, + NULL); + + IupSetAttribute(dlg_box,"MARGIN","10x10"); + IupSetAttribute(dlg_box,"GAP","10"); + + dlg = IupDialog (dlg_box); + + IupSetAttribute(dlg,"TITLE", title); + IupSetAttribute(dlg,"MINBOX","NO"); + IupSetAttribute(dlg,"MAXBOX","NO"); + IupSetAttributeHandle(dlg,"DEFAULTENTER", ok); + IupSetAttributeHandle(dlg,"DEFAULTESC", cancel); + IupSetAttribute(dlg,"PARENTDIALOG", IupGetGlobal("PARENTDIALOG")); + IupSetAttribute(dlg,"ICON", IupGetGlobal("ICON")); + + IupMap(dlg); + + IupSetAttribute(multi_text, "VISIBLELINES", NULL); + IupSetAttribute(multi_text, "VISIBLECOLUMNS", NULL); + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + + bt = IupGetInt(dlg, "STATUS"); + if (bt==1) + strcpy(text, IupGetAttribute(multi_text, "VALUE")); + else + bt = 0; /* return 0 instead of -1 */ + + IupDestroy(dlg); + return bt; +} + +int IupGetColor(int x, int y, unsigned char *r, unsigned char *g, unsigned char *b) +{ + int ret; + Ihandle* dlg = IupColorDlg(); + + IupSetAttribute(dlg, "TITLE", iupStrMessageGet("IUP_GETCOLOR")); + IupSetfAttribute(dlg, "VALUE", "%d %d %d", *r, *g, *b); + IupSetAttribute(dlg, "PARENTDIALOG", IupGetGlobal("PARENTDIALOG")); + IupSetAttribute(dlg, "ICON", IupGetGlobal("ICON")); + + IupPopup(dlg, x, y); + + ret = IupGetInt(dlg, "STATUS"); + if (ret) + iupStrToRGB(IupGetAttribute(dlg, "VALUE"), r, g, b); + + IupDestroy(dlg); + + return ret; +} + +void iupVersionDlg(void) +{ + Ihandle* dlg; + + dlg = IupDialog(IupVbox(IupFrame(IupVbox( + IupLabel(IupVersion()), + IupLabel(IUP_VERSION_DATE), + IupLabel(IUP_COPYRIGHT), + NULL)), + IupButton("OK", NULL), + NULL)); + + IupSetAttribute(dlg,"TITLE","IUP Version"); + IupSetAttribute(dlg,"DIALOGFRAME","YES"); + IupSetAttribute(dlg,"DIALOGHINT","YES"); + IupSetAttribute(dlg,"GAP","10"); + IupSetAttribute(dlg,"MARGIN","10x10"); + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + IupDestroy(dlg); +} diff --git a/iup/src/iup_predial.h b/iup/src/iup_predial.h new file mode 100755 index 0000000..e282e53 --- /dev/null +++ b/iup/src/iup_predial.h @@ -0,0 +1,32 @@ +/** \file + * \brief IUP Core pre-defined dialogs. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_PREDIAL_H +#define __IUP_PREDIAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Used by the IupScanf implementation */ +int iupDataEntry(int maxlin, int* maxcol, int* maxscr, char* title, char** text, char** data); + +/* Popups a dialog with IUP Version, used in IupOpen */ +void iupVersionDlg(void); + +/* Other functions declared in and implemented here. +IupListDialog +IupAlarm +IupMessagef +IupGetFile +IupGetText +*/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_progressbar.c b/iup/src/iup_progressbar.c new file mode 100755 index 0000000..76fdefc --- /dev/null +++ b/iup/src/iup_progressbar.c @@ -0,0 +1,118 @@ +/** \file + * \brief ProgressBar control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_progressbar.h" + + +void iProgressBarCropValue(Ihandle* ih) +{ + if(ih->data->value > ih->data->vmax) + ih->data->value = ih->data->vmax; + else if(ih->data->value < ih->data->vmin) + ih->data->value = ih->data->vmin; +} + +char* iProgressBarGetValueAttrib(Ihandle* ih) +{ + char* value = iupStrGetMemory(30); + sprintf(value, "%g", ih->data->value); + return value; +} + +char* iProgressBarGetDashedAttrib(Ihandle* ih) +{ + if(ih->data->dashed) + return "YES"; + else + return "NO"; +} + +static int iProgressBarSetMinAttrib(Ihandle* ih, const char* value) +{ + ih->data->vmin = atof(value); + iProgressBarCropValue(ih); + return 1; +} + +static int iProgressBarSetMaxAttrib(Ihandle* ih, const char* value) +{ + ih->data->vmax = atof(value); + iProgressBarCropValue(ih); + return 1; +} + +static int iProgressBarCreateMethod(Ihandle* ih, void **params) +{ + (void)params; + + ih->data = iupALLOCCTRLDATA(); + + /* default values */ + ih->data->vmax = 1; + ih->data->dashed = 0; + + /* progress bar natural size is 200x30 */ + IupSetAttribute(ih, "RASTERSIZE", "200x30"); + + return IUP_NOERROR; +} + +Iclass* iupProgressBarGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "progressbar"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iProgressBarCreateMethod; + + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Common Callbacks */ + iupClassRegisterCallback(ic, "MAP_CB", ""); + iupClassRegisterCallback(ic, "UNMAP_CB", ""); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupProgressBar only */ + iupClassRegisterAttribute(ic, "MIN", NULL, iProgressBarSetMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MAX", NULL, iProgressBarSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED); + + iupdrvProgressBarInitClass(ic); + + return ic; +} + +Ihandle *IupProgressBar(void) +{ + return IupCreate("progressbar"); +} diff --git a/iup/src/iup_progressbar.h b/iup/src/iup_progressbar.h new file mode 100755 index 0000000..44ffb7f --- /dev/null +++ b/iup/src/iup_progressbar.h @@ -0,0 +1,35 @@ +/** \file + * \brief ProgressBar Control + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_PROGRESSBAR_H +#define __IUP_PROGRESSBAR_H + +#ifdef __cplusplus +extern "C" { +#endif + + +struct _IcontrolData +{ + int dashed, + marquee; + + double value, /* value is min < value < max */ + vmin, + vmax; +}; + +void iProgressBarCropValue(Ihandle* ih); +char* iProgressBarGetValueAttrib(Ihandle* ih); +char* iProgressBarGetDashedAttrib(Ihandle* ih); + +void iupdrvProgressBarInitClass(Iclass* ic); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_radio.c b/iup/src/iup_radio.c new file mode 100755 index 0000000..c6e7cdd --- /dev/null +++ b/iup/src/iup_radio.c @@ -0,0 +1,195 @@ +/** \file + * \brief Radio Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" + + +Ihandle *iupRadioFindToggleParent(Ihandle* ih_toggle) +{ + Ihandle *p; + for (p=ih_toggle; p->parent; p=p->parent) + { + if (p->iclass->nativetype == IUP_TYPEVOID && + iupStrEqual(p->iclass->name, "radio")) + return p; + } + + return NULL; +} + +static int iRadioFindToggleChild(Ihandle* ih, Ihandle* ih_toggle) +{ + Ihandle* child; + + if (ih == ih_toggle) /* found child that match the toggle */ + return 1; + + for (child = ih->firstchild; child; child = child->brother) + { + if (iRadioFindToggleChild(child, ih_toggle)) + return 1; + } + + return 0; +} + +static Ihandle* iRadioGetToggleChildOn(Ihandle* ih) +{ + Ihandle* child; + + if (iupStrEqual(ih->iclass->name, "toggle") && /* found child that is a toggle and it is ON */ + IupGetInt(ih, "VALUE")) + return ih; + + for (child = ih->firstchild; child; child = child->brother) + { + Ihandle* ih_toggle = iRadioGetToggleChildOn(child); + if (ih_toggle) + return ih_toggle; + } + + return NULL; +} + +/******************************************************************************/ + + +static int iRadioSetValueHandleAttrib(Ihandle* ih, const char* value) +{ + Ihandle* ih_toggle = (Ihandle*)value; + if (!iupObjectCheck(ih_toggle)) + return 0; + + if (!iupStrEqual(ih_toggle->iclass->name, "toggle")) + return 0; + + if (iRadioFindToggleChild(ih->firstchild, ih_toggle)) + IupSetAttribute(ih_toggle, "VALUE", "ON"); + + return 0; +} + +char* iRadioGetValueHandleAttrib(Ihandle* ih) +{ + return (char*)iRadioGetToggleChildOn(ih->firstchild); +} + +static int iRadioSetValueAttrib(Ihandle* ih, const char* value) +{ + Ihandle *ih_toggle; + + if (!value) + return 0; + + ih_toggle = IupGetHandle(value); + if (!ih_toggle) + return 0; + + iRadioSetValueHandleAttrib(ih, (char*)ih_toggle); + return 0; +} + +char* iRadioGetValueAttrib(Ihandle* ih) +{ + Ihandle *ih_toggle = (Ihandle*)iRadioGetValueHandleAttrib(ih); + if (!ih_toggle) + return NULL; + + return IupGetName(ih_toggle); +} + +/******************************************************************************/ + + +static int iRadioCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + Ihandle** iparams = (Ihandle**)params; + if (*iparams) + IupAppend(ih, *iparams); + } + return IUP_NOERROR; +} + +static void iRadioComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + Ihandle* child = ih->firstchild; + if (child) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + *expand = child->expand; + *w = child->naturalwidth; + *h = child->naturalheight; + } +} + +static void iRadioSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + iupBaseSetCurrentSize(ih->firstchild, ih->currentwidth, ih->currentheight, shrink); +} + +static void iRadioSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + iupBaseSetPosition(ih->firstchild, x, y); +} + + +/******************************************************************************/ + + +Ihandle* IupRadio(Ihandle* child) +{ + void *params[2]; + params[0] = (void*)child; + params[1] = NULL; + return IupCreatev("radio", params); +} + +Iclass* iupRadioGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "radio"; + ic->format = "H"; /* one optional ihandle */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILD_ONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iRadioCreateMethod; + ic->Map = iupBaseTypeVoidMapMethod; + ic->ComputeNaturalSize = iRadioComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iRadioSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iRadioSetChildrenPositionMethod; + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Base Container */ + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CLIENTSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Radio only */ + iupClassRegisterAttribute(ic, "VALUE", iRadioGetValueAttrib, iRadioSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE_HANDLE", iRadioGetValueHandleAttrib, iRadioSetValueHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + + return ic; +} diff --git a/iup/src/iup_register.c b/iup/src/iup_register.c new file mode 100755 index 0000000..4c58038 --- /dev/null +++ b/iup/src/iup_register.c @@ -0,0 +1,123 @@ +/** \file +* \brief Register the Internal Controls +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_register.h" +#include "iup_stdcontrols.h" + + +static Itable *iregister_table = NULL; /* table indexed by name containing Iclass* address */ + +void iupRegisterInit(void) +{ + iregister_table = iupTableCreate(IUPTABLE_STRINGINDEXED); +} + +void iupRegisterFinish(void) +{ + char* name = iupTableFirst(iregister_table); + while (name) + { + Iclass* ic = (Iclass*)iupTableGetCurr(iregister_table); + iupClassRelease(ic); + name = iupTableNext(iregister_table); + } + + iupTableDestroy(iregister_table); + iregister_table = NULL; +} + +int iupRegisterGetClasses(char *list[], int n) +{ + int i = 0; + char* name = iupTableFirst(iregister_table); + + if (!list || !n) + return iupTableCount(iregister_table); + + while (name) + { + list[i] = name; + i++; + if (i == n) + break; + + name = iupTableNext(iregister_table); + } + + return i; +} + +Iclass* iupRegisterFindClass(const char* name) +{ + return (Iclass*)iupTableGet(iregister_table, name); +} + +void iupRegisterClass(Iclass* ic) +{ + Iclass* old_ic = (Iclass*)iupTableGet(iregister_table, ic->name); + if (old_ic) + iupClassRelease(old_ic); + + iupTableSet(iregister_table, ic->name, (void*)ic, IUPTABLE_POINTER); +} + + +/***************************************************************/ + +void iupRegisterInternalClasses(void) +{ + iupRegisterClass(iupDialogGetClass()); + iupRegisterClass(iupMessageDlgGetClass()); + iupRegisterClass(iupColorDlgGetClass()); + iupRegisterClass(iupFontDlgGetClass()); + iupRegisterClass(iupFileDlgGetClass()); + + iupRegisterClass(iupTimerGetClass()); + iupRegisterClass(iupImageGetClass()); + iupRegisterClass(iupImageRGBGetClass()); + iupRegisterClass(iupImageRGBAGetClass()); + iupRegisterClass(iupUserGetClass()); + iupRegisterClass(iupClipboardGetClass()); + + iupRegisterClass(iupRadioGetClass()); + iupRegisterClass(iupFillGetClass()); + iupRegisterClass(iupHboxGetClass()); + iupRegisterClass(iupVboxGetClass()); + iupRegisterClass(iupZboxGetClass()); + iupRegisterClass(iupCboxGetClass()); + iupRegisterClass(iupSboxGetClass()); + iupRegisterClass(iupNormalizerGetClass()); + + iupRegisterClass(iupMenuGetClass()); + iupRegisterClass(iupItemGetClass()); + iupRegisterClass(iupSeparatorGetClass()); + iupRegisterClass(iupSubmenuGetClass()); + + iupRegisterClass(iupLabelGetClass()); + iupRegisterClass(iupButtonGetClass()); + iupRegisterClass(iupToggleGetClass()); + iupRegisterClass(iupCanvasGetClass()); + iupRegisterClass(iupFrameGetClass()); + iupRegisterClass(iupTextGetClass()); + iupRegisterClass(iupMultilineGetClass()); + iupRegisterClass(iupListGetClass()); + + iupRegisterClass(iupProgressBarGetClass()); + iupRegisterClass(iupValGetClass()); + iupRegisterClass(iupTabsGetClass()); + iupRegisterClass(iupSpinGetClass()); + iupRegisterClass(iupSpinboxGetClass()); + iupRegisterClass(iupTreeGetClass()); +} diff --git a/iup/src/iup_register.h b/iup/src/iup_register.h new file mode 100755 index 0000000..b5e6907 --- /dev/null +++ b/iup/src/iup_register.h @@ -0,0 +1,47 @@ +/** \file + * \brief Register the Controls + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_REGISTER_H +#define __IUP_REGISTER_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup register Class Registration + * \par + * All controls are registered so the creation using IupCreate can work. + * \par + * See \ref iup_register.h + * \ingroup cpi */ + + +/** Returns a class instance from a class name. The class name must be previously registered using \ref iupRegisterClass. + * \ingroup register */ +Iclass* iupRegisterFindClass(const char* name); + +/** Register a class. + * \ingroup register */ +void iupRegisterClass(Iclass* ic); + + +/* Register the internal classes. Called only from IupOpen. */ +void iupRegisterInternalClasses(void); + +/* Initializes the class registry. Called only from IupOpen. */ +void iupRegisterInit(void); +void iupRegisterFinish(void); + +/* Get the registered classes. Used in documentation tests. */ +int iupRegisterGetClasses(char *list[], int n); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_sbox.c b/iup/src/iup_sbox.c new file mode 100755 index 0000000..5a71d33 --- /dev/null +++ b/iup/src/iup_sbox.c @@ -0,0 +1,413 @@ +/** \file + * \brief iupsbox control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_childtree.h" + + +#define ISBOX_THICK 5 + +enum { ISBOX_NORTH, ISBOX_SOUTH, ISBOX_WEST, ISBOX_EAST }; + +struct _IcontrolData +{ + int w, h; + int isholding; + int start_x, start_y; + int start_w, start_h; + + int direction; /* one of the types: ISBOX_NORTH, ISBOX_SOUTH, ISBOX_WEST, ISBOX_EAST */ +}; + + +static int iSboxGetYborder(Ihandle* ih) +{ + if (ih->data->direction == ISBOX_NORTH || ih->data->direction == ISBOX_SOUTH) + return ISBOX_THICK; + else + return 0; +} + +static int iSboxGetXborder(Ihandle* ih) +{ + if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST) + return ISBOX_THICK; + else + return 0; +} + +static void iSboxSaveDimension(Ihandle* ih, int w, int h) +{ + ih->data->w = w; + ih->data->h = h; +} + +static void iSboxAddDecorOffset(Ihandle* ih, int *x, int *y) +{ + /* skip north thumb if there is one */ + if (ih->data->direction == ISBOX_NORTH) + *y += ISBOX_THICK; + + /* skip west thumb if there is one */ + if (ih->data->direction == ISBOX_WEST) + *x += ISBOX_THICK; +} + +static void iSboxGetFinalSize(Ihandle* ih, int direction, int *w, int *h) +{ + int final_x, final_y; + int diff_x, diff_y; + + iupStrToIntInt(IupGetGlobal("CURSORPOS"), &final_x, &final_y, 'x'); + + diff_x = final_x - ih->data->start_x; + diff_y = final_y - ih->data->start_y; + + if(direction == ISBOX_WEST) + diff_x = -diff_x; + + if(direction == ISBOX_NORTH) + diff_y = -diff_y; + + *w = diff_x + ih->data->start_w; + *h = diff_y + ih->data->start_h; +} + +static void iSboxShakeControls(Ihandle* ih) +{ + int new_w, new_h; + + iSboxGetFinalSize(ih, ih->data->direction, &new_w, &new_h); + + if (ih->data->direction == ISBOX_WEST || ih->data->direction == ISBOX_EAST) + { + if (new_w != ih->data->w) + { + if (new_w > ih->naturalwidth) + iSboxSaveDimension(ih, new_w, ih->data->h); + else + iSboxSaveDimension(ih, new_w, ih->naturalwidth); + } + } + else if (ih->data->direction == ISBOX_SOUTH || ih->data->direction == ISBOX_NORTH) + { + if(new_h != ih->data->h) + { + if (new_h > ih->naturalheight) + iSboxSaveDimension(ih, ih->data->w, new_h); + else + iSboxSaveDimension(ih, ih->naturalheight, new_h); + } + } + + IupRefresh(ih); /* may affect all the elements in the dialog */ +} + + +/*****************************************************************************\ +|* Callbacks of canvas bar *| +\*****************************************************************************/ + + +static int iSboxMotion_CB(Ihandle* bar, int x, int y, char *r) +{ + Ihandle* ih = bar->parent; + + if (ih->data->isholding) + iSboxShakeControls(ih); + + (void)x; + (void)y; + (void)r; + return IUP_DEFAULT; +} + +static int iSboxButton_CB(Ihandle* bar, int button, int pressed, int x, int y, char* status) +{ + Ihandle* ih = bar->parent; + + if (button!=IUP_BUTTON1) + return IUP_DEFAULT; + + if (!ih->data->isholding && pressed) + { + ih->data->isholding = 1; + + /* Save the cursor position */ + iupStrToIntInt(IupGetGlobal("CURSORPOS"), &ih->data->start_x, &ih->data->start_y, 'x'); + + /* Save the initial size */ + ih->data->start_w = ih->data->w; + ih->data->start_h = ih->data->h; + } + else if (ih->data->isholding && !pressed) + ih->data->isholding = 0; + + (void)x; + (void)y; + (void)status; + return IUP_DEFAULT; +} + +static int iSboxFocus_CB(Ihandle* bar, int focus) +{ + Ihandle* ih = bar->parent; + + if (!ih || focus) /* use only kill focus */ + return IUP_DEFAULT; + + if (ih->data->isholding) + ih->data->isholding = 0; + + return IUP_DEFAULT; +} + + +/*****************************************************************************\ +|* Attributes *| +\*****************************************************************************/ + + +static char* iSboxGetClientSizeAttrib(Ihandle* ih) +{ + int width, height; + char* str = iupStrGetMemory(20); + width = ih->currentwidth; + height = ih->currentheight; + width -= iSboxGetXborder(ih); + height -= iSboxGetYborder(ih); + if (width < 0) width = 0; + if (height < 0) height = 0; + sprintf(str, "%dx%d", width, height); + return str; +} + +static int iSboxSetColorAttrib(Ihandle* ih, const char* value) +{ + IupSetAttribute(ih->firstchild, "BGCOLOR", value); + return 0; /* do not store value in hash table */ +} + +static int iSboxSetDirectionAttrib(Ihandle* ih, const char* value) +{ + if (ih->handle) /* only before map */ + return 0; + + if (iupStrEqual(value, "NORTH")) + ih->data->direction = ISBOX_NORTH; + else if(iupStrEqual(value, "SOUTH")) + ih->data->direction = ISBOX_SOUTH; + else if(iupStrEqual(value, "WEST")) + ih->data->direction = ISBOX_WEST; + else /* Default = EAST */ + ih->data->direction = ISBOX_EAST; + + if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST) + IupSetAttribute(ih->firstchild, "CURSOR", "RESIZE_WE"); + else + IupSetAttribute(ih->firstchild, "CURSOR", "RESIZE_NS"); + + return 0; /* do not store value in hash table */ +} + + +/*****************************************************************************\ +|* Methods *| +\*****************************************************************************/ + + +static void iSboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w = ih->naturalwidth, + natural_h = ih->naturalheight; + + /* only allow expand in the oposite direction, complement iupBaseContainerUpdateExpand */ + if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST) + ih->expand &= ~IUP_EXPAND_WIDTH; + else + ih->expand &= ~IUP_EXPAND_HEIGHT; + + /* always has at least one child, the bar */ + + /* This is an unusual element, the iupBaseComputeNaturalSize logic is done twice, one here and one back there. */ + + if (ih->firstchild->brother) + { + Ihandle* child = ih->firstchild->brother; + + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + *expand = child->expand; + + /* calculate as in iupBaseComputeNaturalSize */ + natural_w = iupMAX(natural_w, child->naturalwidth + iSboxGetXborder(ih)); + natural_h = iupMAX(natural_h, child->naturalheight + iSboxGetYborder(ih)); + } + + /* update control to fit its children according to direction */ + + /* bar */ + if (ih->data->direction == ISBOX_EAST || ih->data->direction == ISBOX_WEST) + { + ih->data->w = iupMAX(natural_w, ih->data->w); + ih->data->h = natural_h; + } + else /* ISBOX_NORTH || ISBOX_SOUTH */ + { + ih->data->w = natural_w; + ih->data->h = iupMAX(natural_h, ih->data->h); + } + + /* child */ + if (ih->firstchild->brother) + { + Ihandle* child = ih->firstchild->brother; + child->naturalwidth = ih->data->w - iSboxGetXborder(ih); + child->naturalheight = ih->data->h - iSboxGetYborder(ih); + } + + *w = ih->data->w; + *h = ih->data->h; +} + +static void iSboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + /* bar */ + if ((ih->data->direction == ISBOX_NORTH || ih->data->direction == ISBOX_SOUTH)) + { + ih->firstchild->currentwidth = ih->currentwidth; + ih->firstchild->currentheight = ISBOX_THICK; + } + else + { + ih->firstchild->currentwidth = ISBOX_THICK; + ih->firstchild->currentheight = ih->currentheight; + } + + /* child */ + if (ih->firstchild->brother) + { + int width = ih->currentwidth-iSboxGetXborder(ih); + int height = ih->currentheight-iSboxGetYborder(ih); + if (width < 0) width = 0; + if (height < 0) height = 0; + + iupBaseSetCurrentSize(ih->firstchild->brother, width, height, shrink); + } +} + +static void iSboxSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + int posx = 0, posy = 0; + + /* bar */ + if (ih->data->direction == ISBOX_EAST) + { + posx = ih->data->w - ISBOX_THICK; + if (posx<0) posx = 0; + } + if (ih->data->direction == ISBOX_SOUTH) + { + posy = ih->data->h - ISBOX_THICK; + if (posy<0) posy = 0; + } + + iupBaseSetPosition(ih->firstchild, x+posx, y+posy); + + /* child */ + if (ih->firstchild->brother) + { + iSboxAddDecorOffset(ih, &x, &y); + iupBaseSetPosition(ih->firstchild->brother, x, y); + } +} + +static int iSboxCreateMethod(Ihandle* ih, void** params) +{ + Ihandle* bar; + + ih->data = iupALLOCCTRLDATA(); + + ih->data->direction = ISBOX_EAST; + ih->data->h = -1; + ih->data->w = -1; + + bar = IupCanvas(NULL); + iupChildTreeAppend(ih, bar); /* bar will always be the firstchild */ + + IupSetAttribute(bar, "BORDER", "YES"); + IupSetAttribute(bar, "EXPAND", "NO"); + IupSetAttribute(bar, "BGCOLOR", "192 192 192"); + + /* Setting callbacks */ + IupSetCallback(bar, "BUTTON_CB", (Icallback) iSboxButton_CB); + IupSetCallback(bar, "FOCUS_CB", (Icallback) iSboxFocus_CB); + IupSetCallback(bar, "MOTION_CB", (Icallback) iSboxMotion_CB); + + if (params) + { + Ihandle** iparams = (Ihandle**)params; + if (*iparams) + IupAppend(ih, *iparams); + } + + return IUP_NOERROR; +} + +Iclass* iupSboxGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "sbox"; + ic->format = "H"; /* one optional ihandle */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDMANY; /* should be IUP_CHILDONE but has the bar (a IupCanvas) as firstchild */ + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iSboxCreateMethod; + ic->Map = iupBaseTypeVoidMapMethod; + + ic->ComputeNaturalSize = iSboxComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iSboxSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iSboxSetChildrenPositionMethod; + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Base Container */ + iupClassRegisterAttribute(ic, "CLIENTSIZE", iSboxGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupSbox only */ + iupClassRegisterAttribute(ic, "COLOR", NULL, iSboxSetColorAttrib, IUPAF_SAMEASSYSTEM, "192 192 192", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DIRECTION", NULL, iSboxSetDirectionAttrib, IUPAF_SAMEASSYSTEM, "EAST", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} + +Ihandle* IupSbox(Ihandle* child) +{ + void *params[2]; + params[0] = (void*)child; + params[1] = NULL; + return IupCreatev("sbox", params); +} diff --git a/iup/src/iup_scanf.c b/iup/src/iup_scanf.c new file mode 100755 index 0000000..f8ef97b --- /dev/null +++ b/iup/src/iup_scanf.c @@ -0,0 +1,200 @@ +/** \file + * \brief IupScanf implementation. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_predial.h" +#include "iup_str.h" +#include "iup_assert.h" + + +#define ALLOC(n,t) ((t *)calloc((n),sizeof(t))) +#define REQUIRE(b) {if (!(b)) goto cleanup;} + +int IupScanf (const char *format, ...) +{ + int i; + int fields_out_count=(-1); /* return code if not error (error < 0) */ + int error=(-1); /* return code if error (error >= 0) */ + int fields_in_count; + int *width=NULL; + int *scroll=NULL; + char **prompt=NULL; + char **text=NULL; + char *title=NULL; + char *s=NULL; + char *s1=NULL; + char *outf=NULL; + va_list va; + + iupASSERT(format!=NULL); + if (!format) + return 0; + + fields_in_count=iupStrCountChar(format,'\n')-1; + REQUIRE(fields_in_count>0); + width=ALLOC(fields_in_count, int); + REQUIRE(width!=NULL); + scroll=ALLOC(fields_in_count, int); + REQUIRE(scroll!=NULL); + prompt=ALLOC(fields_in_count, char *); + REQUIRE(prompt!=NULL); + text=ALLOC(fields_in_count, char *); + REQUIRE(text!=NULL); + + va_start(va,format); + REQUIRE ((s1=s=(char *)iupStrDup(format)) != NULL); + title=iupStrCopyUntil(&s,'\n'); + REQUIRE(title!=NULL); + for (i=0; i0); + + fields_out_count=0; + va_start(va,format); + s=strchr(format,'\n')+1; + for (i=0; i +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_class.h" +#include "iup_dialog.h" +#include "iup_menu.h" +#include "iup_assert.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" + + +void IupUnmap(Ihandle *ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* Invalid if it is NOT mapped. */ + if (!ih->handle) + return; + + /* unmap children */ + { + Ihandle* child = ih->firstchild; + while (child) + { + IupUnmap(child); + child = child->brother; + } + } + + /* only call UNMAP_CB for controls that have a native representation */ + if (ih->iclass->nativetype != IUP_TYPEVOID) + { + Icallback unmap_cb = IupGetCallback(ih, "UNMAP_CB"); + if (unmap_cb) unmap_cb(ih); + } + + /* unmap from the native system */ + iupClassObjectUnMap(ih); + ih->handle = NULL; +} + +static char* iShowGetVisible(Ihandle* ih) +{ + char* value = iupAttribGet(ih, "VISIBLE"); /* Check on the element first */ + while (!value) + { + ih = ih->parent; /* iheritance here independs on the attribute */ + if (!ih) + return NULL; + + value = iupAttribGet(ih, "VISIBLE"); + + /* only recursive up to the native parent */ + if (ih->iclass->nativetype != IUP_TYPEVOID) + return value; /* can be NULL */ + } + + return value; +} + +static void iShowUpdateVisible(Ihandle* ih) +{ + int inherit; + /* although default is VISIBLE=YES, + when mapped the element is still hidden. + So we must manually update the visible state. */ + char* value = iShowGetVisible(ih); + iupClassObjectSetAttribute(ih, "VISIBLE", value, &inherit); +} + +int IupMap(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return IUP_INVALID; + + /* calculate position and size for all children */ + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + iupLayoutCompute(ih); + + /* already mapped */ + if (ih->handle) + { + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + iupLayoutUpdate(ih); + + return IUP_NOERROR; + } + + /* map to the native system */ + if (iupClassObjectMap(ih) == IUP_ERROR) + { + iupERROR("Error during IupMap."); + return IUP_ERROR; + } + + /* update FONT, must be the before several others */ + if (ih->iclass->nativetype != IUP_TYPEVOID && + ih->iclass->nativetype != IUP_TYPEIMAGE && + ih->iclass->nativetype != IUP_TYPEMENU) + iupUpdateStandardFontAttrib(ih); + + /* ensure attributes default values, at this time only the ones that need to be set after map */ + iupClassObjectEnsureDefaultAttributes(ih); + + /* check visible state if not a dialog */ + if (ih->iclass->nativetype == IUP_TYPECANVAS || + ih->iclass->nativetype == IUP_TYPECONTROL) + iShowUpdateVisible(ih); + + /* updates the defined attributes in the native system. */ + iupAttribUpdate(ih); + + /* updates attributes defined in the parent tree */ + iupAttribUpdateFromParent(ih); + + /* map children */ + { + Ihandle* child = ih->firstchild; + while (child) + { + if (IupMap(child) == IUP_ERROR) + return IUP_ERROR; + + child = child->brother; + } + } + + /* moves and resizes the elements to reflect the layout computation */ + /* if the dialog is visible will be reflected in the user interface */ + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + iupLayoutUpdate(ih); + + /* only call MAP_CB for controls that have a native representation */ + if (ih->iclass->nativetype != IUP_TYPEVOID) + { + Icallback map_cb = IupGetCallback(ih, "MAP_CB"); + if (map_cb) map_cb(ih); + } + + return IUP_NOERROR; +} + +int IupPopup(Ihandle *ih, int x, int y) +{ + int ret; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return IUP_INVALID; + + if (ih->iclass->nativetype != IUP_TYPEDIALOG && + ih->iclass->nativetype != IUP_TYPEMENU) + { + iupERROR("Must be a menu or dialog in IupPopup."); + return IUP_INVALID; + } + + ret = IupMap(ih); + if (ret == IUP_ERROR) + return ret; + + if (ih->iclass->nativetype == IUP_TYPEDIALOG) + ret = iupDialogPopup(ih, x, y); + else + ret = iupMenuPopup(ih, x, y); + + if (ret != IUP_NOERROR) + { + iupERROR("Error during IupPopup."); + return ret; + } + + return IUP_NOERROR; +} + +int IupShowXY(Ihandle *ih, int x, int y) +{ + int ret; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return IUP_INVALID; + + if (ih->iclass->nativetype != IUP_TYPEDIALOG) + { + iupERROR("Must be a dialog in IupShowXY."); + return IUP_INVALID; + } + + ret = IupMap(ih); + if (ret == IUP_ERROR) + return ret; + + ret = iupDialogShowXY(ih, x, y); + if (ret != IUP_NOERROR) + { + iupERROR("Error during IupShowXY."); + return ret; + } + + return IUP_NOERROR; +} + +int IupShow(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return IUP_INVALID; + + if (ih->iclass->nativetype != IUP_TYPEDIALOG) + IupSetAttribute(ih, "VISIBLE", "YES"); + else + { + int ret = IupMap(ih); + if (ret == IUP_ERROR) + return ret; + + ret = iupDialogShowXY(ih, IUP_CURRENT, IUP_CURRENT); + if (ret != IUP_NOERROR) + { + iupERROR("Error during IupShow."); + return ret; + } + } + + return IUP_NOERROR; +} + +int IupHide(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return IUP_INVALID; + + if (ih->iclass->nativetype != IUP_TYPEDIALOG) + IupSetAttribute(ih, "VISIBLE", "NO"); + else if (ih->handle) + iupDialogHide(ih); + + return IUP_NOERROR; +} diff --git a/iup/src/iup_spin.c b/iup/src/iup_spin.c new file mode 100755 index 0000000..6fadab4 --- /dev/null +++ b/iup/src/iup_spin.c @@ -0,0 +1,301 @@ +/** \file + * \brief Spin control + * + * See Copyright Notice in "iup.h" +*/ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" +#include "iup_childtree.h" + + +static Ihandle* spin_timer = NULL; + + +static int iSpinCallCB(Ihandle* ih, int dub, int ten, int sign) +{ + IFni cb; + + /* get the callback on the spin or on the spinbox */ + Ihandle* spinbox = (Ihandle*)iupAttribGet(ih->parent, "_IUPSPIN_BOX"); + if (spinbox) + ih = spinbox; + else + ih = ih->parent; + + cb = (IFni) IupGetCallback(ih, "SPIN_CB"); + if (cb) + { + return cb(ih, sign*(dub && ten ? 100 : + ten ? 10 : + dub ? 2 : 1)); + } + + return IUP_DEFAULT; +} + +static int iSpinTimerCB(Ihandle* ih) +{ + Ihandle* spin_button = (Ihandle*)iupAttribGet(ih, "_IUPSPIN_BUTTON"); + char* status = iupAttribGet(ih, "_IUPSPIN_STATUS"); + int spin_dir = iupAttribGetInt(ih, "_IUPSPIN_DIR"); + int count = iupAttribGetInt(ih, "_IUPSPIN_COUNT"); + char* reconfig = NULL; + + if(count == 0) /* first time */ + reconfig = "50"; + else if(count == 14) /* 300 + 14*50 = 1000 (1 second) */ + reconfig = "25"; + else if(count == 34) /* 300 + 14*50 + 20*50 = 2000 (2 seconds) */ + reconfig = "10"; + + if (reconfig) + { + IupSetAttribute(ih, "RUN", "NO"); + IupSetAttribute(ih, "TIME", reconfig); + IupSetAttribute(ih, "RUN", "YES"); + } + + iupAttribSetInt(ih, "_IUPSPIN_COUNT", count + 1); + + return iSpinCallCB(spin_button, iup_isshift(status), iup_iscontrol(status), spin_dir); +} + +static void iSpinPrepareTimer(Ihandle* ih, char* status, char* dir) +{ + (void)ih; + + iupAttribSetStr(spin_timer, "_IUPSPIN_BUTTON", (char*)ih); + + iupAttribStoreStr(spin_timer, "_IUPSPIN_STATUS", status); + + iupAttribSetStr(spin_timer, "_IUPSPIN_DIR", dir); + iupAttribSetStr(spin_timer, "_IUPSPIN_COUNT", "0"); + + IupSetAttribute(spin_timer, "TIME", "400"); + IupSetAttribute(spin_timer, "RUN", "YES"); +} + +static int iSpinK_SP(Ihandle* ih) +{ + int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR"); + + return iSpinCallCB(ih, 0, 0, dir); +} + +static int iSpinK_sSP(Ihandle* ih) +{ + int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR"); + + return iSpinCallCB(ih, 1, 0, dir); +} + +static int iSpinK_cSP(Ihandle* ih) +{ + int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR"); + + return iSpinCallCB(ih, 0, 1, dir); +} + +static int iSpinButtonCB(Ihandle* ih, int but, int pressed, int x, int y, char* status) +{ + (void)x; + (void)y; + + if (pressed && but == IUP_BUTTON1) + { + int dir = iupAttribGetInt(ih, "_IUPSPIN_DIR"); + + iSpinPrepareTimer(ih, status, iupAttribGet(ih, "_IUPSPIN_DIR")); + + return iSpinCallCB(ih, iup_isshift(status), iup_iscontrol(status), dir); + } + else if (!pressed && but == IUP_BUTTON1) + { + IupSetAttribute(spin_timer, "RUN", "NO"); + } + + return IUP_DEFAULT; +} + +static int iSpinCreateMethod(Ihandle* ih, void** params) +{ + Ihandle* bt_up; + Ihandle* bt_down; + (void)params; + + /* Button UP */ + bt_up = IupButton(NULL, NULL); + + IupSetAttribute(bt_up, "EXPAND", "NO"); + IupSetAttribute(bt_up, "IMAGE", "IupSpinUpImage"); + IupSetAttribute(bt_up, "_IUPSPIN_DIR", "1"); + IupSetAttribute(bt_up, "CANFOCUS", "NO"); + + IupSetCallback(bt_up, "BUTTON_CB", (Icallback) iSpinButtonCB); + IupSetCallback(bt_up, "K_SP", (Icallback) iSpinK_SP); + IupSetCallback(bt_up, "K_sSP", (Icallback) iSpinK_sSP); + IupSetCallback(bt_up, "K_cSP", (Icallback) iSpinK_cSP); + + /* Button DOWN */ + bt_down = IupButton(NULL, NULL); + + IupSetAttribute(bt_down, "EXPAND", "NO"); + IupSetAttribute(bt_down, "IMAGE", "IupSpinDownImage"); + IupSetAttribute(bt_down, "_IUPSPIN_DIR", "-1"); + IupSetAttribute(bt_down, "CANFOCUS", "NO"); + + IupSetCallback(bt_down, "BUTTON_CB", (Icallback) iSpinButtonCB); + IupSetCallback(bt_down, "K_SP", (Icallback) iSpinK_SP); + IupSetCallback(bt_down, "K_sSP", (Icallback) iSpinK_sSP); + IupSetCallback(bt_down, "K_cSP", (Icallback) iSpinK_cSP); + + /* manually add the buttons as a children */ + ih->firstchild = bt_up; + bt_up->parent = ih; + bt_up->brother = bt_down; + bt_down->parent = ih; + + IupSetAttribute(ih, "GAP", "0"); + IupSetAttribute(ih, "MARGIN", "0x0"); + + return IUP_NOERROR; +} + +static int iSpinboxCreateMethod(Ihandle* ih, void** params) +{ + Ihandle *spin, *ctrl; + + if (!params || !(params[0])) + return IUP_ERROR; + + IupSetAttribute(ih, "GAP", "0"); + IupSetAttribute(ih, "MARGIN", "0x0"); + IupSetAttribute(ih, "ALIGNMENT", "ACENTER"); + + ctrl = (Ihandle*)(params[0]); + iupChildTreeAppend(ih, ctrl); + + spin = IupSpin(); + iupChildTreeAppend(ih, spin); + + iupAttribSetStr(spin, "_IUPSPIN_BOX", (char*)ih); + + return IUP_NOERROR; +} + +static void iSpinLoadImages(void) +{ + Ihandle* img; + + /* Spin UP image */ + unsigned char iupspin_up_img[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 1, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + /* Spin DOWN image */ + unsigned char iupspin_down_img[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1 + }; + + img = IupImage(9, 6, iupspin_up_img); + IupSetAttribute(img, "0", "0 0 0"); + IupSetAttribute(img, "1", "BGCOLOR"); + IupSetHandle("IupSpinUpImage", img); + + img = IupImage(9, 6, iupspin_down_img); + IupSetAttribute(img, "0", "0 0 0"); + IupSetAttribute(img, "1", "BGCOLOR"); + IupSetHandle("IupSpinDownImage", img); +} + +static void iSpinReleaseMethod(Iclass* ic) +{ + (void)ic; + + if (spin_timer) + { + /* no need to destroy the images, they will be destroyed by IupClose automatically */ + IupDestroy(spin_timer); + spin_timer = NULL; + } +} + +Iclass* iupSpinboxGetClass(void) +{ + Iclass* ic = iupClassNew(iupHboxGetClass()); + + ic->name = "spinbox"; + ic->format = "h"; /* one Ihandle */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + iupClassRegisterCallback(ic, "SPIN_CB", "i"); + + /* Class functions */ + ic->Create = iSpinboxCreateMethod; + + return ic; +} + +Iclass* iupSpinGetClass(void) +{ + Iclass* ic = iupClassNew(iupVboxGetClass()); + + ic->name = "spin"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iSpinCreateMethod; + ic->Release = iSpinReleaseMethod; + + iupClassRegisterCallback(ic, "SPIN_CB", "i"); + + if (!spin_timer) + { + iSpinLoadImages(); + + spin_timer = IupTimer(); + IupSetCallback(spin_timer, "ACTION_CB", (Icallback) iSpinTimerCB); + } + + return ic; +} + +Ihandle* IupSpin(void) +{ + return IupCreate("spin"); +} + +Ihandle* IupSpinbox(Ihandle* ctrl) +{ + void *params[2]; + params[0] = (void*)ctrl; + params[1] = NULL; /* must add NULL because spinbox inherit from Hbox */ + return IupCreatev("spinbox", params); +} diff --git a/iup/src/iup_stdcontrols.h b/iup/src/iup_stdcontrols.h new file mode 100755 index 0000000..11499ae --- /dev/null +++ b/iup/src/iup_stdcontrols.h @@ -0,0 +1,76 @@ +/** \file + * \brief Standard Controls Class Initialization functions. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_STDCONTROLS_H +#define __IUP_STDCONTROLS_H + +#ifdef __cplusplus +extern "C" { +#endif + + +Iclass* iupDialogGetClass(void); +Iclass* iupMessageDlgGetClass(void); +Iclass* iupColorDlgGetClass(void); +Iclass* iupFontDlgGetClass(void); +Iclass* iupFileDlgGetClass(void); + +Iclass* iupLabelGetClass(void); +Iclass* iupButtonGetClass(void); +Iclass* iupToggleGetClass(void); +Iclass* iupRadioGetClass(void); +Iclass* iupCanvasGetClass(void); +Iclass* iupFrameGetClass(void); +Iclass* iupProgressBarGetClass(void); +Iclass* iupTextGetClass(void); +Iclass* iupMultilineGetClass(void); +Iclass* iupValGetClass(void); +Iclass* iupTabsGetClass(void); +Iclass* iupSpinGetClass(void); +Iclass* iupSpinboxGetClass(void); +Iclass* iupListGetClass(void); +Iclass* iupTreeGetClass(void); + +Iclass* iupMenuGetClass(void); +Iclass* iupItemGetClass(void); +Iclass* iupSeparatorGetClass(void); +Iclass* iupSubmenuGetClass(void); + +Iclass* iupFillGetClass(void); +Iclass* iupHboxGetClass(void); +Iclass* iupVboxGetClass(void); +Iclass* iupZboxGetClass(void); +Iclass* iupCboxGetClass(void); +Iclass* iupSboxGetClass(void); +Iclass* iupNormalizerGetClass(void); + +Iclass* iupTimerGetClass(void); +Iclass* iupImageGetClass(void); +Iclass* iupImageRGBGetClass(void); +Iclass* iupImageRGBAGetClass(void); +Iclass* iupUserGetClass(void); +Iclass* iupClipboardGetClass(void); + +/*************************************************/ + +void iupdrvMessageDlgInitClass(Iclass* ic); +void iupdrvColorDlgInitClass(Iclass* ic); +void iupdrvFontDlgInitClass(Iclass* ic); +void iupdrvFileDlgInitClass(Iclass* ic); + +/************************************************/ + +/* Common definition of the canvas class */ +typedef struct _iupCanvas { + int sb; /* scrollbar configuration, valid only after map, use iupBaseGetScrollbar before map */ + float posx, posy; +} iupCanvas; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_str.c b/iup/src/iup_str.c new file mode 100755 index 0000000..68976f1 --- /dev/null +++ b/iup/src/iup_str.c @@ -0,0 +1,716 @@ +/** \file + * \brief String Utilities + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include +#include +#include + +#include "iup_str.h" + + +/* Line breaks can be: +\n - UNIX +\r - Mac +\r\n - DOS/Windows +*/ + + +int iupStrEqual(const char* str1, const char* str2) +{ + if (str1 == str2) return 1; + if (!str1 || !str2 || *str1 != *str2) return 0; + return (strcmp(str1, str2)==0)? 1: 0; +} + +int iupStrEqualNoCase(const char* str1, const char* str2) +{ + int i = 0; + if (str1 == str2) return 1; + if (!str1 || !str2 || tolower(*str1) != tolower(*str2)) return 0; + + while (str1[i] && str2[i] && tolower(str1[i])==tolower(str2[i])) + i++; + if (str1[i] == str2[i]) return 1; + + return 0; +} + +int iupStrEqualPartial(const char* str1, const char* str2) +{ + if (str1 == str2) return 1; + if (!str1 || !str2 || *str1 != *str2) return 0; + return (strncmp(str1, str2, strlen(str2))==0)? 1: 0; +} + +int iupStrBoolean(const char* str) +{ + if (!str || str[0]==0) return 0; + if (iupStrEqualNoCase(str, "1")) return 1; + if (iupStrEqualNoCase(str, "YES")) return 1; + if (iupStrEqualNoCase(str, "ON")) return 1; + if (iupStrEqualNoCase(str, "TRUE")) return 1; + return 0; +} + +void iupStrLower(char* dstr, const char* sstr) +{ + for (; *sstr; sstr++, dstr++) + *dstr = (char)tolower(*sstr); + *dstr = 0; +} + +char *iupStrDup(const char *str) +{ + if (str) + { + int size = strlen(str)+1; + char *newstr = malloc(size); + if (newstr) memcpy(newstr, str, size); + return newstr; + } + return NULL; +} + +const char* iupStrNextLine(const char* str, int *len) +{ + *len = 0; + + while(*str!=0 && *str!='\n' && *str!='\r') + { + (*len)++; + str++; + } + + if (*str=='\r' && *(str+1)=='n') /* DOS line end */ + return str+2; + else if (*str=='\n' || *str=='\r') /* UNIX or MAC line end */ + return str+1; + else + return str; /* no next line */ +} + +int iupStrLineCount(const char* str) +{ + int num_lin = 1; + + if (!str) + return num_lin; + + while(*str != 0) + { + while(*str!=0 && *str!='\n' && *str!='\r') + str++; + + if (*str=='\r' && *(str+1)=='n') /* DOS line end */ + { + num_lin++; + str+=2; + } + else if (*str=='\n' || *str=='\r') /* UNIX or MAC line end */ + { + num_lin++; + str++; + } + } + + return num_lin; +} + +int iupStrCountChar(const char *str, int c) +{ + int n; + if (!str) return 0; + for (n=0; *str; str++) + { + if (*str==(char)c) + n++; + } + return n; +} + +void iupStrCopyN(char* dst_str, int dst_max_size, const char* src_str) +{ + int size = strlen(src_str)+1; + if (size > dst_max_size) size = dst_max_size; + memcpy(dst_str, src_str, size); +} + +char *iupStrCopyUntil(char **str, int c) +{ + char *p_str,*new_str; + if (!str || *str==NULL) + return NULL; + + p_str=strchr(*str,c); + if (!p_str) return NULL; + + { + int i; + int sl=(int)(p_str - (*str)); + + new_str = (char *) malloc (sl + 1); + if (!new_str) return NULL; + + for (i = 0; i < sl; ++i) + new_str[i] = (*str)[i]; + + new_str[sl] = 0; + } + + *str = p_str+1; + return new_str; +} + +char *iupStrCopyUntilNoCase(char **str, int c) +{ + char *p_str,*new_str; + if (!str || *str==NULL) + return NULL; + + p_str=strchr(*str,c); /* usually the lower case is enough */ + if (!p_str && isalpha(c)) + { + p_str=strchr(*str, toupper(c)); /* but check also for upper case */ + if (!p_str) return NULL; + } + + { + int i; + int sl=(int)(p_str - (*str)); + + new_str = (char *) malloc (sl + 1); + if (!new_str) return NULL; + + for (i = 0; i < sl; ++i) + new_str[i] = (*str)[i]; + + new_str[sl] = 0; + } + + *str = p_str+1; + return new_str; +} + +char *iupStrGetMemory(int size) +{ +#define MAX_BUFFERS 50 + static char* buffers[MAX_BUFFERS]; + static int buffers_sizes[MAX_BUFFERS]; + static int buffers_index = -1; + + int i; + + if (size == -1) /* Frees memory */ + { + buffers_index = -1; + for (i = 0; i < MAX_BUFFERS; i++) + { + if (buffers[i]) + { + free(buffers[i]); + buffers[i] = NULL; + } + buffers_sizes[i] = 0; + } + return NULL; + } + else + { + char* ret_str; + + if (buffers_index == -1) + { + memset(buffers, 0, sizeof(char*)*MAX_BUFFERS); + memset(buffers_sizes, 0, sizeof(int)*MAX_BUFFERS); + buffers_index = 0; + } + + if (!(buffers[buffers_index])) + { + buffers_sizes[buffers_index] = size+1; + buffers[buffers_index] = (char*)malloc(buffers_sizes[buffers_index]); + } + else if (buffers_sizes[buffers_index] < size+1) + { + buffers_sizes[buffers_index] = size+1; + buffers[buffers_index] = (char*)realloc(buffers[buffers_index], buffers_sizes[buffers_index]); + } + + memset(buffers[buffers_index], 0, buffers_sizes[buffers_index]); + ret_str = buffers[buffers_index]; + + buffers_index++; + if (buffers_index == MAX_BUFFERS) + buffers_index = 0; + + return ret_str; + } +} + +char *iupStrGetMemoryCopy(const char* str) +{ + if (str) + { + int size = strlen(str)+1; + char* ret_str = iupStrGetMemory(size); + memcpy(ret_str, str, size); + return ret_str; + } + else + return NULL; +} + +int iupStrToRGBA(const char *str, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a) +{ + unsigned int ri = 0, gi = 0, bi = 0, ai = 0, ret; + if (!str) return 0; + ret = sscanf(str, "%u %u %u %u", &ri, &gi, &bi, &ai); + if (ret < 3) return 0; + if (ri > 255 || gi > 255 || bi > 255 || ai > 255) return 0; + *r = (unsigned char)ri; + *g = (unsigned char)gi; + *b = (unsigned char)bi; + if (ret == 4) + { + *a = (unsigned char)ai; + return 4; + } + else + return 3; +} + +int iupStrToRGB(const char *str, unsigned char *r, unsigned char *g, unsigned char *b) +{ + unsigned int ri = 0, gi = 0, bi = 0; + if (!str) return 0; + if (sscanf(str, "%u %u %u", &ri, &gi, &bi) != 3) return 0; + if (ri > 255 || gi > 255 || bi > 255) return 0; + *r = (unsigned char)ri; + *g = (unsigned char)gi; + *b = (unsigned char)bi; + return 1; +} + +int iupStrToInt(const char *str, int *i) +{ + if (!str) return 0; + if (sscanf(str, "%d", i) != 1) return 0; + return 1; +} + +int iupStrToIntInt(const char *str, int *i1, int *i2, char sep) +{ + if (!str) return 0; + + if (*str == sep || (isalpha(sep) && *str == toupper(sep))) /* no first value */ + { + str++; /* skip separator */ + if (sscanf(str, "%d", i2) != 1) return 0; + return 1; + } + else + { + char* p_str = iupStrCopyUntilNoCase((char**)&str, sep); + + if (!p_str) /* no separator means no second value */ + { + if (sscanf(str, "%d", i1) != 1) return 0; + return 1; + } + else if (*str==0) /* separator exists, but second value empty, also means no second value */ + { + int ret = sscanf(p_str, "%d", i1); + free(p_str); + if (ret != 1) return 0; + return 1; + } + else + { + int ret = 0; + if (sscanf(p_str, "%d", i1) == 1) ret++; + if (sscanf(str, "%d", i2) == 1) ret++; + free(p_str); + return ret; + } + } +} + +int iupStrToFloat(const char *str, float *f) +{ + if (!str) return 0; + if (sscanf(str, "%f", f) != 1) return 0; + return 1; +} + +int iupStrToFloatFloat(const char *str, float *f1, float *f2, char sep) +{ + if (!str) return 0; + + if (*str == sep || (isalpha(sep) && *str == toupper(sep))) /* no first value */ + { + str++; /* skip separator */ + if (sscanf(str, "%f", f2) != 1) return 0; + return 1; + } + else + { + char* p_str = iupStrCopyUntilNoCase((char**)&str, sep); + + if (!p_str) /* no separator means no second value */ + { + if (sscanf(str, "%f", f1) != 1) return 0; + return 1; + } + else if (*str==0) /* separator exists, but second value empty, also means no second value */ + { + int ret = sscanf(p_str, "%f", f1); + free(p_str); + if (ret != 1) return 0; + return 1; + } + else + { + int ret = 0; + if (sscanf(p_str, "%f", f1) != 1) ret++; + if (sscanf(str, "%f", f2) != 1) ret++; + free(p_str); + return ret; + } + } +} + +int iupStrToStrStr(const char *str, char *str1, char *str2, char sep) +{ + if (!str) return 0; + + if (*str == sep || (isalpha(sep) && *str == toupper(sep))) /* no first value */ + { + str++; /* skip separator */ + strcpy(str2, str); + return 1; + } + else + { + char* p_str = iupStrCopyUntilNoCase((char**)&str, sep); + + if (!p_str) /* no separator means no second value */ + { + strcpy(str1, str); + return 1; + } + else if (*str==0) /* separator exists, but second value empty, also means no second value */ + { + strcpy(str1, p_str); + free(p_str); + return 1; + } + else + { + strcpy(str1, p_str); + strcpy(str2, str); + free(p_str); + return 2; + } + } +} + +char* iupStrFileGetPath(const char *file_name) +{ + /* Starts at the last character */ + int len = strlen(file_name) - 1; + while (len != 0) + { + if (file_name[len] == '\\' || file_name[len] == '/') + { + len++; + break; + } + + len--; + } + + if (len == 0) + return NULL; + + { + char* path = malloc(len+1); + memcpy(path, file_name, len); + path[len] = 0; + + return path; + } +} + +char* iupStrFileGetTitle(const char *file_name) +{ + /* Starts at the last character */ + int len = strlen(file_name); + int offset = len - 1; + while (offset != 0) + { + if (file_name[offset] == '\\' || file_name[offset] == '/') + { + offset++; + break; + } + + offset--; + } + + { + int title_size = len - offset + 1; + char* file_title = malloc(title_size); + memcpy(file_title, file_name + offset, title_size); + return file_title; + } +} + +char* iupStrFileGetExt(const char *file_name) +{ + /* Starts at the last character */ + int len = strlen(file_name); + int offset = len - 1; + while (offset != 0) + { + /* if found a path separator stop. */ + if (file_name[offset] == '\\' || file_name[offset] == '/') + return NULL; + + if (file_name[offset] == '.') + { + offset++; + break; + } + + offset--; + } + + if (offset == 0) + return NULL; + + { + int ext_size = len - offset + 1; + char* file_ext = (char*)malloc(ext_size); + memcpy(file_ext, file_name + offset, ext_size); + return file_ext; + } +} + +char* iupStrFileMakeFileName(const char* path, const char* title) +{ + int size_path = strlen(path); + int size_title = strlen(title); + char *filename = malloc(size_path + size_title + 2); + memcpy(filename, path, size_path); + + if (path[size_path-1] != '/') + { + filename[size_path] = '/'; + size_path++; + } + + memcpy(filename+size_path, title, size_title); + filename[size_path+size_title] = 0; + + return filename; +} + +int iupStrReplace(char* str, char src, char dst) +{ + int i = 0; + while (*str) + { + if (*str == src) + { + *str = dst; + i++; + } + str++; + } + return i; +} + +void iupStrToUnix(char* str) +{ + char* pstr = str; + + if (!str) return; + + while (*str) + { + if (*str == '\r') + { + if (*(str+1) != '\n') /* MAC line end */ + *pstr++ = '\n'; + str++; + } + else + *pstr++ = *str++; + } + + *pstr = *str; +} + +char* iupStrToMac(const char* str) +{ + int at_start = 1; + char* pstr, *new_str; + + if (!str) return NULL; + + if (iupStrLineCount(str) == 1) + return (char*)str; + + new_str = iupStrDup(str); + str = new_str; + pstr = new_str; + + while (*str) + { + if (*str == '\n') + { + if (!at_start && *(str-1) != '\r') /* UNIX line end */ + *pstr++ = '\r'; + str++; + } + else + *pstr++ = *str++; + at_start = 0; + } + + *pstr = *str; + + return new_str; +} + +char* iupStrToDos(const char* str) +{ + char *auxstr, *newstr; + int num_lin; + + if (!str) return NULL; + + num_lin = iupStrLineCount(str); + if (num_lin == 1) + return (char*)str; + + newstr = malloc(num_lin + strlen(str) + 1); + auxstr = newstr; + while(*str) + { + if (*str == '\r' && *(str+1)=='\n') /* DOS line end */ + { + *auxstr++ = *str++; + *auxstr++ = *str++; + } + else if (*str == '\r') /* MAC line end */ + { + *auxstr++ = *str++; + *auxstr++ = '\n'; + } + else if (*str == '\n') /* UNIX line end */ + { + *auxstr++ = '\r'; + *auxstr++ = *str++; + } + else + *auxstr++ = *str++; + } + *auxstr = 0; + + return newstr; +} + +void iupStrRemove(char* value, int start, int end, int dir) +{ + if (start == end) + { + if (dir==1) + end++; + else if (start == 0) /* there is nothing to remove before */ + return; + else + start--; + } + value += start; + end -= start; + while (*value) + { + *value = *(value+end); + value++; + } +} + +char* iupStrInsert(const char* value, const char* insert_value, int start, int end) +{ + char* new_value = (char*)value; + int insert_len = strlen(insert_value); + int len = strlen(value); + if (end==start || insert_len > end-start) + { + new_value = malloc(len - (end-start) + insert_len + 1); + memcpy(new_value, value, start); + memcpy(new_value+start, insert_value, insert_len); + memcpy(new_value+start+insert_len, value+end, len-end+1); + } + else + { + memcpy(new_value+start, insert_value, insert_len); + memcpy(new_value+start+insert_len, value+end, len-end+1); + } + return new_value; +} + +char* iupStrProcessMnemonic(const char* str, char *c, int action) +{ + int i = 0, found = 0; + char* new_str, *orig_str = (char*)str; + + if (!str) return NULL; + + if (!strchr(str, '&')) + return (char*)str; + + new_str = malloc(strlen(str)+1); + while (*str) + { + if (*str == '&') + { + if (*(str+1) == '&') /* remove & from the string, add next & to the string */ + { + str++; + new_str[i++] = *str; + } + else if (!found) /* mnemonic found */ + { + found = 1; + + if (action == 1) /* replace & by c */ + new_str[i++] = *c; + else if (action == -1) /* remove & and return in c */ + *c = *(str+1); /* next is mnemonic */ + /* else -- only remove & */ + } + } + else + { + new_str[i++] = *str; + } + + str++; + } + new_str[i] = 0; + + if (!found) + { + free(new_str); + return orig_str; + } + + return new_str; +} diff --git a/iup/src/iup_str.h b/iup/src/iup_str.h new file mode 100755 index 0000000..1c2e7a5 --- /dev/null +++ b/iup/src/iup_str.h @@ -0,0 +1,183 @@ +/** \file + * \brief String Utilities + * + * See Copyright Notice in "iup.h" + */ + + +#ifndef __IUP_STR_H +#define __IUP_STR_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup str String Utilities + * \par + * See \ref iup_str.h + * \ingroup util */ + +/** Returns a copy of the given string. + * If str is NULL it will return NULL. + * \ingroup str */ +char* iupStrDup(const char* str); + +/** Returns a non zero value if the two strings are equal. + * str1 or str2 can be NULL. + * \ingroup str */ +int iupStrEqual(const char* str1, const char* str2); + +/** Returns a non zero value if the two strings are equal but ignores case. + * str1 or str2 can be NULL. + * \ingroup str */ +int iupStrEqualNoCase(const char* str1, const char* str2); + +/** Returns a non zero value if the two strings are equal + * up to a number of characters defined by the strlen of the second string. + * str1 or str2 can be NULL. + * \ingroup str */ +int iupStrEqualPartial(const char* str1, const char* str2); + +/** Returns 1 if the string is "1", "YES", "ON" or "TRUE". \n + * Returns 0 if the string is "0", "NO", "OFF" or "FALSE", or the string is NULL or empty. + * \ingroup str */ +int iupStrBoolean(const char* str); + +/** Returns the number of lines in a string. + * It works for UNIX, DOS and MAC line ends. + * \ingroup str */ +int iupStrLineCount(const char* str); + +/** Returns the a pointer to the next line and the size of the current line. + * It works for UNIX, DOS and MAC line ends. The size does not includes the line end. + * If str is NULL it will return NULL. + * \ingroup str */ +const char* iupStrNextLine(const char* str, int *len); + +/** Returns the number of repetitions of the character occours in the string. + * \ingroup str */ +int iupStrCountChar(const char *str, int c); + +/** Returns a new string containing a copy of the string up to the character. + * The string is then incremented to after the position of the character. + * \ingroup str */ +char *iupStrCopyUntil(char **str, int c); + +/** Copy the string to the buffer, but limited to the max_size of the buffer. + * buffer is always porperly ended. + * \ingroup str */ +void iupStrCopyN(char* dst_str, int dst_max_size, const char* src_str); + +/** Returns a buffer with the specified size+1. \n + * The buffer is resused after 50 calls. It must NOT be freed. + * Use size=-1 to free all the internal buffers. + * \ingroup str */ +char *iupStrGetMemory(int size); + +/** Returns a buffer that contains a copy of the given buffer using \ref iupStrGetMemory. + * \ingroup str */ +char *iupStrGetMemoryCopy(const char* str); + +/** Converts a string into lower case. + * \ingroup str */ +void iupStrLower(char* dstr, const char* sstr); + +/** Extract a RGB triple from the string. Returns 0 or 1. + * \ingroup str */ +int iupStrToRGB(const char *str, unsigned char *r, unsigned char *g, unsigned char *b); + +/** Extract a RGBA quad from the string, alpha is optional. Returns 0, 3 or 4. + * \ingroup str */ +int iupStrToRGBA(const char *str, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a); + +/** Converts the string to an int. The string must contains only the integer value. + * Returns a a non zero value if sucessfull. + * \ingroup str */ +int iupStrToInt(const char *str, int *i); + +/** Converts the string to two int. The string must contains two integer values in sequence, + * separated by the given character (usually 'x' or ':'). + * Returns the number of converted values. + * Values not extracted are not changed. + * \ingroup str */ +int iupStrToIntInt(const char *str, int *i1, int *i2, char sep); + +/** Converts the string to an float. The string must contains only the real value. + * Returns a a non zero value if sucessfull. + * \ingroup str */ +int iupStrToFloat(const char *str, float *f); + +/** Converts the string to two float. The string must contains two real values in sequence, + * separated by the given character (usually 'x' or ':'). + * Returns the number of converted values. + * Values not extracted are not changed. + * \ingroup str */ +int iupStrToFloatFloat(const char *str, float *f1, float *f2, char sep); + +/** Extract two strings from the string. + * separated by the given character (usually 'x' or ':'). + * Returns the number of converted values. + * Values not extracted are not changed. + * \ingroup str */ +int iupStrToStrStr(const char *str, char *str1, char *str2, char sep); + +/** Returns the file extension of a file name. + * Supports UNIX and Windows directory separators. + * \ingroup str */ +char* iupStrFileGetExt(const char *file_name); + +/** Returns the file title of a file name. + * Supports UNIX and Windows directory separators. + * \ingroup str */ +char* iupStrFileGetTitle(const char *file_name); + +/** Returns the file path of a file name. + * Supports UNIX and Windows directory separators. + * \ingroup str */ +char* iupStrFileGetPath(const char *file_name); + +/** Concat path and title addind '/' between if path does not have it. + * \ingroup str */ +char* iupStrFileMakeFileName(const char* path, const char* title); + +/** Replace a character in a string. + * Returns the number of occurrences. + * \ingroup str */ +int iupStrReplace(char* str, char src, char dst); + +/** Convert line ends to UNIX format in place (one \n per line). + * \ingroup str */ +void iupStrToUnix(char* str); + +/** Convert line ends to MAC format (one \r per line). + * If returned pointer different than input it must be freed. + * \ingroup str */ +char* iupStrToMac(const char* str); + +/** Convert line ends to DOS/Windows format (the sequence \r\n per line). + * If returned pointer different than input it must be freed. + * \ingroup str */ +char* iupStrToDos(const char* str); + +/** Remove the interval from the string. Done in place. + * \ingroup str */ +void iupStrRemove(char* value, int start, int end, int dir); + +/** Remove the interval from the string and insert the new string at the start. + * \ingroup str */ +char* iupStrInsert(const char* value, const char* insert_value, int start, int end); + +/** Process the mnemonic in the string. If not found returns str. + * If found returns a new string. Action can be: +- 1: replace & by c +- -1: remove & and return in c +- 0: remove & + * \ingroup str */ +char* iupStrProcessMnemonic(const char* str, char *c, int action); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_strmessage.c b/iup/src/iup_strmessage.c new file mode 100755 index 0000000..5f23528 --- /dev/null +++ b/iup/src/iup_strmessage.c @@ -0,0 +1,137 @@ +/** \file + * \brief String Utilities + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_strmessage.h" +#include "iup_table.h" + + +static Itable *istrmessage_table = NULL; /* the function hast table indexed by the name string */ + +void iupStrMessageInit(void) +{ + istrmessage_table = iupTableCreate(IUPTABLE_STRINGINDEXED); +} + +void iupStrMessageFinish(void) +{ + iupTableDestroy(istrmessage_table); + istrmessage_table = NULL; +} + +char* iupStrMessageGet(const char* message) +{ + return (char*)iupTableGet(istrmessage_table, message); +} + +static void iStrMessageSet(const char* message, const char* str) +{ + iupTableSet(istrmessage_table, message, (char*)str, IUPTABLE_POINTER); +} + +void iupStrMessageShowError(Ihandle* parent, const char* message) +{ + Ihandle* dlg = IupMessageDlg(); + char* title = NULL, *str_message; + + if (parent) + { + IupSetAttributeHandle(dlg, "PARENTDIALOG", parent); + title = IupGetAttribute(parent, "TITLE"); + } + + if (!title) + title = iupStrMessageGet("IUP_ERROR"); + + IupSetAttribute(dlg, "TITLE", title); + IupSetAttribute(dlg, "DIALOGTYPE", "ERROR"); + IupSetAttribute(dlg, "BUTTONS", "OK"); + + str_message = iupStrMessageGet(message); + if (!str_message) + str_message = (char*)message; + IupSetAttribute(dlg, "VALUE", str_message); + + IupPopup(dlg, IUP_CURRENT, IUP_CURRENT); + + IupDestroy(dlg); +} + +typedef struct _IstdMessage +{ + const char* code; + const char* lng_msg[3]; /* 2+1 for expansion */ +} IstdMessage; + +/* Edit this table to add support for more languages */ + +static IstdMessage iStdMessages[] = +{ + {"IUP_ERROR", {"Error", "Erro", NULL}}, + {"IUP_YES", {"Yes", "Sim", NULL}}, + {"IUP_NO", {"No", "Não", NULL}}, + {"IUP_INVALIDDIR", {"Invalid directory.", "Diretório inválido.", NULL}}, + {"IUP_FILEISDIR", {"The selected name is a directory.", "O nome selecionado é um diretório.", NULL}}, + {"IUP_FILENOTEXIST", {"File does not exist.", "Arquivo inexistente.", NULL}}, + {"IUP_FILEOVERWRITE", {"Overwrite existing file?", "Sobrescrever arquivo?", NULL}}, + {"IUP_CREATEFOLDER", {"Create Folder", "Criar Diretório", NULL}}, + {"IUP_NAMENEWFOLDER", {"Name of the new folder:", "Nome do novo diretório:", NULL}}, + {"IUP_SAVEAS", {"Save As", "Salvar Como", NULL}}, + {"IUP_OPEN", {"Open", "Abrir", NULL}}, + {"IUP_SELECTDIR", {"Select Directory", "Selecionar Diretório", NULL}}, + {"IUP_CANCEL", {"Cancel", "Cancela", NULL}}, + {"IUP_GETCOLOR", {"Color Selection", "Seleção de Cor", NULL}}, + {"IUP_HELP", {"Help", "Ajuda", NULL}}, + {"IUP_RED", {"&Red:", "&Vermelho:", NULL}}, + {"IUP_GREEN", {"&Green:", "V&erde:", NULL}}, + {"IUP_BLUE", {"&Blue:", "&Azul:", NULL}}, + {"IUP_HUE", {"&Hue:", "&Matiz:", NULL}}, + {"IUP_SATURATION", {"&Saturation:", "&Saturação:", NULL}}, + {"IUP_INTENSITY", {"&Intensity:", "&Intensidade:", NULL}}, + {"IUP_OPACITY", {"&Opacity:", "&Opacidade:", NULL}}, + {"IUP_PALETTE", {"&Palette:", "&Paleta:", NULL}}, + {"IUP_TRUE", {"True", "Verdadeiro", NULL}}, + {"IUP_FALSE", {"False", "Falso", NULL}}, + {NULL, {NULL, NULL, NULL}} +}; + +static void iStrRegisterInternalMessages(int lng) +{ + IstdMessage* messages = iStdMessages; + while (messages->code) + { + iStrMessageSet(messages->code, messages->lng_msg[lng]); + messages++; + } +} + +void iupStrMessageUpdateLanguage(const char* language) +{ + int lng = 0; + if (iupStrEqualNoCase(language, "PORTUGUESE")) + lng = 1; + iStrRegisterInternalMessages(lng); +} + +void IupSetLanguage(const char *language) +{ + IupStoreGlobal("LANGUAGE", language); +} + +char *IupGetLanguage(void) +{ + return IupGetGlobal("LANGUAGE"); +} diff --git a/iup/src/iup_strmessage.h b/iup/src/iup_strmessage.h new file mode 100755 index 0000000..dbd0374 --- /dev/null +++ b/iup/src/iup_strmessage.h @@ -0,0 +1,45 @@ +/** \file + * \brief Language Dependent String Messages + * + * See Copyright Notice in "iup.h" + */ + + +#ifndef __IUP_STRMESSAGE_H +#define __IUP_STRMESSAGE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \defgroup strmessage Language Dependent String Messages + * \par + * String database that is dependend of the selected language. + * \par + * See \ref iup_strmessage.h + * \ingroup util */ + +/** Pre-defined dialog to show an error message. Based in IupMessageDlg. + * Message can be a registered coded message or a commom string. + * \ingroup strmessage */ +void iupStrMessageShowError(Ihandle* parent, const char* message); + +/** Returns a common string from a registered coded message. + * The returned string depends on the global LANGUAGE attribute. + * \ingroup strmessage */ +char* iupStrMessageGet(const char* message); + +/* Called from iup_global */ +void iupStrMessageUpdateLanguage(const char* language); + +/* called only in IupOpen and IupClose */ +void iupStrMessageInit(void); +void iupStrMessageFinish(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_table.c b/iup/src/iup_table.c new file mode 100755 index 0000000..9e97ff5 --- /dev/null +++ b/iup/src/iup_table.c @@ -0,0 +1,736 @@ +/** \file + * \brief iupTable functions. + * Implementation by Danny Reinhold and Antonio Scuri. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup_table.h" +#include "iup_str.h" +#include "iup_assert.h" + +/* #define DEBUGTABLE 1 */ + +/* Adjust these parameters for optimal performance and memory usage */ +static const unsigned int itable_maxTableSizeIndex = 8; +static const unsigned int itable_hashTableSize[] = { 31, 101, 401, 1601, 4001, 8009, 16001, 32003, 64007 }; +static const float itable_resizeLimit = 2; +static const unsigned int itable_itemGrow = 5; + +/* Iteration context. + */ +typedef struct ItableContext +{ + unsigned int entryIndex; /* index at the Itable::entries array */ + unsigned int itemIndex; /* index at the ItableEntry::items array */ +} ItableContext; + +/* A key of an item. + * To avoid lots of string comparisions we store + * a keyindex as an integer. + * To find a key in an item list we only have to + * do integer comparisions. + * Additionally the key itself is stored in + * keyStr. In a string indexed hashtable this is + * a duplicated string, in a pointer indexed hash table + * this is simply the pointer (in this case keyIndex + * and keyStr are equal). +*/ +typedef struct ItableKey +{ + unsigned long keyIndex; /* the secondary hash number */ + const char *keyStr; +} +ItableKey; + +/* An item in the hash table. + * Such an item is stored in the item list of + * an entry. + */ +typedef struct ItableItem +{ + Itable_Types itemType; + ItableKey key; + void *value; +} +ItableItem; + +/* An entry in the hash table. + * An entry is chosen by an index in the hash table + * and contains a list of items. + * The number of items in this list is stored + * in nextItemIndex. + * size is the current size of the items array. + */ +typedef struct ItableEntry +{ + unsigned int nextItemIndex; + unsigned int size; + ItableItem *items; +} +ItableEntry; + + +/* A hash table. + * indexType is the type of the index. + * entries is an array of entries. Select an + * entry by its index. + * size is the number of entries in the hash table... + */ +struct Itable +{ + unsigned int size; + unsigned int numberOfEntries; + unsigned int tableSizeIndex; /* index into itable_hashTableSize array */ + Itable_IndexTypes indexType; + ItableEntry *entries; + ItableContext context; +}; + + +/* Prototypes of private functions */ + +static void iTableFreeItemArray(Itable_IndexTypes indexType, unsigned int nextFreeIndex, + ItableItem *items); +static unsigned int iTableGetEntryIndex(Itable *it, const char *key, unsigned long *keyIndex); +static unsigned int iTableFindItem(Itable *it, const char *key, ItableEntry **entry, + unsigned int *itemIndex, + unsigned long *keyIndex); +static unsigned int iTableResize(Itable *it); +static void iTableAdd(Itable *it, ItableKey *key, void *value, Itable_Types itemType); +static void iTableUpdateArraySize(ItableEntry *entry); + +#ifdef DEBUGTABLE +static void iTableShowStatistics(Itable *it); +static void iTableCheckDuplicated(ItableItem *item, unsigned int nextItemIndex, + const char *key, + unsigned long keyIndex); +#endif + + +Itable *iupTableCreate(Itable_IndexTypes indexType) +{ + return iupTableCreateSized(indexType, 1); /* 101 shows to be a better start for IUP */ +} + + +Itable *iupTableCreateSized(Itable_IndexTypes indexType, unsigned int initialSizeIndex) +{ + Itable *it = (Itable *)malloc(sizeof(struct Itable)); + + iupASSERT(it!=NULL); + if (!it) + return 0; + + if (initialSizeIndex > itable_maxTableSizeIndex) + initialSizeIndex = itable_maxTableSizeIndex; + + it->size = itable_hashTableSize[initialSizeIndex]; + it->tableSizeIndex = initialSizeIndex; + it->numberOfEntries = 0; + it->indexType = indexType; + + it->entries = (ItableEntry *)malloc(it->size * sizeof(ItableEntry)); + iupASSERT(it->entries!=NULL); + if (!it->entries) + { + free(it); + return 0; + } + + memset(it->entries, 0, it->size * sizeof(ItableEntry)); + + it->context.entryIndex = (unsigned int)-1; + it->context.itemIndex = (unsigned int)-1; + + return it; +} + +void iupTableClear(Itable *it) +{ + unsigned int i; + + if (!it) + return; + + for (i = 0; i < it->size; i++) + { + ItableEntry *entry = &(it->entries[i]); + if (entry->items) + iTableFreeItemArray(it->indexType, entry->nextItemIndex, entry->items); + } + + it->numberOfEntries = 0; + + memset(it->entries, 0, it->size * sizeof(ItableEntry)); + + it->context.entryIndex = (unsigned int)-1; + it->context.itemIndex = (unsigned int)-1; +} + +void iupTableDestroy(Itable *it) +{ + if (!it) + return; + +#ifdef DEBUGTABLE + iTableShowStatistics(it); +#endif + + iupTableClear(it); + + if (it->entries) + free(it->entries); + + free(it); +} + +int iupTableCount(Itable *it) +{ + iupASSERT(it!=NULL); + if (!it) + return 0; + return it->numberOfEntries; +} + +void iupTableSetFunc(Itable *it, const char *key, Ifunc func) +{ + iupTableSet(it, key, (void*)func, IUPTABLE_FUNCPOINTER); /* type cast from function pointer to void* */ +} + +void iupTableSet(Itable *it, const char *key, void *value, Itable_Types itemType) +{ + unsigned int itemIndex, + itemFound; + unsigned long keyIndex; + ItableEntry *entry; + ItableItem *item; + void *v; + + iupASSERT(it!=NULL); + iupASSERT(key!=NULL); + if (!it || !key || !value) + return; + + itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex); + +#ifdef DEBUGTABLE + if (it->indexType == IUPTABLE_STRINGINDEXED) + iTableCheckDuplicated(&(entry->items[0]), entry->nextItemIndex, key, keyIndex); +#endif + + if (!itemFound) + { + /* create a new item */ + + /* first check if the hash table has to be reorganized */ + if (iTableResize(it)) + { + /* We have to search for the entry again, since it may + * have been moved by iTableResize. */ + iTableFindItem(it, key, &entry, &itemIndex, &keyIndex); + } + + iTableUpdateArraySize(entry); + + /* add the item at the end of the item array */ + if (itemType == IUPTABLE_STRING) + v = iupStrDup(value); + else + v = value; + + item = &(entry->items[entry->nextItemIndex]); + + item->itemType = itemType; + item->key.keyIndex = keyIndex; + item->key.keyStr = it->indexType == IUPTABLE_STRINGINDEXED? iupStrDup(key) : key; + item->value = v; + + entry->nextItemIndex++; + it->numberOfEntries++; + } + else + { + /* change an existing item */ + void *v; + item = &(entry->items[itemIndex]); + + if (itemType == IUPTABLE_STRING && item->itemType == IUPTABLE_STRING) + { + /* this will avoid to free + alloc of a new pointer */ + if (iupStrEqual((char*)item->value, (char*)value)) + return; + } + + if (itemType == IUPTABLE_STRING) + v = iupStrDup(value); + else + v = value; + + if (item->itemType == IUPTABLE_STRING) + free(item->value); + + item->value = v; + item->itemType = itemType; + } +} + +static void iTableRemoveItem(Itable *it, ItableEntry *entry, unsigned int itemIndex) +{ + ItableItem *item; + unsigned int i; + + item = &(entry->items[itemIndex]); + + if (it->indexType == IUPTABLE_STRINGINDEXED) + free((void *)item->key.keyStr); + + if (item->itemType == IUPTABLE_STRING) + free(item->value); + + /* order the remaining items */ + for (i = itemIndex; i < entry->nextItemIndex-1; i++) + entry->items[i] = entry->items[i+1]; + + /* clear the non used item */ + memset(entry->items + entry->nextItemIndex, 0, sizeof (ItableItem)); + + entry->nextItemIndex--; + it->numberOfEntries--; +} + +void iupTableRemove(Itable *it, const char *key) +{ + unsigned int itemFound, + itemIndex; + unsigned long keyIndex; + ItableEntry *entry; + + iupASSERT(it!=NULL); + iupASSERT(key!=NULL); + if (!it || !key) + return; + + itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex); + if (itemFound) + iTableRemoveItem(it, entry, itemIndex); +} + +void *iupTableGet(Itable *it, const char *key) +{ + unsigned int itemFound, + itemIndex; + unsigned long keyIndex; + ItableEntry *entry; + void *value = 0; + + iupASSERT(it!=NULL); + iupASSERT(key!=NULL); + if (!it || !key) + return 0; + + itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex); + if (itemFound) + value = entry->items[itemIndex].value; + + return value; +} + +Ifunc iupTableGetFunc(Itable *it, const char *key, void **value) +{ + Itable_Types itemType = IUPTABLE_POINTER; + *value = iupTableGetTyped(it, key, &itemType); + if (itemType == IUPTABLE_FUNCPOINTER) + return (Ifunc)(*value); /* type cast from void* to function pointer */ + else + return (Ifunc)0; +} + +void *iupTableGetTyped(Itable *it, const char *key, Itable_Types *itemType) +{ + unsigned int itemFound, + itemIndex; + unsigned long keyIndex; + ItableEntry *entry; + void *value = 0; + + iupASSERT(it!=NULL); + iupASSERT(key!=NULL); + if (!it || !key) + return 0; + + itemFound = iTableFindItem(it, key, &entry, &itemIndex, &keyIndex); + if (itemFound) + { + value = entry->items[itemIndex].value; + if (itemType) + *itemType = entry->items[itemIndex].itemType; + } + + return value; +} + +void *iupTableGetCurr(Itable *it) +{ + iupASSERT(it!=NULL); + if (!it || it->context.entryIndex == (unsigned int)-1 + || it->context.itemIndex == (unsigned int)-1) + return 0; + + return it->entries[it->context.entryIndex].items[it->context.itemIndex].value; +} + + +char *iupTableFirst(Itable *it) +{ + unsigned int entryIndex; + + iupASSERT(it!=NULL); + if (!it) + return 0; + + it->context.entryIndex = (unsigned int)-1; + it->context.itemIndex = (unsigned int)-1; + + /* find the first used entry */ + for (entryIndex = 0; entryIndex < it->size; entryIndex++) + { + if (it->entries[entryIndex].nextItemIndex > 0) + { + it->context.entryIndex = entryIndex; + it->context.itemIndex = 0; + return (char*)it->entries[entryIndex].items[0].key.keyStr; + } + } + + return 0; +} + + +char *iupTableNext(Itable *it) +{ + unsigned int entryIndex; + + iupASSERT(it!=NULL); + if (!it || it->context.entryIndex == (unsigned int)-1 + || it->context.itemIndex == (unsigned int)-1) + return 0; + + if (it->context.itemIndex + 1 < it->entries[it->context.entryIndex].nextItemIndex) + { + /* key in the current entry */ + it->context.itemIndex++; + return (char*)it->entries[it->context.entryIndex].items[it->context.itemIndex].key.keyStr; + } + else + { + /* find the next used entry */ + for (entryIndex = it->context.entryIndex+1; entryIndex < it->size; entryIndex++) + { + if (it->entries[entryIndex].nextItemIndex > 0) + { + it->context.entryIndex = entryIndex; + it->context.itemIndex = 0; + return (char*)it->entries[entryIndex].items[0].key.keyStr; + } + } + } + + return 0; +} + +char *iupTableRemoveCurr(Itable *it) +{ + char* key; + unsigned int entryIndex; + ItableEntry *entry; + unsigned int itemIndex; + + iupASSERT(it!=NULL); + if (!it || it->context.entryIndex == (unsigned int)-1 + || it->context.itemIndex == (unsigned int)-1) + return 0; + + entry = &it->entries[it->context.entryIndex]; + itemIndex = it->context.itemIndex; + + if (it->context.itemIndex + 1 < it->entries[it->context.entryIndex].nextItemIndex) + { + /* key in the current entry */ + it->context.itemIndex++; + key = (char*)it->entries[it->context.entryIndex].items[it->context.itemIndex].key.keyStr; + + iTableRemoveItem(it, entry, itemIndex); + return key; + } + else + { + /* find the next used entry */ + for (entryIndex = it->context.entryIndex+1; entryIndex < it->size; entryIndex++) + { + if (it->entries[entryIndex].nextItemIndex > 0) + { + it->context.entryIndex = entryIndex; + it->context.itemIndex = 0; + key = (char*)it->entries[entryIndex].items[0].key.keyStr; + + iTableRemoveItem(it, entry, itemIndex); + return key; + } + } + } + + return 0; +} + + +/********************************************/ +/* Private functions */ +/********************************************/ + + +static void iTableFreeItemArray(Itable_IndexTypes indexType, unsigned int nextFreeIndex, ItableItem *items) +{ + unsigned int i; + + iupASSERT(items!=NULL); + if (!items) + return; + + if (indexType == IUPTABLE_STRINGINDEXED) + { + for (i = 0; i < nextFreeIndex; i++) + free((void *)(items[i].key.keyStr)); + } + + for (i = 0; i < nextFreeIndex; i++) + { + if (items[i].itemType == IUPTABLE_STRING) + free(items[i].value); + } + + free(items); +} + + +static unsigned int iTableGetEntryIndex(Itable *it, const char *key, unsigned long *keyIndex) +{ + if (it->indexType == IUPTABLE_STRINGINDEXED) + { + register unsigned int checksum = 0; + +/* Orignal version + unsigned int i; + for (i = 0; key[i]; i++) + checksum = checksum*31 + key[i]; +*/ + + while (*key) + { + checksum *= 31; + checksum += *key; + key++; + } + + *keyIndex = checksum; /* this could NOT be dependent from table size */ + } + else + { + /* Pointer indexed */ + *keyIndex = (unsigned long)key; /* this could NOT be dependent from table size */ + } + + return (unsigned int)((*keyIndex) % it->size); +} + +#ifdef DEBUGTABLE +static void iTableCheckDuplicated(ItableItem *item, unsigned int nextItemIndex, const char *key, + unsigned long keyIndex) +{ + unsigned int i; + for (i = 0; i < nextItemIndex; i++, item++) + { + if (!iupStrEqual((char*)item->key.keyStr, (char*)key) && + item->key.keyIndex == keyIndex) + { + fprintf(stderr, "#ERROR# Duplicated key index (%ld): %s %s \n", keyIndex, + (char*)item->key.keyStr, + (char*)key); + } + } +} +#endif + +static unsigned int iTableFindItem(Itable *it, const char *key, ItableEntry **entry, + unsigned int *itemIndex, + unsigned long *keyIndex) +{ + unsigned int entryIndex, + itemFound, + i; + ItableItem *item; + + entryIndex = iTableGetEntryIndex(it, key, keyIndex); + + *entry = &(it->entries[entryIndex]); + + item = &((*entry)->items[0]); + for (i = 0; i < (*entry)->nextItemIndex; i++, item++) + { + if (it->indexType == IUPTABLE_STRINGINDEXED) + itemFound = item->key.keyIndex == *keyIndex; +/* itemFound = iupStrEqual(item->key.keyStr, key); This is the original safe version */ + else + itemFound = item->key.keyStr == key; + + if (itemFound) + { + *itemIndex = i; + return 1; + } + } + + /* if not found "entry", "itemIndex" and "keyIndex" will have the new insert position. */ + + *itemIndex = i; + return 0; +} + +static void iTableUpdateArraySize(ItableEntry *entry) +{ + if (entry->nextItemIndex >= entry->size) + { + /* we have to expand the item array */ + unsigned int newSize; + + newSize = entry->size + itable_itemGrow; + + entry->items = (ItableItem *)realloc(entry->items, newSize * sizeof(ItableItem)); + iupASSERT(entry->items!=NULL); + if (!entry->items) + return; + + memset(entry->items + entry->size, 0, itable_itemGrow * sizeof(ItableItem)); + + entry->size = newSize; + } +} + + +static void iTableAdd(Itable *it, ItableKey *key, void *value, Itable_Types itemType) +{ + unsigned int entryIndex; + unsigned long keyIndex; + ItableEntry *entry; + ItableItem* item; + + entryIndex = iTableGetEntryIndex(it, key->keyStr, &keyIndex); + + entry = &(it->entries[entryIndex]); + iTableUpdateArraySize(entry); + + /* add a new item at the end of the item array without duplicating memory. */ + item = &(entry->items[entry->nextItemIndex]); + item->itemType = itemType; + item->key.keyIndex = keyIndex; + item->key.keyStr = key->keyStr; + item->value = value; + + entry->nextItemIndex++; + it->numberOfEntries++; +} + +static unsigned int iTableResize(Itable *it) +{ + unsigned int newSizeIndex, + entryIndex, + i; + Itable *newTable; + ItableEntry *entry; + ItableItem *item; + + /* check if we do not need to resize the hash table */ + if (it->numberOfEntries == 0 || + it->tableSizeIndex >= itable_maxTableSizeIndex || + it->size / it->numberOfEntries >= itable_resizeLimit) + return 0; + + /* create a new hash table and copy the contents of + * the current table into the new one + */ + newSizeIndex = it->tableSizeIndex + 1; + newTable = iupTableCreateSized(it->indexType, newSizeIndex); + + for (entryIndex = 0; entryIndex < it->size; entryIndex++) + { + entry = &(it->entries[entryIndex]); + + if (entry->items) + { + item = &(entry->items[0]); + + for (i = 0; i < entry->nextItemIndex; i++, item++) + { + iTableAdd(newTable, &(item->key), item->value, item->itemType); + } + + free(entry->items); + } + } + + free(it->entries); + + it->size = newTable->size; + it->tableSizeIndex = newTable->tableSizeIndex; + it->numberOfEntries = newTable->numberOfEntries; + it->entries = newTable->entries; + + free(newTable); + + return 1; +} + +#ifdef DEBUGTABLE +static void iTableShowStatistics(Itable *it) +{ + unsigned int nofSlots = 0; + unsigned int nofKeys = 0; + double optimalNofKeysPerSlot = 0.0; + unsigned int nofSlotsWithMoreKeys = 0; + unsigned int nofSlotsWithLessKeys = 0; + + unsigned int entryIndex; + fprintf(stderr, "\n--- HASH TABLE STATISTICS ---\n"); + if (!it) + { + fprintf(stderr, "no hash table...\n"); + return; + } + + nofSlots = it->size; + nofKeys = it->numberOfEntries; + optimalNofKeysPerSlot = (double)nofKeys / (double)nofSlots; + + for (entryIndex = 0; entryIndex < it->size; entryIndex++) + { + ItableEntry *entry = &(it->entries[entryIndex]); + + if (entry->nextItemIndex > optimalNofKeysPerSlot + 3) + nofSlotsWithMoreKeys++; + else if (entry->nextItemIndex < optimalNofKeysPerSlot - 3) + nofSlotsWithLessKeys++; + } + + fprintf(stderr, "Number of slots: %d\n", nofSlots); + fprintf(stderr, "Number of keys: %d\n", nofKeys); + fprintf(stderr, "Optimal number of keys per slot: %f\n", optimalNofKeysPerSlot); + fprintf(stderr, "Number of slots with much more keys: %d\n", nofSlotsWithMoreKeys); + fprintf(stderr, "Number of slots with far less keys: %d\n", nofSlotsWithLessKeys); + fprintf(stderr, "\n"); +} +#endif diff --git a/iup/src/iup_table.h b/iup/src/iup_table.h new file mode 100755 index 0000000..5222160 --- /dev/null +++ b/iup/src/iup_table.h @@ -0,0 +1,143 @@ +/** \file + * \brief Simple hash table C API. + * Does not allow 0 values for items... + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_TABLE_H +#define __IUP_TABLE_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** \defgroup table Hash Table + * \par + * The hash table can be indexed by strings or pointer address, + * and each value can contain strings, pointers or function pointers. + * \par + * See \ref iup_table.h + * \ingroup util */ + + +/** How the table key is interpreted. + * \ingroup table */ +typedef enum _Itable_IndexTypes +{ + IUPTABLE_POINTERINDEXED = 10, /**< a pointer address is used as key. */ + IUPTABLE_STRINGINDEXED /**< a string as key */ +} Itable_IndexTypes; + +/** How the value is interpreted. + * \ingroup table */ +typedef enum _Itable_Types +{ + IUPTABLE_POINTER, /**< regular pointer for strings and other pointers */ + IUPTABLE_STRING, /**< string duplicated internally */ + IUPTABLE_FUNCPOINTER /**< function pointer */ +} Itable_Types; + + +typedef void (*Ifunc)(void); + +struct Itable; +typedef struct Itable Itable; + + +/** Creates a hash table with an initial default size. + * This function is equivalent to iupTableCreateSized(0); + * \ingroup table */ +Itable *iupTableCreate(Itable_IndexTypes indexType); + +/** Creates a hash table with the specified initial size. + * Use this function if you expect the table to become very large. + * initialSizeIndex is an array into the (internal) list of + * possible hash table sizes. Currently only indexes from 0 to 8 + * are supported. If you specify a higher value here, the maximum + * allowed value will be used. + * \ingroup table */ +Itable *iupTableCreateSized(Itable_IndexTypes indexType, unsigned int initialSizeIndex); + +/** Destroys the Itable. + * Calls \ref iupTableClear. + * \ingroup table */ +void iupTableDestroy(Itable *n); + +/** Removes all items in the table. + * This function does also free the memory of strings contained in the table!!!! + * \ingroup table */ +void iupTableClear(Itable *it); + +/** Returns the number of keys stored in the table. + * \ingroup table */ +int iupTableCount(Itable *it); + +/** Store an element in the table. + * \ingroup table */ +void iupTableSet(Itable *n, const char *key, void *value, Itable_Types itemType); + +/** Store a function pointer in the table. + * Type is set to IUPTABLE_FUNCPOINTER. + * \ingroup table */ +void iupTableSetFunc(Itable *n, const char *key, Ifunc func); + +/** Retrieves an element from the table. + * Returns NULL if not found. + * \ingroup table */ +void *iupTableGet(Itable *n, const char *key); + +/** Retrieves a function pointer from the table. + * If not a function or not found returns NULL. + * value always contains the element pointer. + * \ingroup table */ +Ifunc iupTableGetFunc(Itable *n, const char *key, void **value); + +/** Retrieves an element from the table and its type. + * \ingroup table */ +void *iupTableGetTyped(Itable *n, const char *key, Itable_Types *itemType); + +/** Removes the entry at the specified key from the + * hash table and frees the memory used by it if + * it is a string... + * \ingroup table */ +void iupTableRemove(Itable *n, const char *key); + +/** Key iteration function. Returns a key. + * To iterate over all keys call iupTableFirst at the first + * and call iupTableNext in a loop + * until 0 is returned... + * Do NOT change the content of the hash table during iteration. + * During an iteration you can use context with + * iupTableGetCurr() to access the value of the key + * very fast. + * \ingroup table */ +char *iupTableFirst(Itable *it); + +/** Key iteration function. See \ref iupTableNext. + * \ingroup table */ +char *iupTableNext(Itable *it); + +/** Returns the value at the current position. + * The current context is an iterator + * that is filled by iupTableNext(). + * iupTableGetCur() is faster then iupTableGet(), + * so when you want to access an item stored + * at a key returned by iupTableNext(), + * use this function instead of iupTableGet(). + * \ingroup table */ +void *iupTableGetCurr(Itable *it); + +/** Removes the current element and returns the next key. + * Use this function to remove an element during an iteration. + * \ingroup table */ +char *iupTableRemoveCurr(Itable *it); + + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/iup/src/iup_tabs.c b/iup/src/iup_tabs.c new file mode 100755 index 0000000..77b2cf5 --- /dev/null +++ b/iup/src/iup_tabs.c @@ -0,0 +1,471 @@ +/** \file +* \brief iuptabs control +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_image.h" +#include "iup_tabs.h" + + + +char* iupTabsGetPaddingAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding); + return str; +} + +char* iupTabsAttribGetStrId(Ihandle* ih, const char* name, int pos) +{ + char str[50]; + sprintf(str, "%s%d", name, pos); + return iupAttribGet(ih, str); +} + +static int iTabsGetMaxWidth(Ihandle* ih) +{ + int max_width = 0, width, pos; + char *tabtitle, *tabimage; + Ihandle* child; + + for (pos = 0, child = ih->firstchild; child; child = child->brother, pos++) + { + tabtitle = iupAttribGet(child, "TABTITLE"); + if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos); + tabimage = iupAttribGet(child, "TABIMAGE"); + if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos); + if (!tabtitle && !tabimage) + tabtitle = " "; + + width = 0; + if (tabtitle) + width += iupdrvFontGetStringWidth(ih, tabtitle); + + if (tabimage) + { + void* img = iupImageGetImage(tabimage, ih, 0); + if (img) + { + int w; + iupdrvImageGetInfo(img, &w, NULL, NULL); + width += w; + } + } + + if (width > max_width) max_width = width; + } + + return max_width; +} + +static int iTabsGetMaxHeight(Ihandle* ih) +{ + int max_height = 0, h, pos; + char *tabimage; + Ihandle* child; + + for (pos = 0, child = ih->firstchild; child; child = child->brother, pos++) + { + tabimage = iupAttribGet(child, "TABIMAGE"); + if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos); + + if (tabimage) + { + void* img = iupImageGetImage(tabimage, ih, 0); + if (img) + { + iupdrvImageGetInfo(img, NULL, &h, NULL); + if (h > max_height) max_height = h; + } + } + } + + iupdrvFontGetCharSize(ih, NULL, &h); + if (h > max_height) max_height = h; + + return max_height; +} + +static void iTabsGetDecorSize(Ihandle* ih, int *width, int *height) +{ + if (ih->data->type == ITABS_LEFT || ih->data->type == ITABS_RIGHT) + { + if (ih->data->orientation == ITABS_HORIZONTAL) + { + int max_width = iTabsGetMaxWidth(ih); + *width = 4 + (3 + max_width + 3) + 2 + 4; + *height = 4 + 4; + + if (iupdrvTabsExtraDecor(ih)) + { + int h; + iupdrvFontGetCharSize(ih, NULL, &h); + *height += h + 4; + } + } + else + { + int max_height = iTabsGetMaxHeight(ih); + *width = 4 + (3 + max_height + 3) + 2 + 4; + *height = 4 + 4; + + if (ih->handle && ih->data->is_multiline) + { + int num_lin = iupdrvTabsGetLineCountAttrib(ih); + *width += (num_lin-1)*(3 + max_height + 3 + 1); + } + } + } + else /* "BOTTOM" or "TOP" */ + { + if (ih->data->orientation == ITABS_HORIZONTAL) + { + int max_height = iTabsGetMaxHeight(ih); + *width = 4 + 4; + *height = 4 + (3 + max_height + 3) + 2 + 4; + + if (ih->handle && ih->data->is_multiline) + { + int num_lin = iupdrvTabsGetLineCountAttrib(ih); + *height += (num_lin-1)*(3 + max_height + 3 + 1); + } + + if (iupdrvTabsExtraDecor(ih)) + { + int h; + iupdrvFontGetCharSize(ih, NULL, &h); + *width += h + 4; + } + } + else + { + int max_width = iTabsGetMaxWidth(ih); + *width = 4 + 4; + *height = 4 + (3 + max_width + 3) + 2 + 4; + } + } + + *width += ih->data->horiz_padding; + *height += ih->data->vert_padding; +} + + +/* ------------------------------------------------------------------------- */ +/* TABS - Sets and Gets - Accessors */ +/* ------------------------------------------------------------------------- */ + +static int iTabsSetValueHandleAttrib(Ihandle* ih, const char* value) +{ + int pos; + Ihandle *child; + + child = (Ihandle*)value; + if (!iupObjectCheck(child)) + return 0; + + pos = IupGetChildPos(ih, child); + if (pos != -1) /* found child */ + { + if (ih->handle) + iupdrvTabsSetCurrentTab(ih, pos); + else + iupAttribSetStr(ih, "_IUPTABS_VALUE_HANDLE", (char*)child); + } + + return 0; +} + +char* iupTabsGetTabTypeAttrib(Ihandle* ih) +{ + switch(ih->data->type) + { + case ITABS_BOTTOM: + return "BOTTOM"; + case ITABS_LEFT: + return "LEFT"; + case ITABS_RIGHT: + return "RIGHT"; + default: + return "TOP"; + } +} + +char* iupTabsGetTabOrientationAttrib(Ihandle* ih) +{ + if (ih->data->orientation == ITABS_HORIZONTAL) + return "HORIZONTAL"; + else + return "VERTICAL"; +} + +static char* iTabsGetValueHandleAttrib(Ihandle* ih) +{ + if (ih->handle) + { + int pos = iupdrvTabsGetCurrentTab(ih); + return (char*)IupGetChild(ih, pos); + } + else + return iupAttribGet(ih, "_IUPTABS_VALUE_HANDLE"); +} + +static int iTabsSetValuePosAttrib(Ihandle* ih, const char* value) +{ + Ihandle* child; + int pos; + + if (!iupStrToInt(value, &pos)) + return 0; + + child = IupGetChild(ih, pos); + if (child) /* found child */ + { + if (ih->handle) + iupdrvTabsSetCurrentTab(ih, pos); + else + iupAttribSetStr(ih, "_IUPTABS_VALUE_HANDLE", (char*)child); + } + + return 0; +} + +static char* iTabsGetValuePosAttrib(Ihandle* ih) +{ + if (ih->handle) + { + int pos = iupdrvTabsGetCurrentTab(ih); + char *str = iupStrGetMemory(50); + sprintf(str, "%d", pos); + return str; + } + else + { + Ihandle* child = (Ihandle*)iupAttribGet(ih, "_IUPTABS_VALUE_HANDLE"); + int pos = IupGetChildPos(ih, child); + if (pos != -1) /* found child */ + { + char *str = iupStrGetMemory(50); + sprintf(str, "%d", pos); + return str; + } + } + + return NULL; +} + +static int iTabsSetValueAttrib(Ihandle* ih, const char* value) +{ + Ihandle *child; + + if (!value) + return 0; + + child = IupGetHandle(value); + if (!child) + return 0; + + iTabsSetValueHandleAttrib(ih, (char*)child); + + return 0; +} + +static char* iTabsGetValueAttrib(Ihandle* ih) +{ + Ihandle* child = (Ihandle*)iTabsGetValueHandleAttrib(ih); + return IupGetName(child); +} + +static char* iTabsGetClientSizeAttrib(Ihandle* ih) +{ + int width, height, decorwidth, decorheight; + char* str = iupStrGetMemory(20); + width = ih->currentwidth; + height = ih->currentheight; + iTabsGetDecorSize(ih, &decorwidth, &decorheight); + width -= decorwidth; + height -= decorheight; + if (width < 0) width = 0; + if (height < 0) height = 0; + sprintf(str, "%dx%d", width, height); + return str; +} + + +/* ------------------------------------------------------------------------- */ +/* TABS - Methods */ +/* ------------------------------------------------------------------------- */ + +static void iTabsComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + Ihandle* child; + int children_expand, + children_naturalwidth, children_naturalheight; + int decorwidth, decorheight; + + /* calculate total children natural size (even for hidden children) */ + children_expand = 0; + children_naturalwidth = 0; + children_naturalheight = 0; + + for (child = ih->firstchild; child; child = child->brother) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + children_expand |= child->expand; + children_naturalwidth = iupMAX(children_naturalwidth, child->naturalwidth); + children_naturalheight = iupMAX(children_naturalheight, child->naturalheight); + } + + iTabsGetDecorSize(ih, &decorwidth, &decorheight); + + *expand = children_expand; + *w = children_naturalwidth + decorwidth; + *h = children_naturalheight + decorheight; +} + +static void iTabsSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + Ihandle* child; + int width, height, decorwidth, decorheight; + + iTabsGetDecorSize(ih, &decorwidth, &decorheight); + + width = ih->currentwidth-decorwidth; + height = ih->currentheight-decorheight; + if (width < 0) width = 0; + if (height < 0) height = 0; + + for (child = ih->firstchild; child; child = child->brother) + { + iupBaseSetCurrentSize(child, width, height, shrink); + } +} + +static void iTabsSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + /* IupTabs is the native parent of its children, + so the position is restarted at (0,0). + In all systems, each tab is a native window covering the client area. + Child coordinates are relative to client left-top corner of the tab page. */ + Ihandle* child; + (void)x; + (void)y; + for (child = ih->firstchild; child; child = child->brother) + { + iupBaseSetPosition(child, 0, 0); + } +} + +static void* iTabsGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child) +{ + while (child && child->parent != ih) + child = child->parent; + if (child) + return iupAttribGet(child, "_IUPTAB_CONTAINER"); + else + return NULL; +} + +static int iTabsCreateMethod(Ihandle* ih, void **params) +{ + ih->data = iupALLOCCTRLDATA(); + + /* add children */ + if(params) + { + Ihandle** iparams = (Ihandle**)params; + while (*iparams) + { + IupAppend(ih, *iparams); + iparams++; + } + } + return IUP_NOERROR; +} + +Iclass* iupTabsGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "tabs"; + ic->format = "g"; /* array of Ihandle */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDMANY; + ic->is_interactive = 1; + ic->has_attrib_id = 1; + + /* Class functions */ + ic->Create = iTabsCreateMethod; + ic->GetInnerNativeContainerHandle = iTabsGetInnerNativeContainerHandleMethod; + + ic->ComputeNaturalSize = iTabsComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iTabsSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iTabsSetChildrenPositionMethod; + + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* IupTabs Callbacks */ + iupClassRegisterCallback(ic, "TABCHANGE_CB", "nn"); + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupTabs only */ + iupClassRegisterAttribute(ic, "VALUE", iTabsGetValueAttrib, iTabsSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUEPOS", iTabsGetValuePosAttrib, iTabsSetValuePosAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE_HANDLE", iTabsGetValueHandleAttrib, iTabsSetValueHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + + /* Base Container */ + iupClassRegisterAttribute(ic, "CLIENTSIZE", iTabsGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvTabsInitClass(ic); + + return ic; +} + +Ihandle* IupTabs(Ihandle* first,...) +{ + Ihandle **params; + Ihandle *ih; + + va_list arglist; + va_start(arglist, first); + params = (Ihandle**)iupObjectGetParamList(first, arglist); + va_end(arglist); + + ih = IupCreatev("tabs", (void**)params); + free(params); + + return ih; +} + +Ihandle* IupTabsv(Ihandle** params) +{ + return IupCreatev("tabs", (void**)params); +} diff --git a/iup/src/iup_tabs.h b/iup/src/iup_tabs.h new file mode 100755 index 0000000..7f5df2e --- /dev/null +++ b/iup/src/iup_tabs.h @@ -0,0 +1,50 @@ +/** \file + * \brief Tabs Control + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_TABS_H +#define __IUP_TABS_H + +#ifdef __cplusplus +extern "C" { +#endif + + +char* iupTabsGetTabOrientationAttrib(Ihandle* ih); +char* iupTabsGetTabTypeAttrib(Ihandle* ih); +char* iupTabsAttribGetStrId(Ihandle* ih, const char* name, int pos); +char* iupTabsGetPaddingAttrib(Ihandle* ih); + +int iupdrvTabsExtraDecor(Ihandle* ih); +int iupdrvTabsGetLineCountAttrib(Ihandle* ih); +void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos); +int iupdrvTabsGetCurrentTab(Ihandle* ih); +void iupdrvTabsInitClass(Iclass* ic); + +typedef enum +{ + ITABS_TOP, ITABS_BOTTOM, ITABS_LEFT, ITABS_RIGHT +} ItabsType; + +typedef enum +{ + ITABS_HORIZONTAL, ITABS_VERTICAL +} ItabsOrientation; + +/* Control context */ +struct _IcontrolData +{ + ItabsType type; + ItabsOrientation orientation; + int horiz_padding, vert_padding; /* tab title margin */ + int is_multiline; /* used only in Windows */ +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_text.c b/iup/src/iup_text.c new file mode 100755 index 0000000..6cd7235 --- /dev/null +++ b/iup/src/iup_text.c @@ -0,0 +1,513 @@ +/** \file + * \brief Text Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_mask.h" +#include "iup_array.h" +#include "iup_text.h" +#include "iup_assert.h" + + +char* iupTextGetFormattingAttrib(Ihandle* ih) +{ + if (ih->data->has_formatting) + return "YES"; + else + return "NO"; +} + +int iupTextSetFormattingAttrib(Ihandle* ih, const char* value) +{ + if (ih->handle) /* only before map */ + return 0; + + ih->data->has_formatting = iupStrBoolean(value); + + return 0; +} + +static void iTextDestroyFormatTags(Ihandle* ih) +{ + /* called if the element was destroyed before it was mapped */ + int i, count = iupArrayCount(ih->data->formattags); + Ihandle** tag_array = (Ihandle**)iupArrayGetData(ih->data->formattags); + for (i = 0; i < count; i++) + IupDestroy(tag_array[i]); + iupArrayDestroy(ih->data->formattags); + ih->data->formattags = NULL; +} + +static void iTextUpdateValueAttrib(Ihandle* ih) +{ + char* value = iupAttribGet(ih, "VALUE"); + if (value) + { + int inherit; + iupClassObjectSetAttribute(ih, "VALUE", value, &inherit); + + iupAttribSetStr(ih, "VALUE", NULL); /* clear hash table */ + } +} + +char* iupTextGetNCAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(100); + sprintf(str, "%d", ih->data->nc); + return str; +} + +void iupTextUpdateFormatTags(Ihandle* ih) +{ + /* called when the element is mapped */ + int i, count = iupArrayCount(ih->data->formattags); + Ihandle** tag_array = (Ihandle**)iupArrayGetData(ih->data->formattags); + + /* must update VALUE before updating the format */ + iTextUpdateValueAttrib(ih); + + for (i = 0; i < count; i++) + { + iupdrvTextAddFormatTag(ih, tag_array[i]); + IupDestroy(tag_array[i]); + } + iupArrayDestroy(ih->data->formattags); + ih->data->formattags = NULL; +} + +int iupTextSetAddFormatTagHandleAttrib(Ihandle* ih, const char* value) +{ + Ihandle* formattag = (Ihandle*)value; + if (!iupObjectCheck(formattag)) + return 0; + + if (ih->handle) + { + /* must update VALUE before updating the format */ + iTextUpdateValueAttrib(ih); + + iupdrvTextAddFormatTag(ih, formattag); + IupDestroy(formattag); + } + else + { + Ihandle** tag_array; + int i; + + if (!ih->data->formattags) + ih->data->formattags = iupArrayCreate(10, sizeof(Ihandle*)); + + i = iupArrayCount(ih->data->formattags); + tag_array = (Ihandle**)iupArrayInc(ih->data->formattags); + tag_array[i] = formattag; + } + return 0; +} + +int iupTextSetAddFormatTagAttrib(Ihandle* ih, const char* value) +{ + return iupTextSetAddFormatTagHandleAttrib(ih, (char*)IupGetHandle(value)); +} + +static char* iTextGetMaskDataAttrib(Ihandle* ih) +{ + /* Used only by the OLD iupmask API */ + return (char*)ih->data->mask; +} + +static char* iTextGetMaskAttrib(Ihandle* ih) +{ + if (ih->data->mask) + return iupMaskGetStr(ih->data->mask); + else + return NULL; +} + +static int iTextSetMaskAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + if (ih->data->mask) + { + iupMaskDestroy(ih->data->mask); + ih->data->mask = NULL; + } + } + else + { + int casei = iupAttribGetInt(ih, "MASKCASEI"); + Imask* mask = iupMaskCreate(value,casei); + if (mask) + { + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + ih->data->mask = mask; + return 0; + } + } + + return 0; +} + +static int iTextSetMaskIntAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + if (ih->data->mask) + { + iupMaskDestroy(ih->data->mask); + ih->data->mask = NULL; + } + } + else + { + Imask* mask; + int min, max; + + if (iupStrToIntInt(value, &min, &max, ':')!=2) + return 0; + + mask = iupMaskCreateInt(min,max); + + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + ih->data->mask = mask; + } + + return 0; +} + +static int iTextSetMaskFloatAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + if (ih->data->mask) + { + iupMaskDestroy(ih->data->mask); + ih->data->mask = NULL; + } + } + else + { + Imask* mask; + float min, max; + + if (iupStrToFloatFloat(value, &min, &max, ':')!=2) + return 0; + + mask = iupMaskCreateFloat(min,max); + + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); + + ih->data->mask = mask; + } + + return 0; +} + +static int iTextSetMultilineAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + { + ih->data->is_multiline = 1; + ih->data->sb = IUP_SB_HORIZ | IUP_SB_VERT; /* reset SCROLLBAR to YES */ + } + else + ih->data->is_multiline = 0; + + return 0; +} + +static char* iTextGetMultilineAttrib(Ihandle* ih) +{ + if (ih->data->is_multiline) + return "YES"; + else + return "NO"; +} + +static int iTextSetAppendNewlineAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + ih->data->append_newline = 1; + else + ih->data->append_newline = 0; + return 0; +} + +static char* iTextGetAppendNewlineAttrib(Ihandle* ih) +{ + if (ih->data->append_newline) + return "YES"; + else + return "NO"; +} + +static int iTextSetScrollbarAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle || !ih->data->is_multiline) + return 0; + + if (!value) + value = "YES"; /* default, if multiline, is YES */ + + if (iupStrEqualNoCase(value, "YES")) + ih->data->sb = IUP_SB_HORIZ | IUP_SB_VERT; + else if (iupStrEqualNoCase(value, "HORIZONTAL")) + ih->data->sb = IUP_SB_HORIZ; + else if (iupStrEqualNoCase(value, "VERTICAL")) + ih->data->sb = IUP_SB_VERT; + else + ih->data->sb = IUP_SB_NONE; + + return 0; +} + +static char* iTextGetScrollbarAttrib(Ihandle* ih) +{ + if (ih->data->sb == (IUP_SB_HORIZ | IUP_SB_VERT)) + return "YES"; + if (ih->data->sb &= IUP_SB_HORIZ) + return "HORIZONTAL"; + if (ih->data->sb == IUP_SB_VERT) + return "VERTICAL"; + return "NO"; /* IUP_SB_NONE */ +} + +char* iupTextGetPaddingAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding); + return str; +} + + +/********************************************************************/ + + +static int iTextCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + if (params[0]) iupAttribStoreStr(ih, "ACTION", (char*)(params[0])); + } + ih->data = iupALLOCCTRLDATA(); + ih->data->append_newline = 1; + return IUP_NOERROR; +} + +static int iMultilineCreateMethod(Ihandle* ih, void** params) +{ + iTextCreateMethod(ih, params); + ih->data->is_multiline = 1; + ih->data->sb = IUP_SB_HORIZ | IUP_SB_VERT; + return IUP_NOERROR; +} + +static void iTextComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w = 0, + natural_h = 0, + visiblecolumns = iupAttribGetInt(ih, "VISIBLECOLUMNS"), + visiblelines = iupAttribGetInt(ih, "VISIBLELINES"); + (void)expand; /* unset if not a container */ + + /* Since the contents can be changed by the user, the size can not be dependent on it. */ + if (ih->data->is_multiline) + { + iupdrvFontGetCharSize(ih, NULL, &natural_h); /* one line height */ + natural_w = iupdrvFontGetStringWidth(ih, "WWWWWWWWWW"); + natural_w = (visiblecolumns*natural_w)/10; + natural_h = visiblelines*natural_h; + } + else + { + iupdrvFontGetCharSize(ih, NULL, &natural_h); /* one line height */ + natural_w = iupdrvFontGetStringWidth(ih, "WWWWWWWWWW"); + natural_w = (visiblecolumns*natural_w)/10; + } + + /* compute the borders space */ + if (iupAttribGetBoolean(ih, "BORDER")) + iupdrvTextAddBorders(&natural_w, &natural_h); + + if (iupAttribGetBoolean(ih, "SPIN")) + iupdrvTextAddSpin(&natural_w, natural_h); + + natural_w += 2*ih->data->horiz_padding; + natural_h += 2*ih->data->vert_padding; + + /* add scrollbar */ + if (ih->data->is_multiline && ih->data->sb) + { + int sb_size = iupdrvGetScrollbarSize(); + if (ih->data->sb & IUP_SB_HORIZ) + natural_w += sb_size; + if (ih->data->sb & IUP_SB_VERT) + natural_h += sb_size; + } + + *w = natural_w; + *h = natural_h; +} + +static void iTextDestroyMethod(Ihandle* ih) +{ + if (ih->data->formattags) + iTextDestroyFormatTags(ih); + if (ih->data->mask) + iupMaskDestroy(ih->data->mask); +} + + +/******************************************************************************/ + + +void IupTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (!ih->handle) + return; + + if (iupStrEqual(ih->iclass->name, "text") || + iupStrEqual(ih->iclass->name, "multiline")) + { + if (ih->data->is_multiline) + iupdrvTextConvertLinColToPos(ih, lin, col, pos); + else + *pos = col - 1; /* IUP starts at 1 */ + } +} + +void IupTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (!ih->handle) + return; + + if (iupStrEqual(ih->iclass->name, "text") || + iupStrEqual(ih->iclass->name, "multiline")) + { + if (ih->data->is_multiline) + iupdrvTextConvertPosToLinCol(ih, pos, lin, col); + else + { + *col = pos + 1; /* IUP starts at 1 */ + *lin = 1; + } + } +} + +Ihandle* IupText(const char* action) +{ + void *params[2]; + params[0] = (void*)action; + params[1] = NULL; + return IupCreatev("text", params); +} + +Ihandle* IupMultiLine(const char* action) +{ + void *params[2]; + params[0] = (void*)action; + params[1] = NULL; + return IupCreatev("multiline", params); +} + +Iclass* iupTextGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "text"; + ic->format = "A"; /* one optional callback name */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iTextCreateMethod; + ic->Destroy = iTextDestroyMethod; + ic->ComputeNaturalSize = iTextComputeNaturalSizeMethod; + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "CARET_CB", "iii"); + iupClassRegisterCallback(ic, "ACTION", "is"); + iupClassRegisterCallback(ic, "DROPFILES_CB", "siii"); + iupClassRegisterCallback(ic, "BUTTON_CB", "iiiis"); + iupClassRegisterCallback(ic, "MOTION_CB", "iis"); + iupClassRegisterCallback(ic, "SPIN_CB", "i"); + iupClassRegisterCallback(ic, "VALUECHANGED_CB", ""); + + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupText only */ + iupClassRegisterAttribute(ic, "SCROLLBAR", iTextGetScrollbarAttrib, iTextSetScrollbarAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MULTILINE", iTextGetMultilineAttrib, iTextSetMultilineAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPENDNEWLINE", iTextGetAppendNewlineAttrib, iTextSetAppendNewlineAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "MASKCASEI", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MASK", iTextGetMaskAttrib, iTextSetMaskAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MASKINT", NULL, iTextSetMaskIntAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MASKFLOAT", NULL, iTextSetMaskFloatAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "OLD_MASK_DATA", iTextGetMaskDataAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "BORDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPIN", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINALIGN", NULL, NULL, IUPAF_SAMEASSYSTEM, "RIGHT", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINAUTO", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINWRAP", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VISIBLECOLUMNS", NULL, NULL, IUPAF_SAMEASSYSTEM, "5", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VISIBLELINES", NULL, NULL, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "WORDWRAP", NULL, NULL, NULL, NULL, IUPAF_DEFAULT); + + iupdrvTextInitClass(ic); + + return ic; +} + +Iclass* iupMultilineGetClass(void) +{ + Iclass* ic = iupTextGetClass(); + ic->Create = iMultilineCreateMethod; + ic->name = "multiline"; /* register the multiline name, so LED will work */ + return ic; +} diff --git a/iup/src/iup_text.h b/iup/src/iup_text.h new file mode 100755 index 0000000..e018961 --- /dev/null +++ b/iup/src/iup_text.h @@ -0,0 +1,48 @@ +/** \file + * \brief Text Controls Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_TEXT_H +#define __IUP_TEXT_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupdrvTextInitClass(Iclass* ic); +void iupdrvTextAddBorders(int *w, int *h); +void iupdrvTextAddSpin(int *w, int h); +void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag); +void iupdrvTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos); +void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col); + +void iupTextUpdateFormatTags(Ihandle* ih); +char* iupTextGetPaddingAttrib(Ihandle* ih); +char* iupTextGetNCAttrib(Ihandle* ih); +int iupTextSetFormattingAttrib(Ihandle* ih, const char* value); +char* iupTextGetFormattingAttrib(Ihandle* ih); +int iupTextSetAddFormatTagAttrib(Ihandle* ih, const char* value); +int iupTextSetAddFormatTagHandleAttrib(Ihandle* ih, const char* value); + +struct _IcontrolData +{ + int is_multiline, + has_formatting, + append_newline, + nc, + sb, /* scrollbar configuration, can be changed only before map */ + horiz_padding, vert_padding, /* button margin */ + last_caret_pos; + Iarray* formattags; + Imask* mask; +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_timer.c b/iup/src/iup_timer.c new file mode 100755 index 0000000..9a003b4 --- /dev/null +++ b/iup/src/iup_timer.c @@ -0,0 +1,80 @@ +/** \file + * \brief Timer Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" +#include "iup_timer.h" + + +static int iTimerSetRunAttrib(Ihandle *ih, const char *value) +{ + if (iupStrBoolean(value)) + iupdrvTimerRun(ih); + else + iupdrvTimerStop(ih); + + return 0; +} + +static char* iTimerGetRunAttrib(Ihandle *ih) +{ + if (ih->serial > 0) + return "YES"; + else + return "NO"; +} + +static char* iTimerGetWidAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(50); + sprintf(str, "%d", ih->serial); + return str; +} + +static void iTimerDestroyMethod(Ihandle* ih) +{ + iupdrvTimerStop(ih); +} + +/******************************************************************************/ + +Ihandle* IupTimer(void) +{ + return IupCreate("timer"); +} + +Iclass* iupTimerGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "timer"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Destroy = iTimerDestroyMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "ACTION_CB", ""); + + /* Attribute functions */ + iupClassRegisterAttribute(ic, "WID", iTimerGetWidAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "RUN", iTimerGetRunAttrib, iTimerSetRunAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TIME", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvTimerInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_timer.h b/iup/src/iup_timer.h new file mode 100755 index 0000000..8a61f5f --- /dev/null +++ b/iup/src/iup_timer.h @@ -0,0 +1,24 @@ +/** \file + * \brief Timer Resource Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_TIMER_H +#define __IUP_TIMER_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupdrvTimerStop(Ihandle* ih); +void iupdrvTimerRun(Ihandle* ih); +void iupdrvTimerInitClass(Iclass* ic); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_toggle.c b/iup/src/iup_toggle.c new file mode 100755 index 0000000..9a09f52 --- /dev/null +++ b/iup/src/iup_toggle.c @@ -0,0 +1,140 @@ +/** \file + * \brief Toggle Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_toggle.h" +#include "iup_image.h" + + +static char* iToggleGetRadioAttrib(Ihandle* ih) +{ + if (ih->data->radio) + return "YES"; + else + return "NO"; +} + +char* iupToggleGetPaddingAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding); + return str; +} + +static int iToggleCreateMethod(Ihandle* ih, void** params) +{ + if (params) + { + if (params[0]) iupAttribStoreStr(ih, "TITLE", (char*)(params[0])); + if (params[1]) iupAttribStoreStr(ih, "ACTION", (char*)(params[1])); + } + ih->data = iupALLOCCTRLDATA(); + return IUP_NOERROR; +} + +static void iToggleComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w = 0, + natural_h = 0, + type = ih->data->type; + (void)expand; /* unset if not a container */ + + if (!ih->handle) + { + /* if not mapped must initialize the internal values */ + char* value = iupAttribGet(ih, "IMAGE"); + if (value) + type = IUP_TOGGLE_IMAGE; + else + type = IUP_TOGGLE_TEXT; + } + + if (type == IUP_TOGGLE_IMAGE) + { + iupImageGetInfo(iupAttribGet(ih, "IMAGE"), &natural_w, &natural_h, NULL); + + /* even when IMPRESS is set, must compute the borders space */ + iupdrvButtonAddBorders(&natural_w, &natural_h); + + natural_w += 2*ih->data->horiz_padding; + natural_h += 2*ih->data->vert_padding; + } + else /* IUP_TOGGLE_TEXT */ + { + /* must use IupGetAttribute to check from the native implementation */ + char* title = IupGetAttribute(ih, "TITLE"); + char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */ + iupdrvFontGetMultiLineStringSize(ih, str, &natural_w, &natural_h); + if (str && str!=title) free(str); + + iupdrvToggleAddCheckBox(&natural_w, &natural_h); + } + + *w = natural_w; + *h = natural_h; +} + + +/******************************************************************************/ + + +Ihandle* IupToggle(const char* title, const char* action) +{ + void *params[3]; + params[0] = (void*)title; + params[1] = (void*)action; + params[2] = NULL; + return IupCreatev("toggle", params); +} + +Iclass* iupToggleGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "toggle"; + ic->format = "SA"; /* one optional string and one optional callback name */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iToggleCreateMethod; + ic->ComputeNaturalSize = iToggleComputeNaturalSizeMethod; + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "ACTION", "i"); + iupClassRegisterCallback(ic, "VALUECHANGED_CB", ""); + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + iupClassRegisterAttribute(ic, "RADIO", iToggleGetRadioAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "3STATE", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + iupdrvToggleInitClass(ic); + + return ic; +} diff --git a/iup/src/iup_toggle.h b/iup/src/iup_toggle.h new file mode 100755 index 0000000..08e14b0 --- /dev/null +++ b/iup/src/iup_toggle.h @@ -0,0 +1,37 @@ +/** \file + * \brief Toggle Controls Private Declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_TOGGLE_H +#define __IUP_TOGGLE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupdrvButtonAddBorders(int *x, int *y); /* reuse button borders */ + +void iupdrvToggleInitClass(Iclass* ic); +void iupdrvToggleAddCheckBox(int *x, int *y); + +Ihandle *iupRadioFindToggleParent(Ihandle* ih_toggle); +char* iupToggleGetPaddingAttrib(Ihandle* ih); + +enum {IUP_TOGGLE_IMAGE, IUP_TOGGLE_TEXT}; + +struct _IcontrolData +{ + int type, /* the 2 toggle possibilities */ + radio, + horiz_padding, vert_padding; /* toggle margin for images */ +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_tree.c b/iup/src/iup_tree.c new file mode 100755 index 0000000..c06e573 --- /dev/null +++ b/iup/src/iup_tree.c @@ -0,0 +1,499 @@ +/** \file + * \brief Tree control + * + * See Copyright Notice in iup.h + */ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_tree.h" +#include "iup_assert.h" + + +#define ITREE_IMG_WIDTH 16 +#define ITREE_IMG_HEIGHT 16 + +static void iTreeInitializeImages(void) +{ + Ihandle *image_leaf, *image_blank, *image_paper; + Ihandle *image_collapsed, *image_expanded; + + unsigned char img_leaf[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 4, 5, 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 5, 5, 1, 6, 1, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 4, 4, 5, 5, 1, 6, 1, 5, 0, 0, 0, 0, + 0, 0, 0, 3, 4, 4, 4, 5, 5, 1, 1, 5, 0, 0, 0, 0, + 0, 0, 0, 2, 3, 4, 4, 4, 5, 5, 5, 4, 0, 0, 0, 0, + 0, 0, 0, 2, 3, 3, 4, 4, 4, 5, 4, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 3, 4, 4, 4, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + unsigned char img_collapsed[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 6, 5, 5, 7, 7, 2, 3, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, + 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 4, 3, 0, + 2, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 4, 3, 0, + 2, 5, 7, 7, 7, 7, 7, 7, 7, 1, 7, 1, 7, 4, 3, 0, + 2, 5, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 1, 4, 3, 0, + 2, 5, 7, 7, 7, 7, 7, 1, 7, 1, 7, 1, 7, 4, 3, 0, + 2, 5, 7, 7, 7, 7, 7, 7, 1, 7, 1, 7, 1, 4, 3, 0, + 2, 5, 7, 7, 7, 1, 7, 1, 7, 1, 7, 1, 1, 4, 3, 0, + 2, 5, 1, 7, 1, 7, 1, 7, 1, 7, 1, 1, 1, 4, 3, 0, + 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 0, + 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + unsigned char img_expanded[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 1, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 0, + 0, 2, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 6, 4, + 0, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 3, 6, 4, + 2, 1, 3, 3, 3, 3, 3, 3, 5, 3, 5, 6, 4, 6, 6, 4, + 2, 1, 3, 3, 3, 3, 5, 3, 3, 5, 3, 6, 4, 6, 6, 4, + 0, 2, 0, 3, 3, 3, 3, 3, 5, 3, 5, 5, 2, 4, 2, 4, + 0, 2, 0, 3, 3, 5, 3, 5, 3, 5, 5, 5, 6, 4, 2, 4, + 0, 0, 2, 0, 5, 3, 5, 3, 5, 5, 5, 5, 6, 2, 4, 4, + 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, + 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + unsigned char img_blank[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0, + 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, 0, 0, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 4, 0, 0, + 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 0, + 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0 + }; + + unsigned char img_paper[ITREE_IMG_WIDTH*ITREE_IMG_HEIGHT] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0, + 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, 0, 0, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 4, 0, 0, + 0, 0, 3, 1, 4, 3, 4, 3, 4, 3, 4, 2, 2, 2, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 3, 4, 3, 4, 3, 4, 3, 4, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 3, 4, 3, 4, 3, 4, 3, 4, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 1, 5, 2, 0, + 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 0, + 0, 0, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 0, + 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0 + }; + + image_leaf = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_leaf); + image_collapsed = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_collapsed); + image_expanded = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_expanded); + image_blank = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_blank); + image_paper = IupImage(ITREE_IMG_WIDTH, ITREE_IMG_HEIGHT, img_paper); + + IupSetAttribute(image_leaf, "0", "BGCOLOR"); + IupSetAttribute(image_leaf, "1", "192 192 192"); + IupSetAttribute(image_leaf, "2", "56 56 56"); + IupSetAttribute(image_leaf, "3", "99 99 99"); + IupSetAttribute(image_leaf, "4", "128 128 128"); + IupSetAttribute(image_leaf, "5", "161 161 161"); + IupSetAttribute(image_leaf, "6", "222 222 222"); + + IupSetAttribute(image_collapsed, "0", "BGCOLOR"); + IupSetAttribute(image_collapsed, "1", "255 206 156"); + IupSetAttribute(image_collapsed, "2", "156 156 0"); + IupSetAttribute(image_collapsed, "3", "0 0 0"); + IupSetAttribute(image_collapsed, "4", "206 206 99"); + IupSetAttribute(image_collapsed, "5", "255 255 206"); + IupSetAttribute(image_collapsed, "6", "247 247 247"); + IupSetAttribute(image_collapsed, "7", "255 255 156"); + + IupSetAttribute(image_expanded, "0", "BGCOLOR"); + IupSetAttribute(image_expanded, "1", "255 255 255"); + IupSetAttribute(image_expanded, "2", "156 156 0"); + IupSetAttribute(image_expanded, "3", "255 255 156"); + IupSetAttribute(image_expanded, "4", "0 0 0"); + IupSetAttribute(image_expanded, "5", "255 206 156"); + IupSetAttribute(image_expanded, "6", "206 206 99"); + + IupSetAttribute(image_blank, "0", "BGCOLOR"); + IupSetAttribute(image_blank, "1", "255 255 255"); + IupSetAttribute(image_blank, "2", "000 000 000"); + IupSetAttribute(image_blank, "3", "119 119 119"); + IupSetAttribute(image_blank, "4", "136 136 136"); + IupSetAttribute(image_blank, "5", "187 187 187"); + + IupSetAttribute(image_paper, "0", "BGCOLOR"); + IupSetAttribute(image_paper, "1", "255 255 255"); + IupSetAttribute(image_paper, "2", "000 000 000"); + IupSetAttribute(image_paper, "3", "119 119 119"); + IupSetAttribute(image_paper, "4", "136 136 136"); + IupSetAttribute(image_paper, "5", "187 187 187"); + + IupSetHandle("IMGLEAF", image_leaf); + IupSetHandle("IMGCOLLAPSED", image_collapsed); + IupSetHandle("IMGEXPANDED", image_expanded); + IupSetHandle("IMGBLANK", image_blank); + IupSetHandle("IMGPAPER", image_paper); +} + +void iupTreeUpdateImages(Ihandle *ih) +{ + int inherit; + + char* value = iupAttribGet(ih, "IMAGELEAF"); + if (!value) value = "IMGLEAF"; + iupClassObjectSetAttribute(ih, "IMAGELEAF", value, &inherit); + + value = iupAttribGet(ih, "IMAGEBRANCHCOLLAPSED"); + if (!value) value = "IMGCOLLAPSED"; + iupClassObjectSetAttribute(ih, "IMAGEBRANCHCOLLAPSED", value, &inherit); + + value = iupAttribGet(ih, "IMAGEBRANCHEXPANDED"); + if (!value) value = "IMGEXPANDED"; + iupClassObjectSetAttribute(ih, "IMAGEBRANCHEXPANDED", value, &inherit); +} + +char* iupTreeGetSpacingAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%d", ih->data->spacing); + return str; +} + +static char* iTreeGetMarkModeAttrib(Ihandle* ih) +{ + if (ih->data->mark_mode==ITREE_MARK_SINGLE) + return "SINGLE"; + else + return "MULTIPLE"; +} + +static int iTreeSetMarkModeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "MULTIPLE")) + ih->data->mark_mode = ITREE_MARK_MULTIPLE; + else + ih->data->mark_mode = ITREE_MARK_SINGLE; + if (ih->handle) + iupdrvTreeUpdateMarkMode(ih); + return 0; +} + +static int iTreeSetShiftAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value) && iupAttribGetBoolean(ih, "CTRL")) + iTreeSetMarkModeAttrib(ih, "MULTIPLE"); + else + iTreeSetMarkModeAttrib(ih, "SINGLE"); + return 1; +} + +static int iTreeSetCtrlAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value) && iupAttribGetBoolean(ih, "SHIFT")) + iTreeSetMarkModeAttrib(ih, "MULTIPLE"); + else + iTreeSetMarkModeAttrib(ih, "SINGLE"); + return 1; +} + +static char* iTreeGetShowRenameAttrib(Ihandle* ih) +{ + if (ih->data->show_rename) + return "YES"; + else + return "NO"; +} + +static int iTreeSetShowRenameAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + ih->data->show_rename = 1; + else + ih->data->show_rename = 0; + + return 0; +} + +static char* iTreeGetShowDragDropAttrib(Ihandle* ih) +{ + if (ih->data->show_dragdrop) + return "YES"; + else + return "NO"; +} + +static int iTreeSetShowDragDropAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + ih->data->show_dragdrop = 1; + else + ih->data->show_dragdrop = 0; + + return 0; +} + +static int iTreeSetAddLeafAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + iupdrvTreeAddNode(ih, name_id, ITREE_LEAF, value, 1); + return 0; +} + +static int iTreeSetAddBranchAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + iupdrvTreeAddNode(ih, name_id, ITREE_BRANCH, value, 1); + return 0; +} + +static int iTreeSetInsertLeafAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + iupdrvTreeAddNode(ih, name_id, ITREE_LEAF, value, 0); + return 0; +} + +static int iTreeSetInsertBranchAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + iupdrvTreeAddNode(ih, name_id, ITREE_BRANCH, value, 0); + return 0; +} + +static char* iTreeGetAddExpandedAttrib(Ihandle* ih) +{ + if (ih->data->add_expanded) + return "YES"; + else + return "NO"; +} + +static int iTreeSetAddExpandedAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + ih->data->add_expanded = 1; + else + ih->data->add_expanded = 0; + + return 0; +} + +static int iTreeCreateMethod(Ihandle* ih, void **params) +{ + (void)params; + + ih->data = iupALLOCCTRLDATA(); + + IupSetAttribute(ih, "RASTERSIZE", "400x200"); + IupSetAttribute(ih, "EXPAND", "YES"); + + ih->data->add_expanded = 1; + + return IUP_NOERROR; +} + +Ihandle* IupTree(void) +{ + return IupCreate("tree"); +} + +Iclass* iupTreeGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "tree"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */ + + /* Class functions */ + ic->Create = iTreeCreateMethod; + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "SELECTION_CB", "ii"); + iupClassRegisterCallback(ic, "MULTISELECTION_CB", "Ii"); + iupClassRegisterCallback(ic, "BRANCHOPEN_CB", "i"); + iupClassRegisterCallback(ic, "BRANCHCLOSE_CB", "i"); + iupClassRegisterCallback(ic, "EXECUTELEAF_CB", "i"); + iupClassRegisterCallback(ic, "RENAMENODE_CB", "is"); + iupClassRegisterCallback(ic, "SHOWRENAME_CB", "i"); + iupClassRegisterCallback(ic, "RENAME_CB", "is"); + iupClassRegisterCallback(ic, "DRAGDROP_CB", "iiii"); + iupClassRegisterCallback(ic, "RIGHTCLICK_CB", "i"); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupTree Attributes - GENERAL */ + iupClassRegisterAttribute(ic, "SHOWDRAGDROP", iTreeGetShowDragDropAttrib, iTreeSetShowDragDropAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWRENAME", iTreeGetShowRenameAttrib, iTreeSetShowRenameAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ADDEXPANDED", iTreeGetAddExpandedAttrib, iTreeSetAddExpandedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupTree Attributes - MARKS */ + iupClassRegisterAttribute(ic, "CTRL", NULL, iTreeSetCtrlAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SHIFT", NULL, iTreeSetShiftAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "MARKMODE", iTreeGetMarkModeAttrib, iTreeSetMarkModeAttrib, IUPAF_SAMEASSYSTEM, "SINGLE", IUPAF_NOT_MAPPED); + + /* IupTree Attributes - ACTION */ + iupClassRegisterAttributeId(ic, "ADDLEAF", NULL, iTreeSetAddLeafAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "ADDBRANCH", NULL, iTreeSetAddBranchAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "INSERTLEAF", NULL, iTreeSetInsertLeafAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "INSERTBRANCH", NULL, iTreeSetInsertBranchAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + /* Default node images */ + iTreeInitializeImages(); + + iupdrvTreeInitClass(ic); + + return ic; +} + + +/********************************************************************************************/ + + +void IupTreeSetAttribute(Ihandle* ih, const char* a, int id, char* v) +{ + char* attr = iupStrGetMemory(50); + sprintf(attr, "%s%d", a, id); + IupSetAttribute(ih, attr, v); +} + +void IupTreeStoreAttribute(Ihandle* ih, const char* a, int id, char* v) +{ + char* attr = iupStrGetMemory(50); + sprintf(attr, "%s%d", a, id); + IupStoreAttribute(ih, attr, v); +} + +char* IupTreeGetAttribute(Ihandle* ih, const char* a, int id) +{ + char* attr = iupStrGetMemory(50); + sprintf(attr, "%s%d", a, id); + return IupGetAttribute(ih, attr); +} + +int IupTreeGetInt(Ihandle* ih, const char* a, int id) +{ + char* attr = iupStrGetMemory(50); + sprintf(attr, "%s%d", a, id); + return IupGetInt(ih, attr); +} + +float IupTreeGetFloat(Ihandle* ih, const char* a, int id) +{ + char* attr = iupStrGetMemory(50); + sprintf(attr, "%s%d", a, id); + return IupGetFloat(ih, attr); +} + +void IupTreeSetfAttribute(Ihandle* ih, const char* a, int id, char* f, ...) +{ + static char v[SHRT_MAX]; + char* attr = iupStrGetMemory(50); + va_list arglist; + sprintf(attr, "%s%d", a, id); + va_start(arglist, f); + vsprintf(v, f, arglist); + va_end(arglist); + IupStoreAttribute(ih, attr, v); +} + + +/************************************************************************************/ + + +int IupTreeSetUserId(Ihandle* ih, int id, void* userdata) +{ + char attr[30]; + sprintf(attr,"USERDATA%d",id); + IupSetAttribute(ih, attr, userdata); + return IupGetAttribute(ih, attr)? 1: 0; +} + +int IupTreeGetId(Ihandle* ih, void *userdata) +{ + int id = -1; + char* value; + char attr[30]; + sprintf(attr,"FINDUSERDATA:%p",userdata); + value = IupGetAttribute(ih, attr); + if (!value) return -1; + + iupStrToInt(value, &id); + return id; +} + +void* IupTreeGetUserId(Ihandle* ih, int id) +{ + char attr[30]; + sprintf(attr,"USERDATA%d",id); + return IupGetAttribute(ih, attr); +} diff --git a/iup/src/iup_tree.h b/iup/src/iup_tree.h new file mode 100755 index 0000000..f96a698 --- /dev/null +++ b/iup/src/iup_tree.h @@ -0,0 +1,57 @@ +/** \file + * \brief iuptree control internal definitions. + * + * See Copyright Notice in iup.h + */ + +#ifndef __IUP_TREE_H +#define __IUP_TREE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Kinds of node */ +#define ITREE_BRANCH 0 +#define ITREE_LEAF 1 + +#define ITREE_MARK_SINGLE 0 +#define ITREE_MARK_MULTIPLE 1 + +#define ITREE_UPDATEIMAGE_LEAF 1 +#define ITREE_UPDATEIMAGE_COLLAPSED 2 +#define ITREE_UPDATEIMAGE_EXPANDED 3 + +void iupdrvTreeInitClass(Iclass* ic); +void iupTreeUpdateImages(Ihandle *ih); +void iupdrvTreeAddNode(Ihandle* ih, const char* id_string, int kind, const char* title, int add); +void iupdrvTreeUpdateMarkMode(Ihandle *ih); + +char* iupTreeGetSpacingAttrib(Ihandle* ih); + +/* Structure of the tree */ +struct _IcontrolData +{ + int mark_mode, + add_expanded, + show_dragdrop, + show_rename, + spacing; + + void* def_image_leaf; /* Default image leaf */ + void* def_image_collapsed; /* Default image collapsed */ + void* def_image_expanded; /* Default image expanded */ + + void* def_image_leaf_mask; /* Motif Only */ + void* def_image_collapsed_mask; + void* def_image_expanded_mask; + + int id_control; /* auxiliary variable for computing or finding the id of a node */ +}; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_user.c b/iup/src/iup_user.c new file mode 100755 index 0000000..842f436 --- /dev/null +++ b/iup/src/iup_user.c @@ -0,0 +1,41 @@ +/** \file + * \brief User Element. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_stdcontrols.h" + + +static int iUserSetClearAttributesAttrib(Ihandle* ih, const char* value) +{ + (void)value; + iupTableClear(ih->attrib); + return 0; +} + +Ihandle* IupUser(void) +{ + return IupCreate("user"); +} + +Iclass* iupUserGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "user"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + iupClassRegisterAttribute(ic, "CLEARATTRIBUTES", NULL, iUserSetClearAttributesAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/iup_val.c b/iup/src/iup_val.c new file mode 100755 index 0000000..521e35a --- /dev/null +++ b/iup/src/iup_val.c @@ -0,0 +1,209 @@ +/** \file + * \brief Valuator Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" +#include "iupcontrols.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_val.h" + + +void iupValCropValue(Ihandle* ih) +{ + if (ih->data->val > ih->data->vmax) + ih->data->val = ih->data->vmax; + else if (ih->data->val < ih->data->vmin) + ih->data->val = ih->data->vmin; +} + +char* iupValGetShowTicksAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(30); + sprintf(str, "%d", ih->data->show_ticks); + return str; +} + +char* iupValGetValueAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(30); + sprintf(str, "%g", ih->data->val); + return str; +} + +char* iupValGetStepAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(30); + sprintf(str, "%g", ih->data->step); + return str; +} + +char* iupValGetPageStepAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(30); + sprintf(str, "%g", ih->data->pagestep); + return str; +} + +static int iValSetMaxAttrib(Ihandle* ih, const char* value) +{ + ih->data->vmax = atof(value); + iupValCropValue(ih); + return 0; /* do not store value in hash table */ +} + +static char* iValGetMaxAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(30); + sprintf(str, "%g", ih->data->vmax); + return str; +} + +static int iValSetMinAttrib(Ihandle* ih, const char* value) +{ + ih->data->vmin = atof(value); + iupValCropValue(ih); + return 0; /* do not store value in hash table */ +} + +static char* iValGetMinAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(30); + sprintf(str, "%g", ih->data->vmin); + return str; +} + +static int iValSetTypeAttrib(Ihandle* ih, const char *value) +{ + int min_w, min_h; + + /* valid only before map */ + if (ih->handle) + return 0; + + iupdrvValGetMinSize(ih, &min_w, &min_h); + + if (iupStrEqualNoCase(value, "VERTICAL")) + { + /* val natural vertical size is MinWx100 */ + IupSetfAttribute(ih, "RASTERSIZE", "%dx%d", min_w, 100); + ih->data->type = IVAL_VERTICAL; + } + else /* "HORIZONTAL" */ + { + /* val natural horizontal size is 100xMinH */ + IupSetfAttribute(ih, "RASTERSIZE", "%dx%d", 100, min_h); + ih->data->type = IVAL_HORIZONTAL; + } + + return 0; /* do not store value in hash table */ +} + +static char* iValGetTypeAttrib(Ihandle* ih) +{ + if (ih->data->type == IVAL_HORIZONTAL) + return "HORIZONTAL"; + else /* (ih->data->type == IVAL_VERTICAL) */ + return "VERTICAL"; +} + +static int iValSetInvertedAttrib(Ihandle* ih, const char *value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + ih->data->inverted = 1; + else + ih->data->inverted = 0; + + return 0; /* do not store value in hash table */ +} + +static char* iValGetInvertedAttrib(Ihandle* ih) +{ + if (ih->data->inverted) + return "YES"; + else + return "NO"; +} + +static int iValCreateMethod(Ihandle* ih, void **params) +{ + char* type = "HORIZONTAL"; + if (params && params[0]) + type = params[0]; + + ih->data = iupALLOCCTRLDATA(); + + iValSetTypeAttrib(ih, type); + if (ih->data->type == IVAL_VERTICAL) + ih->data->inverted = 1; /* default is YES when vertical */ + + ih->data->vmax = 1.00; + ih->data->step = 0.01; + ih->data->pagestep = 0.10; + + return IUP_NOERROR; +} + +Iclass* iupValGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "val"; + ic->format = "S"; /* one optional string */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iValCreateMethod; + ic->LayoutUpdate = iupdrvBaseLayoutUpdateMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Callbacks */ + iupClassRegisterCallback(ic, "VALUECHANGED_CB", ""); + + /* Common Callbacks */ + iupBaseRegisterCommonCallbacks(ic); + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Visual */ + iupBaseRegisterVisualAttrib(ic); + + /* IupVal only */ + iupClassRegisterAttribute(ic, "MAX", iValGetMaxAttrib, iValSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "MIN", iValGetMinAttrib, iValSetMinAttrib, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "TYPE", iValGetTypeAttrib, iValSetTypeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INVERTED", iValGetInvertedAttrib, iValSetInvertedAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupdrvValInitClass(ic); + + return ic; +} + +Ihandle *IupVal(const char *type) +{ + void *params[2]; + params[0] = (void*)type; + params[1] = NULL; + return IupCreatev("val", params); +} diff --git a/iup/src/iup_val.h b/iup/src/iup_val.h new file mode 100755 index 0000000..dea8df4 --- /dev/null +++ b/iup/src/iup_val.h @@ -0,0 +1,42 @@ +/** \file + * \brief Valuator Control + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_VAL_H +#define __IUP_VAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +enum {IVAL_VERTICAL, IVAL_HORIZONTAL}; + +struct _IcontrolData +{ + int type; + int show_ticks; /* Windows and Motif only - can be used only after map */ + int inverted; + double val; + double step; + double pagestep; + double vmin; + double vmax; +}; + +void iupValCropValue(Ihandle* ih); +char* iupValGetValueAttrib(Ihandle* ih); +char* iupValGetStepAttrib(Ihandle* ih); +char* iupValGetPageStepAttrib(Ihandle* ih); +char* iupValGetShowTicksAttrib(Ihandle* ih); + +void iupdrvValInitClass(Iclass* ic); +void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/iup_vbox.c b/iup/src/iup_vbox.c new file mode 100755 index 0000000..f71aa51 --- /dev/null +++ b/iup/src/iup_vbox.c @@ -0,0 +1,311 @@ +/** \file + * \brief Vbox Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" +#include "iup_box.h" + + +static int iVboxSetRasterSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + int s = 0; + iupStrToInt(value, &s); + if (s > 0) + { + ih->userheight = s; + ih->userwidth = 0; + } + } + iupAttribSetStr(ih, "SIZE", NULL); /* clear SIZE in hash table */ + return 0; +} + +static int iVboxSetSizeAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + ih->userwidth = 0; + ih->userheight = 0; + } + else + { + int s = 0; + iupStrToInt(value, &s); + if (s > 0) + { + int charwidth, charheight; + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + ih->userheight = iupHEIGHT2RASTER(s, charheight); + ih->userwidth = 0; + } + } + return 1; +} + +static int iVboxSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "ARIGHT")) + ih->data->alignment = IUP_ALIGN_ARIGHT; + else if (iupStrEqualNoCase(value, "ACENTER")) + ih->data->alignment = IUP_ALIGN_ACENTER; + else if (iupStrEqualNoCase(value, "ALEFT")) + ih->data->alignment = IUP_ALIGN_ALEFT; + return 0; +} + +static char* iVboxGetAlignmentAttrib(Ihandle* ih) +{ + char* align2str[3] = {"ALEFT", "ACENTER", "ARIGHT"}; + char *str = iupStrGetMemory(50); + sprintf(str, "%s", align2str[ih->data->alignment]); + return str; +} + +static void iVboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + Ihandle* child; + int children_naturalwidth, children_naturalheight; + + /* calculate total children natural size */ + int children_expand = 0; + int children_count = 0; + int children_natural_maxwidth = 0; + int children_natural_maxheight = 0; + int children_natural_totalheight = 0; + + for (child = ih->firstchild; child; child = child->brother) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + if (!child->is_floating) + { + children_expand |= child->expand; + children_natural_maxwidth = iupMAX(children_natural_maxwidth, child->naturalwidth); + children_natural_maxheight = iupMAX(children_natural_maxheight, child->naturalheight); + children_count++; + } + } + + /* reset to max natural width and/or height if NORMALIZESIZE is defined */ + if (ih->data->normalize_size) + iupNormalizeSizeBoxChild(ih, ih->data->normalize_size, children_natural_maxwidth, children_natural_maxheight); + + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + children_natural_totalheight += child->naturalheight; + } + + /* leave room at the element for the maximum natural size of the children when is_homogeneous */ + if (ih->data->is_homogeneous) + children_natural_totalheight = children_natural_maxheight*children_count; + + /* compute the Vbox contents natural size */ + children_naturalwidth = children_natural_maxwidth + 2*ih->data->margin_x; + children_naturalheight = children_natural_totalheight + (children_count-1)*ih->data->gap + 2*ih->data->margin_y; + + /* Store to be used in iVboxCalcEmptyHeight */ + ih->data->children_naturalsize = children_naturalheight; + + *expand = children_expand; + *w = children_naturalwidth; + *h = children_naturalheight; +} + +static int iHboxCalcHomogeneousHeight(Ihandle *ih) +{ + /* This is the space that the child can be expanded. */ + Ihandle* child; + int homogeneous_height; + + int children_count=0; + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + children_count++; + } + if (children_count == 0) + return 0; + + /* equal spaces for all elements */ + homogeneous_height = (ih->currentheight - (children_count-1)*ih->data->gap - 2*ih->data->margin_y)/children_count; + if (homogeneous_height < 0) homogeneous_height = 0; + return homogeneous_height; +} + +static int iVboxCalcEmptyHeight(Ihandle *ih, int expand) +{ + /* This is the space that the child can be expanded. */ + Ihandle* child; + int empty_height; + + int expand_count=0; + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating && child->expand & expand) + expand_count++; + } + if (expand_count == 0) + return 0; + + /* equal spaces for all expandable elements */ + empty_height = (ih->currentheight - ih->data->children_naturalsize)/expand_count; + if (empty_height < 0) empty_height = 0; + return empty_height; +} + +static void iVboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + Ihandle* child; + int empty_h0 = 0, empty_h1 = 0, client_width; + + if (ih->data->expand_children) + ih->expand |= ih->data->expand_children; + + if (ih->data->is_homogeneous) + ih->data->homogeneous_size = iHboxCalcHomogeneousHeight(ih); + else + { + ih->data->homogeneous_size = 0; + + /* must calculate the space left for each control to grow inside the container */ + /* H1 means there is an EXPAND enabled inside */ + if (ih->expand & IUP_EXPAND_H1) + empty_h1 = iVboxCalcEmptyHeight(ih, IUP_EXPAND_H1); + /* Not H1 and H0 means that EXPAND is not enabled, but there are some IupFill inside */ + else if (ih->expand & IUP_EXPAND_H0) + empty_h0 = iVboxCalcEmptyHeight(ih, IUP_EXPAND_H0); + } + + client_width = ih->currentwidth - 2*ih->data->margin_x; + if (client_width<0) client_width=0; + + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + { + int old_expand = child->expand; + if (ih->data->expand_children) + child->expand |= ih->data->expand_children; + + if (ih->data->homogeneous_size) + iupBaseSetCurrentSize(child, client_width, ih->data->homogeneous_size, shrink); + else + { + int empty = (child->expand & IUP_EXPAND_H1)? empty_h1: ((child->expand & IUP_EXPAND_H0)? empty_h0: 0); + iupBaseSetCurrentSize(child, client_width, child->naturalheight+empty, shrink); + } + + if (ih->data->expand_children) + child->expand = old_expand; + } + else + { + /* update children to their own natural size */ + iupBaseSetCurrentSize(child, child->naturalwidth, child->naturalheight, shrink); + } + } +} + +static void iVboxSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + int dx, client_width; + Ihandle* child; + + x += ih->data->margin_x; + y += ih->data->margin_y; + + client_width = ih->currentwidth - 2*ih->data->margin_x; + if (client_width<0) client_width=0; + + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + { + if (ih->data->alignment == IUP_ALIGN_ACENTER) + dx = (client_width - child->currentwidth)/2; + else if (ih->data->alignment == IUP_ALIGN_ARIGHT) + dx = client_width - child->currentwidth; + else /* IUP_ALIGN_ALEFT */ + dx = 0; + if (dx<0) dx = 0; + + /* update child */ + iupBaseSetPosition(child, x+dx, y); + + /* calculate next */ + if (ih->data->homogeneous_size) + y += ih->data->homogeneous_size + ih->data->gap; + else + y += child->currentheight + ih->data->gap; + } + } +} + + +/******************************************************************************/ + + +Ihandle *IupVboxv(Ihandle **children) +{ + return IupCreatev("vbox", (void**)children); +} + +Ihandle *IupVbox(Ihandle* child, ...) +{ + Ihandle **children; + Ihandle *ih; + + va_list arglist; + va_start(arglist, child); + children = (Ihandle **)iupObjectGetParamList(child, arglist); + va_end(arglist); + + ih = IupCreatev("vbox", (void**)children); + free(children); + + return ih; +} + +Iclass* iupVboxGetClass(void) +{ + Iclass* ic = iupBoxClassBase(); + + ic->name = "vbox"; + + /* Class functions */ + ic->ComputeNaturalSize = iVboxComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iVboxSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iVboxSetChildrenPositionMethod; + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "SIZE", iupBaseGetSizeAttrib, iVboxSetSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RASTERSIZE", iupBaseGetRasterSizeAttrib, iVboxSetRasterSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Vbox only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", iVboxGetAlignmentAttrib, iVboxSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/iup_zbox.c b/iup/src/iup_zbox.c new file mode 100755 index 0000000..3f79892 --- /dev/null +++ b/iup/src/iup_zbox.c @@ -0,0 +1,375 @@ +/** \file + * \brief Zbox Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_layout.h" + + +enum{IZBOX_ALIGN_NORTH, IZBOX_ALIGN_SOUTH, IZBOX_ALIGN_WEST, IZBOX_ALIGN_EAST, + IZBOX_ALIGN_NE, IZBOX_ALIGN_SE, IZBOX_ALIGN_NW, IZBOX_ALIGN_SW, + IZBOX_ALIGN_ACENTER}; + +struct _IcontrolData +{ + int alignment; + Ihandle* value_handle; +}; + +static int iZboxCreateMethod(Ihandle* ih, void** params) +{ + ih->data = iupALLOCCTRLDATA(); + + ih->data->alignment = IZBOX_ALIGN_NW; + + if (params) + { + Ihandle** iparams = (Ihandle**)params; + while (*iparams) + { + IupAppend(ih, *iparams); + iparams++; + } + } + + return IUP_NOERROR; +} + +static void iZboxChildAddedMethod(Ihandle* ih, Ihandle* child) +{ + if (!ih->data->value_handle) + { + IupSetAttribute(child, "VISIBLE", "YES"); + ih->data->value_handle = child; + } + else + IupSetAttribute(child, "VISIBLE", "NO"); +} + +static void iZboxChildRemovedMethod(Ihandle* ih, Ihandle* child) +{ + if (child == ih->data->value_handle) + { + /* reset to the first child, even if it is NULL */ + if (ih->firstchild) + IupSetAttribute(ih->firstchild, "VISIBLE", "YES"); + ih->data->value_handle = ih->firstchild; + } +} + +static int iZboxSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NORTH") || iupStrEqualNoCase(value, "ATOP")) + ih->data->alignment = IZBOX_ALIGN_NORTH; + else if (iupStrEqualNoCase(value, "SOUTH") || iupStrEqualNoCase(value, "ABOTTOM")) + ih->data->alignment = IZBOX_ALIGN_SOUTH; + else if (iupStrEqualNoCase(value, "WEST") || iupStrEqualNoCase(value, "ALEFT")) + ih->data->alignment = IZBOX_ALIGN_WEST; + else if (iupStrEqualNoCase(value, "EAST") || iupStrEqualNoCase(value, "ARIGHT")) + ih->data->alignment = IZBOX_ALIGN_EAST; + else if (iupStrEqualNoCase(value, "NE")) + ih->data->alignment = IZBOX_ALIGN_NE; + else if (iupStrEqualNoCase(value, "SE")) + ih->data->alignment = IZBOX_ALIGN_SE; + else if (iupStrEqualNoCase(value, "NW")) + ih->data->alignment = IZBOX_ALIGN_NW; + else if (iupStrEqualNoCase(value, "SW")) + ih->data->alignment = IZBOX_ALIGN_SW; + else if (iupStrEqualNoCase(value, "ACENTER")) + ih->data->alignment = IZBOX_ALIGN_ACENTER; + return 0; +} + +static char* iZboxGetAlignmentAttrib(Ihandle* ih) +{ + static char* align2str[9] = {"NORTH", "SOUTH", "WEST", "EAST", + "NE", "SE", "NW", "SW", + "ACENTER"}; + return align2str[ih->data->alignment]; +} + +static int iZboxSetValueHandleAttrib(Ihandle* ih, const char* value) +{ + Ihandle* old_handle, *new_handle, *child; + + new_handle = (Ihandle*)value; + if (!iupObjectCheck(new_handle)) + return 0; + + old_handle = ih->data->value_handle; + if (!iupObjectCheck(old_handle)) + old_handle = NULL; + + if (old_handle == new_handle) + return 0; + + for (child = ih->firstchild; child; child = child->brother) + { + if (child == new_handle) /* found child */ + { + if (old_handle && old_handle != new_handle) + IupSetAttribute(old_handle, "VISIBLE", "NO"); + + IupSetAttribute(new_handle, "VISIBLE", "YES"); + ih->data->value_handle = new_handle; + return 0; + } + } + + return 0; +} + +static int iZboxSetValuePosAttrib(Ihandle* ih, const char* value) +{ + Ihandle* child; + int pos, i; + + if (!iupStrToInt(value, &pos)) + return 0; + + for (i=0, child=ih->firstchild; child; child = child->brother, i++) + { + if (i == pos) /* found child */ + { + iZboxSetValueHandleAttrib(ih, (char*)child); + return 0; + } + } + + return 0; +} + +static char* iZboxGetValuePosAttrib(Ihandle* ih) +{ + Ihandle* child; + int pos; + + if (!iupObjectCheck(ih->data->value_handle)) + return NULL; + + for (pos=0, child = ih->firstchild; child; child = child->brother, pos++) + { + if (child == ih->data->value_handle) /* found child */ + { + char *str = iupStrGetMemory(50); + sprintf(str, "%d", pos); + return str; + } + } + + return NULL; +} + +static int iZboxSetValueAttrib(Ihandle* ih, const char* value) +{ + Ihandle *new_handle; + + if (!value) + return 0; + + new_handle = IupGetHandle(value); + if (!new_handle) + return 0; + + iZboxSetValueHandleAttrib(ih, (char*)new_handle); + + return 0; +} + +static char* iZboxGetValueAttrib(Ihandle* ih) +{ + Ihandle* child; + int pos; + + if (!iupObjectCheck(ih->data->value_handle)) + return NULL; + + for (pos=0, child = ih->firstchild; child; child = child->brother, pos++) + { + if (child == ih->data->value_handle) /* found child, just cheking */ + return IupGetName(ih->data->value_handle); + } + + return NULL; +} + +static int iZboxSetVisibleAttrib(Ihandle* ih, const char* value) +{ + if (iupObjectCheck(ih->data->value_handle)) + IupSetAttribute(ih->data->value_handle, "VISIBLE", (char*)value); + return 0; +} + +static void iZboxComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + Ihandle* child; + int children_expand, + children_naturalwidth, children_naturalheight; + + /* calculate total children natural size (even for hidden children) */ + children_expand = 0; + children_naturalwidth = 0; + children_naturalheight = 0; + + for (child = ih->firstchild; child; child = child->brother) + { + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + if (!child->is_floating) + { + children_expand |= child->expand; + children_naturalwidth = iupMAX(children_naturalwidth, child->naturalwidth); + children_naturalheight = iupMAX(children_naturalheight, child->naturalheight); + } + } + + *expand = children_expand; + *w = children_naturalwidth; + *h = children_naturalheight; +} + +static void iZboxSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + iupBaseSetCurrentSize(child, ih->currentwidth, ih->currentheight, shrink); + } +} + +static void iZboxSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + int dx = 0, dy = 0; + Ihandle* child; + + for (child = ih->firstchild; child; child = child->brother) + { + if (!child->is_floating) + { + switch (ih->data->alignment) + { + case IZBOX_ALIGN_ACENTER: + dx=(ih->currentwidth-child->currentwidth)/2; + dy=(ih->currentheight-child->currentheight)/2; + break; + case IZBOX_ALIGN_NORTH: + dx=(ih->currentwidth-child->currentwidth)/2; + dy=0; + break; + case IZBOX_ALIGN_SOUTH: + dx=(ih->currentwidth-child->currentwidth)/2; + dy=ih->currentheight-child->currentheight; + break; + case IZBOX_ALIGN_WEST: + dx=0; + dy=(ih->currentheight-child->currentheight)/2; + break; + case IZBOX_ALIGN_EAST: + dx=ih->currentwidth-child->currentwidth; + dy=(ih->currentheight-child->currentheight)/2; + break; + case IZBOX_ALIGN_NE: + dx=ih->currentwidth-child->currentwidth; + dy=0; + break; + case IZBOX_ALIGN_SE: + dx=ih->currentwidth-child->currentwidth; + dy=ih->currentheight-child->currentheight; + break; + case IZBOX_ALIGN_SW: + dx=0; + dy=ih->currentheight-child->currentheight; + break; + case IZBOX_ALIGN_NW: + default: + dx=0; + dy=0; + break; + } + if (dx<0) dx = 0; + if (dy<0) dy = 0; + + /* update child */ + iupBaseSetPosition(child, x+dx, y+dy); + } + } +} + + +/******************************************************************************/ + + +Ihandle *IupZboxv(Ihandle **children) +{ + return IupCreatev("zbox", (void**)children); +} + +Ihandle *IupZbox(Ihandle* child, ...) +{ + Ihandle **children; + Ihandle *ih; + + va_list arglist; + va_start(arglist, child); + children = (Ihandle **)iupObjectGetParamList(child, arglist); + va_end(arglist); + + ih = IupCreatev("zbox", (void**)children); + free(children); + + return ih; +} + +Iclass* iupZboxGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "zbox"; + ic->format = "g"; /* array of Ihandle */ + ic->nativetype = IUP_TYPEVOID; + ic->childtype = IUP_CHILDMANY; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iZboxCreateMethod; + ic->Map = iupBaseTypeVoidMapMethod; + ic->ChildAdded = iZboxChildAddedMethod; + ic->ChildRemoved = iZboxChildRemovedMethod; + + ic->ComputeNaturalSize = iZboxComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iZboxSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iZboxSetChildrenPositionMethod; + + /* Common */ + iupBaseRegisterCommonAttrib(ic); + + /* Base Container */ + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CLIENTSIZE", iupBaseGetRasterSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Zbox only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", iZboxGetAlignmentAttrib, iZboxSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "NW", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", iZboxGetValueAttrib, iZboxSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUEPOS", iZboxGetValuePosAttrib, iZboxSetValuePosAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE_HANDLE", NULL, iZboxSetValueHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + + /* Intercept VISIBLE since ZBOX works showing and hidding its children */ + iupClassRegisterAttribute(ic, "VISIBLE", NULL, iZboxSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/iupgtk.dep b/iup/src/iupgtk.dep new file mode 100644 index 0000000..4e2bb45 --- /dev/null +++ b/iup/src/iupgtk.dep @@ -0,0 +1,259 @@ +$(OBJDIR)/iup_array.o: iup_array.c iup_array.h iup_assert.h +$(OBJDIR)/iup_callback.o: iup_callback.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_assert.h +$(OBJDIR)/iup_dlglist.o: iup_dlglist.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_dlglist.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_assert.h +$(OBJDIR)/iup_attrib.o: iup_attrib.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_childtree.h iup_str.h iup_ledlex.h iup_attrib.h \ + iup_assert.h +$(OBJDIR)/iup_focus.o: iup_focus.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_focus.h iup_assert.h iup_attrib.h \ + iup_str.h iup_drv.h +$(OBJDIR)/iup_font.o: iup_font.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_drvfont.h iup_assert.h iup_attrib.h \ + iup_class.h iup_table.h iup_classbase.h +$(OBJDIR)/iup_globalattrib.o: iup_globalattrib.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_table.h iup_globalattrib.h \ + iup_drv.h iup_drvfont.h iup_assert.h iup_str.h +$(OBJDIR)/iup_object.o: iup_object.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_assert.h iup_register.h iup_names.h +$(OBJDIR)/iup_key.o: iup_key.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_key.h iup_str.h \ + iup_object.h iup_class.h iup_table.h iup_classbase.h iup_drv.h \ + iup_focus.h +$(OBJDIR)/iup_layout.o: iup_layout.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_drv.h iup_attrib.h iup_str.h iup_layout.h \ + iup_assert.h +$(OBJDIR)/iup_ledlex.o: iup_ledlex.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_class.h iup_table.h iup_classbase.h \ + iup_ledlex.h iup_str.h iup_register.h +$(OBJDIR)/iup_names.o: iup_names.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_table.h iup_names.h iup_object.h \ + iup_class.h iup_classbase.h iup_assert.h +$(OBJDIR)/iup_open.o: iup_open.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_globalattrib.h iup_names.h iup_func.h \ + iup_drv.h iup_drvinfo.h iup_drvfont.h iup_predial.h iup_class.h \ + iup_table.h iup_classbase.h iup_register.h iup_key.h iup_image.h \ + iup_dlglist.h iup_assert.h iup_strmessage.h +$(OBJDIR)/iup_ledparse.o: iup_ledparse.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_ledlex.h iup_str.h iup_assert.h +$(OBJDIR)/iup_predial.o: iup_predial.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_predial.h iup_attrib.h iup_str.h \ + iup_strmessage.h +$(OBJDIR)/iup_register.o: iup_register.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_register.h iup_stdcontrols.h +$(OBJDIR)/iup_scanf.o: iup_scanf.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_predial.h iup_str.h iup_assert.h +$(OBJDIR)/iup_show.o: iup_show.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_layout.h iup_attrib.h iup_dialog.h iup_menu.h \ + iup_assert.h iup_str.h iup_drv.h iup_drvfont.h +$(OBJDIR)/iup_str.o: iup_str.c iup_str.h +$(OBJDIR)/iup_table.o: iup_table.c iup_table.h iup_str.h iup_assert.h +$(OBJDIR)/iup_func.o: iup_func.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_table.h iup_func.h iup_drv.h \ + iup_assert.h +$(OBJDIR)/iup_childtree.o: iup_childtree.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_dlglist.h iup_childtree.h iup_attrib.h iup_assert.h \ + iup_str.h iup_drv.h +$(OBJDIR)/iup.o: iup.c ../include/iup.h ../include/iupkey.h ../include/iupdef.h +$(OBJDIR)/iup_classattrib.o: iup_classattrib.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \ + iup_assert.h iup_register.h iup_globalattrib.h +$(OBJDIR)/iup_dialog.o: iup_dialog.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_class.h iup_table.h \ + iup_classbase.h iup_object.h iup_dlglist.h iup_layout.h iup_attrib.h \ + iup_drv.h iup_drvinfo.h iup_drvfont.h iup_focus.h iup_str.h \ + iup_dialog.h +$(OBJDIR)/iup_assert.o: iup_assert.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_assert.h iup_attrib.h iup_str.h \ + iup_strmessage.h +$(OBJDIR)/iup_canvas.o: iup_canvas.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_canvas.h +$(OBJDIR)/iup_messagedlg.o: iup_messagedlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_stdcontrols.h +$(OBJDIR)/iup_timer.o: iup_timer.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_str.h iup_stdcontrols.h iup_timer.h +$(OBJDIR)/iup_image.o: iup_image.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_image.h iup_assert.h \ + iup_stdcontrols.h +$(OBJDIR)/iup_label.o: iup_label.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_label.h iup_image.h +$(OBJDIR)/iup_fill.o: iup_fill.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_zbox.o: iup_zbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_colordlg.o: iup_colordlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h +$(OBJDIR)/iup_fontdlg.o: iup_fontdlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h +$(OBJDIR)/iup_filedlg.o: iup_filedlg.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h +$(OBJDIR)/iup_strmessage.o: iup_strmessage.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h iup_table.h +$(OBJDIR)/iup_menu.o: iup_menu.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_dialog.h iup_str.h iup_assert.h \ + iup_key.h iup_stdcontrols.h iup_drvinfo.h iup_menu.h +$(OBJDIR)/iup_frame.o: iup_frame.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_frame.h +$(OBJDIR)/iup_user.o: iup_user.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_stdcontrols.h +$(OBJDIR)/iup_button.o: iup_button.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_button.h iup_image.h +$(OBJDIR)/iup_radio.o: iup_radio.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_toggle.o: iup_toggle.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_toggle.h iup_image.h +$(OBJDIR)/iup_progressbar.o: iup_progressbar.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_progressbar.h +$(OBJDIR)/iup_text.o: iup_text.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h iup_array.h \ + iup_text.h iup_assert.h +$(OBJDIR)/iup_val.o: iup_val.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \ + iup_object.h iup_class.h iup_table.h iup_classbase.h iup_attrib.h \ + iup_str.h iup_drv.h iup_stdcontrols.h iup_layout.h iup_val.h +$(OBJDIR)/iup_box.o: iup_box.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h +$(OBJDIR)/iup_hbox.o: iup_hbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h +$(OBJDIR)/iup_vbox.o: iup_vbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_box.h +$(OBJDIR)/iup_cbox.o: iup_cbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h +$(OBJDIR)/iup_class.o: iup_class.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h iup_attrib.h \ + iup_assert.h +$(OBJDIR)/iup_classbase.o: iup_classbase.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h iup_str.h \ + iup_attrib.h iup_assert.h +$(OBJDIR)/iup_maskmatch.o: iup_maskmatch.c iup_maskparse.h iup_maskmatch.h +$(OBJDIR)/iup_mask.o: iup_mask.c iup_maskparse.h iup_mask.h iup_str.h +$(OBJDIR)/iup_maskparse.o: iup_maskparse.c iup_maskparse.h iup_maskmatch.h +$(OBJDIR)/iup_tabs.o: iup_tabs.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_image.h iup_tabs.h +$(OBJDIR)/iup_spin.o: iup_spin.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_stdcontrols.h \ + iup_childtree.h +$(OBJDIR)/iup_list.o: iup_list.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_assert.h iup_object.h \ + iup_class.h iup_table.h iup_classbase.h iup_attrib.h iup_str.h \ + iup_drv.h iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_mask.h \ + iup_list.h +$(OBJDIR)/iup_getparam.o: iup_getparam.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_attrib.h iup_str.h iup_strmessage.h \ + iup_drvfont.h +$(OBJDIR)/iup_sbox.o: iup_sbox.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_stdcontrols.h iup_layout.h iup_childtree.h +$(OBJDIR)/iup_normalizer.o: iup_normalizer.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_array.h iup_stdcontrols.h +$(OBJDIR)/iup_tree.o: iup_tree.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_drv.h \ + iup_drvfont.h iup_stdcontrols.h iup_layout.h iup_tree.h iup_assert.h +$(OBJDIR)/iupgtk_focus.o: gtk/iupgtk_focus.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_focus.h iup_attrib.h iup_drv.h iup_assert.h \ + gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_font.o: gtk/iupgtk_font.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_attrib.h iup_array.h iup_object.h \ + iup_class.h iup_table.h iup_classbase.h iup_drv.h iup_drvfont.h \ + iup_assert.h gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_key.o: gtk/iupgtk_key.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_key.h gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_loop.o: gtk/iupgtk_loop.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h +$(OBJDIR)/iupgtk_open.o: gtk/iupgtk_open.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h iup_drv.h iup_drvinfo.h iup_object.h \ + iup_class.h iup_table.h iup_classbase.h iup_globalattrib.h \ + gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_messagedlg.o: gtk/iupgtk_messagedlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_dialog.h \ + gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_timer.o: gtk/iupgtk_timer.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_attrib.h iup_str.h iup_assert.h iup_timer.h +$(OBJDIR)/iupgtk_colordlg.o: gtk/iupgtk_colordlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_dialog.h \ + gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_fontdlg.o: gtk/iupgtk_fontdlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_attrib.h iup_str.h iup_dialog.h \ + gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_progressbar.o: gtk/iupgtk_progressbar.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + iup_object.h iup_class.h iup_table.h iup_classbase.h iup_layout.h \ + iup_attrib.h iup_str.h iup_progressbar.h iup_drv.h gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_val.o: gtk/iupgtk_val.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_layout.h iup_attrib.h iup_str.h \ + iup_val.h iup_drv.h iup_drvfont.h iup_key.h gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_frame.o: gtk/iupgtk_frame.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_object.h iup_class.h iup_table.h \ + iup_classbase.h iup_layout.h iup_attrib.h iup_str.h iup_dialog.h \ + iup_drv.h iup_drvfont.h iup_stdcontrols.h gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_menu.o: gtk/iupgtk_menu.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h iup_object.h iup_class.h \ + iup_table.h iup_classbase.h iup_childtree.h iup_attrib.h iup_dialog.h \ + iup_str.h iup_label.h iup_drv.h iup_drvfont.h iup_image.h iup_menu.h \ + gtk/iupgtk_drv.h +$(OBJDIR)/iupgtk_help.o: gtk/iupgtk_help.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h iup_str.h +$(OBJDIR)/iupunix_info.o: mot/iupunix_info.c iup_str.h iup_drvinfo.h diff --git a/iup/src/iupstub.mak b/iup/src/iupstub.mak new file mode 100755 index 0000000..9ca920f --- /dev/null +++ b/iup/src/iupstub.mak @@ -0,0 +1,12 @@ +PROJNAME = iup +LIBNAME = iupstub +OPT = YES + +USE_DLL = Yes + +INCLUDES = ../include + +SRC = win/iupwindows_main.c + +iupstup-dll: + @move /y ..\lib\vc6\iupstub.lib ..\lib\dll diff --git a/iup/src/make_uname b/iup/src/make_uname new file mode 100755 index 0000000..7fec9f8 --- /dev/null +++ b/iup/src/make_uname @@ -0,0 +1,4 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 +tecmake USE_GTK=Yes $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/src/make_uname.bat b/iup/src/make_uname.bat new file mode 100755 index 0000000..1a79780 --- /dev/null +++ b/iup/src/make_uname.bat @@ -0,0 +1,55 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 +call tecmake %1 "USE_GTK=Yes" %2 %3 %4 %5 %6 + +if "%1"=="dll" goto stub_dll +if "%1"=="dll7" goto stub_dll7 +if "%1"=="dll8" goto stub_dll8 +if "%1"=="dll8_64" goto stub_dll8_64 +if "%1"=="dll9" goto stub_dll9 +if "%1"=="dll9_64" goto stub_dll9_64 +if "%1"=="all" goto all_dll +goto fim + +:stub_dll +call tecmake vc6 "MF=iupstub" %2 %3 %4 %5 %6 %7 +move /y ..\lib\vc6\iupstub.lib ..\lib\dll +goto fim + +:stub_dll7 +call tecmake vc7 "MF=iupstub" %2 %3 %4 %5 %6 %7 +move /y ..\lib\vc7\iupstub.lib ..\lib\dll7 +goto fim + +:stub_dll8 +call tecmake vc8 "MF=iupstub" %2 %3 %4 %5 %6 %7 +move /y ..\lib\vc8\iupstub.lib ..\lib\dll8 +goto fim + +:stub_dll8_64 +call tecmake vc8_64 "MF=iupstub" %2 %3 %4 %5 %6 %7 +move /y ..\lib\vc8_64\iupstub.lib ..\lib\dll8_64 +goto fim + +:stub_dll9 +call tecmake vc9 "MF=iupstub" %2 %3 %4 %5 %6 %7 +move /y ..\lib\vc9\iupstub.lib ..\lib\dll9 +goto fim + +:stub_dll9_64 +call tecmake vc9_64 "MF=iupstub" %2 %3 %4 %5 %6 %7 +move /y ..\lib\vc9_64\iupstub.lib ..\lib\dll9_64 +goto fim + +:all_dll +call make_uname dll %2 %3 %4 %5 %6 +call make_uname dll7 %2 %3 %4 %5 %6 +call make_uname dll8 %2 %3 %4 %5 %6 +call make_uname dll8_64 %2 %3 %4 %5 %6 +call make_uname dll9 %2 %3 %4 %5 %6 +call make_uname dll9_64 %2 %3 %4 %5 %6 +goto fim + +:fim diff --git a/iup/src/mot/iupmot_button.c b/iup/src/mot/iupmot_button.c new file mode 100755 index 0000000..2d93588 --- /dev/null +++ b/iup/src/mot/iupmot_button.c @@ -0,0 +1,301 @@ +/** \file + * \brief Button Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_button.h" +#include "iup_drv.h" +#include "iup_image.h" +#include "iup_key.h" + +#include "iupmot_drv.h" + + +void iupdrvButtonAddBorders(int *x, int *y) +{ + int border_size = 2*5; + (*x) += border_size; + (*y) += border_size; +} + +static int motButtonSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_BUTTON_TEXT) + { + iupmotSetMnemonicTitle(ih, value); + return 1; + } + + return 0; +} + +static int motButtonSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + unsigned char align; + char value1[30]="", value2[30]=""; + + iupStrToStrStr(value, value1, value2, ':'); /* value2 is ignored, NOT supported in Motif */ + + if (iupStrEqualNoCase(value1, "ARIGHT")) + align = XmALIGNMENT_END; + else if (iupStrEqualNoCase(value1, "ACENTER")) + align = XmALIGNMENT_CENTER; + else /* "ALEFT" */ + align = XmALIGNMENT_BEGINNING; + + XtVaSetValues (ih->handle, XmNalignment, align, NULL); + return 1; +} + +static int motButtonSetImageAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_BUTTON_IMAGE) + { + iupmotSetPixmap(ih, value, XmNlabelPixmap, 0); + + if (!iupAttribGet(ih, "IMINACTIVE")) + { + /* if not active and IMINACTIVE is not defined + then automaticaly create one based on IMAGE */ + iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 1); /* make_inactive */ + } + return 1; + } + else + return 0; +} + +static int motButtonSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_BUTTON_IMAGE) + { + iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 0); + return 1; + } + else + return 0; +} + +static int motButtonSetImPressAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_BUTTON_IMAGE) + { + iupmotSetPixmap(ih, value, XmNarmPixmap, 0); + return 1; + } + else + return 0; +} + +static int motButtonSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle) + { + XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding, + XmNmarginWidth, ih->data->horiz_padding, NULL); + } + return 0; +} + +static int motButtonSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (iupAttribGet(ih, "IMPRESS") || iupAttribGetBoolean(ih, "FLAT")) + { + /* ignore given value, must use only from parent */ + value = iupBaseNativeParentGetBgColor(ih); + + if (iupdrvBaseSetBgColorAttrib(ih, value)) + return 1; + } + + return iupdrvBaseSetBgColorAttrib(ih, value); +} + +static int motButtonSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + if (iupAttribGet(ih, "IMPRESS") || iupAttribGetBoolean(ih, "FLAT")) + { + /* ignore given value, must use only from parent */ + value = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + + if (iupdrvBaseSetBgColorAttrib(ih, value)) + return 1; + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + if (pixmap) + { + XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL); + return 1; + } + } + } + return 0; +} + +static void motButtonActivateCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + Icallback cb; + + /* Must manually hide the tip if the button is pressed. */ + iupmotTipLeaveNotify(); + + cb = IupGetCallback(ih, "ACTION"); + if (cb) + { + if (cb(ih) == IUP_CLOSE) + IupExitLoop(); + } + (void)w; + (void)call_data; +} + +static void motButtonEnterLeaveWindowEvent(Widget w, Ihandle* ih, XEvent *evt, Boolean *cont) +{ + iupmotEnterLeaveWindowEvent(w, ih, evt, cont); + + if (evt->type == EnterNotify) + XtVaSetValues(ih->handle, XmNshadowThickness, 2, NULL); + else if (evt->type == LeaveNotify) + XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL); +} + +static int motButtonMapMethod(Ihandle* ih) +{ + char* value; + int num_args = 0; + Arg args[30]; + + value = iupAttribGet(ih, "IMAGE"); + if (value) + { + ih->data->type = IUP_BUTTON_IMAGE; + iupmotSetArg(args, num_args, XmNlabelType, XmPIXMAP); + } + else + { + ih->data->type = IUP_BUTTON_TEXT; + iupmotSetArg(args, num_args, XmNlabelType, XmSTRING); + } + + /* Core */ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + /* Label */ + iupmotSetArg(args, num_args, XmNrecomputeSize, False); /* no automatic resize from text */ + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNmarginTop, 0); /* no extra margins */ + iupmotSetArg(args, num_args, XmNmarginLeft, 0); + iupmotSetArg(args, num_args, XmNmarginBottom, 0); + iupmotSetArg(args, num_args, XmNmarginRight, 0); + /* PushButton */ + iupmotSetArg(args, num_args, XmNfillOnArm, False); + + /* Primitive */ + if (iupAttribGetBoolean(ih, "FOCUSONCLICK")) + { + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + } + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + iupmotSetArg(args, num_args, XmNhighlightThickness, 2); + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + + ih->handle = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + xmPushButtonWidgetClass, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + + value = iupAttribGet(ih, "IMPRESS"); + if (iupAttribGetBoolean(ih, "FLAT") && !value) + { + XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL); + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)motButtonEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)motButtonEnterLeaveWindowEvent, (XtPointer)ih); + } + else + { + if (value && !iupAttribGetStr(ih, "IMPRESSBORDER")) + XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL); + else + XtVaSetValues(ih->handle, XmNshadowThickness, 2, NULL); + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + } + + XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + + XtAddCallback(ih->handle, XmNactivateCallback, (XtCallbackProc)motButtonActivateCallback, (XtPointer)ih); + XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih); + + /* Disable Drag Source */ + iupmotDisableDragSource(ih->handle); + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + if (ih->data->type == IUP_BUTTON_TEXT) + iupmotSetString(ih->handle, XmNlabelString, ""); + + return IUP_NOERROR; +} + +void iupdrvButtonInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motButtonMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", iupmotGetBgColorAttrib, motButtonSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motButtonSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", NULL, motButtonSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupButton only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, motButtonSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "IMAGE", NULL, motButtonSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, motButtonSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, motButtonSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FOCUSONCLICK", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "PADDING", iupButtonGetPaddingAttrib, motButtonSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); +} diff --git a/iup/src/mot/iupmot_canvas.c b/iup/src/mot/iupmot_canvas.c new file mode 100755 index 0000000..7777cf3 --- /dev/null +++ b/iup/src/mot/iupmot_canvas.c @@ -0,0 +1,639 @@ +/** \file + * \brief Canvas Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_canvas.h" +#include "iup_key.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + + +static void motDialogScrollbarCallback(Widget w, XtPointer client_data, XtPointer call_data) +{ + int op = (int)client_data, ipage, ipos; + Ihandle *ih; + IFniff cb; + double posx, posy; + (void)call_data; + + XtVaGetValues(w, XmNuserData, &ih, NULL); + if (!ih) return; + + XtVaGetValues(w, + XmNvalue, &ipos, + XmNpageIncrement, &ipage, + NULL); + + if (op > IUP_SBDRAGV) + { + iupCanvasCalcScrollRealPos(iupAttribGetFloat(ih,"XMIN"), iupAttribGetFloat(ih,"XMAX"), &posx, + IUP_SB_MIN, IUP_SB_MAX, ipage, &ipos); + ih->data->posx = (float)posx; + posy = ih->data->posy; + } + else + { + iupCanvasCalcScrollRealPos(iupAttribGetFloat(ih,"YMIN"), iupAttribGetFloat(ih,"YMAX"), &posy, + IUP_SB_MIN, IUP_SB_MAX, ipage, &ipos); + ih->data->posy = (float)posy; + posx = ih->data->posx; + } + + cb = (IFniff)IupGetCallback(ih,"SCROLL_CB"); + if (cb) + cb(ih, op, (float)posx, (float)posy); + else + { + IFnff cb = (IFnff)IupGetCallback(ih,"ACTION"); + if (cb) + cb (ih, (float)posx, (float)posy); + } +} + +static void motCanvasResizeCallback(Widget w, Ihandle *ih, XtPointer call_data) +{ + Dimension width, height; + IFnii cb; + (void)call_data; + + if (!XtWindow(w) || !ih) return; + + /* client size */ + XtVaGetValues(w, XmNwidth, &width, + XmNheight, &height, + NULL); + + cb = (IFnii)IupGetCallback(ih,"RESIZE_CB"); + if (cb) + cb(ih,width,height); +} + +static int motCanvasSetBgColorAttrib(Ihandle* ih, const char* value); + +static void motCanvasExposeCallback(Widget w, Ihandle *ih, XtPointer call_data) +{ + IFnff cb; + (void)call_data; + + if (!XtWindow(w) || !ih) return; + + cb = (IFnff)IupGetCallback(ih,"ACTION"); + if (cb) + { + if (!iupAttribGet(ih, "_IUPMOT_NO_BGCOLOR")) + motCanvasSetBgColorAttrib(ih, iupAttribGetStr(ih, "BGCOLOR")); /* reset to update window attributes */ + + cb (ih, ih->data->posx, ih->data->posy); + } +} + +static void motCanvasInputCallback(Widget w, Ihandle *ih, XtPointer call_data) +{ + XEvent *evt = ((XmDrawingAreaCallbackStruct*)call_data)->event; + + if (!XtWindow(w) || !ih) return; + + switch (evt->type) + { + case ButtonPress: + /* Force focus on canvas click */ + if (iupAttribGetBoolean(ih, "CANFOCUS")) + XmProcessTraversal(w, XmTRAVERSE_CURRENT); + /* break missing on purpose... */ + case ButtonRelease: + { + XButtonEvent *but_evt = (XButtonEvent*)evt; + Boolean cont = True; + iupmotButtonPressReleaseEvent(w, ih, evt, &cont); + if (cont == False) + return; + + if ((evt->type==ButtonPress) && (but_evt->button==Button4 || but_evt->button==Button5)) + { + IFnfiis wcb = (IFnfiis)IupGetCallback(ih, "WHEEL_CB"); + if (wcb) + { + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + int delta = but_evt->button==Button4? 1: -1; + iupmotButtonKeySetStatus(but_evt->state, but_evt->button, status, 0); + + wcb(ih, (float)delta, but_evt->x, but_evt->y, status); + } + else + { + IFniff scb = (IFniff)IupGetCallback(ih,"SCROLL_CB"); + float posy = ih->data->posy; + int delta = but_evt->button==Button4? 1: -1; + int op = but_evt->button==Button4? IUP_SBUP: IUP_SBDN; + posy -= delta*iupAttribGetFloat(ih, "DY")/10.0f; + IupSetfAttribute(ih, "POSY", "%g", posy); + if (scb) + scb(ih,op,ih->data->posx,ih->data->posy); + } + } + } + break; + } +} + +static void motCanvasSetScrollInfo(Widget sb, int imin, int imax, int ipos, int ipage, int iline) +{ + XtVaSetValues(sb, + XmNminimum, imin, + XmNmaximum, imax, + XmNvalue, ipos, + XmNincrement, iline, + XmNpageIncrement, ipage, + XmNsliderSize, ipage, /* to make the thumb proportional */ + NULL); +} + +static int motCanvasSetDXAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_HORIZ) + { + double posx, xmin, xmax, linex; + float dx; + int iposx, ipagex, ilinex; + Widget sb_horiz, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb_horiz, NULL); + if (!sb_horiz) return 1; + + if (!iupStrToFloat(value, &dx)) + return 1; + + xmin = iupAttribGetFloat(ih, "XMIN"); + xmax = iupAttribGetFloat(ih, "XMAX"); + posx = ih->data->posx; + + iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx, + IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx); + + if (!iupAttribGet(ih,"LINEX")) + { + ilinex = ipagex/10; + if (!ilinex) + ilinex = 1; + } + else + { + /* line and page convertions are the same */ + linex = iupAttribGetFloat(ih,"LINEX"); + iupCanvasCalcScrollIntPos(xmin, xmax, linex, 0, + IUP_SB_MIN, IUP_SB_MAX, &ilinex, NULL); + } + + if (dx >= (xmax-xmin)) + { + if (iupAttribGetBoolean(ih, "XAUTOHIDE")) + XtUnmanageChild(sb_horiz); + else + XtSetSensitive(sb_horiz, 0); + return 1; + } + else + { + if (!XtIsManaged(sb_horiz)) + XtManageChild(sb_horiz); + XtSetSensitive(sb_horiz, 1); + } + + motCanvasSetScrollInfo(sb_horiz, IUP_SB_MIN, IUP_SB_MAX, iposx, ipagex, ilinex); + + /* update position because it could be corrected */ + iupCanvasCalcScrollRealPos(xmin, xmax, &posx, + IUP_SB_MIN, IUP_SB_MAX, ipagex, &iposx); + + ih->data->posx = (float)posx; + } + return 1; +} + +static int motCanvasSetPosXAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_HORIZ) + { + double xmin, xmax, dx; + float posx; + int iposx, ipagex; + Widget sb_horiz, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb_horiz, NULL); + if (!sb_horiz) return 1; + + if (!iupStrToFloat(value, &posx)) + return 1; + + xmin = iupAttribGetFloat(ih, "XMIN"); + xmax = iupAttribGetFloat(ih, "XMAX"); + dx = iupAttribGetFloat(ih, "DX"); + + if (posx < xmin) posx = (float)xmin; + if (posx > (xmax - dx)) posx = (float)(xmax - dx); + ih->data->posx = posx; + + iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx, + IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx); + + XtVaSetValues(sb_horiz, XmNvalue, iposx, NULL); + } + return 1; +} + +static int motCanvasSetDYAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_VERT) + { + double posy, ymin, ymax, liney; + float dy; + int iposy, ipagey, iliney; + Widget sb_vert, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + XtVaGetValues(sb_win, XmNverticalScrollBar, &sb_vert, NULL); + if (!sb_vert) return 1; + + if (!iupStrToFloat(value, &dy)) + return 1; + + ymin = iupAttribGetFloat(ih, "YMIN"); + ymax = iupAttribGetFloat(ih, "YMAX"); + posy = ih->data->posy; + + iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy, + IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy); + + if (!iupAttribGet(ih,"LINEY")) + { + iliney = ipagey/10; + if (!iliney) + iliney = 1; + } + else + { + /* line and page convertions are the same */ + liney = iupAttribGetFloat(ih,"LINEY"); + iupCanvasCalcScrollIntPos(ymin, ymax, liney, 0, + IUP_SB_MIN, IUP_SB_MAX, &iliney, NULL); + } + + if (dy >= (ymax-ymin)) + { + if (iupAttribGetBoolean(ih, "YAUTOHIDE")) + XtUnmanageChild(sb_vert); + else + XtSetSensitive(sb_vert, 0); + return 1; + } + else + { + if (!XtIsManaged(sb_vert)) + XtManageChild(sb_vert); + XtSetSensitive(sb_vert, 1); + } + + motCanvasSetScrollInfo(sb_vert, IUP_SB_MIN, IUP_SB_MAX, iposy, ipagey, iliney); + + /* update position because it could be corrected */ + iupCanvasCalcScrollRealPos(ymin, ymax, &posy, + IUP_SB_MIN, IUP_SB_MAX, ipagey, &iposy); + + ih->data->posy = (float)posy; + } + return 1; +} + +static int motCanvasSetPosYAttrib(Ihandle* ih, const char *value) +{ + if (ih->data->sb & IUP_SB_VERT) + { + double ymin, ymax, dy; + float posy; + int iposy, ipagey; + Widget sb_vert, sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + XtVaGetValues(sb_win, XmNverticalScrollBar, &sb_vert, NULL); + if (!sb_vert) return 1; + + if (!iupStrToFloat(value, &posy)) + return 1; + + ymin = iupAttribGetFloat(ih, "YMIN"); + ymax = iupAttribGetFloat(ih, "YMAX"); + dy = iupAttribGetFloat(ih, "DY"); + + if (posy < ymin) posy = (float)ymin; + if (posy > (ymax - dy)) posy = (float)(ymax - dy); + ih->data->posy = posy; + + iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy, + IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy); + + XtVaSetValues(sb_vert, XmNvalue, iposy, NULL); + } + return 1; +} + +static char* motCanvasGetXDisplayAttrib(Ihandle *ih) +{ + (void)ih; + return (char*)iupmot_display; +} + +static char* motCanvasGetXScreenAttrib(Ihandle *ih) +{ + (void)ih; + return (char*)iupmot_screen; +} + +static char* motCanvasGetXWindowAttrib(Ihandle *ih) +{ + return (char*)XtWindow(ih->handle); +} + +static char* motCanvasGetClientSizeAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + + Dimension width, height; + XtVaGetValues(ih->handle, XmNwidth, &width, + XmNheight, &height, + NULL); + + sprintf(str, "%dx%d", (int)width, (int)height); + return str; +} + +static int motCanvasSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color; + + /* ignore given value, must use only from parent for the scrollbars */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + color = iupmotColorGetPixelStr(parent_value); + if (color != (Pixel)-1) + { + Widget sb; + Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + + iupmotSetBgColor(sb_win, color); + + XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + + XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + } + + if (!IupGetCallback(ih, "ACTION")) + iupdrvBaseSetBgColorAttrib(ih, value); /* Use the given value only here */ + else + { + XSetWindowAttributes attrs; + attrs.background_pixmap = None; + XChangeWindowAttributes(iupmot_display, XtWindow(ih->handle), CWBackPixmap, &attrs); + iupAttribSetStr(ih, "_IUPMOT_NO_BGCOLOR", "1"); + } + + return 1; +} + +static void motCanvasLayoutUpdateMethod(Ihandle *ih) +{ + Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + Dimension border; + + /* IMPORTANT: + The ScrolledWindow border, added by the Core, is NOT included in the Motif size. + So when setting the size, we must compensate the border, + so the actual size will be the size we expect. + */ + + XtVaGetValues(sb_win, XmNborderWidth, &border, NULL); + + XtVaSetValues(sb_win, + XmNx, (XtArgVal)ih->x, + XmNy, (XtArgVal)ih->y, + XmNwidth, (XtArgVal)(ih->currentwidth-2*border), + XmNheight, (XtArgVal)(ih->currentheight-2*border), + NULL); +} + +static int motCanvasMapMethod(Ihandle* ih) +{ + Widget sb_win; + char *visual; + int num_args = 0; + Arg args[20]; + + if (!ih->parent) + return IUP_ERROR; + + ih->data->sb = iupBaseGetScrollbar(ih); + + /******************************/ + /* Create the scrolled window */ + /******************************/ + + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAPPLICATION_DEFINED); + iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE); + iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and draw area */ + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + + if (iupAttribGetBoolean(ih, "BORDER")) + { + iupmotSetArg(args, num_args, XmNborderWidth, 1); + iupmotSetArg(args, num_args, XmNborderColor, iupmotColorGetPixelStr("0 0 0")); + } + else + iupmotSetArg(args, num_args, XmNborderWidth, 0); + + sb_win = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + xmScrolledWindowWidgetClass, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!sb_win) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + /****************************/ + /* Create the drawing area */ + /****************************/ + + num_args = 0; + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* no shadow margins */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); /* no shadow margins */ + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + iupmotSetArg(args, num_args, XmNresizePolicy, XmRESIZE_NONE); /* no automatic resize of children */ + if (ih->iclass->is_interactive) + { + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); /* include in navigation */ + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + } + else + { + iupmotSetArg(args, num_args, XmNnavigationType, XmNONE); + iupmotSetArg(args, num_args, XmNtraversalOn, False); + } + + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + + visual = IupGetAttribute(ih, "VISUAL"); /* defined by the OpenGL Canvas or NULL */ + if (visual) + { + Colormap colormap = (Colormap)iupAttribGet(ih, "COLORMAP"); + if (colormap) + iupmotSetArg(args, num_args, XmNcolormap,colormap); + + iupmotDialogSetVisual(ih, visual); + } + + ih->handle = XtCreateManagedWidget( + "draw_area", /* child identifier */ + xmDrawingAreaWidgetClass, /* widget class */ + sb_win, /* widget parent */ + args, num_args); + + if (!ih->handle) + { + XtDestroyWidget(sb_win); + return IUP_ERROR; + } + + if (visual) + iupmotDialogResetVisual(ih); + + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)sb_win); + XtVaSetValues(sb_win, XmNworkWindow, ih->handle, NULL); + + { + XSetWindowAttributes attrs; + attrs.bit_gravity = ForgetGravity; /* For the DrawingArea widget gets Expose events when you resize it to be smaller. */ + + if (iupAttribGetBoolean(ih, "BACKINGSTORE")) + attrs.backing_store = WhenMapped; + else + attrs.backing_store = NotUseful; + + XChangeWindowAttributes(iupmot_display, XtWindow(ih->handle), CWBitGravity|CWBackingStore, &attrs); + } + + if (ih->data->sb & IUP_SB_HORIZ) + { + Widget sb_horiz = XtVaCreateManagedWidget("sb_horiz", + xmScrollBarWidgetClass, sb_win, + XmNorientation, XmHORIZONTAL, + XmNsliderMark, XmTHUMB_MARK, + XmNuserData, ih, + NULL); + + XtAddCallback(sb_horiz, XmNvalueChangedCallback, motDialogScrollbarCallback, (void*)IUP_SBPOSH); + XtAddCallback(sb_horiz, XmNdragCallback, motDialogScrollbarCallback, (void*)IUP_SBDRAGH); + XtAddCallback(sb_horiz, XmNdecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBLEFT); + XtAddCallback(sb_horiz, XmNincrementCallback, motDialogScrollbarCallback, (void*)IUP_SBRIGHT); + XtAddCallback(sb_horiz, XmNpageDecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGLEFT); + XtAddCallback(sb_horiz, XmNpageIncrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGRIGHT); + + XtVaSetValues(sb_win, XmNhorizontalScrollBar, sb_horiz, NULL); + } + + if (ih->data->sb & IUP_SB_VERT) + { + Widget sb_vert = XtVaCreateManagedWidget("sb_vert", + xmScrollBarWidgetClass, sb_win, + XmNorientation, XmVERTICAL, + XmNsliderMark, XmTHUMB_MARK, + XmNuserData, ih, + NULL); + + XtAddCallback(sb_vert, XmNvalueChangedCallback, motDialogScrollbarCallback, (void*)IUP_SBPOSV); + XtAddCallback(sb_vert, XmNdragCallback, motDialogScrollbarCallback, (void*)IUP_SBDRAGV); + XtAddCallback(sb_vert, XmNdecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBUP); + XtAddCallback(sb_vert, XmNincrementCallback, motDialogScrollbarCallback, (void*)IUP_SBDN); + XtAddCallback(sb_vert, XmNpageDecrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGUP); + XtAddCallback(sb_vert, XmNpageIncrementCallback, motDialogScrollbarCallback, (void*)IUP_SBPGDN); + + XtVaSetValues(sb_win, XmNverticalScrollBar, sb_vert, NULL); + } + + XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNexposeCallback, (XtCallbackProc)motCanvasExposeCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNresizeCallback, (XtCallbackProc)motCanvasResizeCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNinputCallback, (XtCallbackProc)motCanvasInputCallback, (XtPointer)ih); + + XtAddEventHandler(ih->handle, EnterWindowMask, False,(XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False,(XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + + XtAddEventHandler(ih->handle, FocusChangeMask, False,(XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyReleaseMask, False, (XtEventHandler)iupmotCanvasKeyReleaseEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih); + + /* initialize the widget */ + XtRealizeWidget(sb_win); + + return IUP_NOERROR; +} + +void iupdrvCanvasInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motCanvasMapMethod; + ic->LayoutUpdate = motCanvasLayoutUpdateMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motCanvasSetBgColorAttrib, "255 255 255", NULL, IUPAF_DEFAULT); /* force new default value */ + + /* IupCanvas only */ + iupClassRegisterAttribute(ic, "DRAWSIZE", motCanvasGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CURSOR", NULL, iupdrvBaseSetCursorAttrib, IUPAF_SAMEASSYSTEM, "ARROW", IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "DX", NULL, motCanvasSetDXAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "DY", NULL, motCanvasSetDYAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "POSX", iupCanvasGetPosXAttrib, motCanvasSetPosXAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "POSY", iupCanvasGetPosYAttrib, motCanvasSetPosYAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "YAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "XAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED); + + /* IupCanvas X only */ + iupClassRegisterAttribute(ic, "XWINDOW", motCanvasGetXWindowAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "XDISPLAY", motCanvasGetXDisplayAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "XSCREEN", motCanvasGetXScreenAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "BACKINGSTORE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED); +} diff --git a/iup/src/mot/iupmot_clipboard.c b/iup/src/mot/iupmot_clipboard.c new file mode 100755 index 0000000..43a0087 --- /dev/null +++ b/iup/src/mot/iupmot_clipboard.c @@ -0,0 +1,208 @@ +/** \file + * \brief Clipboard for the Motif Driver. + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" + +#include "iupmot_drv.h" + + +static Window motClipboardGetWindow(void) +{ + Ihandle* focus = IupGetFocus(); + Ihandle* dlg; + if (!focus) return (Window)NULL; + dlg = IupGetDialog(focus); + if (dlg) + return XtWindow(dlg->handle); + else + return (Window)NULL; +} + +static int motClipboardSetTextAttrib(Ihandle *ih, const char *value) +{ + long item_id = 0; + Window window = motClipboardGetWindow(); + XmString clip_label = XmStringCreateLocalized ("IupClipboard"); + (void)ih; + + if (XmClipboardStartCopy(iupmot_display, window, clip_label, CurrentTime, NULL, NULL, &item_id)!=ClipboardSuccess) + { + XmStringFree(clip_label); + return 0; + } + + XmStringFree(clip_label); + + XmClipboardCopy(iupmot_display, window, item_id, "STRING", (char*)value, (long)strlen(value)+1, 0, NULL); + XmClipboardEndCopy(iupmot_display, window, item_id); + return 0; +} + +static char* motClipboardGetTextAttrib(Ihandle *ih) +{ + unsigned long size; + char* str; + Window window = motClipboardGetWindow(); + (void)ih; + + if (XmClipboardInquireLength(iupmot_display, window, "STRING", &size)!=ClipboardSuccess) + return NULL; + + str = iupStrGetMemory(size+1); + + if (XmClipboardRetrieve(iupmot_display, window, "STRING", str, size+1, NULL, NULL)!=ClipboardSuccess) + return NULL; + + return str; +} + +static int motClipboardSetImageAttrib(Ihandle *ih, const char *value) +{ + Pixmap pixmap; + long item_id = 0; + Window window = motClipboardGetWindow(); + XmString clip_label = XmStringCreateLocalized ("IupClipboard"); + + if (XmClipboardStartCopy(iupmot_display, window, clip_label, CurrentTime, NULL, NULL, &item_id)!=ClipboardSuccess) + { + XmStringFree(clip_label); + return 0; + } + + XmStringFree(clip_label); + + pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + + XmClipboardCopy(iupmot_display, window, item_id, "PIXMAP", (char*)&pixmap, sizeof(Pixmap), 0, NULL); + XmClipboardEndCopy(iupmot_display, window, item_id); + + (void)ih; + return 0; +} + +static int motClipboardSetNativeImageAttrib(Ihandle *ih, const char *value) +{ + long item_id = 0; + Window window = motClipboardGetWindow(); + XmString clip_label = XmStringCreateLocalized ("IupClipboard"); + Pixmap pixmap = (Pixmap)value; + + if (XmClipboardStartCopy(iupmot_display, window, clip_label, CurrentTime, NULL, NULL, &item_id)!=ClipboardSuccess) + { + XmStringFree(clip_label); + return 0; + } + + XmStringFree(clip_label); + + XmClipboardCopy(iupmot_display, window, item_id, "PIXMAP", (char*)&pixmap, sizeof(Pixmap), 0, NULL); + XmClipboardEndCopy(iupmot_display, window, item_id); + + (void)ih; + return 0; +} + +static char* motClipboardGetNativeImageAttrib(Ihandle *ih) +{ + unsigned long size; + void* data; + Pixmap pixmap; + Window window = motClipboardGetWindow(); + (void)ih; + + if (XmClipboardInquireLength(iupmot_display, window, "PIXMAP", &size)!=ClipboardSuccess) + return NULL; + + data = XtMalloc(size); + + if (XmClipboardRetrieve(iupmot_display, window, "PIXMAP", data, size, NULL, NULL)!=ClipboardSuccess) + return NULL; + + pixmap = *((Pixmap*)data); + XtFree(data); + return (char*)pixmap; +} + +static int motClipboardIsAvailable(const char* format_name) +{ + Window window = motClipboardGetWindow(); + int count, i; + unsigned long max_length, length; + char* str; + + if (XmClipboardInquireCount(iupmot_display, window, &count, &max_length) != ClipboardSuccess) + return 0; + + str = iupStrGetMemory(max_length+1); + + for (i = 1; i<=count; i++) + { + if (XmClipboardInquireFormat(iupmot_display, window, i, str, max_length+1, &length)==ClipboardSuccess) + { + if (iupStrEqualNoCase(str, format_name)) + return 1; + } + } + + return 0; +} + +static char* motClipboardGetTextAvailableAttrib(Ihandle *ih) +{ + (void)ih; + if (motClipboardIsAvailable("STRING")) + return "YES"; + else + return "NO"; +} + +static char* motClipboardGetImageAvailableAttrib(Ihandle *ih) +{ + (void)ih; + if (motClipboardIsAvailable("PIXMAP")) + return "YES"; + else + return "NO"; +} + +/******************************************************************************/ + +Ihandle* IupClipboard(void) +{ + return IupCreate("clipboard"); +} + +Iclass* iupClipboardGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "clipboard"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Attribute functions */ + iupClassRegisterAttribute(ic, "TEXT", motClipboardGetTextAttrib, motClipboardSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NATIVEIMAGE", motClipboardGetNativeImageAttrib, motClipboardSetNativeImageAttrib, NULL, NULL, IUPAF_NO_STRING|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, motClipboardSetImageAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TEXTAVAILABLE", motClipboardGetTextAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEAVAILABLE", motClipboardGetImageAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/mot/iupmot_color.c b/iup/src/mot/iupmot_color.c new file mode 100755 index 0000000..276bccc --- /dev/null +++ b/iup/src/mot/iupmot_color.c @@ -0,0 +1,380 @@ +/** \file + * \brief Motif Driver color management + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drvinfo.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + + +/* local variables */ + +typedef struct _Icolor +{ + Colormap colormap; /* colormap for all canvas, dialogs and menus */ + XColor color_table[256]; /* colormap colors */ + int num_colors; /* number of colors in colormap */ + + int rshift; /* red shift for truecolor */ + int gshift; /* green shift for truecolor */ + int bshift; /* blue shift for truecolor */ + + int direct_conv[256]; /* used with directColor visuals */ +} Icolor; + +static Icolor mot_color; + + +/******************************************* + NOT TrueColor Functions +*******************************************/ + +static int motColor8BppErrorHandler(Display* dpy, XErrorEvent *err) +{ + char msg[80]; + + /* BadAcess in XFreeColors is OK */ + if (err->request_code==X_FreeColors && err->error_code==BadAccess) + return 0; + + XGetErrorText(dpy, err->error_code, msg, 80 ); + fprintf(stderr,"IUP Motif error handler: Xlib request %d: %s\n", err->request_code, msg); + + return 0; +} + +static unsigned long motColorNearestRGB(XColor* xc1) +{ + static int nearest_try = 0; + + int pos = 0, i; + unsigned long min_dist = ULONG_MAX, this_dist; + int dr, dg, db; + XColor* xc2; + + for (i=0; ired - xc2->red) / 850; /* 0.30 / 255 */ + dg = (xc1->green - xc2->green) / 432; /* 0.59 / 255 */ + db = (xc1->blue - xc2->blue) / 2318; /* 0.11 / 255 */ + + this_dist = dr*dr + dg*dg + db*db; + + if (this_dist < min_dist) + { + min_dist = this_dist; + pos = i; + } + } + + /* verifico se a cor ainda esta alocada */ + /* Try to allocate the closest match color. This should only + fail if the cell is read/write. Otherwise, we're incrementing + the cell's reference count. (comentario extraido da biblioteca Mesa) */ + if (!XAllocColor(iupmot_display, mot_color.colormap, + &(mot_color.color_table[pos]))) + { + /* nao esta, preciso atualizar a tabela e procurar novamente */ + /* isto acontece porque a cor encontrada pode ter sido de uma aplicacao que nao existe mais */ + /* uma vez atualizada, o problema nao ocorrera' na nova procura */ + /* ou a celula e' read write */ + + if (nearest_try == 1) + { + nearest_try = 0; + return mot_color.color_table[pos].pixel; + } + + XQueryColors(iupmot_display, mot_color.colormap, mot_color.color_table, mot_color.num_colors); + + nearest_try = 1; /* garante que so' vai tentar isso uma vez */ + return motColorNearestRGB(xc1); + } + + return mot_color.color_table[pos].pixel; +} + +static unsigned long motColorGetPixel_NotTrueColor(unsigned char cr, unsigned char cg, unsigned char cb) +{ + unsigned long pixel; + XColor xc; + xc.red = iupCOLOR8TO16(cr); + xc.green = iupCOLOR8TO16(cg); + xc.blue = iupCOLOR8TO16(cb); + xc.flags = DoRed | DoGreen | DoBlue; + + /* verificamos se a nova cor ja' esta' disponivel */ + if (!XAllocColor(iupmot_display, mot_color.colormap, &xc)) + { + /* nao estava disponivel, procuro pela mais proxima na tabela de cores */ + pixel = motColorNearestRGB(&xc); + } + else + { + /* ja' estava disponivel */ + /* atualizo a tabela de cores */ + mot_color.color_table[xc.pixel] = xc; + pixel = xc.pixel; + } + + return pixel; +} + +static void motColorGetRGB_NotTrueColor(unsigned long pixel, unsigned char* red, unsigned char* green, unsigned char* blue) +{ + XColor xc; + xc.pixel = pixel; + XQueryColor(iupmot_display, mot_color.colormap, &xc); + *red = (unsigned char)xc.red; + *green = (unsigned char)xc.green; + *blue = (unsigned char)xc.blue; +} + +static void motColorReserveColors(void) +{ + unsigned char r, g, b; + unsigned long background, foreground, shadow, highlight, selection; + XtVaGetValues(iupmot_appshell, XmNbackground, &background, NULL); + XmGetColors(DefaultScreenOfDisplay(iupmot_display), mot_color.colormap, + background, &foreground, &highlight, &shadow, &selection); + motColorGetRGB_NotTrueColor(background, &r, &g, &b); + motColorGetPixel_NotTrueColor(r, g, b); + motColorGetRGB_NotTrueColor(foreground, &r, &g, &b); + motColorGetPixel_NotTrueColor(r, g, b); + motColorGetRGB_NotTrueColor(shadow, &r, &g, &b); + motColorGetPixel_NotTrueColor(r, g, b); + motColorGetRGB_NotTrueColor(highlight, &r, &g, &b); + motColorGetPixel_NotTrueColor(r, g, b); + motColorGetRGB_NotTrueColor(selection, &r, &g, &b); + motColorGetPixel_NotTrueColor(r, g, b); +} + + +/******************************************* + TrueColor Functions +*******************************************/ + + +static void motColorGetRGB_TrueColor(unsigned long pixel, unsigned char* red, unsigned char* green, unsigned char* blue) +{ + unsigned long r = pixel & iupmot_visual->red_mask; + unsigned long g = pixel & iupmot_visual->green_mask; + unsigned long b = pixel & iupmot_visual->blue_mask; + if (mot_color.rshift<0) r = r >> (-mot_color.rshift); + else r = r << mot_color.rshift; + if (mot_color.gshift<0) g = g >> (-mot_color.gshift); + else g = g << mot_color.gshift; + if (mot_color.bshift<0) b = b >> (-mot_color.bshift); + else b = b << mot_color.bshift; + *red = iupCOLOR16TO8(r); + *green = iupCOLOR16TO8(g); + *blue = iupCOLOR16TO8(b); +} + +static unsigned long motColorGetPixel_TrueColor(unsigned char cr, unsigned char cg, unsigned char cb) +{ + unsigned long r = iupCOLOR8TO16(cr); + unsigned long g = iupCOLOR8TO16(cg); + unsigned long b = iupCOLOR8TO16(cb); + + if (mot_color.rshift<0) + r = r << (-mot_color.rshift); + else + r = r >> mot_color.rshift; + + if (mot_color.gshift<0) + g = g << (-mot_color.gshift); + else + g = g >> mot_color.gshift; + + if (mot_color.bshift<0) + b = b << (-mot_color.bshift); + else + b = b >> mot_color.bshift; + + r = r & iupmot_visual->red_mask; + g = g & iupmot_visual->green_mask; + b = b & iupmot_visual->blue_mask; + + return r | g | b; +} + +static int motColorHighBit(unsigned long ul) +{ +/* returns position of highest set bit in 'ul' as an integer (0-31), + or -1 if none */ + int i; unsigned long hb; + + hb = 0x80; hb = hb << 24; /* hb = 0x80000000UL */ + for (i=31; ((ul & hb) == 0) && i>=0; i--, ul<<=1); + return i; +} + +static void motColorMakeDirectCmap(Colormap cmap) +{ + int i, cmaplen, numgot; + unsigned char origgot[256]; + XColor c; + unsigned long rmask, gmask, bmask; + int rshift, gshift, bshift; + + rmask = iupmot_visual->red_mask; + gmask = iupmot_visual->green_mask; + bmask = iupmot_visual->blue_mask; + + rshift = motColorHighBit(rmask) - 15; + gshift = motColorHighBit(gmask) - 15; + bshift = motColorHighBit(bmask) - 15; + + if (rshift<0) rmask = rmask << (-rshift); + else rmask = rmask >> rshift; + + if (gshift<0) gmask = gmask << (-gshift); + else gmask = gmask >> gshift; + + if (bshift<0) bmask = bmask << (-bshift); + else bmask = bmask >> bshift; + + cmaplen = iupmot_visual->map_entries; + if (cmaplen>256) cmaplen=256; + + /* try to alloc a 'cmaplen' long grayscale colormap. May not get all + entries for whatever reason. Build table 'mot_color.direct_conv[]' that + maps range [0..(cmaplen-1)] into set of colors we did get */ + + for (i=0; i<256; i++) { origgot[i] = 0; mot_color.direct_conv[i] = i; } + + for (i=numgot=0; i= 0 && !origgot[i-numbak]) numbak++; + while ((i + numfwd) < cmaplen && !origgot[i+numfwd]) numfwd++; + + if (i-numbak<0 || !origgot[i-numbak]) numbak = 999; + if (i+numfwd>=cmaplen || !origgot[i+numfwd]) numfwd = 999; + + if (numbak 8) + { + iupmotColorGetRGB = motColorGetRGB_TrueColor; + iupmotColorGetPixel = motColorGetPixel_TrueColor; + + /* make linear colormap for DirectColor visual */ + if (iupmot_visual->class == DirectColor) + motColorMakeDirectCmap(DefaultColormap(iupmot_display, iupmot_screen)); + + mot_color.rshift = 15 - motColorHighBit(iupmot_visual->red_mask); + mot_color.gshift = 15 - motColorHighBit(iupmot_visual->green_mask); + mot_color.bshift = 15 - motColorHighBit(iupmot_visual->blue_mask); + + mot_color.num_colors = 0; + mot_color.colormap = 0; + } + else + { + int i; + iupmotColorGetRGB = motColorGetRGB_NotTrueColor; + iupmotColorGetPixel = motColorGetPixel_NotTrueColor; + + mot_color.colormap = DefaultColormap(iupmot_display, iupmot_screen); + mot_color.num_colors = 1L << depth; + + for (i=0; i + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drvinfo.h" +#include "iup_dialog.h" + +#include "iupmot_drv.h" + + +static int motColorDlgPopup(Ihandle* ih, int x, int y) +{ + (void)ih; + (void)x; + (void)y; + return IUP_ERROR; +} + +void iupdrvColorDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = motColorDlgPopup; +} diff --git a/iup/src/mot/iupmot_common.c b/iup/src/mot/iupmot_common.c new file mode 100755 index 0000000..7b3f8b7 --- /dev/null +++ b/iup/src/mot/iupmot_common.c @@ -0,0 +1,630 @@ +/** \file + * \brief Motif Base Functions + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include "iup.h" +#include "iupkey.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_key.h" +#include "iup_str.h" +#include "iup_class.h" +#include "iup_attrib.h" +#include "iup_focus.h" +#include "iup_key.h" +#include "iup_drv.h" +#include "iup_image.h" +#include "iup_drv.h" + +#include "iupmot_color.h" +#include "iupmot_drv.h" + + + +void iupdrvActivate(Ihandle* ih) +{ + if (iupStrEqual(ih->iclass->name, "text") || iupStrEqual(ih->iclass->name, "multiline")) + XmProcessTraversal(ih->handle, XmTRAVERSE_CURRENT); + else + XtCallActionProc(ih->handle, "ArmAndActivate", 0, 0, 0 ); +} + +static int motActivateMnemonic(Ihandle *dialog, int c) +{ + Ihandle *ih; + char attrib[19] = "_IUPMOT_MNEMONIC_ "; + attrib[17] = (char)c; + ih = (Ihandle*)iupAttribGet(dialog, attrib); + if (iupObjectCheck(ih)) + { + iupdrvActivate(ih); + return IUP_IGNORE; + } + return IUP_CONTINUE; +} + +void iupmotSetMnemonicTitle(Ihandle *ih, const char* value) +{ + char c; + char* str; + + if (!value) + value = ""; + + str = iupStrProcessMnemonic(value, &c, -1); /* remove & and return in c */ + if (str != value) + { + KeySym keysym = iupmotKeyCharToKeySym(c); + XtVaSetValues(ih->handle, XmNmnemonic, keysym, NULL); /* works only for menus, but underlines the letter */ + + if (ih->iclass->nativetype != IUP_TYPEMENU) + { + Ihandle* dialog = IupGetDialog(ih); + char attrib[22] = "_IUPMOT_MNEMONIC_ \0CB"; + attrib[17] = (char)toupper(c); + + /* used by motActivateMnemonic */ + if (iupStrEqual(ih->iclass->name, "label")) + iupAttribSetStr(dialog, attrib, (char*)iupFocusNextInteractive(ih)); + else + iupAttribSetStr(dialog, attrib, (char*)ih); + + /* used by iupmotKeyPressEvent */ + attrib[18] = '_'; + IupSetCallback(dialog, attrib, (Icallback)motActivateMnemonic); + } + + iupmotSetString(ih->handle, XmNlabelString, str); + free(str); + } + else + { + XtVaSetValues (ih->handle, XmNmnemonic, NULL, NULL); + iupmotSetString(ih->handle, XmNlabelString, str); + } +} + +void iupmotSetString(Widget w, const char *resource, const char* value) +{ + XmString xm_str = XmStringCreateLocalized((String)value); + XtVaSetValues(w, resource, xm_str, NULL); + XmStringFree(xm_str); +} + +char* iupmotConvertString(XmString str) +{ + char* text = (char*)XmStringUnparse(str, NULL, XmCHARSET_TEXT, XmCHARSET_TEXT, NULL, 0, XmOUTPUT_ALL); + char* buf = iupStrGetMemoryCopy(text); + XtFree(text); + return buf; +} + +#ifdef OLD_CONVERT +char* iupmotConvertString(XmString str) +{ + XmStringContext context; + char *text, *p, *buf; + unsigned int length; + XmStringComponentType type; + + if (!XmStringInitContext (&context, str)) + return NULL; + + buf = iupStrGetMemory(XmStringLength(str)); /* always greatter than strlen */ + + /* p keeps a running pointer through buf as text is read */ + p = buf; + while ((type = XmStringGetNextTriple(context, &length, (XtPointer)&text)) != XmSTRING_COMPONENT_END) + { + switch (type) + { + case XmSTRING_COMPONENT_TEXT: + memcpy(p, text, length); + p += length; + *p = 0; + break; + case XmSTRING_COMPONENT_TAB: + *p++ = '\t'; + *p = 0; + break; + case XmSTRING_COMPONENT_SEPARATOR: + *p++ = '\n'; + *p = 0; + break; + } + XtFree(text); + } + + XmStringFreeContext(context); + + return buf; +} +#endif + +void iupdrvReparent(Ihandle* ih) +{ + Widget native_parent = iupChildTreeGetNativeParentHandle(ih); + Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + XReparentWindow(iupmot_display, XtWindow(widget), XtWindow(native_parent), 0, 0); +} + +void iupdrvBaseLayoutUpdateMethod(Ihandle *ih) +{ + Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + XtVaSetValues(widget, + XmNx, (XtArgVal)ih->x, + XmNy, (XtArgVal)ih->y, + XmNwidth, (XtArgVal)ih->currentwidth, + XmNheight, (XtArgVal)ih->currentheight, + NULL); +} + +void iupdrvBaseUnMapMethod(Ihandle* ih) +{ + Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + XtUnrealizeWidget(widget); /* To match the call to XtRealizeWidget */ + XtDestroyWidget(widget); /* To match the call to XtCreateManagedWidget */ +} + +void iupdrvDisplayUpdate(Ihandle *ih) +{ + XExposeEvent evt; + Dimension w, h; + + XtVaGetValues(ih->handle, XmNwidth, &w, + XmNheight, &h, + NULL); + + evt.type = Expose; + evt.display = iupmot_display; + evt.send_event = True; + evt.window = XtWindow(ih->handle); + + evt.x = 0; + evt.y = 0; + evt.width = w; + evt.height = h; + + evt.count = 0; + + /* POST a Redraw */ + XSendEvent(iupmot_display, XtWindow(ih->handle), False, ExposureMask, (XEvent*)&evt); +} + +void iupdrvDisplayRedraw(Ihandle *ih) +{ + Widget w; + + /* POST a Redraw */ + iupdrvDisplayUpdate(ih); + + /* if this element has an inner native parent (like IupTabs), + then redraw that native parent if different from the element. */ + w = (Widget)iupClassObjectGetInnerNativeContainerHandle(ih, (Ihandle*)IupGetAttribute(ih, "VALUE_HANDLE")); + if (w && w != ih->handle) + { + Widget handle = ih->handle; + ih->handle = w; + iupdrvDisplayUpdate(ih); + ih->handle = handle; + } + + /* flush exposure events. */ + XmUpdateDisplay(ih->handle); +} + +void iupdrvScreenToClient(Ihandle* ih, int *x, int *y) +{ + Window child; + XTranslateCoordinates(iupmot_display, RootWindow(iupmot_display, iupmot_screen), + XtWindow(ih->handle), + *x, *y, x, y, &child); +} + +void iupmotHelpCallback(Widget w, Ihandle *ih, XtPointer call_data) +{ + Icallback cb = IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + IupExitLoop(); + + (void)call_data; + (void)w; +} + +void iupmotEnterLeaveWindowEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + Icallback cb = NULL; + (void)cont; + (void)w; + + if (evt->type == EnterNotify) + { + iupmotTipEnterNotify(ih); + + cb = IupGetCallback(ih, "ENTERWINDOW_CB"); + } + else if (evt->type == LeaveNotify) + { + iupmotTipLeaveNotify(); + + cb = IupGetCallback(ih, "LEAVEWINDOW_CB"); + } + + if (cb) + cb(ih); +} + +int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value) +{ + if (iupdrvIsVisible(ih)) + { + if (iupStrEqualNoCase(value, "TOP")) + XRaiseWindow(iupmot_display, XtWindow(ih->handle)); + else + XLowerWindow(iupmot_display, XtWindow(ih->handle)); + } + + return 0; +} + +void iupdrvSetVisible(Ihandle* ih, int visible) +{ + Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + if (visible) + XtMapWidget(widget); + else + XtUnmapWidget(widget); +} + +int iupdrvIsVisible(Ihandle* ih) +{ + XWindowAttributes wa; + XGetWindowAttributes(iupmot_display, XtWindow(ih->handle), &wa); + return (wa.map_state == IsViewable); +} + +int iupdrvIsActive(Ihandle* ih) +{ + return XtIsSensitive(ih->handle); +} + +void iupdrvSetActive(Ihandle* ih, int enable) +{ + Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + XtSetSensitive(widget, enable); +} + +char* iupmotGetXWindowAttrib(Ihandle *ih) +{ + return (char*)XtWindow(ih->handle); +} + +char* iupdrvBaseGetXAttrib(Ihandle *ih) +{ + int x, y; + Window child; + char* str = iupStrGetMemory(20); + Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + /* Translating to absolute screen coordinates */ + /* source destination */ + XTranslateCoordinates(iupmot_display, + XtWindow(widget), RootWindow(iupmot_display, iupmot_screen), + 0, 0, &x, &y, + &child); + + sprintf(str, "%d", x); + return str; +} + +char* iupdrvBaseGetYAttrib(Ihandle *ih) +{ + int x, y; + Window child; + char* str = iupStrGetMemory(20); + Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (!widget) widget = ih->handle; + + /* Translating to absolute screen coordinates */ + /* source destination */ + XTranslateCoordinates(iupmot_display, + XtWindow(widget), RootWindow(iupmot_display, iupmot_screen), + 0, 0, &x, &y, + &child); + + sprintf(str, "%d", y); + return str; +} + +void iupmotSetBgColor(Widget w, Pixel color) +{ + Pixel fgcolor; + XtVaGetValues(w, XmNforeground, &fgcolor, NULL); + XmChangeColor(w, color); + /* XmChangeColor also sets the XmNforeground color, so we must reset to the previous one. */ + XtVaSetValues(w, XmNforeground, fgcolor, NULL); + XtVaSetValues(w, XmNbackgroundPixmap, XmUNSPECIFIED_PIXMAP, NULL); +} + +int iupdrvBaseSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + iupmotSetBgColor(ih->handle, color); + + /* update internal image cache for controls that have the IMAGE attribute */ + iupImageUpdateParent(ih); + } + return 1; +} + +char* iupmotGetBgColorAttrib(Ihandle* ih) +{ + unsigned char r, g, b; + Pixel color; + char* str = iupStrGetMemory(20); + XtVaGetValues(ih->handle, XmNbackground, &color, NULL); + iupmotColorGetRGB(color, &r, &g, &b); + sprintf(str, "%d %d %d", (int)r, (int)g, (int)b); + return str; +} + +int iupdrvBaseSetFgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + XtVaSetValues(ih->handle, XmNforeground, color, NULL); + return 1; +} + +void iupmotGetWindowSize(Ihandle *ih, int *width, int *height) +{ + Dimension w, h; + XtVaGetValues(ih->handle, XmNwidth, &w, + XmNheight, &h, + NULL); + *width = w; + *height = h; +} + +static Cursor motEmptyCursor(Ihandle* ih) +{ + /* creates an empty cursor */ + XColor cursor_color = {0L,0,0,0,0,0}; + char bitsnull[1] = {0x00}; + Pixmap pixmapnull; + Cursor cur; + + pixmapnull = XCreateBitmapFromData(iupmot_display, + XtWindow(ih->handle), + bitsnull, + 1,1); + + cur = XCreatePixmapCursor(iupmot_display, + pixmapnull, + pixmapnull, + &cursor_color, + &cursor_color, + 0,0); + + XFreePixmap(iupmot_display, pixmapnull); + + return cur; +} + +static Cursor motGetCursor(Ihandle* ih, const char* name) +{ + static struct { + const char* iupname; + int sysname; + } table[] = { + { "NONE", 0}, + { "NULL", 0}, + { "ARROW", XC_left_ptr}, + { "BUSY", XC_watch}, + { "CROSS", XC_crosshair}, + { "HAND", XC_hand2}, + { "HELP", XC_question_arrow}, + { "IUP", XC_question_arrow}, + { "MOVE", XC_fleur}, + { "PEN", XC_pencil}, + { "RESIZE_N", XC_top_side}, + { "RESIZE_S", XC_bottom_side}, + { "RESIZE_NS", XC_sb_v_double_arrow}, + { "RESIZE_W", XC_left_side}, + { "RESIZE_E", XC_right_side}, + { "RESIZE_WE", XC_sb_h_double_arrow}, + { "RESIZE_NE", XC_top_right_corner}, + { "RESIZE_SE", XC_bottom_right_corner}, + { "RESIZE_NW", XC_top_left_corner}, + { "RESIZE_SW", XC_bottom_left_corner}, + { "TEXT", XC_xterm}, + { "UPARROW", XC_center_ptr} + }; + + Cursor cur; + char str[50]; + int i, count = sizeof(table)/sizeof(table[0]); + + /* check the cursor cache first (per control)*/ + sprintf(str, "_IUPMOT_CURSOR_%s", name); + cur = (Cursor)iupAttribGet(ih, str); + if (cur) + return cur; + + /* check the pre-defined IUP names first */ + for (i = 0; i < count; i++) + { + if (iupStrEqualNoCase(name, table[i].iupname)) + { + if (table[i].sysname) + cur = XCreateFontCursor(iupmot_display, table[i].sysname); + else + cur = motEmptyCursor(ih); + + break; + } + } + + if (i == count) + { + /* check for a name defined cursor */ + cur = (Cursor)iupImageGetCursor(name); + } + + iupAttribSetStr(ih, str, (char*)cur); + return cur; +} + +int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value) +{ + Cursor cur = motGetCursor(ih, value); + if (cur) + { + XDefineCursor(iupmot_display, XtWindow(ih->handle), cur); + return 1; + } + return 0; +} + +#include +#include + +void iupdrvDrawFocusRect(Ihandle* ih, void* _gc, int x, int y, int w, int h) +{ + Drawable wnd = (Drawable)IupGetAttribute(ih, "XWINDOW"); /* Use IupGetAttribute to consult the native implemetation */ + GC gc = (GC)_gc; + XmeDrawHighlight(iupmot_display, wnd, gc, x, y, w, h, 1); +} + +void iupdrvBaseRegisterCommonAttrib(Iclass* ic) +{ + iupClassRegisterAttribute(ic, "XMFONTLIST", iupmotGetFontListAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "XFONTSTRUCT", iupmotGetFontStructAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "XFONTID", iupmotGetFontIdAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); +} + +static void motDoNothing(Widget w, XEvent* evt, String* params, Cardinal* num_params) +{ + (void)w; + (void)evt; + (void)params; + (void)num_params; +} + +void iupmotDisableDragSource(Widget w) +{ + char dragTranslations[] = "#override : iupDoNothing()"; + static int do_nothing_rec = 0; + if (!do_nothing_rec) + { + XtActionsRec rec = {"iupDoNothing", (XtActionProc)motDoNothing}; + XtAppAddActions(iupmot_appcontext, &rec, 1); + do_nothing_rec = 1; + } + XtOverrideTranslations(w, XtParseTranslationTable(dragTranslations)); +} + +int iupdrvGetScrollbarSize(void) +{ + return 15; +} + +void iupmotSetPixmap(Ihandle* ih, const char* name, const char* prop, int make_inactive) +{ + if (name) + { + Pixmap old_pixmap; + Pixmap pixmap = (Pixmap)iupImageGetImage(name, ih, make_inactive); + if (!pixmap) + pixmap = XmUNSPECIFIED_PIXMAP; + XtVaGetValues(ih->handle, prop, &old_pixmap, NULL); + if (pixmap != old_pixmap) + XtVaSetValues(ih->handle, prop, pixmap, NULL); + return; + } + + /* if not defined */ + XtVaSetValues(ih->handle, prop, XmUNSPECIFIED_PIXMAP, NULL); +} + +void iupmotButtonPressReleaseEvent(Widget w, Ihandle* ih, XEvent* evt, Boolean* cont) +{ + unsigned long elapsed; + static Time last = 0; + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + IFniiiis cb; + + XButtonEvent *but_evt = (XButtonEvent*)evt; + if (but_evt->button!=Button1 && + but_evt->button!=Button2 && + but_evt->button!=Button3 && + but_evt->button!=Button4 && + but_evt->button!=Button5) + return; + + cb = (IFniiiis) IupGetCallback(ih,"BUTTON_CB"); + if (cb) + { + int ret, doubleclick = 0; + int b = IUP_BUTTON1+(but_evt->button-1); + + /* Double/Single Click */ + if (but_evt->type==ButtonPress) + { + elapsed = but_evt->time - last; + last = but_evt->time; + if ((int)elapsed <= XtGetMultiClickTime(iupmot_display)) + doubleclick = 1; + } + + iupmotButtonKeySetStatus(but_evt->state, but_evt->button, status, doubleclick); + + ret = cb(ih, b, (but_evt->type==ButtonPress), but_evt->x, but_evt->y, status); + if (ret==IUP_CLOSE) + IupExitLoop(); + else if (ret==IUP_IGNORE) + *cont=False; + } + + (void)w; +} + +void iupmotPointerMotionEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + IFniis cb = (IFniis)IupGetCallback(ih,"MOTION_CB"); + if (cb) + { + XMotionEvent *motion_evt = (XMotionEvent*)evt; + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + iupmotButtonKeySetStatus(motion_evt->state, 0, status, 0); + cb(ih, motion_evt->x, motion_evt->y, status); + } + + (void)w; + (void)cont; +} diff --git a/iup/src/mot/iupmot_dialog.c b/iup/src/mot/iupmot_dialog.c new file mode 100755 index 0000000..4eeb834 --- /dev/null +++ b/iup/src/mot/iupmot_dialog.c @@ -0,0 +1,1069 @@ +/** \file + * \brief IupDialog class + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_class.h" +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_dlglist.h" +#include "iup_attrib.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_drvinfo.h" +#include "iup_focus.h" +#include "iup_str.h" +#define _IUPDLG_PRIVATE +#include "iup_dialog.h" +#include "iup_image.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +Atom iupmot_wm_deletewindow = 0; /* used also by IupMessageDlg */ + +static int motDialogSetBgColorAttrib(Ihandle* ih, const char* value); + +/**************************************************************** + Utilities +****************************************************************/ + + +int iupdrvDialogIsVisible(Ihandle* ih) +{ + return iupdrvIsVisible(ih) || ih->data->show_state == IUP_MINIMIZE; +} + +void iupdrvDialogUpdateSize(Ihandle* ih) +{ + Dimension width, height; + XtVaGetValues(ih->handle, XmNwidth, &width, XmNheight, &height, NULL); + ih->currentwidth = width; + ih->currentheight = height; +} + +void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h) +{ + Dimension width, height; + XtVaGetValues(handle, XmNwidth, &width, XmNheight, &height, NULL); + if (w) *w = width; + if (h) *h = height; +} + +void iupmotDialogSetVisual(Ihandle* ih, void* visual) +{ + Ihandle *dialog = IupGetDialog(ih); + XtVaSetValues(dialog->handle, XmNvisual, visual, NULL); +} + +void iupmotDialogResetVisual(Ihandle* ih) +{ + Ihandle *dialog = IupGetDialog(ih); + XtVaSetValues(dialog->handle, XmNvisual, iupmot_visual, NULL); +} + +void iupdrvDialogSetVisible(Ihandle* ih, int visible) +{ + if (visible) + { + XtMapWidget(ih->handle); + XRaiseWindow(iupmot_display, XtWindow(ih->handle)); + while (!iupdrvDialogIsVisible(ih)); /* waits until window get mapped */ + } + else + { + /* if iupdrvIsVisible reports hidden, then it should be minimized */ + if (!iupdrvIsVisible(ih)) /* can NOT hide a minimized window, so map it first. */ + { + XtMapWidget(ih->handle); + XRaiseWindow(iupmot_display, XtWindow(ih->handle)); + while (!iupdrvDialogIsVisible(ih)); /* waits until window get mapped */ + } + + XtUnmapWidget(ih->handle); + while (iupdrvDialogIsVisible(ih)); /* waits until window gets unmapped */ + } +} + +void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y) +{ + Dimension cur_x, cur_y; + XtVaGetValues(handle, XmNx, &cur_x, + XmNy, &cur_y, + NULL); + if (x) *x = cur_x; + if (y) *y = cur_y; +} + +void iupdrvDialogSetPosition(Ihandle *ih, int x, int y) +{ + XtVaSetValues(ih->handle, + XmNx, (XtArgVal)x, + XmNy, (XtArgVal)y, + NULL); +} + +static int motDialogGetMenuSize(Ihandle* ih) +{ + if (ih->data->menu) + return iupdrvMenuGetMenuBarSize(ih->data->menu); + else + return 0; +} + +void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu) +{ + static int native_border = 0; + static int native_caption = 0; + + int has_caption = iupAttribGetBoolean(ih, "MAXBOX") || + iupAttribGetBoolean(ih, "MINBOX") || + iupAttribGetBoolean(ih, "MENUBOX") || + IupGetAttribute(ih, "TITLE"); /* must use IupGetAttribute to check from the native implementation */ + + int has_border = has_caption || + iupAttribGetBoolean(ih, "RESIZE") || + iupAttribGetBoolean(ih, "BORDER"); + + *menu = motDialogGetMenuSize(ih); + + if (ih->handle && iupdrvDialogIsVisible(ih)) + { + int win_border, win_caption; + if (iupdrvGetWindowDecor((void*)XtWindow(ih->handle), &win_border, &win_caption)) + { + *border = 0; + if (has_border) + *border = win_border; + + *caption = 0; + if (has_caption) + *caption = win_caption; + + if (!native_border && *border) + native_border = win_border; + + if (!native_caption && *caption) + native_caption = win_caption; + + return; + } + } + + /* I could not set the size of the window including the decorations when the dialog is hidden */ + /* So we have to estimate the size of borders and caption when the dialog is hidden */ + + *border = 0; + if (has_border) + { + if (native_border) + *border = native_border; + else + *border = 5; + } + + *caption = 0; + if (has_caption) + { + if (native_caption) + *caption = native_caption; + else + *caption = 20; + } +} + +static int motDialogQueryWMspecSupport(Atom feature) +{ + static Atom netsuppport = 0; + Atom type; + Atom *atoms; + int format; + unsigned long after, natoms, i; + + if (!netsuppport) + netsuppport = XmInternAtom(iupmot_display, "_NET_SUPPORTED", False); + + /* get all the features */ + XGetWindowProperty(iupmot_display, RootWindow(iupmot_display, iupmot_screen), + netsuppport, 0, LONG_MAX, False, XA_ATOM, &type, &format, &natoms, + &after, (unsigned char **)&atoms); + if (type != XA_ATOM || atoms == NULL) + { + if (atoms) XFree(atoms); + return 0; + } + + /* Lookup the feature we want */ + for (i = 0; i < natoms; i++) + { + if (atoms[i] == feature) + { + XFree(atoms); + return 1; + } + } + + XFree(atoms); + return 0; +} + +static void motDialogSetWindowManagerStyle(Ihandle* ih) +{ + MwmHints hints; + static Atom xwmhint = 0; + if (!xwmhint) + xwmhint = XmInternAtom(iupmot_display, "_MOTIF_WM_HINTS", False); + + hints.flags = (MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS); + hints.functions = 0; + hints.decorations = 0; + hints.input_mode = 0; + hints.status = 0; + + if (IupGetAttribute(ih, "TITLE")) { /* must use IupGetAttribute to check from the native implementation */ + hints.functions |= MWM_FUNC_MOVE; + hints.decorations |= MWM_DECOR_TITLE; + } + + if (iupAttribGetBoolean(ih, "MENUBOX")) { + hints.functions |= MWM_FUNC_CLOSE; + hints.decorations |= MWM_DECOR_MENU; + } + + if (iupAttribGetBoolean(ih, "MINBOX")) { + hints.functions |= MWM_FUNC_MINIMIZE; + hints.decorations |= MWM_DECOR_MINIMIZE; + } + + if (iupAttribGetBoolean(ih, "MAXBOX")) { + hints.functions |= MWM_FUNC_MAXIMIZE; + hints.decorations |= MWM_DECOR_MAXIMIZE; + } + + if (iupAttribGetBoolean(ih, "RESIZE")) { + hints.functions |= MWM_FUNC_RESIZE; + hints.decorations |= MWM_DECOR_RESIZEH; + } + + if (iupAttribGetBoolean(ih, "BORDER")) + hints.decorations |= MWM_DECOR_BORDER; + + XChangeProperty(iupmot_display, XtWindow(ih->handle), + xwmhint, xwmhint, + 32, PropModeReplace, + (const unsigned char *) &hints, + PROP_MOTIF_WM_HINTS_ELEMENTS); +} + +static void motDialogChangeWMState(Ihandle* ih, Atom state1, Atom state2, int operation) +{ + static Atom wmstate = 0; + if (!wmstate) + wmstate = XmInternAtom(iupmot_display, "_NET_WM_STATE", False); + + if (iupdrvDialogIsVisible(ih)) + { + XEvent evt; + evt.type = ClientMessage; + evt.xclient.type = ClientMessage; + evt.xclient.serial = 0; + evt.xclient.send_event = True; + evt.xclient.display = iupmot_display; + evt.xclient.window = XtWindow(ih->handle); + evt.xclient.message_type = wmstate; + evt.xclient.format = 32; + evt.xclient.data.l[0] = operation; + evt.xclient.data.l[1] = state1; + evt.xclient.data.l[2] = state2; + evt.xclient.data.l[3] = 0; + evt.xclient.data.l[4] = 0; + + XSendEvent(iupmot_display, RootWindow(iupmot_display, iupmot_screen), False, + SubstructureRedirectMask | SubstructureNotifyMask, &evt); + } + else + { + if (operation) + { + if (state1 && state2) + { + Atom atoms[2]; + atoms[0] = state1; + atoms[0] = state2; + + XChangeProperty(iupmot_display, XtWindow(ih->handle), + wmstate, XA_ATOM, + 32, PropModeReplace, + (const unsigned char *)&atoms, 2); + } + else + { + XChangeProperty(iupmot_display, XtWindow(ih->handle), + wmstate, XA_ATOM, + 32, PropModeReplace, + (const unsigned char *)&state1, 1); + } + } + else + { + /* TODO: This is not working. The property is not correctly removed. */ + /* XDeleteProperty(iupmot_display, XtWindow(ih->handle), wmstate); */ + + /* Maybe the right way to do it is to retrieve all the atoms */ + /* and change again with all atoms except the one to remove */ + } + } +} + +static int motDialogSetFullScreen(Ihandle* ih, int fullscreen) +{ + static int support_fullscreen = -1; /* WARNING: The WM can be changed dinamically */ + + static Atom xwmfs = 0; + if (!xwmfs) + xwmfs = XmInternAtom(iupmot_display, "_NET_WM_STATE_FULLSCREEN", False); + + if (support_fullscreen == -1) + support_fullscreen = motDialogQueryWMspecSupport(xwmfs); + + if (support_fullscreen) + { + motDialogChangeWMState(ih, xwmfs, 0, fullscreen); + return 1; + } + + return 0; +} + +int iupdrvDialogSetPlacement(Ihandle* ih) +{ + char* placement; + ih->data->show_state = IUP_SHOW; + + if (iupAttribGetBoolean(ih, "FULLSCREEN")) + return 1; + + placement = iupAttribGet(ih, "PLACEMENT"); + if (!placement) + return 0; + + if (iupStrEqualNoCase(placement, "MINIMIZED")) + { + if (iupdrvDialogIsVisible(ih)) + XIconifyWindow(iupmot_display, XtWindow(ih->handle), iupmot_screen); + else + { + /* TODO: This is not working, so force a minimize after visible. */ + /*XWMHints wm_hints; */ + /*wm_hints.flags = StateHint; */ + /*wm_hints.initial_state = IconicState; */ + /*XSetWMHints(iupmot_display, XtWindow(ih->handle), &wm_hints); */ + + XtMapWidget(ih->handle); + XIconifyWindow(iupmot_display, XtWindow(ih->handle), iupmot_screen); + } + } + else if (iupStrEqualNoCase(placement, "MAXIMIZED")) + { + static Atom maxatoms[2] = {0, 0}; + if (!(maxatoms[0])) + { + maxatoms[0] = XmInternAtom(iupmot_display, "_NET_WM_STATE_MAXIMIZED_VERT", False); + maxatoms[1] = XmInternAtom(iupmot_display, "_NET_WM_STATE_MAXIMIZED_HORZ", False); + } + + motDialogChangeWMState(ih, maxatoms[0], maxatoms[1], 1); + } + else if (iupStrEqualNoCase(placement, "FULL")) + { + int width, height, x, y; + int border, caption, menu; + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + /* position the decoration outside the screen */ + x = -(border); + y = -(border+caption+menu); + + /* the dialog client area will cover the task bar */ + iupdrvGetFullSize(&width, &height); + + height += menu; /* the menu is included in the client area size in Motif. */ + + /* set the new size and position */ + /* The resize event will update the layout */ + XtVaSetValues(ih->handle, + XmNx, (XtArgVal)x, /* outside border */ + XmNy, (XtArgVal)y, + XmNwidth, (XtArgVal)width, /* client size */ + XmNheight, (XtArgVal)height, + NULL); + } + + iupAttribSetStr(ih, "PLACEMENT", NULL); /* reset to NORMAL */ + + return 1; +} + +/**************************************************************************** + Attributes +****************************************************************************/ + + +static int motDialogSetMinSizeAttrib(Ihandle* ih, const char* value) +{ + int decorwidth = 0, decorheight = 0; + int min_w = 1, min_h = 1; /* MINSIZE default value */ + iupStrToIntInt(value, &min_w, &min_h, 'x'); + + /* The minmax size restricts the client area */ + iupDialogGetDecorSize(ih, &decorwidth, &decorheight); + + if (min_w > decorwidth) + XtVaSetValues(ih->handle, XmNminWidth, min_w-decorwidth, NULL); + if (min_h > decorheight) + XtVaSetValues(ih->handle, XmNminHeight, min_h-decorheight, NULL); + + return 1; +} + +static int motDialogSetMaxSizeAttrib(Ihandle* ih, const char* value) +{ + int decorwidth = 0, decorheight = 0; + int max_w = 65535, max_h = 65535; /* MAXSIZE default value */ + iupStrToIntInt(value, &max_w, &max_h, 'x'); + + /* The minmax size restricts the client area */ + iupDialogGetDecorSize(ih, &decorwidth, &decorheight); + + if (max_w > decorwidth) + XtVaSetValues(ih->handle, XmNmaxWidth, max_w-decorwidth, NULL); + if (max_h > decorheight) + XtVaSetValues(ih->handle, XmNmaxHeight, max_h-decorheight, NULL); + + return 1; +} + +static char* motDialogGetXAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + + int x; + iupdrvDialogGetPosition(ih->handle, &x, NULL); + + sprintf(str, "%d", x); + return str; +} + +static char* motDialogGetYAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + + int y; + iupdrvDialogGetPosition(ih->handle, &y, NULL); + + sprintf(str, "%d", y); + return str; +} + +static int motDialogSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = ""; + + XtVaSetValues(ih->handle, XmNtitle, value, + XmNiconName, value, + NULL); + return 0; +} + +static char* motDialogGetTitleAttrib(Ihandle* ih) +{ + char* title; + XtVaGetValues(ih->handle, XmNtitle, &title, NULL); + + if (!title || title[0] == 0) + return NULL; + else + { + char* str = iupStrGetMemory(200); + strcpy(str, title); + return str; + } +} + +static char* motDialogGetClientSizeAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + + Dimension manager_width, manager_height; + Widget dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager"); + XtVaGetValues(dialog_manager, XmNwidth, &manager_width, + XmNheight, &manager_height, + NULL); + + sprintf(str, "%dx%d", (int)manager_width, (int)manager_height - motDialogGetMenuSize(ih)); + return str; +} + +static int motDialogSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + Widget dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager"); + XtVaSetValues(dialog_manager, XmNbackground, color, NULL); + XtVaSetValues(dialog_manager, XmNbackgroundPixmap, XmUNSPECIFIED_PIXMAP, NULL); + return 1; + } + return 0; +} + +static int motDialogSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + if (motDialogSetBgColorAttrib(ih, value)) + return 1; + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + if (pixmap) + { + Widget dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager"); + XtVaSetValues(dialog_manager, XmNbackgroundPixmap, pixmap, NULL); + return 1; + } + } + return 0; +} + +static int motDialogSetFullScreenAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + { + if (!iupAttribGet(ih, "_IUPMOT_FS_STYLE")) + { + int visible = iupdrvDialogIsVisible(ih); + if (visible) + iupAttribSetStr(ih, "_IUPMOT_FS_STYLE", "VISIBLE"); + else + iupAttribSetStr(ih, "_IUPMOT_FS_STYLE", "HIDDEN"); + + /* save the previous decoration attributes */ + /* during fullscreen these attributes can be consulted by the application */ + iupAttribStoreStr(ih, "_IUPMOT_FS_MAXBOX", iupAttribGet(ih, "MAXBOX")); + iupAttribStoreStr(ih, "_IUPMOT_FS_MINBOX", iupAttribGet(ih, "MINBOX")); + iupAttribStoreStr(ih, "_IUPMOT_FS_MENUBOX",iupAttribGet(ih, "MENUBOX")); + iupAttribStoreStr(ih, "_IUPMOT_FS_RESIZE", iupAttribGet(ih, "RESIZE")); + iupAttribStoreStr(ih, "_IUPMOT_FS_BORDER", iupAttribGet(ih, "BORDER")); + iupAttribStoreStr(ih, "_IUPMOT_FS_TITLE", IupGetAttribute(ih, "TITLE")); /* must use IupGetAttribute to check from the native implementation */ + + /* remove the decorations attributes */ + iupAttribSetStr(ih, "MAXBOX", "NO"); + iupAttribSetStr(ih, "MINBOX", "NO"); + iupAttribSetStr(ih, "MENUBOX", "NO"); + IupSetAttribute(ih, "TITLE", NULL); iupAttribSetStr(ih, "TITLE", NULL); /* remove from the hash table if we are during IupMap */ + iupAttribSetStr(ih, "RESIZE", "NO"); + iupAttribSetStr(ih, "BORDER", "NO"); + + /* use WM fullscreen support */ + if (!motDialogSetFullScreen(ih, 1)) + { + /* or configure fullscreen manually */ + int decor; + int width, height; + + /* hide before changing decorations */ + if (visible) + { + iupAttribSetStr(ih, "_IUPMOT_SHOW_STATE", NULL); /* To avoid a SHOW_CB notification */ + XtUnmapWidget(ih->handle); + } + + /* save the previous position and size */ + iupAttribStoreStr(ih, "_IUPMOT_FS_X", IupGetAttribute(ih, "X")); /* must use IupGetAttribute to check from the native implementation */ + iupAttribStoreStr(ih, "_IUPMOT_FS_Y", IupGetAttribute(ih, "Y")); + iupAttribStoreStr(ih, "_IUPMOT_FS_SIZE", IupGetAttribute(ih, "RASTERSIZE")); + + /* save the previous decoration */ + XtVaGetValues(ih->handle, XmNmwmDecorations, &decor, NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_DECOR", (char*)decor); + + /* remove the decorations */ + XtVaSetValues(ih->handle, XmNmwmDecorations, (XtArgVal)0, NULL); + motDialogSetWindowManagerStyle(ih); + + /* get full screen size */ + iupdrvGetFullSize(&width, &height); + + /* set position and size */ + XtVaSetValues(ih->handle, XmNwidth, (XtArgVal)width, + XmNheight, (XtArgVal)height, + XmNx, (XtArgVal)0, + XmNy, (XtArgVal)0, + NULL); + + /* layout will be updated in motDialogConfigureNotify */ + if (visible) + XtMapWidget(ih->handle); + } + } + } + else + { + char* fs_style = iupAttribGet(ih, "_IUPMOT_FS_STYLE"); + if (fs_style) + { + /* can only switch back from full screen if window was visible */ + /* when fullscreen was set */ + if (iupStrEqualNoCase(fs_style, "VISIBLE")) + { + iupAttribSetStr(ih, "_IUPMOT_FS_STYLE", NULL); + + /* restore the decorations attributes */ + iupAttribStoreStr(ih, "MAXBOX", iupAttribGet(ih, "_IUPMOT_FS_MAXBOX")); + iupAttribStoreStr(ih, "MINBOX", iupAttribGet(ih, "_IUPMOT_FS_MINBOX")); + iupAttribStoreStr(ih, "MENUBOX",iupAttribGet(ih, "_IUPMOT_FS_MENUBOX")); + IupSetAttribute(ih, "TITLE", iupAttribGet(ih, "_IUPMOT_FS_TITLE")); /* TITLE is not stored in the HashTable */ + iupAttribStoreStr(ih, "RESIZE", iupAttribGet(ih, "_IUPMOT_FS_RESIZE")); + iupAttribStoreStr(ih, "BORDER", iupAttribGet(ih, "_IUPMOT_FS_BORDER")); + + if (!motDialogSetFullScreen(ih, 0)) + { + int border, caption, menu, x, y; + int visible = iupdrvDialogIsVisible(ih); + if (visible) + XtUnmapWidget(ih->handle); + + /* restore the decorations */ + XtVaSetValues(ih->handle, XmNmwmDecorations, (XtArgVal)(int)iupAttribGet(ih, "_IUPMOT_FS_DECOR"), NULL); + motDialogSetWindowManagerStyle(ih); + + /* the dialog decoration will not be considered yet in the next XtVaSetValues */ + /* so compensate the decoration when restoring the position and size */ + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + x = iupAttribGetInt(ih, "_IUPMOT_FS_X") - (border); + y = iupAttribGetInt(ih, "_IUPMOT_FS_Y") - (border+caption+menu); + + /* restore position and size */ + XtVaSetValues(ih->handle, + XmNx, (XtArgVal)x, + XmNy, (XtArgVal)y, + XmNwidth, (XtArgVal)(IupGetInt(ih, "_IUPMOT_FS_SIZE") - (2*border)), + XmNheight, (XtArgVal)(IupGetInt2(ih, "_IUPMOT_FS_SIZE") - (2*border+caption)), + NULL); + + /* layout will be updated in motDialogConfigureNotify */ + if (visible) + XtMapWidget(ih->handle); + + /* remove auxiliar attributes */ + iupAttribSetStr(ih, "_IUPMOT_FS_X", NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_Y", NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_SIZE", NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_DECOR", NULL); + } + + /* remove auxiliar attributes */ + iupAttribSetStr(ih, "_IUPMOT_FS_MAXBOX", NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_MINBOX", NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_MENUBOX",NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_RESIZE", NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_BORDER", NULL); + iupAttribSetStr(ih, "_IUPMOT_FS_TITLE", NULL); + } + } + } + return 1; +} + +static int motDialogSetIconAttrib(Ihandle* ih, const char *value) +{ + if (!value) + XtVaSetValues(ih->handle, XmNiconPixmap, NULL, NULL); + else + { + Pixmap icon = (Pixmap)iupImageGetIcon(value); + Pixmap icon_mask = (Pixmap)iupImageGetMask(value); + if (icon) + XtVaSetValues(ih->handle, XmNiconPixmap, icon, NULL); + if (icon_mask) + XtVaSetValues(ih->handle, XmNiconMask, icon, NULL); + } + return 1; +} + +/**************************************************************** + Callbacks and Events +****************************************************************/ + + +static void motDialogCBclose(Widget w, XtPointer client_data, XtPointer call_data) +{ + Icallback cb; + Ihandle *ih = (Ihandle*)client_data; + if (!ih) return; + (void)call_data; + (void)w; + + /* even when ACTIVE=NO the dialog gets this event */ + if (!iupdrvIsActive(ih)) + return; + + cb = IupGetCallback(ih, "CLOSE_CB"); + if (cb) + { + int ret = cb(ih); + if (ret == IUP_IGNORE) + return; + if (ret == IUP_CLOSE) + IupExitLoop(); + } + + IupHide(ih); /* default: close the window */ +} + +static void motDialogConfigureNotify(Widget w, XEvent *evt, String* s, Cardinal *card) +{ + IFnii cb; + int border, caption, menu; + XConfigureEvent *cevent = (XConfigureEvent *)evt; + Ihandle* ih; + (void)s; + (void)card; + + XtVaGetValues(w, XmNuserData, &ih, NULL); + if (!ih) return; + + if (ih->data->menu && ih->data->menu->handle) + { + XtVaSetValues(ih->data->menu->handle, + XmNwidth, (XtArgVal)(cevent->width), + NULL); + } + + if (ih->data->ignore_resize) return; + + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + /* update dialog size */ + ih->currentwidth = cevent->width + 2*border; + ih->currentheight = cevent->height + 2*border + caption; /* menu is inside the dialog_manager */ + + cb = (IFnii)IupGetCallback(ih, "RESIZE_CB"); + if (!cb || cb(ih, cevent->width, cevent->height - menu)!=IUP_IGNORE) /* width and height here are for the client area */ + { + ih->data->ignore_resize = 1; + IupRefresh(ih); + ih->data->ignore_resize = 0; + } +} + +static void motDialogCBStructureNotifyEvent(Widget w, XtPointer data, XEvent *evt, Boolean *cont) +{ + Ihandle *ih = (Ihandle*)data; + int state = -1; + (void)cont; + (void)w; + + switch(evt->type) + { + case MapNotify: + { + if (ih->data->show_state == IUP_MINIMIZE) /* it is a RESTORE. */ + state = IUP_RESTORE; + break; + } + case UnmapNotify: + { + if (ih->data->show_state != IUP_HIDE) /* it is a MINIMIZE. */ + state = IUP_MINIMIZE; + break; + } + } + + if (state < 0) + return; + + if (ih->data->show_state != state) + { + IFni cb; + ih->data->show_state = state; + + cb = (IFni)IupGetCallback(ih, "SHOW_CB"); + if (cb && cb(ih, state) == IUP_CLOSE) + IupExitLoop(); + } +} + +static void motDialogDestroyCallback(Widget w, Ihandle *ih, XtPointer call_data) +{ + /* If the IUP dialog was not destroyed, destroy it here. */ + if (iupObjectCheck(ih)) + IupDestroy(ih); + + /* this callback is usefull to destroy children dialogs when the parent is destroyed. */ + /* The application is responsable for destroying the children before this happen. */ + (void)w; + (void)call_data; +} + + +/**************************************************************** + Idialog +****************************************************************/ + +/* replace the common dialog SetChildrenPosition method because of + the menu that it is inside the dialog. */ +static void motDialogSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + int menu_h = motDialogGetMenuSize(ih); + (void)x; + (void)y; + + /* Child coordinates are relative to client left-top corner. */ + iupBaseSetPosition(ih->firstchild, 0, menu_h); +} + +static void* motDialogGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child) +{ + (void)child; + return XtNameToWidget(ih->handle, "*dialog_manager"); +} + +static int motDialogMapMethod(Ihandle* ih) +{ + Widget dialog_manager; + InativeHandle* parent; + int mwm_decor = 0; + int num_args = 0; + Arg args[20]; + + if (iupAttribGetBoolean(ih, "DIALOGFRAME")) + { + iupAttribSetStr(ih, "RESIZE", "NO"); + iupAttribSetStr(ih, "MAXBOX", "NO"); + iupAttribSetStr(ih, "MINBOX", "NO"); + } + + /****************************/ + /* Create the dialog shell */ + /****************************/ + + if (iupAttribGet(ih, "TITLE")) + mwm_decor |= MWM_DECOR_TITLE; + if (iupAttribGetBoolean(ih, "MENUBOX")) + mwm_decor |= MWM_DECOR_MENU; + if (iupAttribGetBoolean(ih, "MINBOX")) + mwm_decor |= MWM_DECOR_MINIMIZE; + if (iupAttribGetBoolean(ih, "MAXBOX")) + mwm_decor |= MWM_DECOR_MAXIMIZE; + if (iupAttribGetBoolean(ih, "RESIZE")) + mwm_decor |= MWM_DECOR_RESIZEH; + if (iupAttribGetBoolean(ih, "BORDER")) + mwm_decor |= MWM_DECOR_BORDER; + + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* so XtRealizeWidget will not show the dialog */ + iupmotSetArg(args, num_args, XmNdeleteResponse, XmDO_NOTHING); + iupmotSetArg(args, num_args, XmNallowShellResize, True); /* Used so the BulletinBoard can control the shell size */ + iupmotSetArg(args, num_args, XmNtitle, ""); + iupmotSetArg(args, num_args, XmNvisual, iupmot_visual); + + if (iupmotColorMap()) + iupmotSetArg(args, num_args, XmNcolormap, iupmotColorMap()); + + if (mwm_decor != 0x7E) + iupmotSetArg(args, num_args, XmNmwmDecorations, mwm_decor); + + if (iupAttribGetBoolean(ih, "SAVEUNDER")) + iupmotSetArg(args, num_args, XmNsaveUnder, True); + + parent = iupDialogGetNativeParent(ih); + if (parent) + ih->handle = XtCreatePopupShell(NULL, topLevelShellWidgetClass, (Widget)parent, args, num_args); + else + ih->handle = XtAppCreateShell(NULL, "dialog", topLevelShellWidgetClass, iupmot_display, args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + XmAddWMProtocolCallback(ih->handle, iupmot_wm_deletewindow, motDialogCBclose, (XtPointer)ih); + + XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, StructureNotifyMask, False, (XtEventHandler)motDialogCBStructureNotifyEvent, (XtPointer)ih); + + XtAddCallback(ih->handle, XmNdestroyCallback, (XtCallbackProc)motDialogDestroyCallback, (XtPointer)ih); + + /*****************************/ + /* Create the dialog manager */ + /*****************************/ + + dialog_manager = XtVaCreateManagedWidget( + "dialog_manager", + xmBulletinBoardWidgetClass, + ih->handle, + XmNmarginWidth, 0, + XmNmarginHeight, 0, + XmNwidth, 100, /* set this to avoid size calculation problems */ + XmNheight, 100, + XmNborderWidth, 0, + XmNshadowThickness, 0, + XmNnoResize, iupAttribGetBoolean(ih, "RESIZE")? False: True, + XmNresizePolicy, XmRESIZE_NONE, /* no automatic resize of children */ + XmNuserData, ih, /* used only in motDialogConfigureNotify */ + XmNnavigationType, XmTAB_GROUP, + NULL); + + XtOverrideTranslations(dialog_manager, XtParseTranslationTable(": iupDialogConfigure()")); + XtAddCallback(dialog_manager, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + XtAddEventHandler(dialog_manager, KeyPressMask, False,(XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + /* child dialogs must be always on top of the parent */ + if (parent) + XSetTransientForHint(iupmot_display, XtWindow(ih->handle), XtWindow(parent)); + + if (mwm_decor != 0x7E) /* some decoration was changed */ + motDialogSetWindowManagerStyle(ih); + + /* Ignore VISIBLE before mapping */ + iupAttribSetStr(ih, "VISIBLE", NULL); + + if (IupGetGlobal("_IUP_RESET_DLGBGCOLOR")) + { + iupmotSetGlobalColorAttrib(dialog_manager, XmNbackground, "DLGBGCOLOR"); + iupmotSetGlobalColorAttrib(dialog_manager, XmNforeground, "DLGFGCOLOR"); + IupSetGlobal("_IUP_RESET_DLGBGCOLOR", NULL); + } + + return IUP_NOERROR; +} + +static void motDialogUnMapMethod(Ihandle* ih) +{ + Widget dialog_manager; + if (ih->data->menu) + { + ih->data->menu->handle = NULL; /* the dialog will destroy the native menu */ + IupDestroy(ih->data->menu); + } + + dialog_manager = XtNameToWidget(ih->handle, "*dialog_manager"); + XtVaSetValues(dialog_manager, XmNuserData, NULL, NULL); + + XtRemoveEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtRemoveEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + XtRemoveEventHandler(ih->handle, StructureNotifyMask, False, (XtEventHandler)motDialogCBStructureNotifyEvent, (XtPointer)ih); + XtRemoveCallback(ih->handle, XmNdestroyCallback, (XtCallbackProc)motDialogDestroyCallback, (XtPointer)ih); + + XtRemoveEventHandler(dialog_manager, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + XtRemoveCallback(dialog_manager, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + + iupdrvBaseUnMapMethod(ih); +} + +static void motDialogLayoutUpdateMethod(Ihandle *ih) +{ + int border, caption, menu; + + if (ih->data->ignore_resize || + iupAttribGet(ih, "_IUPMOT_FS_STYLE")) + return; + + /* for dialogs the position is not updated here */ + ih->data->ignore_resize = 1; + + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + if (!iupAttribGetBoolean(ih, "RESIZE")) + { + int width = ih->currentwidth - 2*border; + int height = ih->currentheight - 2*border - caption; + XtVaSetValues(ih->handle, + XmNwidth, width, + XmNheight, height, + XmNminWidth, width, + XmNminHeight, height, + XmNmaxWidth, width, + XmNmaxHeight, height, + NULL); + } + else + { + XtVaSetValues(ih->handle, + XmNwidth, (XtArgVal)(ih->currentwidth - 2*border), /* excluding the border */ + XmNheight, (XtArgVal)(ih->currentheight - 2*border - caption), + NULL); + } + + ih->data->ignore_resize = 0; +} + +/***************************************************************/ + +void iupdrvDialogInitClass(Iclass* ic) +{ + /* Driver Dependent Class methods */ + ic->Map = motDialogMapMethod; + ic->UnMap = motDialogUnMapMethod; + ic->LayoutUpdate = motDialogLayoutUpdateMethod; + ic->SetChildrenPosition = motDialogSetChildrenPositionMethod; + ic->GetInnerNativeContainerHandle = motDialogGetInnerNativeContainerHandleMethod; + + if (!iupmot_wm_deletewindow) + { + /* Set up a translation table that captures "Resize" events + (also called ConfigureNotify or Configure events). */ + XtActionsRec rec = {"iupDialogConfigure", motDialogConfigureNotify}; + XtAppAddActions(iupmot_appcontext, &rec, 1); + + /* register atom to intercept the close button in the window frame */ + iupmot_wm_deletewindow = XmInternAtom(iupmot_display, "WM_DELETE_WINDOW", False); + } + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motDialogSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "X", motDialogGetXAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "Y", motDialogGetYAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + + /* Base Container */ + iupClassRegisterAttribute(ic, "CLIENTSIZE", motDialogGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + + /* Special */ + iupClassRegisterAttribute(ic, "TITLE", motDialogGetTitleAttrib, motDialogSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupDialog only */ + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motDialogSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "ICON", NULL, motDialogSetIconAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FULLSCREEN", NULL, motDialogSetFullScreenAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MINSIZE", NULL, motDialogSetMinSizeAttrib, IUPAF_SAMEASSYSTEM, "1x1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MAXSIZE", NULL, motDialogSetMaxSizeAttrib, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SAVEUNDER", NULL, NULL, "YES", NULL, IUPAF_NO_INHERIT); + + /* IupDialog X Only */ + iupClassRegisterAttribute(ic, "XWINDOW", iupmotGetXWindowAttrib, NULL, NULL, NULL, IUPAF_NO_INHERIT|IUPAF_NO_STRING); +} diff --git a/iup/src/mot/iupmot_drv.h b/iup/src/mot/iupmot_drv.h new file mode 100755 index 0000000..8a536ef --- /dev/null +++ b/iup/src/mot/iupmot_drv.h @@ -0,0 +1,75 @@ +/** \file + * \brief Motif Driver + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMOT_DRV_H +#define __IUPMOT_DRV_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* global variables, declared in iupmot_open.c */ +extern Widget iupmot_appshell; +extern Display* iupmot_display; +extern int iupmot_screen; +extern XtAppContext iupmot_appcontext; +extern Visual* iupmot_visual; +extern Atom iupmot_wm_deletewindow; + +/* dialog */ +void iupmotDialogSetVisual(Ihandle* ih, void* visual); +void iupmotDialogResetVisual(Ihandle* ih); + +/* focus */ +void iupmotFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont); + +/* key */ +void iupmotCanvasKeyReleaseEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont); +void iupmotKeyPressEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont); +KeySym iupmotKeyCharToKeySym(char c); +void iupmotButtonKeySetStatus(unsigned int state, unsigned int but, char* status, int doubleclick); +void iupmotKeyEncode(int key, unsigned int *keyval, unsigned int *state); + +/* font */ +char* iupmotGetFontListAttrib(Ihandle *ih); +XmFontList iupmotGetFontList(const char* foundry, const char* value); +char* iupmotFindFontList(XmFontList fontlist); +char* iupmotGetFontStructAttrib(Ihandle *ih); +char* iupmotGetFontIdAttrib(Ihandle *ih); + +/* tips */ +/* called from Enter/Leave events to check if a TIP is present. */ +void iupmotTipEnterNotify(Ihandle* ih); +void iupmotTipLeaveNotify(void); +void iupmotTipsFinish(void); + +/* common */ +void iupmotPointerMotionEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont); +void iupmotButtonPressReleaseEvent(Widget w, Ihandle* ih, XEvent* evt, Boolean* cont); +void iupmotEnterLeaveWindowEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont); +void iupmotHelpCallback(Widget w, Ihandle *ih, XtPointer call_data); +void iupmotSetString(Widget w, const char *resource, const char* value); +char* iupmotConvertString(XmString str); +void iupmotSetMnemonicTitle(Ihandle *ih, const char* value); +void iupmotDisableDragSource(Widget w); +void iupmotSetPixmap(Ihandle* ih, const char* name, const char* prop, int make_inactive); +void iupmotSetGlobalColorAttrib(Widget w, const char* xmname, const char* name); +void iupmotSetBgColor(Widget w, Pixel color); +char* iupmotGetBgColorAttrib(Ihandle* ih); + +void iupmotGetWindowSize(Ihandle *ih, int *width, int *height); + +char* iupmotGetXWindowAttrib(Ihandle *ih); + +#define iupmotSetArg(_a, _i, _n, _d) ((_a)[(_i)].name = (_n), (_a)[(_i)].value = (XtArgVal)(_d), (_i)++) + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/mot/iupmot_filedlg.c b/iup/src/mot/iupmot_filedlg.c new file mode 100755 index 0000000..768dd2b --- /dev/null +++ b/iup/src/mot/iupmot_filedlg.c @@ -0,0 +1,578 @@ +/** \file + * \brief Motif IupFileDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drvinfo.h" +#include "iup_dialog.h" +#include "iup_strmessage.h" +#include "iup_drvinfo.h" + +#include "iupmot_drv.h" + + +enum {IUP_DIALOGOPEN, IUP_DIALOGSAVE, IUP_DIALOGDIR}; + +static void motFileDlgAskUserCallback(Widget w, int* ret_code, XmSelectionBoxCallbackStruct* cbs) +{ + if (cbs->reason == XmCR_OK) + *ret_code = 1; + else + *ret_code = -1; + XtDestroyWidget(XtParent(w)); +} + +static int motFileDlgAskUser(Widget parent, const char* message) +{ + Widget questionbox; + Arg args[3]; + int ret_code = 0; + XmString title; + + XtSetArg(args[0], XmNautoUnmanage, False); + XtSetArg(args[1], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); + XtSetArg(args[2], XmNnoResize, True); + questionbox = XmCreateQuestionDialog(parent, "filedlg_question", args, 3); + iupmotSetString(questionbox, XmNmessageString, message); + XtVaGetValues(parent, XmNdialogTitle, &title, NULL); + XtVaSetValues(questionbox, XmNdialogTitle, title, NULL); + + XtAddCallback(questionbox, XmNokCallback, (XtCallbackProc)motFileDlgAskUserCallback, (XtPointer)&ret_code); + XtAddCallback(questionbox, XmNcancelCallback, (XtCallbackProc)motFileDlgAskUserCallback, (XtPointer)&ret_code); + XtUnmanageChild(XmMessageBoxGetChild(questionbox, XmDIALOG_HELP_BUTTON)); + XtManageChild(questionbox); + + while (ret_code == 0) + XtAppProcessEvent(iupmot_appcontext, XtIMAll); + + XtUnmanageChild(questionbox); + + if (ret_code == 1) + return 1; + else + return 0; +} + +static int motFileDlgCheckValue(Ihandle* ih, Widget w) +{ + char* value = iupAttribGet(ih, "VALUE"); + int dialogtype = iupAttribGetInt(ih, "_IUPDLG_DIALOGTYPE"); + + if (dialogtype == IUP_DIALOGDIR) + { + if (!iupdrvIsDirectory(value)) /* if does not exist or not a directory */ + { + iupStrMessageShowError(ih, "IUP_INVALIDDIR"); + return 0; + } + } + else + { + if (iupdrvIsDirectory(value)) /* selected a directory */ + { + iupStrMessageShowError(ih, "IUP_INVALIDDIR"); + return 0; + } + else if (!iupdrvIsFile(value)) /* new file */ + { + value = iupAttribGet(ih, "ALLOWNEW"); + if (!value) + { + if (dialogtype == IUP_DIALOGSAVE) + value = "YES"; + else + value = "NO"; + } + + if (!iupStrBoolean(value)) + { + iupStrMessageShowError(ih, "IUP_FILENOTEXIST"); + return 0; + } + } + else if (dialogtype == IUP_DIALOGSAVE && !iupAttribGetInt(ih, "NOOVERWRITEPROMPT")) + { + if (!motFileDlgAskUser(w, iupStrMessageGet("IUP_FILEOVERWRITE"))) + return 0; + } + } + + return 1; +} + +static void motFileDlgCBclose(Widget w, XtPointer client_data, XtPointer call_data) +{ + Ihandle *ih = (Ihandle*)client_data; + if (!ih) return; + (void)call_data; + (void)w; + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "STATUS", "-1"); + iupAttribSetStr(ih, "_IUP_WM_DELETE", "1"); +} + +static void motFileDlgCallback(Widget w, Ihandle* ih, XmFileSelectionBoxCallbackStruct* call_data) +{ + (void)w; + if (call_data->reason == XmCR_OK) + { + int dialogtype = iupAttribGetInt(ih, "_IUPDLG_DIALOGTYPE"); + char* filename; + XmStringGetLtoR(call_data->value, XmSTRING_DEFAULT_CHARSET, &filename); + iupAttribStoreStr(ih, "VALUE", filename); + XtFree(filename); + + if (!motFileDlgCheckValue(ih, w)) + return; + + if (dialogtype == IUP_DIALOGDIR) + { + iupAttribSetStr(ih, "STATUS", "0"); + iupAttribSetStr(ih, "FILEEXIST", NULL); + } + else + { + IFnss file_cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + if (file_cb && file_cb(ih, iupAttribGet(ih, "VALUE"), "OK") == IUP_IGNORE) + return; + + if (iupdrvIsFile(iupAttribGet(ih, "VALUE"))) /* check if file exists */ + { + iupAttribSetStr(ih, "FILEEXIST", "YES"); + iupAttribSetStr(ih, "STATUS", "0"); + } + else + { + iupAttribSetStr(ih, "FILEEXIST", "NO"); + iupAttribSetStr(ih, "STATUS", "1"); + } + } + + if (!iupAttribGetBoolean(ih, "NOCHANGEDIR")) /* do change the current directory */ + { + /* XmFileSelection does not change the current directory */ + XmString xm_dir; + char* dir; + XtVaGetValues(w, XmNdirectory, &xm_dir, NULL); + XmStringGetLtoR(xm_dir, XmSTRING_DEFAULT_CHARSET, &dir); + iupdrvSetCurrentDirectory(dir); + XtFree(dir); + } + } + else if (call_data->reason == XmCR_CANCEL) + { + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "FILEEXIST", NULL); + iupAttribSetStr(ih, "STATUS", "-1"); + } +} + +static void motFileDlgHelpCallback(Widget w, XtPointer client_data, XtPointer call_data) +{ + Ihandle *ih = (Ihandle*)client_data; + Icallback cb = IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + { + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "FILEEXIST", NULL); + iupAttribSetStr(ih, "STATUS", "-1"); + } + + (void)call_data; + (void)w; +} + +typedef struct _ImotPromt +{ + XmString xm_dir; + int ret_code; +} ImotPromt; + +static void motFileDlgPromptCallback(Widget w, ImotPromt* prompt, XmSelectionBoxCallbackStruct* cbs) +{ + if (cbs->reason == XmCR_OK) + prompt->xm_dir = XmStringCopy(cbs->value); + + prompt->ret_code = 1; + XtDestroyWidget(XtParent(w)); +} + +static XmString motFileDlgPrompt(Widget parent, const char* message) +{ + Widget promptbox; + Arg args[2]; + ImotPromt prompt; + XmString title; + + XtSetArg(args[0], XmNautoUnmanage, False); + XtSetArg(args[1], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); + promptbox = XmCreatePromptDialog(parent, "filedlg_prompt", args, 2); + iupmotSetString(promptbox, XmNselectionLabelString, message); + XtVaGetValues(parent, XmNdialogTitle, &title, NULL); + XtVaSetValues(promptbox, XmNdialogTitle, title, NULL); + + prompt.ret_code = 0; + prompt.xm_dir = NULL; + + XtAddCallback(promptbox, XmNokCallback, (XtCallbackProc)motFileDlgPromptCallback, (XtPointer)&prompt); + XtAddCallback(promptbox, XmNcancelCallback, (XtCallbackProc)motFileDlgPromptCallback, (XtPointer)&prompt); + XtUnmanageChild(XmSelectionBoxGetChild(promptbox, XmDIALOG_HELP_BUTTON)); + XtManageChild(promptbox); + + while (prompt.ret_code == 0) + XtAppProcessEvent(iupmot_appcontext, XtIMAll); + + XtUnmanageChild(promptbox); + + return prompt.xm_dir; +} + +static void motFileDlgNewFolderCallback(Widget w, Widget filebox, XtPointer call_data) +{ + XmString xm_new_dir = motFileDlgPrompt(filebox, iupStrMessageGet("IUP_NAMENEWFOLDER")); + if (xm_new_dir) + { + XmString xm_dir; + XtVaGetValues(filebox, XmNdirectory, &xm_dir, NULL); + xm_dir = XmStringConcat(xm_dir, xm_new_dir); + + { + char* dir; + XmStringGetLtoR(xm_dir, XmSTRING_DEFAULT_CHARSET, &dir); + iupdrvMakeDirectory(dir); + XtFree(dir); + } + + XtVaSetValues(filebox, XmNdirectory, xm_dir, NULL); + + XmStringFree(xm_dir); + XmStringFree(xm_new_dir); + } + + (void)call_data; + (void)w; +} + +static void motFileDlgPreviewCanvasResizeCallback(Widget w, Ihandle *ih, XtPointer call_data) +{ + Dimension width, height; + XtVaGetValues(w, XmNwidth, &width, + XmNheight, &height, + NULL); + + iupAttribSetInt(ih, "PREVIEWWIDTH", width); + iupAttribSetInt(ih, "PREVIEWHEIGHT", height); + + (void)call_data; +} + +static void motFileDlgUpdatePreviewGLCanvas(Ihandle* ih) +{ + Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS"); + if (glcanvas) + { + iupAttribSetStr(glcanvas, "XWINDOW", iupAttribGet(ih, "XWINDOW")); + glcanvas->iclass->Map(glcanvas); + } +} + +static void motFileDlgPreviewCanvasInit(Ihandle *ih, Widget w) +{ + XSetWindowAttributes attrs; + GC gc = XCreateGC(iupmot_display, XtWindow(w), 0, NULL); + iupAttribSetStr(ih, "PREVIEWDC", (char*)gc); + iupAttribSetStr(ih, "WID", (char*)w); + + iupAttribSetStr(ih, "XWINDOW", (char*)XtWindow(w)); + iupAttribSetStr(ih, "XDISPLAY", (char*)iupmot_display); + motFileDlgUpdatePreviewGLCanvas(ih); + + attrs.bit_gravity = ForgetGravity; /* For the DrawingArea widget gets Expose events when you resize it to be smaller. */ + attrs.background_pixmap = None; + XChangeWindowAttributes(iupmot_display, XtWindow(w), CWBitGravity|CWBackPixmap, &attrs); +} + +static void motFileDlgPreviewCanvasExposeCallback(Widget w, Ihandle *ih, XtPointer call_data) +{ + Widget filebox = (Widget)iupAttribGet(ih, "_IUPDLG_FILEBOX"); + char* filename; + XmString xm_file; + IFnss cb; + + if (!iupAttribGet(ih, "PREVIEWDC")) + motFileDlgPreviewCanvasInit(ih, w); + + XtVaGetValues(filebox, XmNdirSpec, &xm_file, NULL); + XmStringGetLtoR(xm_file, XmSTRING_DEFAULT_CHARSET, &filename); + + cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + if (iupdrvIsFile(filename)) + cb(ih, filename, "PAINT"); + else + cb(ih, NULL, "PAINT"); + + XtFree(filename); + (void)call_data; + (void)w; +} + +static void motFileDlgBrowseSelectionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* list_data) +{ + char* filename; + + XmStringGetLtoR(list_data->item, XmSTRING_DEFAULT_CHARSET, &filename); + + if (iupdrvIsFile(filename)) + { + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + cb(ih, filename, "SELECT"); + } + + XtFree(filename); + (void)w; +} + +static int motFileDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + Widget filebox, dialog; + int dialogtype, style = XmDIALOG_FULL_APPLICATION_MODAL; + IFnss file_cb = NULL; + Widget preview_canvas = NULL; + char* value; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + value = iupAttribGetStr(ih, "DIALOGTYPE"); + if (iupStrEqualNoCase(value, "SAVE")) + dialogtype = IUP_DIALOGSAVE; + else if (iupStrEqualNoCase(value, "DIR")) + dialogtype = IUP_DIALOGDIR; + else + dialogtype = IUP_DIALOGOPEN; + iupAttribSetInt(ih, "_IUPDLG_DIALOGTYPE", dialogtype); + + if (parent) + { + filebox = XmCreateFileSelectionDialog(parent, "filedialog", NULL, 0); + dialog = XtParent(filebox); + } + else + { + dialog = XtAppCreateShell(NULL, "filedialog", topLevelShellWidgetClass, iupmot_display, NULL, 0); + filebox = XmCreateFileSelectionBox(dialog, "filebox", NULL, 0); + style = XmDIALOG_MODELESS; + XtVaSetValues(dialog, + XmNmwmInputMode, MWM_INPUT_FULL_APPLICATION_MODAL, + XmNmappedWhenManaged, False, + XmNsaveUnder, True, + NULL); + } + if (!filebox) + return IUP_NOERROR; + + if (!iupAttribGetBoolean(ih, "SHOWHIDDEN")) + XtVaSetValues(filebox, XmNfileFilterStyle, XmFILTER_HIDDEN_FILES, NULL); + + value = iupAttribGet(ih, "TITLE"); + if (!value) + { + if (dialogtype == IUP_DIALOGSAVE) + value = "IUP_SAVEAS"; + else if (dialogtype == IUP_DIALOGOPEN) + value = "IUP_OPEN"; + else + value = "IUP_SELECTDIR"; + iupAttribSetStr(ih, "TITLE", iupStrMessageGet(value)); + } + iupmotSetString(filebox, XmNdialogTitle, value); + + XtVaSetValues(filebox, + XmNdialogStyle, style, + XmNautoUnmanage, False, + NULL); + + if (dialogtype == IUP_DIALOGDIR) + XtVaSetValues(filebox, XmNfileTypeMask, XmFILE_DIRECTORY, NULL); + + /* just check for the path inside FILE */ + value = iupAttribGet(ih, "FILE"); + if (value && value[0] == '/') + { + char* dir = iupStrFileGetPath(value); + iupAttribStoreStr(ih, "DIRECTORY", dir); + free(dir); + } + + /* set XmNdirectory before XmNpattern and before XmNdirSpec */ + + value = iupAttribGet(ih, "DIRECTORY"); + if (value) + iupmotSetString(filebox, XmNdirectory, value); + + value = iupAttribGet(ih, "FILTER"); + if (value) + { + char *filter = value; + char *p = strchr(value, ';'); + if (p) + { + int size = p-value; + filter = (char*)malloc(size+1); + memcpy(filter, value, size); + filter[size] = 0; + } + + iupmotSetString(filebox, XmNpattern, filter); + + if (filter != value) + free(filter); + } + + value = iupAttribGet(ih, "FILE"); + if (value) + { + char* file = value; + + if (value[0] != '/') /* if does not contains a full path, then add the directory */ + { + char* cur_dir = NULL; + char* dir = iupAttribGet(ih, "DIRECTORY"); + if (!dir) + { + cur_dir = iupdrvGetCurrentDirectory(); + dir = cur_dir; + } + + file = iupStrFileMakeFileName(dir, value); + + if (cur_dir) + free(cur_dir); + } + + /* clear value before setting. Do not know why we have to do this, + but if not cleared it will fail to set the XmNdirSpec value. */ + iupmotSetString(filebox, XmNdirSpec, ""); + iupmotSetString(filebox, XmNdirSpec, file); + + if (file != value) + free(file); + } + + if (!IupGetCallback(ih, "HELP_CB")) + XtUnmanageChild(XmFileSelectionBoxGetChild(filebox, XmDIALOG_HELP_BUTTON)); + + XtAddCallback(filebox, XmNokCallback, (XtCallbackProc)motFileDlgCallback, (XtPointer)ih); + XtAddCallback(filebox, XmNcancelCallback, (XtCallbackProc)motFileDlgCallback, (XtPointer)ih); + XtAddCallback(filebox, XmNhelpCallback, (XtCallbackProc)motFileDlgHelpCallback, (XtPointer)ih); + + if (dialogtype == IUP_DIALOGDIR) + { + Widget new_folder = XtVaCreateManagedWidget("new_folder", xmPushButtonWidgetClass, filebox, + XmNlabelType, XmSTRING, + NULL); + iupmotSetString(new_folder, XmNlabelString, iupStrMessageGet("IUP_CREATEFOLDER")); + XtAddCallback(new_folder, XmNactivateCallback, (XtCallbackProc)motFileDlgNewFolderCallback, (XtPointer)filebox); + } + else + { + file_cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + if (file_cb) + { + Widget file_list = XmFileSelectionBoxGetChild(filebox, XmDIALOG_LIST); + XtAddCallback(file_list, XmNbrowseSelectionCallback, (XtCallbackProc)motFileDlgBrowseSelectionCallback, (XtPointer)ih); + + if (iupAttribGetBoolean(ih, "SHOWPREVIEW")) + { + Widget frame = XtVaCreateManagedWidget("preview_canvas", xmFrameWidgetClass, filebox, + XmNshadowType, XmSHADOW_ETCHED_IN, + NULL); + + preview_canvas = XtVaCreateManagedWidget("preview_canvas", xmDrawingAreaWidgetClass, frame, + XmNwidth, 180, + XmNheight, 150, + XmNresizePolicy, XmRESIZE_GROW, + NULL); + + XtAddCallback(preview_canvas, XmNexposeCallback, (XtCallbackProc)motFileDlgPreviewCanvasExposeCallback, (XtPointer)ih); + XtAddCallback(preview_canvas, XmNresizeCallback, (XtCallbackProc)motFileDlgPreviewCanvasResizeCallback, (XtPointer)ih); + + iupAttribSetStr(ih, "_IUPDLG_FILEBOX", (char*)filebox); + } + } + } + + XmAddWMProtocolCallback(dialog, iupmot_wm_deletewindow, motFileDlgCBclose, (XtPointer)ih); + XtManageChild(filebox); + + XtRealizeWidget(dialog); + ih->handle = dialog; + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + + if (file_cb) + { + if (preview_canvas) + motFileDlgPreviewCanvasInit(ih, preview_canvas); + + file_cb(ih, NULL, "INIT"); + } + + if (style == XmDIALOG_MODELESS) + XtPopup(dialog, XtGrabExclusive); + + /* while the user hasn't provided an answer, simulate main loop. + ** The answer changes as soon as the user selects one of the + ** buttons and the callback routine changes its value. */ + iupAttribSetStr(ih, "STATUS", NULL); + while (iupAttribGet(ih, "STATUS") == NULL) + XtAppProcessEvent(iupmot_appcontext, XtIMAll); + + if (file_cb) + { + if (preview_canvas) + XFreeGC(iupmot_display, (GC)iupAttribGet(ih, "PREVIEWDC")); + + file_cb(ih, NULL, "FINISH"); + } + + if (!iupAttribGet(ih, "_IUP_WM_DELETE")) + { + XtUnmanageChild(filebox); + + if (style == XmDIALOG_MODELESS) + { + XtPopdown(dialog); + XtDestroyWidget(dialog); + } + } + + return IUP_NOERROR; +} + +void iupdrvFileDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = motFileDlgPopup; +} diff --git a/iup/src/mot/iupmot_focus.c b/iup/src/mot/iupmot_focus.c new file mode 100755 index 0000000..5b09bd9 --- /dev/null +++ b/iup/src/mot/iupmot_focus.c @@ -0,0 +1,35 @@ +/** \file + * \brief Motif Focus + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_focus.h" +#include "iup_attrib.h" +#include "iup_assert.h" +#include "iup_drv.h" + +#include "iupmot_drv.h" + +void iupdrvSetFocus(Ihandle *ih) +{ + XmProcessTraversal(ih->handle, XmTRAVERSE_CURRENT); +} + +void iupmotFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + (void)w; + (void)cont; + + if (evt->type == FocusIn) + iupCallGetFocusCb(ih); + else if (evt->type == FocusOut) + iupCallKillFocusCb(ih); +} diff --git a/iup/src/mot/iupmot_font.c b/iup/src/mot/iupmot_font.c new file mode 100755 index 0000000..8da06dd --- /dev/null +++ b/iup/src/mot/iupmot_font.c @@ -0,0 +1,443 @@ +/** \file + * \brief Motif Font mapping + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_attrib.h" +#include "iup_array.h" +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_assert.h" + +#include "iupmot_drv.h" + + +typedef struct _ImotFont +{ + char standardfont[1024]; + char xlfd[1024]; /* X-Windows Font Description */ + XmFontList fontlist; /* same as XmRenderTable */ + XFontStruct *fontstruct; + int charwidth, charheight; +} ImotFont; + +static Iarray* mot_fonts = NULL; + +static int motGetFontSize(char* font_name) +{ + int i = 0; + while (i < 8) + { + font_name = strchr(font_name, '-')+1; + i++; + } + + *(strchr(font_name, '-')) = 0; + return atoi(font_name); +} + +static XFontStruct* motLoadFont(const char* foundry, const char *typeface, int size, int bold, int italic, char *xlfd) +{ + XFontStruct* fontstruct; + char font_name[1024]; + char **font_names_list; + char *weight, *slant; + int i, num_fonts, font_size, near_size; + + /* no underline or strikeout support */ + + if (iupStrEqualNoCase(typeface, "System")) + typeface = "fixed"; + + if (!foundry) foundry = "*"; + + if (iupStrEqualNoCase(typeface, "fixed")) + foundry = "misc"; + + if (bold) + weight = "bold"; + else + weight = "medium"; + + if (italic) + slant = "i"; + else + slant = "r"; + + sprintf(font_name,"-%s-%s-%s-%s-*-*-*-*-*-*-*-*-*-*", foundry, typeface, weight, slant); + + font_names_list = XListFonts(iupmot_display, font_name, 32767, &num_fonts); + if (!num_fonts) + { + /* try changing 'i' to 'o', for italic */ + if (italic) + { + slant = "o"; + strstr(font_name, "-i-")[1] = 'o'; + font_names_list = XListFonts(iupmot_display, font_name, 32767, &num_fonts); + } + + if (!num_fonts) + return NULL; + } + + if (size < 0) /* if in pixels convert to points */ + { + double res = ((double)DisplayWidth(iupmot_display, iupmot_screen) / (double)DisplayWidthMM(iupmot_display, iupmot_screen)); /* pixels/mm */ + /* 1 point = 1/72 inch 1 inch = 25.4 mm */ + /* pixel = ((point/72)*25.4)*pixel/mm */ + size = (int)((-size/res)*2.83464567 + 0.5); /* from pixels to points */ + } + + size *= 10; /* convert to deci-points */ + + near_size = -1000; + for (i=0; iper_char) + { + int i, all=0; + int first = fontstruct->min_char_or_byte2; + int last = fontstruct->max_char_or_byte2; + if (first < 32) first = 32; /* space */ + if (last > 126) last = 126; /* tilde */ + for (i=first; i<=last; i++) + all += fontstruct->per_char[i].width; + return all/(last-first + 1); /* average character width */ + } + else + return fontstruct->max_bounds.width; +} + +static ImotFont* motFindFont(const char* foundry, const char *standardfont) +{ + char xlfd[1024]; + XFontStruct* fontstruct; + int i, count = iupArrayCount(mot_fonts); + int is_underline = 0, is_strikeout = 0; + + ImotFont* fonts = (ImotFont*)iupArrayGetData(mot_fonts); + + /* Check if the standardfont already exists in cache */ + for (i = 0; i < count; i++) + { + if (iupStrEqualNoCase(standardfont, fonts[i].standardfont)) + return &fonts[i]; + } + + /* not found, create a new one */ + if (standardfont[0] == '-') + { + fontstruct = XLoadQueryFont(iupmot_display, standardfont); + if (!fontstruct) return NULL; + strcpy(xlfd, standardfont); + } + else + { + int size = 0, + is_bold = 0, + is_italic = 0; + char typeface[1024]; + const char* mapped_name; + + if (!iupFontParsePango(standardfont, typeface, &size, &is_bold, &is_italic, &is_underline, &is_strikeout)) + return NULL; + + mapped_name = iupFontGetXName(typeface); + if (mapped_name) + strcpy(typeface, mapped_name); + + fontstruct = motLoadFont(foundry, typeface, size, is_bold, is_italic, xlfd); + if (!fontstruct) return NULL; + } + + /* create room in the array */ + fonts = (ImotFont*)iupArrayInc(mot_fonts); + + strcpy(fonts[i].standardfont, standardfont); + strcpy(fonts[i].xlfd, xlfd); + fonts[i].fontstruct = fontstruct; + fonts[i].fontlist = motFontCreateRenderTable(fontstruct, is_underline, is_strikeout); + fonts[i].charwidth = motFontCalcCharWidth(fontstruct); + fonts[i].charheight = fontstruct->ascent + fontstruct->descent; + + return &fonts[i]; +} + +char* iupdrvGetSystemFont(void) +{ + static char systemfont[200] = ""; + ImotFont* motfont = NULL; + char* font = XGetDefault(iupmot_display, "Iup", "fontList"); + if (font) + motfont = motFindFont(NULL, font); + + if (!motfont) + { + font = "Fixed, 11"; + motfont = motFindFont("misc", font); + } + + strcpy(systemfont, font); + return systemfont; +} + +char* iupmotFindFontList(XmFontList fontlist) +{ + int i, count = iupArrayCount(mot_fonts); + ImotFont* fonts = (ImotFont*)iupArrayGetData(mot_fonts); + + /* Check if the standardfont already exists in cache */ + for (i = 0; i < count; i++) + { + if (fontlist == fonts[i].fontlist) + return fonts[i].standardfont; + } + + return NULL; +} + +XmFontList iupmotGetFontList(const char* foundry, const char* value) +{ + ImotFont *motfont = motFindFont(foundry, value); + if (!motfont) + { + iupERROR1("Failed to create Font: %s", value); + return NULL; + } + + return motfont->fontlist; +} + +static ImotFont* motFontCreateNativeFont(Ihandle* ih, const char* value) +{ + ImotFont *motfont = motFindFont(iupAttribGet(ih, "FOUNDRY"), value); + if (!motfont) + { + iupERROR1("Failed to create Font: %s", value); + return NULL; + } + + iupAttribSetStr(ih, "_IUPMOT_FONT", (char*)motfont); + iupAttribSetStr(ih, "XLFD", motfont->xlfd); + return motfont; +} + +static ImotFont* motGetFont(Ihandle *ih) +{ + ImotFont* motfont = (ImotFont*)iupAttribGet(ih, "_IUPMOT_FONT"); + if (!motfont) + motfont = motFontCreateNativeFont(ih, iupGetFontAttrib(ih)); + return motfont; +} + +char* iupmotGetFontListAttrib(Ihandle *ih) +{ + ImotFont* motfont = motGetFont(ih); + if (!motfont) + return NULL; + else + return (char*)motfont->fontlist; +} + +char* iupmotGetFontStructAttrib(Ihandle *ih) +{ + ImotFont* motfont = motGetFont(ih); + if (!motfont) + return NULL; + else + return (char*)motfont->fontstruct; +} + +char* iupmotGetFontIdAttrib(Ihandle *ih) +{ + ImotFont* motfont = motGetFont(ih); + if (!motfont) + return NULL; + else + return (char*)motfont->fontstruct->fid; +} + +int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + ImotFont *motfont = motFontCreateNativeFont(ih, value); + if (!motfont) + return 1; + + /* If FONT is changed, must update the SIZE attribute */ + iupBaseUpdateSizeFromFont(ih); + + /* FONT attribute must be able to be set before mapping, + so the font is enable for size calculation. */ + if (ih->handle && (ih->iclass->nativetype != IUP_TYPEVOID)) + XtVaSetValues(ih->handle, XmNrenderTable, motfont->fontlist, NULL); + + return 1; +} + +int iupdrvFontGetStringWidth(Ihandle* ih, const char* str) +{ + XFontStruct* fontstruct; + int len; + char* line_end; + + if (!str || str[0]==0) + return 0; + + fontstruct = (XFontStruct*)iupmotGetFontStructAttrib(ih); + if (!fontstruct) + return 0; + + line_end = strchr(str, '\n'); + if (line_end) + len = line_end-str; + else + len = strlen(str); + + return XTextWidth(fontstruct, str, len); +} + +void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h) +{ + int num_lin, max_w; + + ImotFont* motfont = motGetFont(ih); + if (!motfont) + { + if (w) *w = 0; + if (h) *h = 0; + return; + } + + if (!str) + { + if (w) *w = 0; + if (h) *h = motfont->charheight * 1; + return; + } + + max_w = 0; + num_lin = 1; + if (str[0]) + { + int len, lw; + const char *nextstr; + const char *curstr = str; + do + { + nextstr = iupStrNextLine(curstr, &len); + lw = XTextWidth(motfont->fontstruct, curstr, len); + max_w = iupMAX(max_w, lw); + + curstr = nextstr; + if (*nextstr) + num_lin++; + } while(*nextstr); + } + + if (w) *w = max_w; + if (h) *h = motfont->charheight * num_lin; +} + + +void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight) +{ + ImotFont* motfont = motGetFont(ih); + if (!motfont) + { + if (charwidth) *charwidth = 0; + if (charheight) *charheight = 0; + return; + } + + if (charheight) + *charheight = motfont->charheight; + + if (charwidth) + *charwidth = motfont->charwidth; +} + +void iupdrvFontInit(void) +{ + mot_fonts = iupArrayCreate(50, sizeof(ImotFont)); +} + +void iupdrvFontFinish(void) +{ + int i, count = iupArrayCount(mot_fonts); + ImotFont* fonts = (ImotFont*)iupArrayGetData(mot_fonts); + for (i = 0; i < count; i++) + { + XmFontListFree(fonts[i].fontlist); + fonts[i].fontlist = NULL; + XFreeFont(iupmot_display, fonts[i].fontstruct); + fonts[i].fontstruct = NULL; + } + iupArrayDestroy(mot_fonts); +} diff --git a/iup/src/mot/iupmot_fontdlg.c b/iup/src/mot/iupmot_fontdlg.c new file mode 100755 index 0000000..42767b2 --- /dev/null +++ b/iup/src/mot/iupmot_fontdlg.c @@ -0,0 +1,31 @@ +/** \file + * \brief IupFontDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drvinfo.h" +#include "iup_dialog.h" + +#include "iupmot_drv.h" + + +static int motFontDlgPopup(Ihandle* ih, int x, int y) +{ + (void)ih; + (void)x; + (void)y; + return IUP_ERROR; +} + +void iupdrvFontDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = motFontDlgPopup; +} diff --git a/iup/src/mot/iupmot_frame.c b/iup/src/mot/iupmot_frame.c new file mode 100755 index 0000000..39de5d8 --- /dev/null +++ b/iup/src/mot/iupmot_frame.c @@ -0,0 +1,257 @@ +/** \file + * \brief Frame Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" +#include "iup_image.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y) +{ + (void)ih; + *x = 0; + *y = 0; +} + +static int motFrameSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color; + + /* ignore given value, must use only from parent */ + value = iupBaseNativeParentGetBgColor(ih); + + color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + Widget title_label, child_manager; + + iupmotSetBgColor(ih->handle, color); + + child_manager = XtNameToWidget(ih->handle, "*child_manager"); + iupmotSetBgColor(child_manager, color); + + title_label = XtNameToWidget(ih->handle, "*title_label"); + if (!title_label) return 1; + iupmotSetBgColor(title_label, color); + + return 1; + } + return 0; +} + +static int motFrameSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + Pixel color; + + /* ignore given value, must use only from parent */ + value = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + + color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + Widget title_label, child_manager; + + iupmotSetBgColor(ih->handle, color); + + child_manager = XtNameToWidget(ih->handle, "*child_manager"); + iupmotSetBgColor(child_manager, color); + + title_label = XtNameToWidget(ih->handle, "*title_label"); + if (!title_label) return 1; + iupmotSetBgColor(title_label, color); + + return 1; + } + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + if (pixmap) + { + Widget child_manager = XtNameToWidget(ih->handle, "*child_manager"); + Widget title_label = XtNameToWidget(ih->handle, "*title_label"); + + XtVaSetValues(child_manager, XmNbackgroundPixmap, pixmap, NULL); + if (title_label) + XtVaSetValues(title_label, XmNbackgroundPixmap, pixmap, NULL); + + return 1; + } + } + return 0; +} + +static int motFrameSetFgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + Widget title_label = XtNameToWidget(ih->handle, "*title_label"); + if (!title_label) return 0; + XtVaSetValues(title_label, XmNforeground, color, NULL); + return 1; + } + return 0; +} + +static int motFrameSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + + if (ih->handle) + { + XmFontList fontlist; + Widget title_label = XtNameToWidget(ih->handle, "*title_label"); + if (!title_label) return 1; + + fontlist = (XmFontList)iupmotGetFontListAttrib(ih); + XtVaSetValues(title_label, XmNrenderTable, fontlist, NULL); + } + + return 1; +} + +static int motFrameSetTitleAttrib(Ihandle* ih, const char* value) +{ + Widget title_label = XtNameToWidget(ih->handle, "*title_label"); + if (title_label) + { + if (!value) value = ""; + iupmotSetString(title_label, XmNlabelString, value); + return 1; + } + return 0; +} + +static void* motFrameGetInnerNativeContainerHandleMethod(Ihandle* ih, Ihandle* child) +{ + (void)child; + return XtNameToWidget(ih->handle, "*child_manager"); +} + +static int motFrameMapMethod(Ihandle* ih) +{ + char *title; + int num_args = 0; + Arg args[20]; + Widget child_manager; + + if (!ih->parent) + return IUP_ERROR; + + title = iupAttribGet(ih, "TITLE"); + + if (title) + iupAttribSetStr(ih, "_IUPFRAME_HAS_TITLE", "1"); + else + { + char* value = iupAttribGetStr(ih, "SUNKEN"); + if (iupStrBoolean(value)) + iupmotSetArg(args, num_args, XmNshadowType, XmSHADOW_IN); + else + iupmotSetArg(args, num_args, XmNshadowType, XmSHADOW_ETCHED_IN); + } + + /* Core */ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + /* Manager */ + iupmotSetArg(args, num_args, XmNshadowThickness, 2); + /* Frame */ + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* no shadow margins */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); /* no shadow margins */ + + ih->handle = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + xmFrameWidgetClass, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + if (title) + { + Widget title_label; + num_args = 0; + /* Label */ + iupmotSetArg(args, num_args, XmNlabelType, XmSTRING); + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + /* Frame Constraint */ + iupmotSetArg(args, num_args, XmNchildType, XmFRAME_TITLE_CHILD); + title_label = XtCreateManagedWidget("title_label", xmLabelWidgetClass, ih->handle, args, num_args); + iupmotSetString(title_label, XmNlabelString, title); + } + + child_manager = XtVaCreateManagedWidget( + "child_manager", + xmBulletinBoardWidgetClass, + ih->handle, + /* Core */ + XmNborderWidth, 0, + /* Manager */ + XmNshadowThickness, 0, + XmNnavigationType, XmTAB_GROUP, + /* BulletinBoard */ + XmNmarginWidth, 0, + XmNmarginHeight, 0, + XmNresizePolicy, XmRESIZE_NONE, /* no automatic resize of children */ + /* Frame Constraint */ + XmNchildType, XmFRAME_WORKAREA_CHILD, + NULL); + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvFrameInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motFrameMapMethod; + ic->GetInnerNativeContainerHandle = motFrameGetInnerNativeContainerHandleMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, motFrameSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motFrameSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motFrameSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motFrameSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", NULL, motFrameSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); +} diff --git a/iup/src/mot/iupmot_globalattrib.c b/iup/src/mot/iupmot_globalattrib.c new file mode 100755 index 0000000..9567cf5 --- /dev/null +++ b/iup/src/mot/iupmot_globalattrib.c @@ -0,0 +1,155 @@ +/** \file + * \brief Motif Driver implementation of iupdrvSetGlobal + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_strmessage.h" + +#include "iupmot_drv.h" + + +static void motGlobalSendKey(int key, int press) +{ + Window focus; + int revert_to; + XKeyEvent evt; + memset(&evt, 0, sizeof(XKeyEvent)); + evt.display = iupmot_display; + evt.send_event = True; + evt.root = DefaultRootWindow(iupmot_display); + + XGetInputFocus(iupmot_display, &focus, &revert_to); + evt.window = focus; + + iupmotKeyEncode(key, &evt.keycode, &evt.state); + if (!evt.keycode) + return; + + if (press & 0x01) + { + evt.type = KeyPress; + XSendEvent(iupmot_display, (Window)InputFocus, False, KeyPressMask, (XEvent*)&evt); + } + + if (press & 0x02) + { + evt.type = KeyRelease; + XSendEvent(iupmot_display, (Window)InputFocus, False, KeyReleaseMask, (XEvent*)&evt); + } +} + +int iupdrvSetGlobal(const char *name, const char *value) +{ + if (iupStrEqual(name, "LANGUAGE")) + { + iupStrMessageUpdateLanguage(value); + return 1; + } + if (iupStrEqual(name, "AUTOREPEAT")) + { + XKeyboardControl values; + if (iupStrBoolean(value)) + values.auto_repeat_mode = 1; + else + values.auto_repeat_mode = 0; + XChangeKeyboardControl(iupmot_display, KBAutoRepeatMode, &values); + return 0; + } + if (iupStrEqual(name, "CURSORPOS")) + { + int x, y; + if (iupStrToIntInt(value, &x, &y, 'x') == 2) + XWarpPointer(iupmot_display,None,RootWindow(iupmot_display, iupmot_screen),0,0,0,0,x,y); + return 0; + } + if (iupStrEqual(name, "KEYPRESS")) + { + int key; + if (iupStrToInt(value, &key)) + motGlobalSendKey(key, 0x01); + return 0; + } + if (iupStrEqual(name, "KEYRELEASE")) + { + int key; + if (iupStrToInt(value, &key)) + motGlobalSendKey(key, 0x02); + return 0; + } + if (iupStrEqual(name, "KEY")) + { + int key; + if (iupStrToInt(value, &key)) + motGlobalSendKey(key, 0x03); + return 0; + } + return 1; +} + +char* iupdrvGetGlobal(const char *name) +{ + if (iupStrEqual(name, "CURSORPOS")) + { + int x, y; + char* str = iupStrGetMemory(50); + iupdrvGetCursorPos(&x, &y); + sprintf(str, "%dx%d", x, y); + return str; + } + if (iupStrEqual(name, "SHIFTKEY")) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[0] == 'S') + return "ON"; + return "OFF"; + } + if (iupStrEqual(name, "CONTROLKEY")) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[1] == 'C') + return "ON"; + return "OFF"; + } + if (iupStrEqual(name, "MODKEYSTATE")) + { + char *str = iupStrGetMemory(5); + iupdrvGetKeyState(str); + return str; + } + if (iupStrEqual(name, "SCREENSIZE")) + { + char *str = iupStrGetMemory(50); + int w, h; + iupdrvGetScreenSize(&w, &h); + sprintf(str, "%dx%d", w, h); + return str; + } + if (iupStrEqual(name, "FULLSIZE")) + { + char *str = iupStrGetMemory(50); + int w, h; + iupdrvGetFullSize(&w, &h); + sprintf(str, "%dx%d", w, h); + return str; + } + if (iupStrEqual(name, "SCREENDEPTH")) + { + char *str = iupStrGetMemory(50); + int bpp = iupdrvGetScreenDepth(); + sprintf(str, "%d", bpp); + return str; + } + return NULL; +} diff --git a/iup/src/mot/iupmot_image.c b/iup/src/mot/iupmot_image.c new file mode 100755 index 0000000..b0078d5 --- /dev/null +++ b/iup/src/mot/iupmot_image.c @@ -0,0 +1,397 @@ +/** \file + * \brief Image Resource. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_drvinfo.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +void iupdrvImageGetRawData(void* handle, unsigned char* imgdata) +{ + Pixmap pixmap = (Pixmap)handle; + int w, h, y, x, bpp; + XImage *xi; + + if (!iupdrvImageGetInfo(handle, &w, &h, &bpp)) + return; + + if (bpp==8) + return; + + xi = XGetImage(iupmot_display, pixmap, 0, 0, w, h, ULONG_MAX, ZPixmap); + if (xi) + { + /* planes are separated in imgdata */ + int planesize = w*h; + unsigned char *r = imgdata, + *g = imgdata+planesize, + *b = imgdata+2*planesize; + for (y=0; ycurrentwidth, + height = ih->currentheight; + unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + Pixmap pixmap; + unsigned char bg_r=0, bg_g=0, bg_b=0; + GC gc; + Pixel color2pixel[256]; + + bpp = iupAttribGetInt(ih, "BPP"); + + iupStrToRGB(bgcolor, &bg_r, &bg_g, &bg_b); + + if (bpp == 8) + { + int i, colors_count = 0; + iupColor colors[256]; + + iupImageInitColorTable(ih, colors, &colors_count); + + for (i=0;icurrentwidth, + height = ih->currentheight, + line_size = (width+7)/8, + size_bytes = line_size*height; + unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + char *sbits, *mbits, *sb, *mb; + Pixmap source, mask; + XColor fg, bg; + unsigned char r, g, b; + Cursor cursor; + + bpp = iupAttribGetInt(ih, "BPP"); + if (bpp > 8) + return NULL; + + sbits = (char*)malloc(2*size_bytes); + if (!sbits) return NULL; + memset(sbits, 0, 2*size_bytes); + mbits = sbits + size_bytes; + + sb = sbits; + mb = mbits; + for (y=0; ycurrentwidth, + height = ih->currentheight, + line_size = (width+7)/8, + size_bytes = line_size*height; + unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + char *bits, *sb; + Pixmap mask; + unsigned char colors[256]; + + bpp = iupAttribGetInt(ih, "BPP"); + if (bpp > 8) + return NULL; + + bits = (char*)malloc(size_bytes); + if (!bits) return NULL; + memset(bits, 0, size_bytes); + + iupImageInitNonBgColors(ih, colors); + + sb = bits; + for (y=0; y +#include + +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include "iup_object.h" +#include "iup_key.h" +#include "iup_str.h" + +#include "iupmot_drv.h" + +typedef struct Imot2iupkey +{ + KeySym motcode; + int iupcode; + int s_iupcode; + int c_iupcode; + int m_iupcode; + int y_iupcode; +} Imot2iupkey; + +static Imot2iupkey motkey_map[] = { + +{ XK_Escape, K_ESC, K_sESC, K_cESC, K_mESC ,K_yESC }, +{ XK_Pause, K_PAUSE, K_sPAUSE, K_cPAUSE, K_mPAUSE ,K_yPAUSE }, +{ XK_Print, K_Print, K_sPrint, K_cPrint, K_mPrint ,K_yPrint }, +{ XK_Menu, K_Menu, K_sMenu, K_cMenu, K_mMenu ,K_yMenu }, + +{ XK_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME ,K_yHOME }, +{ XK_Up, K_UP, K_sUP, K_cUP, K_mUP ,K_yUP }, +{ XK_Prior, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP ,K_yPGUP }, +{ XK_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT ,K_yLEFT }, +{ XK_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE}, +{ XK_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT ,K_yRIGHT }, +{ XK_End, K_END, K_sEND, K_cEND, K_mEND ,K_yEND }, +{ XK_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN ,K_yDOWN }, +{ XK_Next, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN ,K_yPGDN }, +{ XK_Insert, K_INS, K_sINS, K_cINS, K_mINS ,K_yINS }, +{ XK_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL ,K_yDEL }, +{ XK_space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP }, +{ XK_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB }, +{ XK_Return, K_CR, K_sCR, K_cCR, K_mCR ,K_yCR }, +{ XK_BackSpace, K_BS, K_sBS, K_cBS, K_mBS ,K_yBS }, + +{ XK_1, K_1, K_exclam, K_c1, K_m1, K_y1 }, +{ XK_2, K_2, K_at, K_c2, K_m2, K_y2 }, +{ XK_3, K_3, K_numbersign, K_c3, K_m3, K_y3 }, +{ XK_4, K_4, K_dollar, K_c4, K_m4, K_y4 }, +{ XK_5, K_5, K_percent, K_c5, K_m5, K_y5 }, +{ XK_6, K_6, K_circum, K_c6, K_m6, K_y6 }, +{ XK_7, K_7, K_ampersand, K_c7, K_m7, K_y7 }, +{ XK_8, K_8, K_asterisk, K_c8, K_m8, K_y8 }, +{ XK_9, K_9, K_parentleft, K_c9, K_m9, K_y9 }, +{ XK_0, K_0, K_parentright, K_c0, K_m0, K_y0 }, + +{ XK_a, K_a, K_A, K_cA, K_mA, K_yA }, +{ XK_b, K_b, K_B, K_cB, K_mB, K_yB }, +{ XK_c, K_c, K_C, K_cC, K_mC, K_yC }, +{ XK_d, K_d, K_D, K_cD, K_mD, K_yD }, +{ XK_e, K_e, K_E, K_cE, K_mE, K_yE }, +{ XK_f, K_f, K_F, K_cF, K_mF, K_yF }, +{ XK_g, K_g, K_G, K_cG, K_mG, K_yG }, +{ XK_h, K_h, K_H, K_cH, K_mH, K_yH }, +{ XK_i, K_i, K_I, K_cI, K_mI, K_yI }, +{ XK_j, K_j, K_J, K_cJ, K_mJ, K_yJ }, +{ XK_k, K_k, K_K, K_cK, K_mK, K_yK }, +{ XK_l, K_l, K_L, K_cL, K_mL, K_yL }, +{ XK_m, K_m, K_M, K_cM, K_mM, K_yM }, +{ XK_n, K_n, K_N, K_cN, K_mN, K_yN }, +{ XK_o, K_o, K_O, K_cO, K_mO, K_yO }, +{ XK_p, K_p, K_P, K_cP, K_mP, K_yP }, +{ XK_q, K_q, K_Q, K_cQ, K_mQ, K_yQ }, +{ XK_r, K_r, K_R, K_cR, K_mR, K_yR }, +{ XK_s, K_s, K_S, K_cS, K_mS, K_yS }, +{ XK_t, K_t, K_T, K_cT, K_mT, K_yT }, +{ XK_u, K_u, K_U, K_cU, K_mU, K_yU }, +{ XK_v, K_v, K_V, K_cV, K_mV, K_yV }, +{ XK_w, K_w, K_W, K_cW, K_mW, K_yW }, +{ XK_x, K_x, K_X, K_cX, K_mX, K_yX }, +{ XK_y, K_y, K_Y, K_cY, K_mY, K_yY }, +{ XK_z, K_z, K_Z, K_cZ, K_mZ, K_yZ }, + +{ XK_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 }, +{ XK_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 }, +{ XK_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 }, +{ XK_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 }, +{ XK_F5, K_F5, K_sF5, K_cF5, K_mF5, K_yF5 }, +{ XK_F6, K_F6, K_sF6, K_cF6, K_mF6, K_yF6 }, +{ XK_F7, K_F7, K_sF7, K_cF7, K_mF7, K_yF7 }, +{ XK_F8, K_F8, K_sF8, K_cF8, K_mF8, K_yF8 }, +{ XK_F9, K_F9, K_sF9, K_cF9, K_mF9, K_yF9 }, +{ XK_F10, K_F10, K_sF10, K_cF10, K_mF10, K_yF10 }, +{ XK_F11, K_F11, K_sF11, K_cF11, K_mF11, K_yF11 }, +{ XK_F12, K_F12, K_sF12, K_cF12, K_mF12, K_yF12 }, + +{ XK_semicolon, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon }, +{ XK_equal, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual }, +{ XK_comma, K_comma, K_less, K_cComma, K_mComma, K_yComma }, +{ XK_minus, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus }, +{ XK_period, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod }, +{ XK_slash, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash }, +{ XK_grave, K_grave, K_tilde, 0, 0, 0 }, +{ XK_bracketleft, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft }, +{ XK_backslash, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash }, +{ XK_bracketright,K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright }, +{ XK_apostrophe, K_apostrophe, K_quotedbl, 0, 0, 0 }, + +{ XK_KP_0, K_0, K_0, K_c0, K_m0, K_y0 }, +{ XK_KP_1, K_1, K_1, K_c1, K_m1, K_y1 }, +{ XK_KP_2, K_2, K_2, K_c2, K_m2, K_y2 }, +{ XK_KP_3, K_3, K_3, K_c3, K_m3, K_y3 }, +{ XK_KP_4, K_4, K_4, K_c4, K_m4, K_y4 }, +{ XK_KP_5, K_5, K_5, K_c5, K_m5, K_y5 }, +{ XK_KP_6, K_6, K_6, K_c6, K_m6, K_y6 }, +{ XK_KP_7, K_7, K_7, K_c7, K_m7, K_y7 }, +{ XK_KP_8, K_8, K_8, K_c8, K_m8, K_y8 }, +{ XK_KP_9, K_9, K_9, K_c9, K_m9, K_y9 }, +{ XK_KP_Multiply, K_asterisk, K_sAsterisk, K_cAsterisk, K_mAsterisk, K_yAsterisk }, +{ XK_KP_Add, K_plus, K_sPlus, K_cPlus, K_mPlus, K_yPlus }, +{ XK_KP_Subtract, K_minus, K_sMinus, K_cMinus, K_mMinus, K_yMinus }, +{ XK_KP_Decimal, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod }, +{ XK_KP_Divide, K_slash, K_sSlash, K_cSlash, K_mSlash, K_ySlash }, +{ XK_KP_Separator, K_comma, K_sComma, K_cComma, K_mComma, K_yComma }, + +{ XK_ccedilla, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla }, + +{ XK_dead_tilde, K_tilde, K_circum, 0, 0, 0 }, +{ XK_dead_acute, K_acute, K_grave, 0, 0, 0 }, +{ XK_dead_grave, K_grave, K_tilde, 0, 0, 0 }, + +{ XK_KP_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 }, +{ XK_KP_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 }, +{ XK_KP_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 }, +{ XK_KP_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 }, +{ XK_KP_Space, K_SP, K_sSP, K_cSP, K_mSP ,K_ySP }, +{ XK_KP_Tab, K_TAB, K_sTAB, K_cTAB, K_mTAB ,K_yTAB }, +{ XK_KP_Equal, K_equal, 0, K_cEqual, K_mEqual, K_yEqual }, + +{ XK_KP_Enter, K_CR, K_sCR, K_cCR, K_mCR, K_yCR }, +{ XK_KP_Home, K_HOME, K_sHOME, K_cHOME, K_mHOME, K_yHOME }, +{ XK_KP_Up, K_UP, K_sUP, K_cUP, K_mUP, K_yUP }, +{ XK_KP_Page_Up, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP, K_yPGUP }, +{ XK_KP_Left, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT, K_yLEFT }, +{ XK_KP_Begin, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE}, +{ XK_KP_Right, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT, K_yRIGHT }, +{ XK_KP_End, K_END, K_sEND, K_cEND, K_mEND, K_yEND }, +{ XK_KP_Down, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN, K_yDOWN }, +{ XK_KP_Page_Down, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN, K_yPGDN }, +{ XK_KP_Insert, K_INS, K_sINS, K_cINS, K_mINS, K_yINS }, +{ XK_KP_Delete, K_DEL, K_sDEL, K_cDEL, K_mDEL, K_yDEL } + +}; + +void iupmotKeyEncode(int key, unsigned int *keyval, unsigned int *state) +{ + int i, iupcode = key & 0xFF; /* 0-255 interval */ + int count = sizeof(motkey_map)/sizeof(motkey_map[0]); + for (i = 0; i < count; i++) + { + Imot2iupkey* key_map = &(motkey_map[i]); + if (key_map->iupcode == iupcode) + { + *keyval = XKeysymToKeycode(iupmot_display, key_map->motcode); + *state = 0; + + if (iupcode != key) + { + if (key_map->c_iupcode == key) + *state = ControlMask; + else if (key_map->m_iupcode == key) + *state = Mod1Mask; + else if (key_map->y_iupcode == key) + *state = Mod4Mask; + else if (key_map->s_iupcode == key) + *state = ShiftMask; + } + return; + } + else if (key_map->s_iupcode == key) /* There are Shift keys bellow 256 */ + { + *keyval = XKeysymToKeycode(iupmot_display, key_map->motcode); + *state = ShiftMask; + return; + } + } +} + +static int motKeyMap2Iup(unsigned int state, int i) +{ + int code = 0; + if (state & ControlMask) /* Ctrl */ + code = motkey_map[i].c_iupcode; + else if (state & Mod1Mask || + state & Mod5Mask) /* Alt */ + code = motkey_map[i].m_iupcode; + else if (state & Mod4Mask) /* Apple/Win */ + code = motkey_map[i].y_iupcode; + else if (state & LockMask) /* CapsLock */ + { + if ((state & ShiftMask) || !iupKeyCanCaps(motkey_map[i].iupcode)) + return motkey_map[i].iupcode; + else + code = motkey_map[i].s_iupcode; + } + else if (state & ShiftMask) /* Shift */ + code = motkey_map[i].s_iupcode; + else + return motkey_map[i].iupcode; + + if (!code) + code = motkey_map[i].iupcode; + + return code; +} + +static int motKeyDecode(XKeyEvent *evt) +{ + int i; + KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + int count = sizeof(motkey_map)/sizeof(motkey_map[0]); + + if ((evt->state & Mod2Mask) && /* NumLock */ + (motcode >= XK_KP_Home) && + (motcode <= XK_KP_Delete)) + { + /* remap to numeric keys */ + KeySym remap_numkey[] = {XK_KP_7, XK_KP_4, XK_KP_8, XK_KP_6, XK_KP_2, XK_KP_9, XK_KP_3, XK_KP_1, XK_KP_5, XK_KP_0, XK_KP_Decimal}; + motcode = remap_numkey[motcode-XK_KP_Home]; + } + + for (i = 0; i < count; i++) + { + if (motkey_map[i].motcode == motcode) + return motKeyMap2Iup(evt->state, i); + } + + return 0; +} + +KeySym iupmotKeyCharToKeySym(char c) +{ + int i; + int count = sizeof(motkey_map)/sizeof(motkey_map[0]); + + for (i = 0; i < count; i++) + { + if (motkey_map[i].iupcode == c) + return motkey_map[i].motcode; + if (motkey_map[i].s_iupcode == c) + { + if (motkey_map[i].motcode >= XK_a && + motkey_map[i].motcode <= XK_z) + return motkey_map[i].motcode - (XK_a-XK_A); + } + } + + return 0; +} + +/* Discards keyrepeat by removing the keypress event from the queue. + * The pair keyrelease/keypress is always put together in the queue, + * by removing the keypress, we only worry about keyrelease. In case + * of a keyrelease, we ignore it if the next event is a keypress (which + * means repetition. Otherwise it is a real keyrelease. + * + * Returns 1 if the keypress is found in the queue and 0 otherwise. + */ +static int motKeyDiscardKeypressRepeat(XEvent *evt) +{ + XEvent ahead; + if (XEventsQueued(iupmot_display, QueuedAfterReading)) + { + XPeekEvent(iupmot_display, &ahead); + if (ahead.type == KeyPress && ahead.xkey.window == evt->xkey.window + && ahead.xkey.keycode == evt->xkey.keycode && ahead.xkey.time == evt->xkey.time) + { + /* Pop off the repeated KeyPress and ignore */ + XNextEvent(iupmot_display, evt); + /* Ignore the auto repeated KeyRelease/KeyPress pair */ + return 1; + } + } + /* No KeyPress found */ + return 0; +} + +/* this is called only for canvas */ +void iupmotCanvasKeyReleaseEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + if (motKeyDiscardKeypressRepeat(evt)) + { + /* call key_press because it was removed from the queue */ + iupmotKeyPressEvent(w, ih, evt, cont); + } + else + { + int result; + int code = motKeyDecode((XKeyEvent*)evt); + if (code == 0) + return; + result = iupKeyCallKeyPressCb(ih, code, 0); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return; + } + if (result == IUP_IGNORE) + { + *cont = False; + return; + } + } +} + +void iupmotKeyPressEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + int result; + int code = motKeyDecode((XKeyEvent*)evt); + if (code == 0) + return; + + if ((((XKeyEvent*)evt)->state & Mod1Mask || ((XKeyEvent*)evt)->state & Mod5Mask)) /* Alt */ + { + KeySym motcode = XKeycodeToKeysym(iupmot_display, ((XKeyEvent*)evt)->keycode, 0); + if (motcode < 128) + { + IFni cb; + Ihandle* dialog = IupGetDialog(ih); + char attrib[22] = "_IUPMOT_MNEMONIC_ _CB"; + attrib[17] = (char)toupper(motcode); + cb = (IFni)IupGetCallback(dialog, attrib); + if (cb) + { + cb(dialog, attrib[17]); + return; + } + } + } + + result = iupKeyCallKeyCb(ih, code); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return; + } + if (result == IUP_IGNORE) + { + *cont = False; + return; + } + + /* in the previous callback the dialog could be destroyed */ + if (iupObjectCheck(ih)) + { + /* this is called only for canvas */ + if (ih->iclass->nativetype==IUP_TYPECANVAS) + { + result = iupKeyCallKeyPressCb(ih, code, 1); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return; + } + if (result == IUP_IGNORE) + { + *cont = False; + return; + } + } + + if (!iupKeyProcessNavigation(ih, code, ((XKeyEvent*)evt)->state & ShiftMask)) + { + *cont = False; + return; + } + } + + (void)w; +} + +void iupmotButtonKeySetStatus(unsigned int state, unsigned int but, char* status, int doubleclick) +{ + if (state & ShiftMask) + iupKEYSETSHIFT(status); + + if (state & ControlMask) + iupKEYSETCONTROL(status); + + if ((state & Button1Mask) || but==Button1) + iupKEYSETBUTTON1(status); + + if ((state & Button2Mask) || but==Button2) + iupKEYSETBUTTON2(status); + + if ((state & Button3Mask) || but==Button3) + iupKEYSETBUTTON3(status); + + if ((state & Button4Mask) || but==Button4) + iupKEYSETBUTTON4(status); + + if ((state & Button5Mask) || but==Button5) + iupKEYSETBUTTON5(status); + + if (state & Mod1Mask || state & Mod5Mask) /* Alt */ + iupKEYSETALT(status); + + if (state & Mod4Mask) /* Apple/Win */ + iupKEYSETSYS(status); + + if (doubleclick) + iupKEYSETDOUBLE(status); +} + diff --git a/iup/src/mot/iupmot_label.c b/iup/src/mot/iupmot_label.c new file mode 100755 index 0000000..52dfc9a --- /dev/null +++ b/iup/src/mot/iupmot_label.c @@ -0,0 +1,256 @@ +/** \file + * \brief Label Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_label.h" +#include "iup_drv.h" +#include "iup_image.h" + +#include "iupmot_drv.h" + + +static int motLabelSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_TEXT) + { + iupmotSetMnemonicTitle(ih, value); + return 1; + } + + return 0; +} + +static int motLabelSetBgColorAttrib(Ihandle* ih, const char* value) +{ + /* ignore given value, must use only from parent */ + value = iupBaseNativeParentGetBgColor(ih); + + if (iupdrvBaseSetBgColorAttrib(ih, value)) + return 1; + return 0; +} + +static int motLabelSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + /* ignore given value, must use only from parent */ + value = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + + if (iupdrvBaseSetBgColorAttrib(ih, value)) + return 1; + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + if (pixmap) + { + XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL); + return 1; + } + } + return 0; +} + +static int motLabelSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + unsigned char align; + char value1[30]="", value2[30]=""; + + iupStrToStrStr(value, value1, value2, ':'); /* value2 is ignored, NOT supported in Motif */ + + if (iupStrEqualNoCase(value1, "ARIGHT")) + align = XmALIGNMENT_END; + else if (iupStrEqualNoCase(value1, "ACENTER")) + align = XmALIGNMENT_CENTER; + else /* "ALEFT" */ + align = XmALIGNMENT_BEGINNING; + + XtVaSetValues(ih->handle, XmNalignment, align, NULL); + return 1; + } + else + return 0; +} + +static int motLabelSetImageAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_IMAGE) + { + iupmotSetPixmap(ih, value, XmNlabelPixmap, 0); + + if (!iupdrvIsActive(ih)) + { + if (!iupAttribGet(ih, "IMINACTIVE")) + { + /* if not active and IMINACTIVE is not defined + then automaticaly create one based on IMAGE */ + iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 1); /* make_inactive */ + } + } + return 1; + } + else + return 0; +} + +static int motLabelSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_IMAGE) + { + iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 0); + return 1; + } + else + return 0; +} + +static int motLabelSetActiveAttrib(Ihandle* ih, const char* value) +{ + /* update the inactive image if necessary */ + if (ih->data->type == IUP_LABEL_IMAGE && !iupStrBoolean(value)) + { + if (!iupAttribGet(ih, "IMINACTIVE")) + { + /* if not defined then automaticaly create one based on IMAGE */ + char* name = iupAttribGet(ih, "IMAGE"); + iupmotSetPixmap(ih, name, XmNlabelInsensitivePixmap, 1); /* make_inactive */ + } + } + + return iupBaseSetActiveAttrib(ih, value); +} + +static int motLabelSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle && ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding, + XmNmarginWidth, ih->data->horiz_padding, NULL); + } + return 0; +} + +static int motLabelMapMethod(Ihandle* ih) +{ + char* value; + int num_args = 0; + Arg args[20]; + WidgetClass widget_class; + + value = iupAttribGet(ih, "SEPARATOR"); + if (value) + { + widget_class = xmSeparatorWidgetClass; + if (iupStrEqualNoCase(value, "HORIZONTAL")) + { + ih->data->type = IUP_LABEL_SEP_HORIZ; + iupmotSetArg(args, num_args, XmNorientation, XmHORIZONTAL); + } + else /* "VERTICAL" */ + { + ih->data->type = IUP_LABEL_SEP_VERT; + iupmotSetArg(args, num_args, XmNorientation, XmVERTICAL); + } + } + else + { + value = iupAttribGet(ih, "IMAGE"); + widget_class = xmLabelWidgetClass; + if (value) + { + ih->data->type = IUP_LABEL_IMAGE; + iupmotSetArg(args, num_args, XmNlabelType, XmPIXMAP); + } + else + { + ih->data->type = IUP_LABEL_TEXT; + iupmotSetArg(args, num_args, XmNlabelType, XmSTRING); + } + } + + /* Core */ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + /* Primitive */ + iupmotSetArg(args, num_args, XmNtraversalOn, False); + iupmotSetArg(args, num_args, XmNhighlightThickness, 0); + /* Label */ + iupmotSetArg(args, num_args, XmNrecomputeSize, False); /* no automatic resize from text */ + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNmarginTop, 0); /* no extra margins */ + iupmotSetArg(args, num_args, XmNmarginLeft, 0); + iupmotSetArg(args, num_args, XmNmarginBottom, 0); + iupmotSetArg(args, num_args, XmNmarginRight, 0); + + ih->handle = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + widget_class, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + /* Drag Source is enabled by default in label */ + iupmotDisableDragSource(ih->handle); + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + if (ih->data->type == IUP_LABEL_TEXT) + iupmotSetString(ih->handle, XmNlabelString, ""); + + return IUP_NOERROR; +} + +void iupdrvLabelInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motLabelMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, motLabelSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", iupmotGetBgColorAttrib, motLabelSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motLabelSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", NULL, motLabelSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupLabel only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, motLabelSetAlignmentAttrib, "ALEFT:ACENTER", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "IMAGE", NULL, motLabelSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PADDING", iupLabelGetPaddingAttrib, motLabelSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + + /* IupLabel GTK and Motif only */ + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, motLabelSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); +} diff --git a/iup/src/mot/iupmot_list.c b/iup/src/mot/iupmot_list.c new file mode 100755 index 0000000..f8e73ed --- /dev/null +++ b/iup/src/mot/iupmot_list.c @@ -0,0 +1,1404 @@ +/** \file + * \brief List Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_mask.h" +#include "iup_key.h" +#include "iup_list.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +static void motListComboBoxSelectionCallback(Widget w, Ihandle* ih, XmComboBoxCallbackStruct* call_data); + + +void iupdrvListAddItemSpace(Ihandle* ih, int *h) +{ + if (ih->data->has_editbox) + *h += 1; + else + *h += 3; +} + +void iupdrvListAddBorders(Ihandle* ih, int *x, int *y) +{ + int border_size = 2*4; + (*x) += border_size; + (*y) += border_size; + + if (ih->data->is_dropdown) + { + if (ih->data->has_editbox) + { + /* extra border for the editbox */ + int internal_border_size = 2*2; + (*x) += internal_border_size; + (*y) += internal_border_size; + } + } + else + { + if (ih->data->has_editbox) + (*y) += 2*2; /* internal border between editbox and list */ + else + (*x) += 2; /* extra border for the simple list */ + } +} + +static int motListConvertXYToPos(Ihandle* ih, int x, int y) +{ + (void)x; + if (ih->data->has_editbox) + { + Widget cblist; + XtVaGetValues(ih->handle, XmNlist, &cblist, NULL); + return XmListYToPos(cblist, (Position)y); /* XmListYToPos returns start at 1 */ + } + else + return XmListYToPos(ih->handle, (Position)y); +} + +int iupdrvListGetCount(Ihandle* ih) +{ + int count; + XtVaGetValues(ih->handle, XmNitemCount, &count, NULL); + return count; +} + +static void motListAddItem(Ihandle* ih, int pos, const char* value) +{ + XmString str = XmStringCreateLocalized((String)value); + /* The utility functions use 0=last 1=first */ + if (ih->data->is_dropdown || ih->data->has_editbox) + XmComboBoxAddItem(ih->handle, str, pos+1, False); + else + XmListAddItem(ih->handle, str, pos+1); + XmStringFree(str); +} + +static void motListAddSortedItem(Ihandle* ih, const char *value) +{ + char *text; + XmString *strlist; + int u_bound, l_bound = 0; + + XtVaGetValues(ih->handle, XmNitemCount, &u_bound, XmNitems, &strlist, NULL); + + u_bound--; + /* perform binary search */ + while (u_bound >= l_bound) + { + int i = l_bound + (u_bound - l_bound)/2; + text = (char*)XmStringUnparse(strlist[i], NULL, XmCHARSET_TEXT, XmCHARSET_TEXT, NULL, 0, XmOUTPUT_ALL); + if (!text) + break; + if (strcmp (text, value) > 0) + u_bound = i-1; /* newtext comes before item */ + else + l_bound = i+1; /* newtext comes after item */ + XtFree(text); + } + + motListAddItem(ih, l_bound, value); +} + +void iupdrvListAppendItem(Ihandle* ih, const char* value) +{ + if (iupAttribGetBoolean(ih, "SORT")) + motListAddSortedItem(ih, value); + else + motListAddItem(ih, -1, value); +} + +void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value) +{ + if (iupAttribGetBoolean(ih, "SORT")) + motListAddSortedItem(ih, value); + else + motListAddItem(ih, pos, value); +} + +void iupdrvListRemoveItem(Ihandle* ih, int pos) +{ + /* The utility functions use 0=last 1=first */ + if (ih->data->is_dropdown || ih->data->has_editbox) + XmComboBoxDeletePos(ih->handle, pos+1); + else + XmListDeletePos(ih->handle, pos+1); +} + +void iupdrvListRemoveAllItems(Ihandle* ih) +{ + if (ih->data->is_dropdown || ih->data->has_editbox) + { + Widget cblist; + XtVaGetValues(ih->handle, XmNlist, &cblist, NULL); + XmListDeleteAllItems(cblist); + XmComboBoxUpdate(ih->handle); + } + else + XmListDeleteAllItems(ih->handle); +} + + +/*********************************************************************************/ + + +static char* motListGetIdValueAttrib(Ihandle* ih, const char* name_id) +{ + int pos = iupListGetPos(ih, name_id); + if (pos != -1) + { + XmString* items; + XtVaGetValues(ih->handle, XmNitems, &items, NULL); + return iupmotConvertString(items[pos]); + } + return NULL; +} + +static int motListSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (sb_win) + { + Pixel color; + + /* ignore given value for the scrollbars, must use only from parent */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + color = iupmotColorGetPixelStr(parent_value); + if (color != (Pixel)-1) + { + Widget sb = NULL; + + iupmotSetBgColor(sb_win, color); + + XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + + XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + } + + return iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */ + } + else + { + char* parent_value; + + /* use given value for Edit and List also */ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + Widget cbedit, cblist, sb; + + iupmotSetBgColor(ih->handle, color); + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + if (cbedit) iupmotSetBgColor(cbedit, color); + + XtVaGetValues(ih->handle, XmNlist, &cblist, NULL); + if (cblist) iupmotSetBgColor(cblist, color); + + XtVaGetValues(cblist, XmNverticalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + + XtVaGetValues(cblist, XmNhorizontalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + } + + /* but reset just the background, so the combobox will look like a button */ + parent_value = iupBaseNativeParentGetBgColor(ih); + + color = iupmotColorGetPixelStr(parent_value); + if (color != (Pixel)-1) + XtVaSetValues(ih->handle, XmNbackground, color, NULL); + + return 1; + } +} + +static int motListSetFgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + XtVaSetValues(ih->handle, XmNforeground, color, NULL); + + if (ih->data->is_dropdown || ih->data->has_editbox) + { + Widget w; + XtVaGetValues(ih->handle, XmNtextField, &w, NULL); + XtVaSetValues(w, XmNforeground, color, NULL); + + XtVaGetValues(ih->handle, XmNlist, &w, NULL); + XtVaSetValues(w, XmNforeground, color, NULL); + } + } + + return 1; +} + +static char* motListGetValueAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char *str, *xstr; + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + xstr = XmTextFieldGetString(cbedit); + str = iupStrGetMemoryCopy(xstr); + XtFree(xstr); + return str; + } + else + { + if (ih->data->is_dropdown) + { + char* str; + int pos; + XtVaGetValues(ih->handle, XmNselectedPosition, &pos, NULL); + str = iupStrGetMemory(50); + sprintf(str, "%d", pos+1); /* IUP starts at 1 */ + return str; + } + else + { + int *pos, sel_count; + if (XmListGetSelectedPos(ih->handle, &pos, &sel_count)) /* XmListGetSelectedPos starts at 1 */ + { + if (!ih->data->is_multiple) + { + char* str = iupStrGetMemory(50); + sprintf(str, "%d", pos[0]); + XtFree((char*)pos); + return str; + } + else + { + int i, count; + char* str; + XtVaGetValues(ih->handle, XmNitemCount, &count, NULL); + str = iupStrGetMemory(count+1); + memset(str, '-', count); + str[count]=0; + for (i=0; idata->has_editbox) + { + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + if (!value) value = ""; + + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */ + + XmTextFieldSetString(cbedit, (char*)value); + + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + else + { + if (ih->data->is_dropdown) + { + int pos; + if (iupStrToInt(value, &pos)==1) + { + XtRemoveCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motListComboBoxSelectionCallback, (XtPointer)ih); + + XtVaSetValues(ih->handle, XmNselectedPosition, pos-1, NULL); /* IUP starts at 1 */ + iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos); + + XtAddCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motListComboBoxSelectionCallback, (XtPointer)ih); + } + } + else + { + if (!ih->data->is_multiple) + { + int pos; + if (iupStrToInt(value, &pos)==1) + { + XmListSelectPos(ih->handle, pos, FALSE); /* XmListSelectPos starts at 1 */ + iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos); + } + else + { + XmListDeselectAllItems(ih->handle); + iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL); + } + } + else + { + /* User has changed a multiple selection on a simple list. */ + int i, count, len; + + /* Clear all selections */ + XmListDeselectAllItems(ih->handle); + + if (!value) + { + iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL); + return 0; + } + + XtVaGetValues(ih->handle, XmNitemCount, &count, NULL); + len = strlen(value); + if (len < count) + count = len; + + XtVaSetValues(ih->handle, XmNselectionPolicy, XmMULTIPLE_SELECT, NULL); + + /* update selection list */ + for (i = 0; ihandle, i+1, False); /* XmListSelectPos starts at 1 */ + } + + XtVaSetValues(ih->handle, XmNselectionPolicy, XmEXTENDED_SELECT, + XmNselectionMode, XmNORMAL_MODE, NULL); /* must also restore this */ + iupAttribStoreStr(ih, "_IUPLIST_OLDVALUE", value); + } + } + } + + return 0; +} + +static int motListSetVisibleItemsAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_dropdown) + { + int count; + if (iupStrToInt(value, &count)==1) + XtVaSetValues(ih->handle, XmNvisibleItemCount, count, NULL); + } + return 1; +} + +static int motListSetShowDropdownAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_dropdown) + { + if (iupStrBoolean(value)) + { + XButtonEvent ev; + memset(&ev, 0, sizeof(XButtonEvent)); + ev.type = ButtonPress; + ev.display = XtDisplay(ih->handle); + ev.send_event = True; + ev.root = RootWindow(iupmot_display, iupmot_screen); + ev.time = clock()*CLOCKS_PER_SEC; + ev.window = XtWindow(ih->handle); + ev.state = Button1Mask; + ev.button = Button1; + ev.same_screen = True; + XtCallActionProc(ih->handle, "CBDropDownList", (XEvent*)&ev, 0, 0 ); + } + else + XtCallActionProc(ih->handle, "CBDisarm", 0, 0, 0 ); + } + return 0; +} + +static int motListSetTopItemAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->is_dropdown) + { + int pos = 1; + if (iupStrToInt(value, &pos)) + { + if (ih->data->has_editbox) + { + Widget cblist; + XtVaGetValues(ih->handle, XmNlist, &cblist, NULL); + XtVaSetValues(cblist, XmNtopItemPosition, pos, NULL); + } + else + XtVaSetValues(ih->handle, XmNtopItemPosition, pos, NULL); + } + } + return 0; +} + +static int motListSetSpacingAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_dropdown) + return 0; + + if (!iupStrToInt(value, &ih->data->spacing)) + ih->data->spacing = 0; + + if (ih->handle) + { + if (ih->data->has_editbox) + { + Widget cblist; + XtVaGetValues(ih->handle, XmNlist, &cblist, NULL); + XtVaSetValues(cblist, XmNlistSpacing, ih->data->spacing*2, + XmNlistMarginWidth, ih->data->spacing, + XmNlistMarginHeight, ih->data->spacing, + NULL); + } + else + XtVaSetValues(ih->handle, XmNlistSpacing, ih->data->spacing*2, + XmNlistMarginWidth, ih->data->spacing, + XmNlistMarginHeight, ih->data->spacing, + NULL); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int motListSetPaddingAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle) + { + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XtVaSetValues(cbedit, XmNmarginHeight, ih->data->vert_padding, + XmNmarginWidth, ih->data->horiz_padding, NULL); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int motListSetReadOnlyAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->has_editbox) + { + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XtVaSetValues(cbedit, XmNeditable, iupStrBoolean(value)? False: True, NULL); + } + return 0; +} + +static char* motListGetReadOnlyAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + Boolean editable; + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XtVaGetValues(cbedit, XmNeditable, &editable, NULL); + if (editable) + return "YES"; + else + return "NO"; + } + else + return NULL; +} + +static int motListSetInsertAttrib(Ihandle* ih, const char* value) +{ + if (!value) + return 0; + + if (ih->data->has_editbox) + { + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */ + XmTextFieldRemove(cbedit); + XmTextFieldInsert(cbedit, XmTextFieldGetInsertionPosition(cbedit), (char*)value); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + + return 0; +} + +static int motListSetSelectedTextAttrib(Ihandle* ih, const char* value) +{ + XmTextPosition start, end; + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + if (XmTextFieldGetSelectionPosition(cbedit, &start, &end) && start!=end) + { + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */ + XmTextFieldReplace(cbedit, start, end, (char*)value); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + + return 0; +} + +static char* motListGetSelectedTextAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char* selectedtext, *str; + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + selectedtext = XmTextFieldGetSelection(cbedit); + str = iupStrGetMemoryCopy(selectedtext); + XtFree(selectedtext); + return str; + } + else + return NULL; +} + +static int motListSetAppendAttrib(Ihandle* ih, const char* value) +{ + if (value && ih->data->has_editbox) + { + XmTextPosition pos; + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + pos = XmTextFieldGetLastPosition(cbedit); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */ + XmTextFieldInsert(cbedit, pos+1, (char*)value); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + return 0; +} + +static int motListSetSelectionAttrib(Ihandle* ih, const char* value) +{ + int start=1, end=1; + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldClearSelection(cbedit, CurrentTime); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldSetSelection(cbedit, (XmTextPosition)0, (XmTextPosition)XmTextFieldGetLastPosition(cbedit), CurrentTime); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<1 || end<1) + return 0; + + start--; /* IUP starts at 1 */ + end--; + + /* end is inside the selection, in IUP is outside */ + end--; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldSetSelection(cbedit, (XmTextPosition)start, (XmTextPosition)end, CurrentTime); + + return 0; +} + +static char* motListGetSelectionAttrib(Ihandle* ih) +{ + XmTextPosition start = 0, end = 0; + char* str; + Widget cbedit; + if (!ih->data->has_editbox) + return NULL; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + if (!XmTextFieldGetSelectionPosition(cbedit, &start, &end) || start==end) + return NULL; + + str = iupStrGetMemory(100); + + /* end is inside the selection, in IUP is outside */ + end++; + + start++; /* IUP starts at 1 */ + end++; + sprintf(str, "%d:%d", (int)start, (int)end); + + return str; +} + +static int motListSetSelectionPosAttrib(Ihandle* ih, const char* value) +{ + int start=0, end=0; + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldClearSelection(cbedit, CurrentTime); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldSetSelection(cbedit, (XmTextPosition)0, (XmTextPosition)XmTextFieldGetLastPosition(cbedit), CurrentTime); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<0 || end<0) + return 0; + + /* end is inside the selection, in IUP is outside */ + end--; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldSetSelection(cbedit, (XmTextPosition)start, (XmTextPosition)end, CurrentTime); + + return 0; +} + +static char* motListGetSelectionPosAttrib(Ihandle* ih) +{ + XmTextPosition start = 0, end = 0; + char* str; + Widget cbedit; + if (!ih->data->has_editbox) + return NULL; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + if (!XmTextFieldGetSelectionPosition(cbedit, &start, &end) || start==end) + return NULL; + + str = iupStrGetMemory(100); + + /* end is inside the selection, in IUP is outside */ + end++; + + sprintf(str, "%d:%d", (int)start, (int)end); + + return str; +} + +static int motListSetCaretAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + pos--; /* IUP starts at 1 */ + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldSetInsertionPosition(cbedit, (XmTextPosition)pos); + XmTextFieldShowPosition(cbedit, (XmTextPosition)pos); + + return 0; +} + +static char* motListGetCaretAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + XmTextPosition pos; + Widget cbedit; + char* str = iupStrGetMemory(50); + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + pos = XmTextFieldGetInsertionPosition(cbedit); + pos++; /* IUP starts at 1 */ + sprintf(str, "%d", (int)pos); + return str; + } + else + return NULL; +} + +static int motListSetCaretPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldSetInsertionPosition(cbedit, (XmTextPosition)pos); + XmTextFieldShowPosition(cbedit, (XmTextPosition)pos); + + return 0; +} + +static char* motListGetCaretPosAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + XmTextPosition pos; + Widget cbedit; + char* str = iupStrGetMemory(50); + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + pos = XmTextFieldGetInsertionPosition(cbedit); + sprintf(str, "%d", (int)pos); + return str; + } + else + return NULL; +} + +static int motListSetScrollToAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 1) pos = 1; + pos--; /* return to Motif referece */ + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldShowPosition(cbedit, (XmTextPosition)pos); + + return 0; +} + +static int motListSetScrollToPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XmTextFieldShowPosition(cbedit, (XmTextPosition)pos); + + return 0; +} + +static int motListSetNCAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + if (!iupStrToInt(value, &ih->data->nc)) + ih->data->nc = INT_MAX; + + if (ih->handle) + { + Widget cbedit; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XtVaSetValues(cbedit, XmNmaxLength, ih->data->nc, NULL); + } + return 0; +} + +static int motListSetClipboardAttrib(Ihandle *ih, const char *value) +{ + Widget cbedit; + if (!ih->data->has_editbox) + return 0; + + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + + if (iupStrEqualNoCase(value, "COPY")) + { + char *str = XmTextFieldGetSelection(cbedit); + + XmTextFieldCopy(cbedit, CurrentTime); + + /* do it also for the X clipboard */ + XStoreBytes(iupmot_display, str, strlen(str)+1); + XtFree(str); + } + else if (iupStrEqualNoCase(value, "CUT")) + { + char *str = XmTextFieldGetSelection(cbedit); + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + + XmTextFieldCut(cbedit, CurrentTime); + + /* do it also for the X clipboard */ + XStoreBytes(iupmot_display, str, strlen(str)+1); + XtFree(str); + XmTextFieldRemove(cbedit); + + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + else if (iupStrEqualNoCase(value, "PASTE")) + { + int size; + char* str = XFetchBytes(iupmot_display, &size); + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + + XmTextFieldPaste(cbedit); /* TODO: this could force 2 pastes, check in CDE */ + + /* do it also for the X clipboard */ + XmTextFieldRemove(cbedit); + XmTextFieldInsert(cbedit, XmTextFieldGetInsertionPosition(cbedit), str); + XFree(str); + + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + else if (iupStrEqualNoCase(value, "CLEAR")) + { + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XmTextFieldRemove(cbedit); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + return 0; +} + + +/*********************************************************************************/ + + +static void motListEditModifyVerifyCallback(Widget cbedit, Ihandle *ih, XmTextVerifyPtr text) +{ + int start, end, key = 0; + char *value, *new_value, *insert_value; + KeySym motcode = 0; + IFnis cb; + + if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB")) + return; + + cb = (IFnis)IupGetCallback(ih, "EDIT_CB"); + if (!cb && !ih->data->mask) + return; + + if (text->event && text->event->type == KeyPress) + { + unsigned int state = ((XKeyEvent*)text->event)->state; + if (state & ControlMask || /* Ctrl */ + state & Mod1Mask || + state & Mod5Mask || /* Alt */ + state & Mod4Mask) /* Apple/Win */ + return; + + motcode = XKeycodeToKeysym(iupmot_display, ((XKeyEvent*)text->event)->keycode, 0); + } + + value = XmTextFieldGetString(cbedit); + start = text->startPos; + end = text->endPos; + insert_value = text->text->ptr; + + if (motcode == XK_Delete) + { + new_value = value; + iupStrRemove(value, start, end, 1); + } + else if (motcode == XK_BackSpace) + { + new_value = value; + iupStrRemove(value, start, end, -1); + } + else + { + if (!value) + new_value = iupStrDup(insert_value); + else if (insert_value) + new_value = iupStrInsert(value, insert_value, start, end); + else + new_value = value; + } + + if (insert_value && insert_value[0]!=0 && insert_value[1]==0) + key = insert_value[0]; + + if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0) + { + if (new_value != value) free(new_value); + XtFree(value); + text->doit = False; /* abort processing */ + return; + } + + if (cb) + { + int cb_ret = cb(ih, key, (char*)new_value); + if (cb_ret==IUP_IGNORE) + text->doit = False; /* abort processing */ + else if (cb_ret==IUP_CLOSE) + { + IupExitLoop(); + text->doit = False; /* abort processing */ + } + else if (cb_ret!=0 && key!=0 && + cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE) + { + insert_value[0] = (char)cb_ret; /* replace key */ + } + } + + if (new_value != value) free(new_value); + XtFree(value); +} + +static void motListEditMotionVerifyCallback(Widget w, Ihandle* ih, XmTextVerifyCallbackStruct* textverify) +{ + int pos; + + IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB"); + if (!cb) return; + + pos = textverify->newInsert; + + if (pos != ih->data->last_caret_pos) + { + ih->data->last_caret_pos = pos; + cb(ih, 1, pos+1, pos); + } + + (void)w; +} + +static void motListEditKeyPressEvent(Widget cbedit, Ihandle *ih, XKeyEvent *evt, Boolean *cont) +{ + *cont = True; + iupmotKeyPressEvent(cbedit, ih, (XEvent*)evt, cont); + if (*cont == False) + return; + + if (evt->state & ControlMask) /* Ctrl */ + { + KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + if (motcode == XK_c) + { + motListSetClipboardAttrib(ih, "COPY"); + *cont = False; + return; + } + else if (motcode == XK_x) + { + motListSetClipboardAttrib(ih, "CUT"); + *cont = False; + return; + } + else if (motcode == XK_v) + { + motListSetClipboardAttrib(ih, "PASTE"); + *cont = False; + return; + } + else if (motcode == XK_a) + { + XmTextFieldSetSelection(cbedit, 0, XmTextFieldGetLastPosition(cbedit), CurrentTime); + *cont = False; + return; + } + } +} + +static void motListEditValueChangedCallback(Widget w, Ihandle* ih, XmAnyCallbackStruct* valuechanged) +{ + if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB")) + return; + + iupBaseCallValueChangedCb(ih); + + (void)valuechanged; + (void)w; +} + +static void motListDropDownPopupCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB"); + if (cb) + cb(ih, 1); + (void)w; + (void)call_data; +} + +static void motListDropDownPopdownCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB"); + if (cb) + cb(ih, 0); + (void)w; + (void)call_data; +} + +static void motListDefaultActionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* call_data) +{ + if (call_data->event->type == ButtonPress || call_data->event->type == ButtonRelease) + { + IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB"); + if (cb) + { + int pos = call_data->item_position; /* Here Motif already starts at 1 */ + iupListSingleCallDblClickCallback(ih, cb, pos); + } + } + + (void)w; +} + +static void motListComboBoxSelectionCallback(Widget w, Ihandle* ih, XmComboBoxCallbackStruct* call_data) +{ + IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION"); + if (cb) + { + int pos = call_data->item_position; + if (pos==0) + { + /* must check if it is really checked or it is for the edit box */ + XmString* items; + XtVaGetValues(ih->handle, XmNitems, &items, NULL); + if (!XmStringCompare(call_data->item_or_text, items[0])) + return; + } + pos++; /* IUP starts at 1 */ + iupListSingleCallActionCallback(ih, cb, pos); + } + + if (!ih->data->has_editbox) + iupBaseCallValueChangedCb(ih); + + (void)w; +} + +static void motListBrowseSelectionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* call_data) +{ + IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION"); + if (cb) + { + int pos = call_data->item_position; /* Here Motif already starts at 1 */ + iupListSingleCallActionCallback(ih, cb, pos); + } + + if (!ih->data->has_editbox) + iupBaseCallValueChangedCb(ih); + + (void)w; +} + +static void motListExtendedSelectionCallback(Widget w, Ihandle* ih, XmListCallbackStruct* call_data) +{ + IFns multi_cb = (IFns)IupGetCallback(ih, "MULTISELECT_CB"); + IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION"); + if (multi_cb || cb) + { + int* pos = call_data->selected_item_positions; + int sel_count = call_data->selected_item_count; + int i; + + /* In Motif, the position of item is "plus one". + "iupListMultipleCallActionCallback" works with the list of selected items from the zero position. + So, "minus one" here. */ + for (i = 0; i < sel_count; i++) + pos[i] -= 1; + + iupListMultipleCallActionCallback(ih, cb, multi_cb, pos, sel_count); + } + + if (!ih->data->has_editbox) + iupBaseCallValueChangedCb(ih); + + (void)w; +} + + +/*********************************************************************************/ + + +static int motListMapMethod(Ihandle* ih) +{ + int num_args = 0; + Arg args[30]; + Widget parent = iupChildTreeGetNativeParentHandle(ih); + char* child_id = iupDialogGetChildIdStr(ih); + + if (ih->data->is_dropdown || ih->data->has_editbox) + { + /* could not set XmNmappedWhenManaged to False because the list and the edit box where not displayed */ + /* iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + iupmotSetArg(args, num_args, XmNmarginHeight, 0); + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + iupmotSetArg(args, num_args, XmNhighlightThickness, 2); + iupmotSetArg(args, num_args, XmNshadowThickness, 2); + + if (ih->data->has_editbox) + { + if (ih->data->is_dropdown) + iupmotSetArg(args, num_args, XmNcomboBoxType, XmDROP_DOWN_COMBO_BOX); /* hidden-list+edit */ + else + iupmotSetArg(args, num_args, XmNcomboBoxType, XmCOMBO_BOX); /* visible-list+edit */ + } + else + iupmotSetArg(args, num_args, XmNcomboBoxType, XmDROP_DOWN_LIST); /* hidden-list */ + + ih->handle = XtCreateManagedWidget( + child_id, /* child identifier */ + xmComboBoxWidgetClass, /* widget class */ + parent, /* widget parent */ + args, num_args); + } + else + { + Widget sb_win; + + /* Create the scrolled window */ + + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAPPLICATION_DEFINED); + iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE); + iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmSTATIC); /* can NOT be XmAS_NEEDED because XmAPPLICATION_DEFINED */ + iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and text */ + iupmotSetArg(args, num_args, XmNborderWidth, 0); + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + + sb_win = XtCreateManagedWidget( + child_id, /* child identifier */ + xmScrolledWindowWidgetClass, /* widget class */ + parent, /* widget parent */ + args, num_args); + + if (!sb_win) + return IUP_ERROR; + + parent = sb_win; + child_id = "list"; + + /* Create the list */ + + num_args = 0; + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + iupmotSetArg(args, num_args, XmNhighlightThickness, 2); + iupmotSetArg(args, num_args, XmNshadowThickness, 2); + + iupmotSetArg(args, num_args, XmNlistMarginHeight, 0); /* default padding */ + iupmotSetArg(args, num_args, XmNlistMarginWidth, 0); + iupmotSetArg(args, num_args, XmNlistSpacing, 0); + iupmotSetArg(args, num_args, XmNlistSizePolicy, XmCONSTANT); /* don't grow to fit, add scrollbar */ + + if (ih->data->is_multiple) + iupmotSetArg(args, num_args, XmNselectionPolicy, XmEXTENDED_SELECT); + else + iupmotSetArg(args, num_args, XmNselectionPolicy, XmBROWSE_SELECT); + + if (iupAttribGetBoolean(ih, "AUTOHIDE")) + iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmAS_NEEDED); + else + iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmSTATIC); + + ih->handle = XtCreateManagedWidget( + child_id, /* child identifier */ + xmListWidgetClass, /* widget class */ + parent, /* widget parent */ + args, num_args); + } + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + if (ih->data->is_dropdown || ih->data->has_editbox) + { + Widget cbedit, cblist; + XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); + XtVaGetValues(ih->handle, XmNlist, &cblist, NULL); + + XtAddEventHandler(cbedit, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(cbedit, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(cbedit, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddCallback(cbedit, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + + XtAddCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motListComboBoxSelectionCallback, (XtPointer)ih); + + if (ih->data->has_editbox) + { + XtAddEventHandler(cbedit, KeyPressMask, False, (XtEventHandler)motListEditKeyPressEvent, (XtPointer)ih); + XtAddCallback(cbedit, XmNmodifyVerifyCallback, (XtCallbackProc)motListEditModifyVerifyCallback, (XtPointer)ih); + XtAddCallback(cbedit, XmNmotionVerifyCallback, (XtCallbackProc)motListEditMotionVerifyCallback, (XtPointer)ih); + XtAddCallback(cbedit, XmNvalueChangedCallback, (XtCallbackProc)motListEditValueChangedCallback, (XtPointer)ih); + + /* Disable Drag Source */ + iupmotDisableDragSource(cbedit); + } + else + XtAddEventHandler(cbedit, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + + if (ih->data->is_dropdown) + { + XtVaSetValues(ih->handle, XmNvisibleItemCount, 5, NULL); + XtAddCallback(XtParent(XtParent(cblist)), XmNpopupCallback, (XtCallbackProc)motListDropDownPopupCallback, (XtPointer)ih); + XtAddCallback(XtParent(XtParent(cblist)), XmNpopdownCallback, (XtCallbackProc)motListDropDownPopdownCallback, (XtPointer)ih); + } + else + { + XtAddCallback(cblist, XmNdefaultActionCallback, (XtCallbackProc)motListDefaultActionCallback, (XtPointer)ih); + XtAddEventHandler(cblist, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih); + XtAddEventHandler(cblist, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih); + + /* Disable Drag Source */ + iupmotDisableDragSource(cblist); + } + } + else + { + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent); + XtVaSetValues(parent, XmNworkWindow, ih->handle, NULL); + + XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih); + + XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + XtAddCallback (ih->handle, XmNbrowseSelectionCallback, (XtCallbackProc)motListBrowseSelectionCallback, (XtPointer)ih); + XtAddCallback (ih->handle, XmNextendedSelectionCallback, (XtCallbackProc)motListExtendedSelectionCallback, (XtPointer)ih); + XtAddCallback (ih->handle, XmNdefaultActionCallback, (XtCallbackProc)motListDefaultActionCallback, (XtPointer)ih); + } + + /* Disable Drag Source */ + iupmotDisableDragSource(ih->handle); + + /* initialize the widget */ + if (ih->data->is_dropdown || ih->data->has_editbox) + XtRealizeWidget(ih->handle); + else + XtRealizeWidget(parent); + + if (IupGetGlobal("_IUP_RESET_TXTCOLORS")) + { + iupmotSetGlobalColorAttrib(ih->handle, XmNbackground, "TXTBGCOLOR"); + iupmotSetGlobalColorAttrib(ih->handle, XmNforeground, "TXTFGCOLOR"); + IupSetGlobal("_IUP_RESET_TXTCOLORS", NULL); + } + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)motListConvertXYToPos); + + iupListSetInitialItems(ih); + + return IUP_NOERROR; +} + +void iupdrvListInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motListMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motListSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motListSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT); + + /* IupList only */ + iupClassRegisterAttributeId(ic, "IDVALUE", motListGetIdValueAttrib, iupListSetIdValueAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", motListGetValueAttrib, motListSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VISIBLE_ITEMS", NULL, motListSetVisibleItemsAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TOPITEM", NULL, motListSetTopItemAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWDROPDOWN", NULL, motListSetShowDropdownAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPACING", iupListGetSpacingAttrib, motListSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + + iupClassRegisterAttribute(ic, "PADDING", iupListGetPaddingAttrib, motListSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SELECTEDTEXT", motListGetSelectedTextAttrib, motListSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTION", motListGetSelectionAttrib, motListSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTIONPOS", motListGetSelectionPosAttrib, motListSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARET", motListGetCaretAttrib, motListSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARETPOS", motListGetCaretPosAttrib, motListSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INSERT", NULL, motListSetInsertAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPEND", NULL, motListSetAppendAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "READONLY", motListGetReadOnlyAttrib, motListSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "NC", iupListGetNCAttrib, motListSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, motListSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTO", NULL, motListSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, motListSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); +} diff --git a/iup/src/mot/iupmot_loop.c b/iup/src/mot/iupmot_loop.c new file mode 100755 index 0000000..828ddcd --- /dev/null +++ b/iup/src/mot/iupmot_loop.c @@ -0,0 +1,108 @@ +/** \file + * \brief Motif Message Loop + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iupmot_drv.h" + + +/* local variables */ +static int mot_mainloop = 0; +static int mot_exitmainloop = 0; +static IFidle mot_idle_cb = NULL; +static XtWorkProcId mot_idle_id; + + +static Boolean motIdlecbWorkProc(XtPointer client_data) +{ + (void)client_data; + if (mot_idle_cb) + { + int ret = mot_idle_cb(); + if (ret == IUP_CLOSE) + { + mot_idle_cb = NULL; + IupExitLoop(); + return True; /* removes the working procedure */ + } + if (ret == IUP_IGNORE) + { + mot_idle_cb = NULL; + return True; /* removes the working procedure */ + } + + return False; /* keeps the working procedure */ + } + + return True; /* removes the working procedure */ +} + +void iupdrvSetIdleFunction(Icallback f) +{ + if (mot_idle_cb) + XtRemoveWorkProc(mot_idle_id); + + mot_idle_cb = (IFidle)f; + + if (mot_idle_cb) + mot_idle_id = XtAppAddWorkProc(iupmot_appcontext, motIdlecbWorkProc, NULL); +} + +static int motLoopStep(void) +{ + XtAppProcessEvent(iupmot_appcontext, XtIMAll); + return (mot_exitmainloop)? IUP_CLOSE : IUP_DEFAULT; +} + +void IupExitLoop(void) +{ + mot_exitmainloop = 1; +} + +int IupMainLoopLevel(void) +{ + return mot_mainloop; +} + +int IupMainLoop(void) +{ + mot_mainloop++; + mot_exitmainloop = 0; + + while (!mot_exitmainloop) + { + if (motLoopStep() == IUP_CLOSE) + break; + } + + mot_exitmainloop = 0; + mot_mainloop--; + return IUP_NOERROR; +} + +int IupLoopStep(void) +{ + if (!XtAppPending(iupmot_appcontext)) + return IUP_DEFAULT; + + return motLoopStep(); +} + +void IupFlush(void) +{ + while (XPending(iupmot_display) != 0) + { + if (motLoopStep() == IUP_CLOSE) + break; + } + + XFlush(iupmot_display); +} diff --git a/iup/src/mot/iupmot_menu.c b/iup/src/mot/iupmot_menu.c new file mode 100755 index 0000000..be9b953 --- /dev/null +++ b/iup/src/mot/iupmot_menu.c @@ -0,0 +1,457 @@ +/** \file + * \brief Menu Resources + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_label.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_image.h" +#include "iup_menu.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +static int mot_menu_exitloop = 0; + +int iupdrvMenuPopup(Ihandle* ih, int x, int y) +{ + XButtonEvent ev; + ev.x_root = x; + ev.y_root = y; + XmMenuPosition(ih->handle, &ev); + + XtManageChild(ih->handle); + + mot_menu_exitloop = 0; + while (!mot_menu_exitloop) + XtAppProcessEvent(iupmot_appcontext, XtIMAll); + mot_menu_exitloop = 0; + + return IUP_NOERROR; +} + +int iupdrvMenuGetMenuBarSize(Ihandle* ih) +{ + int ch; + iupdrvFontGetCharSize(ih, NULL, &ch); + return 5 + ch + 5; +} + + +/*******************************************************************************************/ + + +static void motItemActivateCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + Icallback cb; + + if (XmIsToggleButton(ih->handle) && !iupAttribGetBoolean(ih, "AUTOTOGGLE") && !iupAttribGetBoolean(ih->parent, "RADIO")) + { + /* Motif by default will do autotoggle */ + XmToggleButtonSetState(ih->handle, !XmToggleButtonGetState(ih->handle),0); + } + + cb = IupGetCallback(ih, "ACTION"); + if (cb && cb(ih)==IUP_CLOSE) + IupExitLoop(); + + (void)w; + (void)call_data; +} + +static void motItemArmCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + Icallback cb = IupGetCallback(ih, "HIGHLIGHT_CB"); + if (cb) + cb(ih); + + (void)w; + (void)call_data; +} + +static void motMenuMapCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + Icallback cb = IupGetCallback(ih, "OPEN_CB"); + if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "OPEN_CB"); /* check also in the Submenu */ + if (cb) cb(ih); + + (void)w; + (void)call_data; +} + +static void motMenuUnmapCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + Icallback cb = IupGetCallback(ih, "MENUCLOSE_CB"); + if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "MENUCLOSE_CB"); /* check also in the Submenu */ + if (cb) cb(ih); + + (void)w; + (void)call_data; +} + +static void motPopupMenuUnmapCallback(Widget w, Ihandle* ih, XtPointer call_data) +{ + motMenuUnmapCallback(w, ih, call_data); + mot_menu_exitloop = 1; +} + + +/*******************************************************************************************/ + + +static void motMenuUnMapMethod(Ihandle* ih) +{ + if (iupMenuIsMenuBar(ih)) + XtDestroyWidget(ih->handle); + else + XtDestroyWidget(XtParent(ih->handle)); /* in this case the RowColumn widget is a child of a MenuShell. */ +} + +static int motMenuMapMethod(Ihandle* ih) +{ + int num_args = 0; + Arg args[30]; + + if (iupMenuIsMenuBar(ih)) + { + /* top level menu used for MENU attribute in IupDialog (a menu bar) */ + + ih->handle = XtVaCreateManagedWidget( + iupMenuGetChildIdStr(ih), + xmRowColumnWidgetClass, + iupChildTreeGetNativeParentHandle(ih), + XmNrowColumnType, XmMENU_BAR, + XmNmarginHeight, 0, + XmNmarginWidth, 0, + XmNresizeWidth, False, + NULL); + if (!ih->handle) + return IUP_ERROR; + } + else + { + /* all XmCreate* functions here, also create RowColumn Widgets. */ + + if (ih->parent) + { + /* parent is a submenu */ + + if (iupAttribGetBoolean(ih, "RADIO")) + { + iupmotSetArg(args, num_args, XmNpacking, XmPACK_COLUMN); + iupmotSetArg(args, num_args, XmNradioBehavior, TRUE); + } + + ih->handle = XmCreatePulldownMenu( + ih->parent->handle, + iupMenuGetChildIdStr(ih), + args, + num_args); + if (!ih->handle) + return IUP_ERROR; + + /* update the CascadeButton */ + XtVaSetValues(ih->parent->handle, XmNsubMenuId, ih->handle, NULL); + + XtAddCallback(ih->handle, XmNmapCallback, (XtCallbackProc)motMenuMapCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNunmapCallback, (XtCallbackProc)motMenuUnmapCallback, (XtPointer)ih); + } + else + { + /* top level menu used for IupPopup */ + + iupmotSetArg(args, num_args, XmNpopupEnabled, XmPOPUP_AUTOMATIC); + + ih->handle = XmCreatePopupMenu( + iupmot_appshell, + iupMenuGetChildIdStr(ih), + args, + num_args); + if (!ih->handle) + return IUP_ERROR; + + XtAddCallback(ih->handle, XmNmapCallback, (XtCallbackProc)motMenuMapCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNunmapCallback, (XtCallbackProc)motPopupMenuUnmapCallback, (XtPointer)ih); + } + } + + ih->serial = iupMenuGetChildId(ih); /* must be after using the string */ + + return IUP_NOERROR; +} + +void iupdrvMenuInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motMenuMapMethod; + ic->UnMap = motMenuUnMapMethod; + + /* Used by iupdrvMenuGetMenuBarSize */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, NULL, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_DEFAULT); /* use inheritance to retrieve standard fonts */ + + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); +} + + +/*******************************************************************************************/ + + +static int motItemSetTitleImageAttrib(Ihandle* ih, const char* value) +{ + iupmotSetPixmap(ih, value, XmNlabelPixmap, 0); + return 1; +} + +static int motItemSetTitleAttrib(Ihandle* ih, const char* value) +{ + char *str; + + if (!value) + { + str = " "; + value = str; + } + else + str = iupMenuProcessTitle(ih, value); + + if (XmIsToggleButton(ih->handle)) + { + char *p = strchr(str, '\t'); + if (p) + { + int offset = (p-str); + char* new_value = iupStrDup(str); + char* acc_value = new_value + offset + 1; + new_value[offset] = 0; + iupmotSetMnemonicTitle(ih, new_value); + iupmotSetString(ih->handle, XmNacceleratorText, acc_value); + free(new_value); + + if (str != value) free(str); + return 1; + } + } + + iupmotSetMnemonicTitle(ih, str); + + if (str != value) free(str); + return 1; +} + +static int motItemSetValueAttrib(Ihandle* ih, const char* value) +{ + if (XmIsToggleButton(ih->handle)) + { + if (iupAttribGetBoolean(ih->parent, "RADIO")) + value = "ON"; + + XmToggleButtonSetState(ih->handle, iupStrBoolean(value),0); + } + return 0; +} + +static char* motItemGetValueAttrib(Ihandle* ih) +{ + if (XmIsToggleButton(ih->handle) && XmToggleButtonGetState(ih->handle)) + return "ON"; + else + return "OFF"; +} + +static int motItemMapMethod(Ihandle* ih) +{ + int pos; + + if (!ih->parent) + return IUP_ERROR; + + /* Menu bar can contain only CascadeButtons */ + if (iupMenuIsMenuBar(ih->parent)) + { + ih->handle = XtVaCreateManagedWidget( + iupMenuGetChildIdStr(ih), + xmCascadeButtonWidgetClass, + ih->parent->handle, + NULL); + + XtAddCallback(ih->handle, XmNactivateCallback, (XtCallbackProc)motItemActivateCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNcascadingCallback, (XtCallbackProc)motItemArmCallback, (XtPointer)ih); + } + else + { + int num_args = 0; + Arg args[10]; + + if (iupAttribGetBoolean(ih->parent, "RADIO")) + { + iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_BOOLEAN); + iupmotSetArg(args, num_args, XmNindicatorType, XmONE_OF_MANY_ROUND); + iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_CHECK_BOX); + iupmotSetArg(args, num_args, XmNindicatorSize, 13); + iupmotSetArg(args, num_args, XmNselectColor, iupmotColorGetPixel(0, 0, 0)); + } + else + { + if (iupAttribGetBoolean(ih, "HIDEMARK")) + iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_NONE); + else + iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_CHECK); + iupmotSetArg(args, num_args, XmNlabelType, iupAttribGet(ih, "TITLEIMAGE")? XmPIXMAP: XmSTRING); + } + + ih->handle = XtCreateManagedWidget( + iupMenuGetChildIdStr(ih), + xmToggleButtonWidgetClass, + ih->parent->handle, + args, + num_args); + + XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motItemActivateCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNarmCallback, (XtCallbackProc)motItemArmCallback, (XtPointer)ih); + } + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupMenuGetChildId(ih); /* must be after using the string */ + + XtAddCallback (ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + + pos = IupGetChildPos(ih->parent, ih); + XtVaSetValues(ih->handle, XmNpositionIndex, pos, NULL); /* RowColumn Constraint */ + + iupUpdateStandardFontAttrib(ih); + + return IUP_NOERROR; +} + +void iupdrvItemInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motItemMapMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */ + + /* Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* IupItem only */ + iupClassRegisterAttribute(ic, "VALUE", motItemGetValueAttrib, motItemSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLE", NULL, motItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLEIMAGE", NULL, motItemSetTitleImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupItem Gtk and Motif only */ + iupClassRegisterAttribute(ic, "HIDEMARK", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED); +} + + +/*******************************************************************************************/ + + +static int motSubmenuMapMethod(Ihandle* ih) +{ + int pos; + + if (!ih->parent) + return IUP_ERROR; + + ih->handle = XtVaCreateManagedWidget( + iupMenuGetChildIdStr(ih), + xmCascadeButtonWidgetClass, + ih->parent->handle, + NULL); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupMenuGetChildId(ih); /* must be after using the string */ + + pos = IupGetChildPos(ih->parent, ih); + XtVaSetValues(ih->handle, XmNpositionIndex, pos, NULL); /* RowColumn Constraint */ + + XtAddCallback(ih->handle, XmNcascadingCallback, (XtCallbackProc)motItemArmCallback, (XtPointer)ih); + + iupUpdateStandardFontAttrib(ih); + + return IUP_NOERROR; +} + +void iupdrvSubmenuInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motSubmenuMapMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + /* Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, iupdrvSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); /* use inheritance to retrieve standard fonts */ + + /* Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iupBaseSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* IupSubmenu only */ + iupClassRegisterAttribute(ic, "TITLE", NULL, motItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); +} + + +/*******************************************************************************************/ + + +static int motSeparatorMapMethod(Ihandle* ih) +{ + int pos; + + if (!ih->parent) + return IUP_ERROR; + + ih->handle = XtVaCreateManagedWidget( + iupMenuGetChildIdStr(ih), + xmSeparatorWidgetClass, + ih->parent->handle, + NULL); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupMenuGetChildId(ih); /* must be after using the string */ + + pos = IupGetChildPos(ih->parent, ih); + XtVaSetValues(ih->handle, XmNpositionIndex, pos, NULL); /* RowColumn Constraint */ + + return IUP_NOERROR; +} + +void iupdrvSeparatorInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motSeparatorMapMethod; + ic->UnMap = iupdrvBaseUnMapMethod; + + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, iupdrvBaseSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); +} diff --git a/iup/src/mot/iupmot_messagedlg.c b/iup/src/mot/iupmot_messagedlg.c new file mode 100755 index 0000000..6660503 --- /dev/null +++ b/iup/src/mot/iupmot_messagedlg.c @@ -0,0 +1,191 @@ +/** \file + * \brief Motif IupMessageDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drvinfo.h" +#include "iup_dialog.h" +#include "iup_strmessage.h" + +#include "iupmot_drv.h" + + +static void motMessageDlgDeleteWindowCallback(Widget w, XtPointer client_data, XtPointer call_data) +{ + Ihandle *ih = (Ihandle*)client_data; + if (!ih) return; + (void)call_data; + (void)w; + if (iupStrEqualNoCase(iupAttribGetStr(ih, "BUTTONS"), "OK")) + iupAttribSetStr(ih, "BUTTONRESPONSE", "1"); + else + iupAttribSetStr(ih, "BUTTONRESPONSE", "2"); + iupAttribSetStr(ih, "_IUP_WM_DELETE", "1"); +} + +static void motMessageDlgCallback(Widget w, Ihandle* ih, XmAnyCallbackStruct* call_data) +{ + (void)w; + if (call_data->reason == XmCR_OK) + iupAttribSetStr(ih, "BUTTONRESPONSE", "1"); + else if (call_data->reason == XmCR_CANCEL) + iupAttribSetStr(ih, "BUTTONRESPONSE", "2"); +} + +static void motMessageDlgHelpCallback(Widget w, XtPointer client_data, XtPointer call_data) +{ + Ihandle *ih = (Ihandle*)client_data; + Icallback cb = (Icallback)IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + { + if (iupStrEqualNoCase(iupAttribGetStr(ih, "BUTTONS"), "OK")) + iupAttribSetStr(ih, "BUTTONRESPONSE", "1"); + else + iupAttribSetStr(ih, "BUTTONRESPONSE", "2"); + } + + (void)call_data; + (void)w; +} + +static int motMessageDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + Widget msgbox, dialog; + int style = XmDIALOG_FULL_APPLICATION_MODAL; + int type = XmDIALOG_MESSAGE; + int num_but = 2; + char *value; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + if (parent) + { + msgbox = XmCreateMessageDialog(parent, "messagedialog", NULL, 0); + dialog = XtParent(msgbox); + } + else + { + dialog = XtAppCreateShell(NULL, "messagedialog", topLevelShellWidgetClass, iupmot_display, NULL, 0); + msgbox = XmCreateMessageBox(dialog, "messagebox", NULL, 0); + style = XmDIALOG_MODELESS; + XtVaSetValues(dialog, + XmNmwmInputMode, MWM_INPUT_FULL_APPLICATION_MODAL, + XmNmappedWhenManaged, False, + XmNsaveUnder, True, + NULL); + } + if (!msgbox) + return IUP_NOERROR; + + value = iupAttribGetStr(ih, "DIALOGTYPE"); + if (iupStrEqualNoCase(value, "ERROR")) + type = XmDIALOG_ERROR; + else if (iupStrEqualNoCase(value, "WARNING")) + type = XmDIALOG_WARNING; + else if (iupStrEqualNoCase(value, "INFORMATION")) + type = XmDIALOG_INFORMATION; + else if (iupStrEqualNoCase(value, "QUESTION")) + type = XmDIALOG_QUESTION; + + + value = iupAttribGet(ih, "TITLE"); + if (value) + iupmotSetString(msgbox, XmNdialogTitle, value); + else + { + if (parent) + { + XmString title; + XtVaGetValues(parent, XmNdialogTitle, &title, NULL); + XtVaSetValues(msgbox, XmNdialogTitle, title, NULL); + } + } + + value = iupAttribGet(ih, "VALUE"); + if (value) + iupmotSetString(msgbox, XmNmessageString, value); + + XtVaSetValues(msgbox, + XmNdialogType, type, + XmNdialogStyle, style, + XmNautoUnmanage, False, + XmNnoResize, True, + NULL); + + value = iupAttribGetStr(ih, "BUTTONS"); + if (iupStrEqualNoCase(value, "OK")) + { + XtUnmanageChild(XmMessageBoxGetChild(msgbox, XmDIALOG_CANCEL_BUTTON)); + num_but = 1; + } + else if (iupStrEqualNoCase(value, "YESNO")) + { + iupmotSetString(msgbox, XmNokLabelString, iupStrMessageGet("IUP_YES")); + iupmotSetString(msgbox, XmNcancelLabelString, iupStrMessageGet("IUP_NO")); + } + + if (!IupGetCallback(ih, "HELP_CB")) + XtUnmanageChild(XmMessageBoxGetChild(msgbox, XmDIALOG_HELP_BUTTON)); + + if (num_but == 2 && iupAttribGetInt(ih, "BUTTONDEFAULT") == 2) + XtVaSetValues(msgbox, XmNdefaultButtonType, XmDIALOG_CANCEL_BUTTON, NULL); + else + XtVaSetValues(msgbox, XmNdefaultButtonType, XmDIALOG_OK_BUTTON, NULL); + + XtAddCallback(msgbox, XmNokCallback, (XtCallbackProc)motMessageDlgCallback, (XtPointer)ih); + XtAddCallback(msgbox, XmNcancelCallback, (XtCallbackProc)motMessageDlgCallback, (XtPointer)ih); + XtAddCallback(msgbox, XmNhelpCallback, (XtCallbackProc)motMessageDlgHelpCallback, (XtPointer)ih); + + XmAddWMProtocolCallback(dialog, iupmot_wm_deletewindow, motMessageDlgDeleteWindowCallback, (XtPointer)ih); + XtManageChild(msgbox); + + XtRealizeWidget(dialog); + ih->handle = dialog; + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + + if (style == XmDIALOG_MODELESS) + XtPopup(dialog, XtGrabExclusive); + + /* while the user hasn't provided an answer, simulate main loop. + ** The answer changes as soon as the user selects one of the + ** buttons and the callback routine changes its value. */ + iupAttribSetStr(ih, "BUTTONRESPONSE", NULL); + while (iupAttribGet(ih, "BUTTONRESPONSE") == NULL) + XtAppProcessEvent(iupmot_appcontext, XtIMAll); + + if (!iupAttribGet(ih, "_IUP_WM_DELETE")) + { + XtUnmanageChild(msgbox); + + if (style == XmDIALOG_MODELESS) + { + XtPopdown(dialog); + XtDestroyWidget(dialog); + } + } + + return IUP_NOERROR; +} + +void iupdrvMessageDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = motMessageDlgPopup; +} diff --git a/iup/src/mot/iupmot_open.c b/iup/src/mot/iupmot_open.c new file mode 100755 index 0000000..a59dbff --- /dev/null +++ b/iup/src/mot/iupmot_open.c @@ -0,0 +1,141 @@ +/** \file + * \brief Motif Open/Close + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_globalattrib.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +/* global variables */ +Widget iupmot_appshell = 0; +Display* iupmot_display = 0; +int iupmot_screen = 0; +Visual* iupmot_visual = 0; +XtAppContext iupmot_appcontext = 0; + +void* iupdrvGetDisplay(void) +{ + return iupmot_display; +} + +void iupmotSetGlobalColorAttrib(Widget w, const char* xmname, const char* name) +{ + unsigned char r, g, b; + Pixel color; + + XtVaGetValues(w, xmname, &color, NULL); + iupmotColorGetRGB(color, &r, &g, &b); + + iupGlobalSetDefaultColorAttrib(name, r, g, b); +} + +int iupdrvOpen(int *argc, char ***argv) +{ + IupSetGlobal("DRIVER", "Motif"); + + /* XtSetLanguageProc(NULL, NULL, NULL); + Removed to avoid invalid locale in modern Linux that set LANG=en_US.UTF-8 */ + + /* We do NOT use XtVaOpenApplication because it crashes when using internal dummy argc and argv. + iupmot_appshell = XtVaOpenApplication(&iupmot_appcontext, "Iup", NULL, 0, argc, *argv, NULL, + sessionShellWidgetClass, NULL); */ + + XtToolkitInitialize(); + + iupmot_appcontext = XtCreateApplicationContext(); + + iupmot_display = XtOpenDisplay(iupmot_appcontext, NULL, NULL, "Iup", NULL, 0, argc, *argv); + if (!iupmot_display) + { + fprintf (stderr, "IUP error: cannot open display.\n"); + return IUP_ERROR; + } + + iupmot_appshell = XtAppCreateShell(NULL, "Iup", sessionShellWidgetClass, iupmot_display, NULL, 0); + if (!iupmot_appshell) + { + fprintf(stderr, "IUP error: cannot create shell.\n"); + return IUP_ERROR; + } + IupSetGlobal("APPSHELL", (char*)iupmot_appshell); + + IupStoreGlobal("SYSTEMLANGUAGE", setlocale(LC_ALL, NULL)); + + iupmot_screen = XDefaultScreen(iupmot_display); + + IupSetGlobal("XDISPLAY", (char*)iupmot_display); + IupSetGlobal("XSCREEN", (char*)iupmot_screen); + + /* screen depth can be 8bpp, but canvas can be 24bpp */ + { + XVisualInfo vinfo; + if (XMatchVisualInfo(iupmot_display, iupmot_screen, 24, TrueColor, &vinfo) || + XMatchVisualInfo(iupmot_display, iupmot_screen, 16, TrueColor, &vinfo)) + { + iupmot_visual = vinfo.visual; + IupSetGlobal("TRUECOLORCANVAS", "YES"); + } + else + { + iupmot_visual = DefaultVisual(iupmot_display, iupmot_screen); + IupSetGlobal("TRUECOLORCANVAS", "NO"); + } + } + + /* driver system version */ + { + int major = xmUseVersion/1000; + int minor = xmUseVersion - major * 1000; + IupSetfAttribute(NULL, "MOTIFVERSION", "%d.%d", major, minor); + IupSetfAttribute(NULL, "MOTIFNUMBER", "%d", (XmVERSION * 1000 + XmREVISION * 100 + XmUPDATE_LEVEL)); + + IupSetGlobal("XSERVERVENDOR", ServerVendor(iupmot_display)); + IupSetfAttribute(NULL, "XVENDORRELEASE", "%d", VendorRelease(iupmot_display)); + } + + iupmotColorInit(); + + /* dialog background color */ + { + iupmotSetGlobalColorAttrib(iupmot_appshell, XmNbackground, "DLGBGCOLOR"); + iupGlobalSetDefaultColorAttrib("DLGFGCOLOR", 0, 0, 0); + IupSetGlobal("_IUP_RESET_DLGBGCOLOR", "YES"); /* will update the DLGFGCOLOR when the first dialog is mapped */ + + iupGlobalSetDefaultColorAttrib("TXTBGCOLOR", 255, 255, 255); + iupGlobalSetDefaultColorAttrib("TXTFGCOLOR", 0, 0, 0); + IupSetGlobal("_IUP_RESET_TXTCOLORS", "YES"); /* will update the TXTCOLORS when the first text or list is mapped */ + } + + if (getenv("IUP_DEBUG")) + XSynchronize(iupmot_display, 1); + + return IUP_NOERROR; +} + +void iupdrvClose(void) +{ + iupmotColorFinish(); + iupmotTipsFinish(); + + if (iupmot_appshell) + XtDestroyWidget(iupmot_appshell); + + if (iupmot_appcontext) + XtDestroyApplicationContext(iupmot_appcontext); +} diff --git a/iup/src/mot/iupmot_progressbar.c b/iup/src/mot/iupmot_progressbar.c new file mode 100755 index 0000000..7266d38 --- /dev/null +++ b/iup/src/mot/iupmot_progressbar.c @@ -0,0 +1,165 @@ +/** \file +* \brief Progress bar Control +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_progressbar.h" +#include "iup_drv.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +static int motProgressBarSetValueAttrib(Ihandle* ih, const char* value) +{ + if (!value) + ih->data->value = 0; + else + ih->data->value = atof(value); + iProgressBarCropValue(ih); + + XtVaSetValues(ih->handle, XmNvalue, (int)(SHRT_MAX * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin)), NULL); + + return 0; +} + +static int motProgressBarSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!iupAttribGetStr(ih, "FGCOLOR")) + { + Pixel color; + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + r = (r*8)/10; + g = (g*8)/10; + b = (b*8)/10; + + color = iupmotColorGetPixel(r, g, b); + if (color != (Pixel)-1) + { + Widget w = XtNameToWidget(ih->handle, "*Scrollbar"); + XtVaSetValues(w, XmNtroughColor, color, NULL); + } + } + + return iupdrvBaseSetBgColorAttrib(ih, value); +} + + +static int motProgressBarSetFgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + Widget w = XtNameToWidget(ih->handle, "*Scrollbar"); + XtVaSetValues(w, XmNtroughColor, color, NULL); + } + + return 1; +} + +static void motProgressBarLayoutUpdateMethod(Ihandle *ih) +{ + unsigned char orientation; + XtVaGetValues(ih->handle, XmNorientation, &orientation, NULL); + + if (orientation == XmVERTICAL) + XtVaSetValues(ih->handle, XmNscaleWidth, ih->currentwidth, NULL); + else + XtVaSetValues(ih->handle, XmNscaleHeight, ih->currentheight, NULL); + + iupdrvBaseLayoutUpdateMethod(ih); +} + +static int motProgressBarMapMethod(Ihandle* ih) +{ + int num_args = 0; + Arg args[30]; + + /* Core */ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + /* Primitive */ + iupmotSetArg(args, num_args, XmNtraversalOn, False); + iupmotSetArg(args, num_args, XmNhighlightThickness, 0); + /* Scale */ + iupmotSetArg(args, num_args, XmNminimum, 0); + iupmotSetArg(args, num_args, XmNmaximum, SHRT_MAX); + iupmotSetArg(args, num_args, XmNslidingMode, XmTHERMOMETER); /* thermometer effect */ + iupmotSetArg(args, num_args, XmNsliderMark, XmNONE); + iupmotSetArg(args, num_args, XmNeditable, False); + iupmotSetArg(args, num_args, XmNshowValue, XmNONE); + + if (iupStrEqualNoCase(iupAttribGetStr(ih, "ORIENTATION"), "VERTICAL")) + { + iupmotSetArg(args, num_args, XmNorientation, XmVERTICAL); + + if (ih->currentheight < ih->currentwidth) + { + int tmp = ih->currentheight; + ih->currentheight = ih->currentwidth; + ih->currentwidth = tmp; + } + } + else + iupmotSetArg(args, num_args, XmNorientation, XmHORIZONTAL); + + ih->handle = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + xmScaleWidgetClass, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvProgressBarInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motProgressBarMapMethod; + ic->LayoutUpdate = motProgressBarLayoutUpdateMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motProgressBarSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motProgressBarSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + + /* IupProgressBar only */ + iupClassRegisterAttribute(ic, "VALUE", iProgressBarGetValueAttrib, motProgressBarSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, "HORIZONTAL", NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/mot/iupmot_tabs.c b/iup/src/mot/iupmot_tabs.c new file mode 100755 index 0000000..7c8a6b5 --- /dev/null +++ b/iup/src/mot/iupmot_tabs.c @@ -0,0 +1,593 @@ +/** \file +* \brief Tabs Control +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_tabs.h" +#include "iup_image.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +int iupdrvTabsExtraDecor(Ihandle* ih) +{ + (void)ih; + return 1; +} + +int iupdrvTabsGetLineCountAttrib(Ihandle* ih) +{ + (void)ih; + return 1; +} + +void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos) +{ + Ihandle* child = IupGetChild(ih, pos); + Ihandle* prev_child = IupGetChild(ih, iupdrvTabsGetCurrentTab(ih)); + IupSetAttribute(child, "VISIBLE", "YES"); + IupSetAttribute(prev_child, "VISIBLE", "NO"); + + XtVaSetValues(ih->handle, XmNcurrentPageNumber, pos, NULL); +} + +int iupdrvTabsGetCurrentTab(Ihandle* ih) +{ + int pos; + XtVaGetValues(ih->handle, XmNcurrentPageNumber, &pos, NULL); + return pos; +} + +static void motTabsUpdatePageNumber(Ihandle* ih) +{ + int pos, old_pos; + Ihandle* child; + for (pos = 0, child = ih->firstchild; child; child = child->brother, pos++) + { + Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER"); + if (child_manager) + { + old_pos = iupAttribGetInt(child, "_IUPMOT_TABNUMBER"); /* did not work when using XtVaGetValues(child_manager, XmNpageNumber) */ + if (pos != old_pos) + { + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + XtVaSetValues(child_manager, XmNpageNumber, pos, NULL); + XtVaSetValues(tab_button, XmNpageNumber, pos, NULL); + iupAttribSetInt(child, "_IUPMOT_TABNUMBER", pos); + } + } + } +} + +static void motTabsUpdatePageBgPixmap(Ihandle* ih, Pixmap pixmap) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER"); + if (child_manager) + XtVaSetValues(child_manager, XmNbackgroundPixmap, pixmap, NULL); + } +} + +static void motTabsUpdatePageBgColor(Ihandle* ih, Pixel color) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER"); + if (child_manager) + iupmotSetBgColor(child_manager, color); + } +} + +static void motTabsUpdateButtonsFgColor(Ihandle* ih, Pixel color) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + if (tab_button) + XtVaSetValues(tab_button, XmNforeground, color, NULL); + } +} + +static void motTabsUpdateButtonsBgColor(Ihandle* ih, Pixel color) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + if (tab_button) + iupmotSetBgColor(tab_button, color); + } +} + +static void motTabsUpdateButtonsPadding(Ihandle* ih) +{ + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + { + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + if (tab_button) + XtVaSetValues(tab_button, XmNmarginHeight, ih->data->vert_padding, + XmNmarginWidth, ih->data->horiz_padding, NULL); + } +} + +static void motTabsUpdatePageFont(Ihandle* ih) +{ + Ihandle* child; + XmFontList fontlist = (XmFontList)iupmotGetFontListAttrib(ih); + + for (child = ih->firstchild; child; child = child->brother) + { + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + if (tab_button) + XtVaSetValues(tab_button, XmNrenderTable, fontlist, NULL); + } +} + +/* ------------------------------------------------------------------------- */ +/* motTabs - Sets and Gets accessors */ +/* ------------------------------------------------------------------------- */ + +static int motTabsSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + + if (ih->handle) + motTabsUpdateButtonsPadding(ih); + return 0; +} + +static void motTabsUpdateTabType(Ihandle* ih) +{ + if (ih->data->type == ITABS_LEFT) + XtVaSetValues(ih->handle, XmNbackPagePlacement, XmBOTTOM_LEFT, + XmNorientation, XmHORIZONTAL, + NULL); + else if(ih->data->type == ITABS_RIGHT) + XtVaSetValues(ih->handle, XmNbackPagePlacement, XmBOTTOM_RIGHT, + XmNorientation, XmHORIZONTAL, + NULL); + else if(ih->data->type == ITABS_BOTTOM) + XtVaSetValues(ih->handle, XmNbackPagePlacement, XmBOTTOM_RIGHT, + XmNorientation, XmVERTICAL, + NULL); + else /* "TOP" */ + XtVaSetValues(ih->handle, XmNbackPagePlacement, XmTOP_RIGHT, + XmNorientation, XmVERTICAL, + NULL); +} + +static int motTabsSetTabTypeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "LEFT")) + ih->data->type = ITABS_LEFT; + else if(iupStrEqualNoCase(value, "RIGHT")) + ih->data->type = ITABS_RIGHT; + else if(iupStrEqualNoCase(value, "BOTTOM")) + ih->data->type = ITABS_BOTTOM; + else /* "TOP" */ + ih->data->type = ITABS_TOP; + + if (ih->handle) + motTabsUpdateTabType(ih); + + return 0; +} + +static int motTabsSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color; + + /* given value is used only for child, to the Tabs must use only from parent */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + color = iupmotColorGetPixelStr(parent_value); + if (color != (Pixel)-1) + { + iupmotSetBgColor(ih->handle, color); + motTabsUpdatePageBgColor(ih, color); + } + + color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + motTabsUpdateButtonsBgColor(ih, color); + + return 1; +} + +static int motTabsSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + /* given value is used only for child, to the Tabs must use only from parent */ + char* parent_value = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + + Pixel color = iupmotColorGetPixelStr(parent_value); + if (color != (Pixel)-1) + { + iupmotSetBgColor(ih->handle, color); + motTabsUpdatePageBgColor(ih, color); + } + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(parent_value, ih, 0); + if (pixmap) + { + XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL); + motTabsUpdatePageBgPixmap(ih, pixmap); + } + } + + (void)value; + return 1; +} + +static int motTabsSetFgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + XtVaSetValues(ih->handle, XmNforeground, color, NULL); + motTabsUpdateButtonsFgColor(ih, color); + return 1; + } + return 0; +} + +static int motTabsSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + if (ih->handle) + motTabsUpdatePageFont(ih); + return 1; +} + +static int motTabsSetTabTitleAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int pos; + if (value && iupStrToInt(name_id, &pos)==1) + { + Ihandle* child = IupGetChild(ih, pos); + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + if (tab_button) + iupmotSetString(tab_button, XmNlabelString, value); + } + return 1; +} + +static int motTabsSetTabImageAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int pos; + if (value && iupStrToInt(name_id, &pos)==1) + { + Ihandle* child = IupGetChild(ih, pos); + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + if (tab_button) + { + Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + if (pixmap) + XtVaSetValues(tab_button, XmNlabelPixmap, pixmap, NULL); + } + } + return 1; +} + + +/* ------------------------------------------------------------------------- */ +/* motTabs - Callback */ +/* ------------------------------------------------------------------------- */ + +void motTabsPageChangedCallback(Widget w, Ihandle* ih, XmNotebookCallbackStruct *nptr) +{ + if (nptr->reason == XmCR_MAJOR_TAB) + { + IFnnn cb; + Ihandle* child = IupGetChild(ih, nptr->page_number); + Ihandle* prev_child = IupGetChild(ih, nptr->prev_page_number); + IupSetAttribute(child, "VISIBLE", "YES"); + IupSetAttribute(prev_child, "VISIBLE", "NO"); + + cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB"); + if (cb) + cb(ih, child, prev_child); + } + (void)w; +} + +static void motTabsConfigureNotify(Widget w, XEvent *evt, String* s, Cardinal *card) +{ + /* Motif does not process the changed of position and/or size of children outside the parent's client area. + Since Notebook pages are not resized until they are moved into the visible area, + we must update the children position and size when a tab page is resize. + Since tab pages are not hidden, they are moved outside the visible area, + a resize occours every time a tab is activated. + */ + Ihandle *child; + (void)s; + (void)card; + (void)evt; + + XtVaGetValues(w, XmNuserData, &child, NULL); + if (!child) return; + + iupLayoutUpdate(child); +} + +/* ------------------------------------------------------------------------- */ +/* motTabs - Methods and Init Class */ +/* ------------------------------------------------------------------------- */ + +static void motTabsChildAddedMethod(Ihandle* ih, Ihandle* child) +{ + if (IupGetName(child) == NULL) + iupAttribSetHandleName(child); + + if (ih->handle) + { + Widget child_manager; + Widget tab_button; + int num_args = 0, pos; + Arg args[30]; + char *tabtitle, *tabimage, *background; + Pixel color; + + /* open space for new tab number */ + motTabsUpdatePageNumber(ih); + + pos = IupGetChildPos(ih, child); + + /* Create pages */ + child_manager = XtVaCreateManagedWidget( + "child_manager", + xmBulletinBoardWidgetClass, + ih->handle, + /* Core */ + XmNborderWidth, 0, + /* Manager */ + XmNshadowThickness, 0, + XmNnavigationType, XmTAB_GROUP, + XmNuserData, child, /* used only in motTabsConfigureNotify */ + /* BulletinBoard */ + XmNmarginWidth, 0, + XmNmarginHeight, 0, + XmNresizePolicy, XmRESIZE_NONE, /* no automatic resize of children */ + /* Notebook Constraint */ + XmNnotebookChildType, XmPAGE, + XmNpageNumber, pos, + XmNresizable, True, + NULL); + + XtOverrideTranslations(child_manager, XtParseTranslationTable(": iupTabsConfigure()")); + + tabtitle = iupAttribGet(child, "TABTITLE"); + if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos); + tabimage = iupAttribGet(child, "TABIMAGE"); + if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos); + if (!tabtitle && !tabimage) + tabtitle = " "; + + /* Create tabs */ + /* Label */ + iupmotSetArg(args, num_args, XmNlabelType, tabtitle? XmSTRING: XmPIXMAP); + iupmotSetArg(args, num_args, XmNmarginHeight, 0); + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + /* Notebook Constraint */ + iupmotSetArg(args, num_args, XmNnotebookChildType, XmMAJOR_TAB); + iupmotSetArg(args, num_args, XmNpageNumber, pos); + tab_button = XtCreateManagedWidget("tab_button", xmPushButtonWidgetClass, ih->handle, args, num_args); + + /* Disable Drag Source */ + iupmotDisableDragSource(tab_button); + + XtAddEventHandler(tab_button, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(tab_button, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(tab_button, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(tab_button, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + + if (tabtitle) + iupmotSetString(tab_button, XmNlabelString, tabtitle); + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(tabimage, ih, 0); + if (pixmap) + XtVaSetValues(tab_button, XmNlabelPixmap, pixmap, NULL); + } + + background = iupBaseNativeParentGetBgColorAttrib(ih); + color = iupmotColorGetPixelStr(background); + if (color != -1) + iupmotSetBgColor(child_manager, color); + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(background, ih, 0); + if (pixmap) + { + XtVaSetValues(child_manager, XmNbackgroundPixmap, pixmap, NULL); + } + } + + background = iupAttribGetStr(ih, "BGCOLOR"); + color = iupmotColorGetPixelStr(background); + if (color != -1) + iupmotSetBgColor(tab_button, color); + + color = iupmotColorGetPixelStr(IupGetAttribute(ih, "FGCOLOR")); + XtVaSetValues(tab_button, XmNforeground, color, NULL); + + XtRealizeWidget(child_manager); + XtRealizeWidget(tab_button); + + iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)child_manager); + iupAttribSetStr(child, "_IUPMOT_TABBUTTON", (char*)tab_button); + iupAttribSetInt(child, "_IUPMOT_TABNUMBER", pos); + + if (pos == iupdrvTabsGetCurrentTab(ih)) + IupSetAttribute(child, "VISIBLE", "YES"); + else + IupSetAttribute(child, "VISIBLE", "NO"); + } +} + +static void motTabsChildRemovedMethod(Ihandle* ih, Ihandle* child) +{ + if (ih->handle) + { + Widget child_manager = (Widget)iupAttribGet(child, "_IUPTAB_CONTAINER"); + if (child_manager) + { + int cur_pos, pos; + Widget tab_button = (Widget)iupAttribGet(child, "_IUPMOT_TABBUTTON"); + + cur_pos = iupdrvTabsGetCurrentTab(ih); + pos = iupAttribGetInt(child, "_IUPMOT_TABNUMBER"); /* did not work when using XtVaGetValues(child_manager, XmNpageNumber) */ + if (cur_pos == pos) + { + if (cur_pos == 0) + cur_pos = 1; + else + cur_pos--; + + iupdrvTabsSetCurrentTab(ih, cur_pos); + } + + XtDestroyWidget(tab_button); + XtDestroyWidget(child_manager); + + /* compact the tab number usage */ + motTabsUpdatePageNumber(ih); + + iupAttribSetStr(child, "_IUPTAB_CONTAINER", NULL); + iupAttribSetStr(child, "_IUPMOT_TABBUTTON", NULL); + iupAttribSetStr(child, "_IUPMOT_TABNUMBER", NULL); + } + } +} + +static int motTabsMapMethod(Ihandle* ih) +{ + int num_args = 0; + Arg args[30]; + + if (!ih->parent) + return IUP_ERROR; + + /* Core */ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + /* Manager */ + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + iupmotSetArg(args, num_args, XmNtraversalOn, True); + iupmotSetArg(args, num_args, XmNhighlightThickness, 0); + /* Notebook */ + iupmotSetArg(args, num_args, XmNbindingType, XmNONE); + iupmotSetArg(args, num_args, XmNbindingWidth, 0); + iupmotSetArg(args, num_args, XmNfirstPageNumber, 0); /* IupTabs index always starts with zero */ + iupmotSetArg(args, num_args, XmNbackPageSize, 0); + iupmotSetArg(args, num_args, XmNbackPageNumber, 1); + iupmotSetArg(args, num_args, XmNframeShadowThickness, 2); + + ih->handle = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + xmNotebookWidgetClass, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + /* Disable page scroller */ + { + Widget scroller; + scroller = XtNameToWidget(ih->handle, "*PageScroller"); + XtUnmanageChild(scroller); + } + + /* Callbacks */ + XtAddCallback(ih->handle, XmNpageChangedCallback, (XtCallbackProc)motTabsPageChangedCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + + /* update Tab position */ + motTabsUpdateTabType(ih); + + /* current value is now given by the native system */ + iupAttribSetStr(ih, "_IUPTABS_VALUE_HANDLE", NULL); + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + /* Create pages and tabs */ + if (ih->firstchild) + { + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + motTabsChildAddedMethod(ih, child); + } + + return IUP_NOERROR; +} + +void iupdrvTabsInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motTabsMapMethod; + ic->ChildAdded = motTabsChildAddedMethod; + ic->ChildRemoved = motTabsChildRemovedMethod; + + { + /* Set up a translation table that captures "Resize" events + (also called ConfigureNotify or Configure events). */ + XtActionsRec rec = {"iupTabsConfigure", motTabsConfigureNotify}; + XtAppAddActions(iupmot_appcontext, &rec, 1); + } + + /* Driver Dependent Attribute functions */ + + /* Common */ + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, motTabsSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motTabsSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motTabsSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motTabsSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* IupTabs only */ + iupClassRegisterAttribute(ic, "TABTYPE", iupTabsGetTabTypeAttrib, motTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABORIENTATION", iupTabsGetTabOrientationAttrib, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* can not be set, always HORIZONTAL in Motif */ + iupClassRegisterAttributeId(ic, "TABTITLE", NULL, motTabsSetTabTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TABIMAGE", NULL, motTabsSetTabImageAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, motTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); +} diff --git a/iup/src/mot/iupmot_text.c b/iup/src/mot/iupmot_text.c new file mode 100755 index 0000000..4a8f936 --- /dev/null +++ b/iup/src/mot/iupmot_text.c @@ -0,0 +1,1165 @@ +/** \file + * \brief Text Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_mask.h" +#include "iup_drv.h" +#include "iup_array.h" +#include "iup_text.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +#ifndef XmIsSpinBox +#define XmIsSpinBox(w) XtIsSubclass(w, xmSpinBoxWidgetClass) +#endif + +#ifndef XmNwrap +#define XmNwrap "Nwrap" +#endif + +void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag) +{ + (void)ih; + (void)formattag; +} + +void iupdrvTextAddSpin(int *w, int h) +{ + *w += h/2; +} + +void iupdrvTextAddBorders(int *w, int *h) +{ + int border_size = 2*5; + (*w) += border_size; + (*h) += border_size; +} + +static void motTextGetLinColFromPosition(const char *str, int pos, int *lin, int *col ) +{ + int i; + + *lin = 0; + *col = 0; + + for (i=0; ihandle); + *pos = motTextSetLinColToPosition(str, lin, col); + XtFree(str); +} + +void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col) +{ + char *str = XmTextGetString(ih->handle); + motTextGetLinColFromPosition(str, pos, lin, col); + XtFree(str); +} + +static int motTextConvertXYToPos(Ihandle* ih, int x, int y) +{ + return XmTextXYToPos(ih->handle, x, y); +} + + +/*******************************************************************************************/ + + +static int motTextSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle) + { + XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding, + XmNmarginWidth, ih->data->horiz_padding, NULL); + } + return 0; +} + +static int motTextSetReadOnlyAttrib(Ihandle* ih, const char* value) +{ + XtVaSetValues(ih->handle, XmNeditable, iupStrBoolean(value)? False: True, NULL); + return 0; +} + +static char* motTextGetReadOnlyAttrib(Ihandle* ih) +{ + Boolean editable; + XtVaGetValues(ih->handle, XmNeditable, &editable, NULL); + if (editable) + return "YES"; + else + return "NO"; +} + +static int motTextSetInsertAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if (!value) + return 0; + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XmTextRemove(ih->handle); + XmTextInsert(ih->handle, XmTextGetInsertionPosition(ih->handle), (char*)value); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + + return 0; +} + +static int motTextSetSelectedTextAttrib(Ihandle* ih, const char* value) +{ + XmTextPosition start, end; + + if (!value) + return 0; + + if (XmTextGetSelectionPosition(ih->handle, &start, &end) && start!=end) + { + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XmTextReplace(ih->handle, start, end, (char*)value); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + + return 0; +} + +static char* motTextGetSelectedTextAttrib(Ihandle* ih) +{ + char* selectedtext = XmTextGetSelection(ih->handle); + char* str = iupStrGetMemoryCopy(selectedtext); + XtFree(selectedtext); + return str; +} + +static int motTextSetAppendAttrib(Ihandle* ih, const char* value) +{ + XmTextPosition pos; + if (!ih->handle) /* do not store the action before map */ + return 0; + pos = XmTextGetLastPosition(ih->handle); + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + if (ih->data->is_multiline && ih->data->append_newline) + XmTextInsert(ih->handle, pos, "\n"); + if (value) + XmTextInsert(ih->handle, pos+1, (char*)value); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + return 0; +} + +static int motTextSetSelectionAttrib(Ihandle* ih, const char* value) +{ + int start=1, end=1; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + XmTextClearSelection(ih->handle, CurrentTime); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + XmTextSetSelection(ih->handle, (XmTextPosition)0, (XmTextPosition)XmTextGetLastPosition(ih->handle), CurrentTime); + return 0; + } + + if (ih->data->is_multiline) + { + int lin_start=1, col_start=1, lin_end=1, col_end=1; + char *str; + + if (sscanf(value, "%d,%d:%d,%d", &lin_start, &col_start, &lin_end, &col_end)!=4) return 0; + if (lin_start<1 || col_start<1 || lin_end<1 || col_end<1) return 0; + + str = XmTextGetString(ih->handle); + start = motTextSetLinColToPosition(str, lin_start, col_start); + end = motTextSetLinColToPosition(str, lin_end, col_end); + XtFree(str); + } + else + { + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<1 || end<1) + return 0; + + start--; /* IUP starts at 1 */ + end--; + } + + /* end is inside the selection, in IUP is outside */ + end--; + + XmTextSetSelection(ih->handle, (XmTextPosition)start, (XmTextPosition)end, CurrentTime); + + return 0; +} + +static char* motTextGetSelectionAttrib(Ihandle* ih) +{ + XmTextPosition start = 0, end = 0; + char* str; + + if (!XmTextGetSelectionPosition(ih->handle, &start, &end) || start==end) + return NULL; + + str = iupStrGetMemory(100); + + /* end is inside the selection, in IUP is outside */ + end++; + + if (ih->data->is_multiline) + { + int start_col, start_lin, end_col, end_lin; + + char *value = XmTextGetString(ih->handle); + motTextGetLinColFromPosition(value, start, &start_lin, &start_col); + motTextGetLinColFromPosition(value, end, &end_lin, &end_col); + XtFree(value); + + sprintf(str,"%d,%d:%d,%d", start_lin, start_col, end_lin, end_col); + } + else + { + start++; /* IUP starts at 1 */ + end++; + sprintf(str, "%d:%d", (int)start, (int)end); + } + + return str; +} + +static int motTextSetSelectionPosAttrib(Ihandle* ih, const char* value) +{ + int start=0, end=0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + XmTextClearSelection(ih->handle, CurrentTime); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + XmTextSetSelection(ih->handle, (XmTextPosition)0, (XmTextPosition)XmTextGetLastPosition(ih->handle), CurrentTime); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<0 || end<0) + return 0; + + /* end is inside the selection, in IUP is outside */ + end--; + + XmTextSetSelection(ih->handle, (XmTextPosition)start, (XmTextPosition)end, CurrentTime); + + return 0; +} + +static char* motTextGetSelectionPosAttrib(Ihandle* ih) +{ + XmTextPosition start = 0, end = 0; + char* str; + + if (!XmTextGetSelectionPosition(ih->handle, &start, &end) || start==end) + return NULL; + + str = iupStrGetMemory(100); + + /* end is inside the selection, in IUP is outside */ + end++; + + sprintf(str, "%d:%d", (int)start, (int)end); + + return str; +} + +static int motTextSetCaretAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + + if (!value) + return 0; + + if (ih->data->is_multiline) + { + int lin = 1, col = 1; + char *str; + + iupStrToIntInt(value, &lin, &col, ','); + + str = XmTextGetString(ih->handle); + pos = motTextSetLinColToPosition(str, lin, col); + XtFree(str); + } + else + { + sscanf(value,"%i",&pos); + pos--; /* IUP starts at 1 */ + } + + XmTextSetInsertionPosition(ih->handle, (XmTextPosition)pos); + XmTextShowPosition(ih->handle, (XmTextPosition)pos); + + return 0; +} + +static char* motTextGetCaretAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(50); + + XmTextPosition pos = XmTextGetInsertionPosition(ih->handle); + + if (ih->data->is_multiline) + { + int col, lin; + + char *value = XmTextGetString(ih->handle); + motTextGetLinColFromPosition(value, pos, &lin, &col); + XtFree(value); + + sprintf(str, "%d,%d", lin, col); + } + else + { + pos++; /* IUP starts at 1 */ + sprintf(str, "%d", (int)pos); + } + + return str; +} + +static int motTextSetCaretPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + XmTextSetInsertionPosition(ih->handle, (XmTextPosition)pos); + XmTextShowPosition(ih->handle, (XmTextPosition)pos); + + return 0; +} + +static char* motTextGetCaretPosAttrib(Ihandle* ih) +{ + XmTextPosition pos = XmTextGetInsertionPosition(ih->handle); + char* str = iupStrGetMemory(50); + sprintf(str, "%d", (int)pos); + return str; +} + +static int motTextSetScrollToAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + + if (!value) + return 0; + + if (ih->data->is_multiline) + { + int lin = 1, col = 1, pos; + char* str; + + iupStrToIntInt(value, &lin, &col, ','); + if (lin < 1) lin = 1; + if (col < 1) col = 1; + + str = XmTextGetString(ih->handle); + pos = motTextSetLinColToPosition(str, lin, col); + XtFree(str); + } + else + { + sscanf(value,"%i",&pos); + if (pos < 1) pos = 1; + pos--; /* return to Motif referece */ + } + + XmTextShowPosition(ih->handle, (XmTextPosition)pos); + + return 0; +} + +static int motTextSetScrollToPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + XmTextShowPosition(ih->handle, (XmTextPosition)pos); + + return 0; +} + +static int motTextSetNCAttrib(Ihandle* ih, const char* value) +{ + if (!iupStrToInt(value, &ih->data->nc)) + ih->data->nc = INT_MAX; + if (ih->handle) + XtVaSetValues(ih->handle, XmNmaxLength, ih->data->nc, NULL); + return 0; +} + +static int motTextSetClipboardAttrib(Ihandle *ih, const char *value) +{ + if (iupStrEqualNoCase(value, "COPY")) + { + char *str = XmTextGetSelection(ih->handle); + if (!str) return 0; + + XmTextCopy(ih->handle, CurrentTime); + + /* do it also for the X clipboard */ + XStoreBytes(iupmot_display, str, strlen(str)+1); + XtFree(str); + } + else if (iupStrEqualNoCase(value, "CUT")) + { + char *str = XmTextGetSelection(ih->handle); + if (!str) return 0; + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + + XmTextCut(ih->handle, CurrentTime); + + /* do it also for the X clipboard */ + XStoreBytes(iupmot_display, str, strlen(str)+1); + XtFree(str); + XmTextRemove(ih->handle); + + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + else if (iupStrEqualNoCase(value, "PASTE")) + { + int size; + char* str = XFetchBytes(iupmot_display, &size); + if (!str) return 0; + + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + + XmTextPaste(ih->handle); /* TODO: this could force 2 pastes, check in CDE */ + + /* do it also for the X clipboard */ + XmTextRemove(ih->handle); + XmTextInsert(ih->handle, XmTextGetInsertionPosition(ih->handle), str); + XFree(str); + + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + else if (iupStrEqualNoCase(value, "CLEAR")) + { + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XmTextRemove(ih->handle); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + return 0; +} + +static int motTextSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (sb_win) + { + Pixel color; + + /* ignore given value for the scrollbars, must use only from parent */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + color = iupmotColorGetPixelStr(parent_value); + if (color != (Pixel)-1) + { + Widget sb = NULL; + + iupmotSetBgColor(sb_win, color); + + XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + + XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + } + } + + return iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */ +} + +static int motTextSetSpinMinAttrib(Ihandle* ih, const char* value) +{ + Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox)) + { + int min; + if (iupStrToInt(value, &min)) + { + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XtVaSetValues(ih->handle, XmNminimumValue, min, NULL); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + } + return 1; +} + +static int motTextSetSpinMaxAttrib(Ihandle* ih, const char* value) +{ + Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox)) + { + int max; + if (iupStrToInt(value, &max)) + { + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XtVaSetValues(ih->handle, XmNmaximumValue, max, NULL); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + } + return 1; +} + +static int motTextSetSpinIncAttrib(Ihandle* ih, const char* value) +{ + Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox)) + { + int inc; + if (iupStrToInt(value, &inc)) + { + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XtVaSetValues(ih->handle, XmNincrementValue, inc, NULL); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + } + } + return 1; +} + +static int motTextSetSpinValueAttrib(Ihandle* ih, const char* value) +{ + Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox)) + { + int pos; + if (iupStrToInt(value, &pos)) + { + char* value = NULL; + int min, max; + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XtVaGetValues(ih->handle, XmNminimumValue, &min, + XmNmaximumValue, &max, NULL); + if (pos < min) pos = min; + if (pos > max) pos = max; + if (iupAttribGet(ih, "_IUPMOT_SPIN_NOAUTO")) + value = XmTextGetString(ih->handle); + + XtVaSetValues(ih->handle, XmNposition, pos, NULL); + + if (value) + { + XmTextSetString(ih->handle, (char*)value); + XtFree(value); + } + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + return 1; + } + } + return 0; +} + +static char* motTextGetSpinValueAttrib(Ihandle* ih) +{ + Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox)) + { + int pos; + char *str = iupStrGetMemory(50); + XtVaGetValues(ih->handle, XmNposition, &pos, NULL); + sprintf(str, "%d", pos); + return str; + } + return NULL; +} + +static int motTextSetValueAttrib(Ihandle* ih, const char* value) +{ + if (!value) value = ""; + motTextSetSpinValueAttrib(ih, value); + /* disable callbacks */ + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XmTextSetString(ih->handle, (char*)value); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + return 0; +} + +static char* motTextGetValueAttrib(Ihandle* ih) +{ + char* value = XmTextGetString(ih->handle); + char* str = iupStrGetMemoryCopy(value); + XtFree(value); + return str; +} + + +/******************************************************************************/ + + +static void motTextSpinModifyVerifyCallback(Widget w, Ihandle* ih, XmSpinBoxCallbackStruct *cbs) +{ + IFni cb = (IFni) IupGetCallback(ih, "SPIN_CB"); + if (cb) + { + int ret = cb(ih, cbs->position); + if (ret == IUP_IGNORE) + { + cbs->doit = 1; + return; + } + } + (void)w; + + iupAttribSetStr(ih, "_IUPMOT_SPIN_DISABLE_TEXT_CB", "1"); +} + +static void motTextModifyVerifyCallback(Widget w, Ihandle *ih, XmTextVerifyPtr text) +{ + int start, end, key = 0; + char *value, *new_value, *insert_value; + KeySym motcode = 0; + IFnis cb; + + if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB")) + return; + + if (iupAttribGet(ih, "_IUPMOT_SPIN_DISABLE_TEXT_CB")) + { + if (iupAttribGet(ih, "_IUPMOT_SPIN_NOAUTO")) + text->doit = False; + + iupAttribSetStr(ih, "_IUPMOT_SPIN_DISABLE_TEXT_CB", NULL); + return; + } + + cb = (IFnis)IupGetCallback(ih, "ACTION"); + if (!cb && !ih->data->mask) + return; + + if (text->event && text->event->type == KeyPress) + { + unsigned int state = ((XKeyEvent*)text->event)->state; + if (state & ControlMask || /* Ctrl */ + state & Mod1Mask || + state & Mod5Mask || /* Alt */ + state & Mod4Mask) /* Apple/Win */ + return; + + motcode = XKeycodeToKeysym(iupmot_display, ((XKeyEvent*)text->event)->keycode, 0); + } + + value = XmTextGetString(ih->handle); + start = text->startPos; + end = text->endPos; + insert_value = text->text->ptr; + + if (motcode == XK_Delete) + { + new_value = value; + iupStrRemove(value, start, end, 1); + } + else if (motcode == XK_BackSpace) + { + new_value = value; + iupStrRemove(value, start, end, -1); + } + else + { + if (!value) + new_value = iupStrDup(insert_value); + else if (insert_value) + new_value = iupStrInsert(value, insert_value, start, end); + else + new_value = value; + } + + if (insert_value && insert_value[0]!=0 && insert_value[1]==0) + key = insert_value[0]; + + if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0) + { + if (new_value != value) free(new_value); + XtFree(value); + text->doit = False; /* abort processing */ + return; + } + + if (cb) + { + int cb_ret = cb(ih, key, (char*)new_value); + if (cb_ret==IUP_IGNORE) + text->doit = False; /* abort processing */ + else if (cb_ret==IUP_CLOSE) + { + IupExitLoop(); + text->doit = False; /* abort processing */ + } + else if (cb_ret!=0 && key!=0 && + cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE) + { + insert_value[0] = (char)cb_ret; /* replace key */ + } + } + + if (text->doit) + { + /* Spin is not automatically updated when you directly edit the text */ + Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox) && !iupAttribGet(ih, "_IUPMOT_SPIN_NOAUTO")) + { + int pos; + if (iupStrToInt(new_value, &pos)) + { + XmTextPosition caret_pos = text->currInsert; + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); + XtVaSetValues(ih->handle, XmNposition, pos, NULL); + iupAttribSetStr(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); + /* do not handle all situations, but handle the basic ones */ + if (text->startPos == text->endPos) /* insert */ + caret_pos++; + else if (text->startPos < text->endPos && text->startPos < text->currInsert) /* backspace */ + caret_pos--; + XmTextSetInsertionPosition(ih->handle, caret_pos); + text->doit = False; + } + } + } + + if (new_value != value) free(new_value); + XtFree(value); + (void)w; +} + +static void motTextMotionVerifyCallback(Widget w, Ihandle* ih, XmTextVerifyCallbackStruct* textverify) +{ + int col, lin, pos; + + IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB"); + if (!cb) return; + + pos = textverify->newInsert; + + if (ih->data->is_multiline) + { + char *value = XmTextGetString(ih->handle); + motTextGetLinColFromPosition(value, pos, &lin, &col); + XtFree(value); + } + else + { + col = pos; + col++; /* IUP starts at 1 */ + lin = 1; + } + + if (pos != ih->data->last_caret_pos) + { + ih->data->last_caret_pos = pos; + cb(ih, lin, col, pos); + } + + (void)w; +} + +static void motTextValueChangedCallback(Widget w, Ihandle* ih, XmAnyCallbackStruct* valuechanged) +{ + if (iupAttribGet(ih, "_IUPMOT_DISABLE_TEXT_CB")) + return; + + iupBaseCallValueChangedCb(ih); + + (void)valuechanged; + (void)w; +} + +static void motTextKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont) +{ + Widget spinbox; + + *cont = True; + iupmotKeyPressEvent(w, ih, (XEvent*)evt, cont); + if (*cont == False) + return; + + if (evt->state & ControlMask) /* Ctrl */ + { + KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + if (motcode == XK_c) + motTextSetClipboardAttrib(ih, "COPY"); + else if (motcode == XK_x) + motTextSetClipboardAttrib(ih, "CUT"); + else if (motcode == XK_v) + motTextSetClipboardAttrib(ih, "PASTE"); + else if (motcode == XK_a) + XmTextSetSelection(ih->handle, 0, XmTextGetLastPosition(ih->handle), CurrentTime); + } + + spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox)) + { + KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + if (motcode == XK_Left || motcode == XK_Right) + { + /* avoid spin increment using Left/Right arrows, + but must manually handle the new cursor position */ + XmTextPosition caret_pos = XmTextGetInsertionPosition(ih->handle); + XmTextSetInsertionPosition(ih->handle, (motcode == XK_Left)? caret_pos-1: caret_pos+1); + *cont = False; + } + } +} + + +/******************************************************************************/ + + +static void motTextLayoutUpdateMethod(Ihandle* ih) +{ + Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + if (spinbox && XmIsSpinBox(spinbox)) + { + XtVaSetValues(ih->handle, + XmNwidth, (XtArgVal)ih->currentwidth-ih->currentheight/2, + XmNheight, (XtArgVal)ih->currentheight, + NULL); + + XtVaSetValues(spinbox, + XmNx, (XtArgVal)ih->x, + XmNy, (XtArgVal)ih->y, + XmNwidth, (XtArgVal)ih->currentwidth, + XmNheight, (XtArgVal)ih->currentheight, + XmNarrowSize, ih->currentheight/2, + NULL); + } + else + iupdrvBaseLayoutUpdateMethod(ih); +} + +static int motTextMapMethod(Ihandle* ih) +{ + int num_args = 0; + Arg args[30]; + Widget parent = iupChildTreeGetNativeParentHandle(ih); + char* child_id = iupDialogGetChildIdStr(ih); + int spin = 0; + WidgetClass widget_class = xmTextWidgetClass; + + if (ih->data->is_multiline) + { + Widget sb_win; + int wordwrap = 0; + + if (iupAttribGetBoolean(ih, "WORDWRAP")) + { + wordwrap = 1; + ih->data->sb &= ~IUP_SB_HORIZ; /* must remove the horizontal scroolbar */ + } + + /******************************/ + /* Create the scrolled window */ + /******************************/ + + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAPPLICATION_DEFINED); + iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE); + iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmSTATIC); /* can NOT be XmAS_NEEDED because XmAPPLICATION_DEFINED */ + iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and text */ + iupmotSetArg(args, num_args, XmNborderWidth, 0); + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + + sb_win = XtCreateManagedWidget( + child_id, /* child identifier */ + xmScrolledWindowWidgetClass, /* widget class */ + parent, /* widget parent */ + args, num_args); + + if (!sb_win) + return IUP_ERROR; + + parent = sb_win; + child_id = "text"; + + num_args = 0; + iupmotSetArg(args, num_args, XmNeditMode, XmMULTI_LINE_EDIT); + if (wordwrap) + iupmotSetArg(args, num_args, XmNwordWrap, True); + } + else + { + widget_class = xmTextFieldWidgetClass; + + if (iupAttribGetBoolean(ih, "SPIN")) + { + Widget spinbox; + + num_args = 0; + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between spin and text */ + iupmotSetArg(args, num_args, XmNborderWidth, 0); + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + iupmotSetArg(args, num_args, XmNmarginHeight, 0); + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNarrowSize, 8); + + if (iupStrEqualNoCase(iupAttribGetStr(ih, "SPINALIGN"), "LEFT")) + iupmotSetArg(args, num_args, XmNarrowLayout, XmARROWS_BEGINNING); + else + iupmotSetArg(args, num_args, XmNarrowLayout, XmARROWS_END); + + spinbox = XtCreateManagedWidget( + child_id, /* child identifier */ + xmSpinBoxWidgetClass, /* widget class */ + parent, /* widget parent */ + args, num_args); + + if (!spinbox) + return IUP_ERROR; + + XtAddCallback(spinbox, XmNmodifyVerifyCallback, (XtCallbackProc)motTextSpinModifyVerifyCallback, (XtPointer)ih); + + parent = spinbox; + child_id = "text"; + spin = 1; + + if (!iupAttribGetBoolean(ih, "SPINAUTO")) + iupAttribSetStr(ih, "_IUPMOT_SPIN_NOAUTO", "1"); + } + + num_args = 0; + iupmotSetArg(args, num_args, XmNeditMode, XmSINGLE_LINE_EDIT); + + if (spin) + { + /* Spin Constraints */ + iupmotSetArg(args, num_args, XmNspinBoxChildType, XmNUMERIC); + iupmotSetArg(args, num_args, XmNminimumValue, 0); + iupmotSetArg(args, num_args, XmNmaximumValue, 100); + iupmotSetArg(args, num_args, XmNposition, 0); + + if (iupAttribGetBoolean(ih, "SPINWRAP")) + iupmotSetArg(args, num_args, XmNwrap, TRUE); + else + iupmotSetArg(args, num_args, XmNwrap, FALSE); + } + else + { + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + } + } + + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + iupmotSetArg(args, num_args, XmNhighlightThickness, 2); + iupmotSetArg(args, num_args, XmNverifyBell, False); + iupmotSetArg(args, num_args, XmNspacing, 0); + + if (iupAttribGetBoolean(ih, "BORDER")) + iupmotSetArg(args, num_args, XmNshadowThickness, 2); + else + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + + if (ih->data->is_multiline) + { + if (ih->data->sb & IUP_SB_HORIZ) + iupmotSetArg(args, num_args, XmNscrollHorizontal, True); + else + iupmotSetArg(args, num_args, XmNscrollHorizontal, False); + + if (ih->data->sb & IUP_SB_VERT) + iupmotSetArg(args, num_args, XmNscrollVertical, True); + else + iupmotSetArg(args, num_args, XmNscrollVertical, False); + } + + ih->handle = XtCreateManagedWidget( + child_id, /* child identifier */ + widget_class, /* widget class */ + parent, /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + if (ih->data->is_multiline) + { + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent); + XtVaSetValues(parent, XmNworkWindow, ih->handle, NULL); + } + else if (spin) + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent); + + XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)motTextKeyPressEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih); + + XtAddCallback(ih->handle, XmNmodifyVerifyCallback, (XtCallbackProc)motTextModifyVerifyCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNmotionVerifyCallback, (XtCallbackProc)motTextMotionVerifyCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motTextValueChangedCallback, (XtPointer)ih); + + /* Disable Drag Source */ + iupmotDisableDragSource(ih->handle); + + /* initialize the widget */ + if (ih->data->is_multiline || spin) + XtRealizeWidget(parent); + else + XtRealizeWidget(ih->handle); + + if (IupGetGlobal("_IUP_RESET_TXTCOLORS")) + { + iupmotSetGlobalColorAttrib(ih->handle, XmNbackground, "TXTBGCOLOR"); + iupmotSetGlobalColorAttrib(ih->handle, XmNforeground, "TXTFGCOLOR"); + IupSetGlobal("_IUP_RESET_TXTCOLORS", NULL); + } + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)motTextConvertXYToPos); + + return IUP_NOERROR; +} + +void iupdrvTextInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motTextMapMethod; + ic->LayoutUpdate = motTextLayoutUpdateMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motTextSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT); + + /* IupText only */ + iupClassRegisterAttribute(ic, "PADDING", iupTextGetPaddingAttrib, motTextSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "VALUE", motTextGetValueAttrib, motTextSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTEDTEXT", motTextGetSelectedTextAttrib, motTextSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTION", motTextGetSelectionAttrib, motTextSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTIONPOS", motTextGetSelectionPosAttrib, motTextSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARET", motTextGetCaretAttrib, motTextSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARETPOS", motTextGetCaretPosAttrib, motTextSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INSERT", NULL, motTextSetInsertAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPEND", NULL, motTextSetAppendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "READONLY", motTextGetReadOnlyAttrib, motTextSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "NC", iupTextGetNCAttrib, motTextSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, motTextSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FORMATTING", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* formatting not supported in Motif */ + iupClassRegisterAttribute(ic, "SCROLLTO", NULL, motTextSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, motTextSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINMIN", NULL, motTextSetSpinMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINMAX", NULL, motTextSetSpinMaxAttrib, IUPAF_SAMEASSYSTEM, "100", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPININC", NULL, motTextSetSpinIncAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINVALUE", motTextGetSpinValueAttrib, motTextSetSpinValueAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT); +} diff --git a/iup/src/mot/iupmot_timer.c b/iup/src/mot/iupmot_timer.c new file mode 100755 index 0000000..d23867e --- /dev/null +++ b/iup/src/mot/iupmot_timer.c @@ -0,0 +1,70 @@ +/** \file + * \brief Timer for the Motif Driver. + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include + +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_assert.h" +#include "iup_timer.h" + +#include "iupmot_drv.h" + + +static void motTimerProc(XtPointer client_data, XtIntervalId *id) +{ + Ihandle *ih = (Ihandle*)client_data; + Icallback cb; + (void)id; + + if (!iupObjectCheck(ih)) /* control could be destroyed before timer callback */ + return; + + ih->serial = -1; + /* we have to restart the timer everytime */ + iupdrvTimerRun(ih); + + cb = IupGetCallback(ih, "ACTION_CB"); + if (cb) + { + if (cb(ih)==IUP_CLOSE) + IupExitLoop(); + } +} + +void iupdrvTimerRun(Ihandle *ih) +{ + unsigned int time_ms; + + if (ih->serial > 0) /* timer already started */ + return; + + time_ms = iupAttribGetInt(ih, "TIME"); + if (time_ms > 0) + ih->serial = XtAppAddTimeOut(iupmot_appcontext, time_ms, motTimerProc, (XtPointer)ih); +} + +void iupdrvTimerStop(Ihandle* ih) +{ + if (ih->serial > 0) + { + XtRemoveTimeOut(ih->serial); + ih->serial = -1; + } +} + +void iupdrvTimerInitClass(Iclass* ic) +{ + (void)ic; +} diff --git a/iup/src/mot/iupmot_tips.c b/iup/src/mot/iupmot_tips.c new file mode 100755 index 0000000..25bdbea --- /dev/null +++ b/iup/src/mot/iupmot_tips.c @@ -0,0 +1,226 @@ +/** \file + * \brief Motif Driver TIPS Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include + +#include "iup.h" + +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +/* Default offset from cursor */ +#define TIP_X_OFFSET 12 +#define TIP_Y_OFFSET 12 + +typedef struct _Imottips +{ + Widget Dialog; + Widget Label; + XtIntervalId ShowTimerId; /* Timer: from enterwin to show tip */ + XtIntervalId HideTimerId; /* Timer: from visible to hide tip */ + unsigned long ShowInterval; /* Time for tipPopupTimerId */ + unsigned long HideInterval; /* Time for tipActiveTimerId */ + int Visible; + Ihandle* ih; +} Imottips; + +static Imottips mot_tips = {0, 0, 0, 0, 0, 0}; + +static void motTipsShow(void) +{ + Window root, child; + int cx, cy, x, y; + unsigned int keys; + char* value; + + XQueryPointer(iupmot_display, RootWindow(iupmot_display, iupmot_screen), + &root, &child, &x, &y, &cx, &cy, &keys); + + value = iupAttribGet(mot_tips.ih, "TIPRECT"); + if (value) + { + int x1, x2, y1, y2, wx = x, wy = y; + sscanf(value, "%d %d %d %d", &x1, &y1, &x2, &y2); + iupdrvScreenToClient(mot_tips.ih, &wx, &wy); + if (wx < x1 || wx > x2 || wy < y1 || wy > y2) + { + iupmotTipLeaveNotify(); + return; + } + } + + XtVaSetValues(mot_tips.Dialog, + XmNx, (XtArgVal)(x+TIP_X_OFFSET), + XmNy, (XtArgVal)(y+TIP_Y_OFFSET), + NULL); + + if (mot_tips.Visible) + XRaiseWindow(iupmot_display, XtWindow(mot_tips.Dialog)); + else + XtMapWidget(mot_tips.Dialog); + + mot_tips.ShowTimerId = (XtIntervalId) NULL; + mot_tips.Visible = TRUE; +} + +static void motTipsHide(void) +{ + mot_tips.HideTimerId = (XtIntervalId) NULL; + iupmotTipLeaveNotify(); +} + +static int motTipsSet(Ihandle *ih) +{ + char* tipText = iupAttribGet(ih, "TIP"); + if (!tipText) + return FALSE; + + if (!mot_tips.Dialog) + { + mot_tips.Dialog = XtVaAppCreateShell(" ", "tip", + overrideShellWidgetClass, iupmot_display, + XmNmappedWhenManaged, False, + NULL); + + mot_tips.Label = XtVaCreateManagedWidget("label tip", + xmLabelWidgetClass, mot_tips.Dialog, /* must use IupGetAttribute to use inheritance */ + XmNforeground, iupmotColorGetPixelStr(IupGetAttribute(ih, "TIPFGCOLOR")), + XmNbackground, iupmotColorGetPixelStr(IupGetAttribute(ih, "TIPBGCOLOR")), + NULL); + + XtRealizeWidget(mot_tips.Dialog); + } + + /* set label font */ + { + XmFontList fontlist = (XmFontList)iupmotGetFontListAttrib(ih); + char* value = iupAttribGetStr(ih, "TIPFONT"); + if (value) + { + if (iupStrEqualNoCase(value, "SYSTEM")) + fontlist = NULL; + else + fontlist = iupmotGetFontList(iupAttribGet(ih, "TIPFOUNDRY"), value); + } + + if (fontlist) + XtVaSetValues(mot_tips.Label, XmNfontList, fontlist, NULL); + } + + /* set label contents */ + iupmotSetString(mot_tips.Label, XmNlabelString, tipText); + + /* set label size */ + { + int lw = 0, lh = 0; + iupdrvFontGetMultiLineStringSize(ih, tipText, &lw, &lh); + + /* add room for margin */ + lw += 2*(2); + lh += 2*(2); + + XtVaSetValues(mot_tips.Label, + XmNwidth, (XtArgVal)lw, + XmNheight, (XtArgVal)lh, + NULL); + XtVaSetValues(mot_tips.Dialog, + XmNwidth, (XtArgVal)lw, + XmNheight, (XtArgVal)lh, + NULL); + } + + mot_tips.ShowTimerId = (XtIntervalId) NULL; + mot_tips.HideTimerId = (XtIntervalId) NULL; + mot_tips.Visible = FALSE; + mot_tips.ShowInterval = 500; /* 1/2 second to show */ + + { + int delay = IupGetInt(ih, "TIPDELAY"); /* must use IupGetInt to use inheritance */ + mot_tips.HideInterval = delay + mot_tips.ShowInterval; + } + + return TRUE; +} + +int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value) +{ + /* must use IupGetAttribute to use inheritance */ + if (!IupGetAttribute(ih, "TIP")) + return 0; + + if (iupStrBoolean(value)) + iupmotTipEnterNotify(ih); + else + iupmotTipLeaveNotify(); + + return 0; +} + +void iupmotTipEnterNotify(Ihandle *ih) +{ + iupmotTipLeaveNotify(); + + if (motTipsSet(ih) == FALSE) + return; + + mot_tips.ih = ih; + + mot_tips.ShowTimerId = XtAppAddTimeOut( /* EnterWin to Show */ + iupmot_appcontext, + mot_tips.ShowInterval, + (XtTimerCallbackProc)motTipsShow, + NULL); + mot_tips.HideTimerId = XtAppAddTimeOut( /* Visible to Hide */ + iupmot_appcontext, + mot_tips.HideInterval, + (XtTimerCallbackProc)motTipsHide, + NULL); +} + +void iupmotTipLeaveNotify(void) +{ + if (mot_tips.ShowTimerId) + { + XtRemoveTimeOut(mot_tips.ShowTimerId); + mot_tips.ShowTimerId = (XtIntervalId) NULL; + } + if (mot_tips.HideTimerId) + { + XtRemoveTimeOut(mot_tips.HideTimerId); + mot_tips.HideTimerId = (XtIntervalId) NULL; + } + if (mot_tips.Visible) + { + XtUnmapWidget(mot_tips.Dialog); + mot_tips.Visible = FALSE; + } +} + +void iupmotTipsFinish(void) +{ + if (mot_tips.Dialog) + { + XtDestroyWidget(mot_tips.Dialog); + memset(&mot_tips, 0, sizeof(Imottips)); + } +} + +int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value) +{ + /* implement this stub here because of the other drivers. */ + (void)ih; + (void)value; + return 1; +} diff --git a/iup/src/mot/iupmot_toggle.c b/iup/src/mot/iupmot_toggle.c new file mode 100755 index 0000000..b18f24d --- /dev/null +++ b/iup/src/mot/iupmot_toggle.c @@ -0,0 +1,469 @@ +/** \file + * \brief Toggle Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_toggle.h" +#include "iup_drv.h" +#include "iup_image.h" +#include "iup_key.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +void iupdrvToggleAddCheckBox(int *x, int *y) +{ + (*x) += 15+6+3; + if ((*y) < 15+6) (*y) = 12+6; /* minimum height */ + (*y) += 6; +} + + +/*********************************************************************************/ + + +static int motToggleSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_TEXT) + { + char* parent_value = iupAttribGetInheritNativeParent(ih, "BGCOLOR"); + if (!parent_value) + { + /* if not defined at a native parent, + then change the toggle button color to the given color instead using the default */ + if (iupdrvBaseSetBgColorAttrib(ih, value)) /* let XmChangeColor do its job */ + { + parent_value = IupGetGlobal("DLGBGCOLOR"); + XtVaSetValues(ih->handle, XmNbackground, iupmotColorGetPixelStr(parent_value), NULL); /* reset just the background */ + + if (ih->data->radio) + XtVaSetValues(ih->handle, XmNselectColor, iupmotColorGetPixel(0, 0, 0), NULL); + XtVaSetValues(ih->handle, XmNunselectColor, iupmotColorGetPixelStr(value), NULL); + return 1; + } + } + else + { + /* ignore given value, must use only from parent */ + if (iupdrvBaseSetBgColorAttrib(ih, parent_value)) + { + if (ih->data->radio) + XtVaSetValues(ih->handle, XmNselectColor, iupmotColorGetPixel(0, 0, 0), NULL); + XtVaSetValues(ih->handle, XmNunselectColor, iupmotColorGetPixelStr(parent_value), NULL); + return 1; + } + } + return 0; + } + else + return iupdrvBaseSetBgColorAttrib(ih, value); +} + +static int motToggleSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_TEXT) + { + Pixel color; + + /* ignore given value, must use only from parent */ + value = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + + color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + XtVaSetValues(ih->handle, XmNbackground, color, NULL); + return 1; + } + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + if (pixmap) + { + XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL); + return 1; + } + } + } + return 0; +} + +static int motToggleSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_TEXT) + { + iupmotSetMnemonicTitle(ih, value); + return 1; + } + + return 0; +} + +static int motToggleSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + unsigned char align; + char value1[30]="", value2[30]=""; + + if (ih->data->type == IUP_TOGGLE_TEXT) + return 0; + + iupStrToStrStr(value, value1, value2, ':'); /* value2 is ignored, NOT supported in Motif */ + + if (iupStrEqualNoCase(value1, "ARIGHT")) + align = XmALIGNMENT_END; + else if (iupStrEqualNoCase(value1, "ACENTER")) + align = XmALIGNMENT_CENTER; + else /* "ALEFT" */ + align = XmALIGNMENT_BEGINNING; + + XtVaSetValues (ih->handle, XmNalignment, align, NULL); + return 1; +} + +static int motToggleSetImageAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + iupmotSetPixmap(ih, value, XmNlabelPixmap, 0); + + if (!iupAttribGet(ih, "IMINACTIVE")) + { + /* if not active and IMINACTIVE is not defined + then automaticaly create one based on IMAGE */ + iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 1); /* make_inactive */ + } + return 1; + } + else + return 0; +} + +static int motToggleSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + iupmotSetPixmap(ih, value, XmNlabelInsensitivePixmap, 0); + return 1; + } + else + return 0; +} + +static int motToggleSetImPressAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + iupmotSetPixmap(ih, value, XmNselectPixmap, 0); + return 1; + } + else + return 0; +} + +static int motToggleSetValueAttrib(Ihandle* ih, const char* value) +{ + Ihandle *radio; + unsigned char check; + + if (iupStrEqualNoCase(value,"NOTDEF")) + check = XmINDETERMINATE; + else if (iupStrBoolean(value)) + check = XmSET; + else + check = XmUNSET; + + /* This is necessary because Motif toggle does not have support for radio. + It is implemented using an external RadioBox that we do not use. */ + radio = iupRadioFindToggleParent(ih); + if (radio) + { + Ihandle* last_tg; + unsigned char oldcheck; + + XtVaGetValues(ih->handle, XmNset, &oldcheck, NULL); + + last_tg = (Ihandle*)iupAttribGet(radio, "_IUPMOT_LASTTOGGLE"); + if (check) + { + if (iupObjectCheck(last_tg) && last_tg != ih) + XtVaSetValues(last_tg->handle, XmNset, XmUNSET, NULL); + iupAttribSetStr(radio, "_IUPMOT_LASTTOGGLE", (char*)ih); + } + + if (last_tg != ih && oldcheck != check) + XtVaSetValues(ih->handle, XmNset, check, NULL); + } + else + XtVaSetValues(ih->handle, XmNset, check, NULL); + + return 0; +} + +static char* motToggleGetValueAttrib(Ihandle* ih) +{ + unsigned char check = 0; + XtVaGetValues (ih->handle, XmNset, &check, NULL); + if (check == XmINDETERMINATE) + return "NOTDEF"; + else if (check == XmSET) + return "ON"; + else + return "OFF"; +} + +static int motToggleSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle && ih->data->type == IUP_TOGGLE_IMAGE) + { + XtVaSetValues(ih->handle, XmNmarginHeight, ih->data->vert_padding, + XmNmarginWidth, ih->data->horiz_padding, NULL); + } + return 0; +} + +static char* motToggleGetSelectColorAttrib(Ihandle* ih) +{ + unsigned char r, g, b; + Pixel color; + char* str = iupStrGetMemory(20); + XtVaGetValues(ih->handle, XmNselectColor, &color, NULL); + iupmotColorGetRGB(color, &r, &g, &b); + sprintf(str, "%d %d %d", (int)r, (int)g, (int)b); + return str; +} + +static int motToggleSetSelectColorAttrib(Ihandle* ih, const char *value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + XtVaSetValues(ih->handle, XmNselectColor, color, NULL); + return 1; +} + +static void motToggleValueChangedCallback(Widget w, Ihandle* ih, XmToggleButtonCallbackStruct* call_data) +{ + Ihandle *radio; + IFni cb; + int check = call_data->set; + + /* Must manually hide the tip if the toggle is pressed. */ + iupmotTipLeaveNotify(); + + /* This is necessary because Motif toggle does not have support for radio. + It is implemented using an external RadioBox that we do not use. */ + radio = iupRadioFindToggleParent(ih); + if (radio) + { + if (check) + { + Ihandle* last_tg = (Ihandle*)iupAttribGet(radio, "_IUPMOT_LASTTOGGLE"); + if (iupObjectCheck(last_tg) && last_tg != ih) + { + /* uncheck last toggle */ + XtVaSetValues(last_tg->handle, XmNset, XmUNSET, NULL); + + cb = (IFni) IupGetCallback(last_tg, "ACTION"); + if (cb && cb(last_tg, 0) == IUP_CLOSE) + IupExitLoop(); + + iupBaseCallValueChangedCb(last_tg); + } + iupAttribSetStr(radio, "_IUPMOT_LASTTOGGLE", (char*)ih); + + if (last_tg != ih) + { + cb = (IFni)IupGetCallback(ih, "ACTION"); + if (cb && cb (ih, 1) == IUP_CLOSE) + IupExitLoop(); + + iupBaseCallValueChangedCb(ih); + } + } + else + { + /* Force stay checked */ + XtVaSetValues(ih->handle, XmNset, XmSET, NULL); + } + } + else + { + if (check == XmINDETERMINATE) + check = -1; + + cb = (IFni)IupGetCallback(ih, "ACTION"); + if (cb) + { + if (cb(ih, check) == IUP_CLOSE) + IupExitLoop(); + } + + iupBaseCallValueChangedCb(ih); + } + + (void)w; +} + +static int motToggleMapMethod(Ihandle* ih) +{ + Ihandle* radio = iupRadioFindToggleParent(ih); + char* value; + int num_args = 0; + Arg args[40]; + + if (radio) + ih->data->radio = 1; + + value = iupAttribGet(ih, "IMAGE"); + if (value) + { + ih->data->type = IUP_TOGGLE_IMAGE; + iupmotSetArg(args, num_args, XmNlabelType, XmPIXMAP); + } + else + { + ih->data->type = IUP_TOGGLE_TEXT; + iupmotSetArg(args, num_args, XmNlabelType, XmSTRING); + } + + /* Core */ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + /* Primitive */ + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + iupmotSetArg(args, num_args, XmNhighlightThickness, 2); + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + /* Label */ + iupmotSetArg(args, num_args, XmNrecomputeSize, False); /* no automatic resize from text */ + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNmarginTop, 0); /* no extra margins */ + iupmotSetArg(args, num_args, XmNmarginLeft, 0); + iupmotSetArg(args, num_args, XmNmarginBottom, 0); + iupmotSetArg(args, num_args, XmNmarginRight, 0); + + if (radio) + { + iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_BOOLEAN); + iupmotSetArg(args, num_args, XmNindicatorType, XmONE_OF_MANY_ROUND); + + if (!iupAttribGet(radio, "_IUPMOT_LASTTOGGLE")) + { + /* this is the first toggle in the radio, and the last toggle with VALUE=ON */ + iupAttribSetStr(ih, "VALUE","ON"); + } + } + else + { + if (ih->data->type == IUP_TOGGLE_TEXT && iupAttribGetBoolean(ih, "3STATE")) + iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_INDETERMINATE); + else + iupmotSetArg(args, num_args, XmNtoggleMode, XmTOGGLE_BOOLEAN); + iupmotSetArg(args, num_args, XmNindicatorType, XmN_OF_MANY); + } + + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_NONE); + iupmotSetArg(args, num_args, XmNalignment, XmALIGNMENT_CENTER); + iupmotSetArg(args, num_args, XmNshadowThickness, 2); + } + else + { + iupmotSetArg(args, num_args, XmNspacing, 3); + iupmotSetArg(args, num_args, XmNindicatorOn, XmINDICATOR_CHECK_BOX); + iupmotSetArg(args, num_args, XmNalignment, XmALIGNMENT_BEGINNING); + if (radio) + { + iupmotSetArg(args, num_args, XmNindicatorSize, 13); + iupmotSetArg(args, num_args, XmNselectColor, iupmotColorGetPixel(0, 0, 0)); + } + else + iupmotSetArg(args, num_args, XmNindicatorSize, 15); + + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + iupmotSetArg(args, num_args, XmNdetailShadowThickness, 2); + } + + ih->handle = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + xmToggleButtonWidgetClass, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + + XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); + + XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motToggleValueChangedCallback, (XtPointer)ih); + + /* Disable Drag Source */ + iupmotDisableDragSource(ih->handle); + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + if (ih->data->type == IUP_TOGGLE_TEXT) + iupmotSetString(ih->handle, XmNlabelString, ""); + + return IUP_NOERROR; +} + +void iupdrvToggleInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motToggleMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", iupmotGetBgColorAttrib, motToggleSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motToggleSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iupdrvBaseSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", NULL, motToggleSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupToggle only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, motToggleSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ACENTER:ACENTER", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, motToggleSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, motToggleSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, motToggleSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", motToggleGetValueAttrib, motToggleSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTCOLOR", motToggleGetSelectColorAttrib, motToggleSetSelectColorAttrib, NULL, NULL, IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "PADDING", iupToggleGetPaddingAttrib, motToggleSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); +} diff --git a/iup/src/mot/iupmot_tree.c b/iup/src/mot/iupmot_tree.c new file mode 100755 index 0000000..eb230af --- /dev/null +++ b/iup/src/mot/iupmot_tree.c @@ -0,0 +1,2848 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_dialog.h" +#include "iup_layout.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_key.h" +#include "iup_image.h" +#include "iup_array.h" +#include "iup_tree.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +typedef struct _motTreeItemData +{ + Pixmap image, image_mask; + Pixmap image_expanded, image_expanded_mask; + unsigned char kind; + void* userdata; +} motTreeItemData; + + +static void motTreeShowEditField(Ihandle* ih, Widget wItem); +static int motTreeGetNodeId(Ihandle* ih, Widget wItem); + +typedef int (*motTreeNodeFunc)(Ihandle* ih, Widget wItem, void* userdata); + +static int motTreeForEach(Ihandle* ih, Widget wItem, motTreeNodeFunc func, void* userdata) +{ + WidgetList wItemChildList = NULL; + int i, numChild; + + if (!wItem) + wItem = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + if (!func(ih, wItem, userdata)) + return 0; + + numChild = XmContainerGetItemChildren(ih->handle, wItem, &wItemChildList); + for (i=0; idata->spacing); + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNviewType, XmSMALL_ICON); + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + iupmotSetArg(args, num_args, XmNtraversalOn, True); + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + + /* Get values to copy */ + XtVaGetValues(wItem, XmNlabelString, &title, + XmNuserData, &itemData, + XmNforeground, &fgcolor, + XmNsmallIconPixmap, &image, + XmNsmallIconMask, &mask, + XmNoutlineState, &state, + NULL); + + if (full_copy) /* during a full copy the userdata reference is not copied */ + { + /* create a new one */ + motTreeItemData* itemDataNew = malloc(sizeof(motTreeItemData)); + memcpy(itemDataNew, itemData, sizeof(motTreeItemData)); + itemDataNew->userdata = NULL; + itemData = itemDataNew; + } + + iupmotSetArg(args, num_args, XmNlabelString, title); + iupmotSetArg(args, num_args, XmNuserData, itemData); + iupmotSetArg(args, num_args, XmNforeground, fgcolor); + iupmotSetArg(args, num_args, XmNsmallIconPixmap, image); + iupmotSetArg(args, num_args, XmNsmallIconMask, mask); + iupmotSetArg(args, num_args, XmNoutlineState, state); + + iupmotSetArg(args, num_args, XmNentryParent, wParent); + iupmotSetArg(args, num_args, XmNpositionIndex, pos); + + XtVaGetValues(ih->handle, XmNbackground, &bgcolor, NULL); + iupmotSetArg(args, num_args, XmNbackground, bgcolor); + + wNewItem = XtCreateManagedWidget("icon", xmIconGadgetClass, ih->handle, args, num_args); + + /* Root always expanded */ + XtVaSetValues((Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"), XmNoutlineState, XmEXPANDED, NULL); + + XtRealizeWidget(wNewItem); + + return wNewItem; +} + +static void motTreeCopyChildren(Ihandle* ih, Widget wItemSrc, Widget wItemDst, int full_copy) +{ + WidgetList wItemChildList = NULL; + int i = 0; + int numChild = XmContainerGetItemChildren(ih->handle, wItemSrc, &wItemChildList); + while(i != numChild) + { + Widget wNewItem = motTreeCopyItem(ih, wItemChildList[i], wItemDst, i, full_copy); /* Use the same order they where enumerated */ + + /* Recursively transfer all the items */ + motTreeCopyChildren(ih, wItemChildList[i], wNewItem, full_copy); + + /* Go to next sibling item */ + i++; + } + + if (wItemChildList) XtFree((char*)wItemChildList); +} + +/* Copies all items in a branch to a new location. Returns the new branch node. */ +static Widget motTreeCopyNode(Ihandle* ih, Widget wItemSrc, Widget wItemDst, int full_copy) +{ + Widget wNewItem, wParent; + motTreeItemData *itemDataDst; + unsigned char stateDst; + int pos; + + XtVaGetValues(wItemDst, XmNoutlineState, &stateDst, + XmNuserData, &itemDataDst, + NULL); + + if (itemDataDst->kind == ITREE_BRANCH && stateDst == XmEXPANDED) + { + /* copy as first child of expanded branch */ + wParent = wItemDst; + pos = 0; + } + else + { + /* copy as next brother of item or collapsed branch */ + XtVaGetValues(wItemDst, XmNentryParent, &wParent, NULL); + XtVaGetValues(wItemDst, XmNpositionIndex, &pos, NULL); + pos++; + } + + wNewItem = motTreeCopyItem(ih, wItemSrc, wParent, pos, full_copy); + + motTreeCopyChildren(ih, wItemSrc, wNewItem, full_copy); + + return wNewItem; +} + +static void motTreeContainerDeselectAll(Ihandle *ih) +{ + XKeyEvent ev; + + memset(&ev, 0, sizeof(XKeyEvent)); + ev.type = KeyPress; + ev.display = XtDisplay(ih->handle); + ev.send_event = True; + ev.root = RootWindow(iupmot_display, iupmot_screen); + ev.time = clock()*CLOCKS_PER_SEC; + ev.window = XtWindow(ih->handle); + ev.state = ControlMask; + ev.keycode = XK_backslash; + ev.same_screen = True; + + XtCallActionProc(ih->handle, "ContainerDeselectAll", (XEvent*)&ev, 0, 0); +} + +static void motTreeContainerSelectAll(Ihandle *ih) +{ + XKeyEvent ev; + + memset(&ev, 0, sizeof(XKeyEvent)); + ev.type = KeyPress; + ev.display = XtDisplay(ih->handle); + ev.send_event = True; + ev.root = RootWindow(iupmot_display, iupmot_screen); + ev.time = clock()*CLOCKS_PER_SEC; + ev.window = XtWindow(ih->handle); + ev.state = ControlMask; + ev.keycode = XK_slash; + ev.same_screen = True; + + XtCallActionProc(ih->handle, "ContainerSelectAll", (XEvent*)&ev, 0, 0); +} + +static Widget motTreeGetLastVisibleNode(Ihandle* ih, Widget wItem) +{ + unsigned char itemState; + + XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL); + + if (itemState == XmEXPANDED) + { + WidgetList wChildrenTree = NULL; + int numChildren = XmContainerGetItemChildren(ih->handle, wItem, &wChildrenTree); + if(numChildren) + wItem = motTreeGetLastVisibleNode(ih, wChildrenTree[numChildren - 1]); + if (wChildrenTree) XtFree((char*)wChildrenTree); + } + + return wItem; +} + +static Widget motTreeFindVisibleNodeId(Ihandle* ih, WidgetList itemList, int numItems, Widget itemNode) +{ + Widget itemChild; + WidgetList itemChildList; + int i = 0; + int numChild; + unsigned char itemState; + + while(i != numItems) + { + /* ID control to traverse items */ + ih->data->id_control++; /* not the real id since it counts only the visible ones */ + + /* StateID founded! */ + if(itemList[i] == itemNode) + return itemList[i]; + + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + XtVaGetValues(itemList[i], XmNoutlineState, &itemState, NULL); + + /* The itemWidget has child and it is expanded (visible) */ + if (numChild && itemState == XmEXPANDED) + { + /* pass the list of children of this item */ + itemChild = motTreeFindVisibleNodeId(ih, itemChildList, numChild, itemNode); + + /* StateID founded! */ + if(itemChild) + { + XtFree((char*)itemChildList); + return itemChild; + } + } + + if (itemChildList) XtFree((char*)itemChildList); + /* Go to next sibling item */ + i++; + } + + return NULL; +} + +static Widget motTreeFindVisibleNodeFromId(Ihandle* ih, WidgetList itemList, int numItems) +{ + Widget itemChild; + WidgetList itemChildList; + int i = 0; + int numChild; + unsigned char itemState; + + while(i != numItems) + { + /* ID control to traverse items */ + ih->data->id_control--; /* not the real id since it counts only the visible ones */ + + /* StateID founded! */ + if(ih->data->id_control < 0) + return itemList[i]; + + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + XtVaGetValues(itemList[i], XmNoutlineState, &itemState, NULL); + + /* The itemWidget has child and it is expanded (visible) */ + if (numChild && itemState == XmEXPANDED) + { + /* pass the list of children of this item */ + itemChild = motTreeFindVisibleNodeFromId(ih, itemChildList, numChild); + + /* StateID founded! */ + if(ih->data->id_control < 0) + { + if (itemChildList) XtFree((char*)itemChildList); + return itemChild; + } + } + + if (itemChildList) XtFree((char*)itemChildList); + /* Go to next sibling item */ + i++; + } + + return NULL; +} + +static Widget motTreeGetNextVisibleNode(Ihandle* ih, Widget wRoot, Widget wItem) +{ + Widget wNext; + + ih->data->id_control = -1; + motTreeFindVisibleNodeId(ih, &wRoot, 1, wItem); + ih->data->id_control++; /* more 1 visible node */ + + wNext = motTreeFindVisibleNodeFromId(ih, &wRoot, 1); + + if (ih->data->id_control >= 0) + wNext = motTreeGetLastVisibleNode(ih, wRoot); + + return wNext; +} + +static Widget motTreeGetPreviousVisibleNode(Ihandle* ih, Widget wRoot, Widget wItem) +{ + ih->data->id_control = -1; + motTreeFindVisibleNodeId(ih, &wRoot, 1, wItem); + ih->data->id_control--; /* less 1 visible node */ + + if (ih->data->id_control < 0) + ih->data->id_control = 0; /* Begin of tree = Root id */ + + return motTreeFindVisibleNodeFromId(ih, &wRoot, 1); +} + +static void motTreeUpdateBgColor(Ihandle* ih, WidgetList itemList, int numItems, Pixel bgcolor) +{ + WidgetList itemChildList; + int i = 0; + int numChild; + + while(i != numItems) + { + XtVaSetValues(itemList[i], XmNbackground, bgcolor, NULL); + + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + if(numChild) + motTreeUpdateBgColor(ih, itemChildList, numChild, bgcolor); + if (itemChildList) XtFree((char*)itemChildList); + + /* Go to next sibling item */ + i++; + } +} + +static void motTreeUpdateImages(Ihandle* ih, WidgetList itemList, int numItems, int mode) +{ + motTreeItemData *itemData; + int i = 0; + + /* called when one of the default images is changed */ + + while(i != numItems) + { + /* Get node attributes */ + XtVaGetValues(itemList[i], XmNuserData, &itemData, NULL); + + if (itemData->kind == ITREE_BRANCH) + { + unsigned char itemState; + XtVaGetValues(itemList[i], XmNoutlineState, &itemState, NULL); + + if (itemState == XmEXPANDED) + { + if (mode == ITREE_UPDATEIMAGE_EXPANDED) + { + XtVaSetValues(itemList[i], XmNsmallIconPixmap, (itemData->image_expanded!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded: (Pixmap)ih->data->def_image_expanded, NULL); + XtVaSetValues(itemList[i], XmNsmallIconMask, (itemData->image_expanded_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded_mask: (Pixmap)ih->data->def_image_expanded_mask, NULL); + } + } + else + { + if (mode == ITREE_UPDATEIMAGE_COLLAPSED) + { + XtVaSetValues(itemList[i], XmNsmallIconPixmap, (itemData->image!=XmUNSPECIFIED_PIXMAP)? itemData->image: (Pixmap)ih->data->def_image_collapsed, NULL); + XtVaSetValues(itemList[i], XmNsmallIconMask, (itemData->image_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_mask: (Pixmap)ih->data->def_image_collapsed_mask, NULL); + } + } + + /* Recursively traverse child items */ + { + WidgetList itemChildList; + int numChild; + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + motTreeUpdateImages(ih, itemChildList, numChild, mode); + if (itemChildList) XtFree((char*)itemChildList); + } + } + else + { + if (mode == ITREE_UPDATEIMAGE_LEAF) + { + XtVaSetValues(itemList[i], XmNsmallIconPixmap, (itemData->image!=XmUNSPECIFIED_PIXMAP)? itemData->image: (Pixmap)ih->data->def_image_leaf, NULL); + XtVaSetValues(itemList[i], XmNsmallIconMask, (itemData->image_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_mask: (Pixmap)ih->data->def_image_leaf_mask, NULL); + } + } + + /* Go to next sibling node */ + i++; + } +} + +static int motTreeSelectFunc(Ihandle* ih, Widget wItem, int *select) +{ + int do_select = *select; + if (do_select == -1) + { + unsigned char isSelected; + XtVaGetValues(wItem, XmNvisualEmphasis, &isSelected, NULL); + do_select = (isSelected == XmSELECTED)? 0: 1; /* toggle */ + } + + if (do_select) + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + else + XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL); + + (void)ih; + return 1; +} + +static void motTreeInvertAllNodeMarking(Ihandle* ih) +{ + int select = -1; + motTreeForEach(ih, NULL, (motTreeNodeFunc)motTreeSelectFunc, &select); +} + +typedef struct _motTreeRange{ + Widget wItem1, wItem2; + char inside, clear; +}motTreeRange; + +static int motTreeSelectRangeFunc(Ihandle* ih, Widget wItem, motTreeRange* range) +{ + int end_range = 0; + + if (range->inside == 0) /* detect the range start */ + { + if (range->wItem1 == wItem) range->inside=1; + else if (range->wItem2 == wItem) range->inside=1; + } + else if (range->inside == 1) /* detect the range end */ + { + if (range->wItem1 == wItem) end_range=1; + else if (range->wItem2 == wItem) end_range=1; + } + + if (range->inside == 1) /* if inside, select */ + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + else if (range->clear) /* if outside and clear, unselect */ + XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL); + + if (end_range || (range->inside && range->wItem1==range->wItem2)) + range->inside=-1; /* update after selecting the node */ + + (void)ih; + return 1; +} + +static void motTreeSelectRange(Ihandle* ih, Widget wItem1, Widget wItem2, int clear) +{ + motTreeRange range; + range.wItem1 = wItem1; + range.wItem2 = wItem2; + range.inside = 0; + range.clear = (char)clear; + motTreeForEach(ih, NULL, (motTreeNodeFunc)motTreeSelectRangeFunc, &range); +} + +void motTreeExpandCollapseAllNodes(Ihandle* ih, WidgetList itemList, int numItems, unsigned char itemState) +{ + WidgetList itemChildList; + int numChild; + int i = 0; + + while(i != numItems) + { + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + + if(numChild) + { + XtVaSetValues(itemList[i], XmNoutlineState, itemState, NULL); + motTreeExpandCollapseAllNodes(ih, itemChildList, numChild, itemState); + } + + if (itemChildList) XtFree((char*)itemChildList); + /* Go to next sibling item */ + i++; + } +} + +static void motTreeDestroyItemData(Ihandle* ih, Widget wItem) +{ + motTreeItemData *itemData = NULL; + XtVaGetValues(wItem, XmNuserData, &itemData, NULL); + if (itemData) + { + IFnis cb = (IFnis)IupGetCallback(ih, "NODEREMOVED_CB"); + if (cb) cb(ih, motTreeGetNodeId(ih, wItem), (char*)itemData->userdata); + free(itemData); + XtVaSetValues(wItem, XmNuserData, NULL, NULL); + } +} + +static void motTreeRemoveChildren(Ihandle* ih, WidgetList itemList, int numItems, int del_userdata) +{ + WidgetList itemChildList; + int numChild; + int i = 0; + + while(i != numItems) + { + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + if (numChild) + motTreeRemoveChildren(ih, itemChildList, numChild, del_userdata); + + if (del_userdata) + motTreeDestroyItemData(ih, itemList[i]); + + XtDestroyWidget(itemList[i]); + + if (itemChildList) XtFree((char*)itemChildList); + /* Go to next sibling item */ + i++; + } +} + +static void motTreeRemoveNode(Ihandle* ih, Widget wItem, int del_userdata) +{ + WidgetList wChildList = NULL; + int numChild = XmContainerGetItemChildren(ih->handle, wItem, &wChildList); + if (numChild) + motTreeRemoveChildren(ih, wChildList, numChild, del_userdata); + if (del_userdata) + motTreeDestroyItemData(ih, wItem); + XtDestroyWidget(wItem); + if (wChildList) XtFree((char*)wChildList); +} + +static Widget motTreeFindNodeID(Ihandle* ih, WidgetList itemList, int numItems, Widget itemNode) +{ + Widget itemChild; + WidgetList itemChildList; + int i = 0; + int numChild; + + while(i != numItems) + { + /* ID control to traverse items */ + ih->data->id_control++; + + /* StateID founded! */ + if(itemList[i] == itemNode) + return itemList[i]; + + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + if(numChild) + { + /* pass the list of children of this item */ + itemChild = motTreeFindNodeID(ih, itemChildList, numChild, itemNode); + + /* StateID founded! */ + if(itemChild) + { + if (itemChildList) XtFree((char*)itemChildList); + return itemChild; + } + } + + if (itemChildList) XtFree((char*)itemChildList); + /* Go to next sibling item */ + i++; + } + + return NULL; +} + +static Widget motTreeFindNodeFromID(Ihandle* ih, WidgetList itemList, int numItems) +{ + Widget itemChild; + WidgetList itemChildList; + int i = 0; + int numChild; + + while(i != numItems) + { + /* ID control to traverse items */ + ih->data->id_control--; + + /* StateID founded! */ + if(ih->data->id_control < 0) + return itemList[i]; + + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + if(numChild) + { + /* pass the list of children of this item */ + itemChild = motTreeFindNodeFromID(ih, itemChildList, numChild); + + /* StateID founded! */ + if(ih->data->id_control < 0) + { + if (itemChildList) XtFree((char*)itemChildList); + return itemChild; + } + } + + if (itemChildList) XtFree((char*)itemChildList); + /* Go to next sibling item */ + i++; + } + + return NULL; +} + +static int motTreeGetNodeId(Ihandle* ih, Widget wItem) +{ + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + ih->data->id_control = -1; + if (motTreeFindNodeID(ih, &wRoot, 1, wItem)) + return ih->data->id_control; + else + return -1; +} + +static Widget motTreeFindUserDataID(Ihandle* ih, WidgetList itemList, int numItems, void* userdata) +{ + Widget itemChild; + WidgetList itemChildList; + motTreeItemData *itemData; + int i = 0; + int numChild; + + while(i != numItems) + { + /* ID control to traverse items */ + ih->data->id_control++; + + XtVaGetValues(itemList[i], XmNuserData, &itemData, NULL); + + /* StateID founded! */ + if(itemData->userdata == userdata) + return itemList[i]; + + /* Check whether we have child items */ + itemChildList = NULL; + numChild = XmContainerGetItemChildren(ih->handle, itemList[i], &itemChildList); + if(numChild) + { + /* pass the list of children of this item */ + itemChild = motTreeFindUserDataID(ih, itemChildList, numChild, userdata); + + /* StateID founded! */ + if (itemChild) + { + if (itemChildList) XtFree((char*)itemChildList); + return itemChild; + } + } + + if (itemChildList) XtFree((char*)itemChildList); + /* Go to next sibling item */ + i++; + } + + return NULL; +} + +static int motTreeGetUserDataId(Ihandle* ih, void* userdata) +{ + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + ih->data->id_control = -1; + if (motTreeFindUserDataID(ih, &wRoot, 1, userdata)) + return ih->data->id_control; + else + return -1; +} + +static void motTreeSetFocusNode(Ihandle* ih, Widget wItem) +{ + iupAttribSetStr(ih, "_IUPTREE_LAST_FOCUS", (char*)wItem); + XmProcessTraversal(wItem, XmTRAVERSE_CURRENT); +} + +static Widget motTreeGetFocusNode(Ihandle* ih) +{ + Widget wItem = XmGetFocusWidget(ih->handle); /* returns the focus in the dialog */ + if (wItem && XtParent(wItem) == ih->handle) /* is a node */ + return wItem; + + return (Widget)iupAttribGet(ih, "_IUPTREE_LAST_FOCUS"); +} + +static Widget motTreeFindNodeFromString(Ihandle* ih, const char* name_id) +{ + if (name_id[0]) + { + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + iupStrToInt(name_id, &ih->data->id_control); + return motTreeFindNodeFromID(ih, &wRoot, 1); + } + else + return motTreeGetFocusNode(ih); +} + +static void motTreeEnterLeaveWindowEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + if (iupAttribGet(ih, "_IUPTREE_EDITFIELD")) + return; + + /* usually when one Gadget is selected different than the previous one, + leave/enter events are generated. But we could not find the exact condition, + so this is a workaround. Some leave events will be lost. */ + if (evt->type == EnterNotify) + { + if (iupAttribGet(ih, "_IUPTREE_IGNORE_ENTERLEAVE")) + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_ENTERLEAVE", NULL); + return; + } + } + else if (evt->type == LeaveNotify) + { + if (iupAttribGet(ih, "_IUPTREE_IGNORE_ENTERLEAVE")) + return; + } + + iupmotEnterLeaveWindowEvent(w, ih, evt, cont); +} + +static void motTreeFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + unsigned char selpol; + Widget wItem = XmGetFocusWidget(w); /* returns the focus in the dialog */ + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + if (XtParent(wItem) == w) /* is a node */ + iupAttribSetStr(ih, "_IUPTREE_LAST_FOCUS", (char*)wItem); + + if (wItem == NULL || wItem == wRoot) + { + iupmotFocusChangeEvent(w, ih, evt, cont); + return; + } + + XtVaGetValues(w, XmNselectionPolicy, &selpol, NULL); + if (selpol != XmSINGLE_SELECT) + return; + + if (evt->type == FocusIn && !iupStrBoolean(IupGetGlobal("CONTROLKEY"))) + { + XtVaSetValues(w, XmNselectedObjects, NULL, NULL); + XtVaSetValues(w, XmNselectedObjectCount, 0, NULL); + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + } +} + +void iupdrvTreeAddNode(Ihandle* ih, const char* name_id, int kind, const char* title, int add) +{ + Widget wItemPrev = motTreeFindNodeFromString(ih, name_id); + Widget wNewItem; + XmString itemTitle; + motTreeItemData *itemData, *itemDataPrev; + Pixel bgcolor, fgcolor; + int kindPrev, num_args = 0; + Arg args[30]; + + if (!wItemPrev) + return; + + itemData = calloc(1, sizeof(motTreeItemData)); + itemData->image = XmUNSPECIFIED_PIXMAP; + itemData->image_expanded = XmUNSPECIFIED_PIXMAP; + itemData->image_mask = XmUNSPECIFIED_PIXMAP; + itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP; + itemData->kind = (unsigned char)kind; + + itemTitle = XmStringCreateLocalized((String)title); + + /* Get default colors */ + XtVaGetValues(ih->handle, XmNforeground, &fgcolor, NULL); + XtVaGetValues(ih->handle, XmNbackground, &bgcolor, NULL); + + /* Get the kind of previous item */ + XtVaGetValues(wItemPrev, XmNuserData, &itemDataPrev, NULL); + kindPrev = itemDataPrev->kind; + + if (kindPrev == ITREE_BRANCH && add) + { + /* wItemPrev is parent of the new item (firstchild of it) */ + iupmotSetArg(args, num_args, XmNentryParent, wItemPrev); + iupmotSetArg(args, num_args, XmNpositionIndex, 0); + } + else + { + /* wItemPrev is sibling of the new item (set its parent to the new item) */ + Widget wItemParent; + int pos; + + XtVaGetValues(wItemPrev, XmNentryParent, &wItemParent, NULL); + XtVaGetValues(wItemPrev, XmNpositionIndex, &pos, NULL); + + iupmotSetArg(args, num_args, XmNentryParent, wItemParent); + iupmotSetArg(args, num_args, XmNpositionIndex, pos+1); + } + + iupmotSetArg(args, num_args, XmNuserData, itemData); + iupmotSetArg(args, num_args, XmNforeground, fgcolor); + iupmotSetArg(args, num_args, XmNbackground, bgcolor); + iupmotSetArg(args, num_args, XmNmarginHeight, ih->data->spacing); + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNviewType, XmSMALL_ICON); + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + iupmotSetArg(args, num_args, XmNtraversalOn, True); + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + iupmotSetArg(args, num_args, XmNlabelString, itemTitle); + + if (kind == ITREE_BRANCH) + { + if (ih->data->add_expanded) + { + iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_expanded); + iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_expanded_mask); + } + else + { + iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_collapsed); + iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_collapsed_mask); + } + } + else + { + iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_leaf); + iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_leaf_mask); + } + + + wNewItem = XtCreateManagedWidget("icon", xmIconGadgetClass, ih->handle, args, num_args); + + if (kind == ITREE_BRANCH) + { + if (ih->data->add_expanded) + { + iupAttribSetStr(ih, "_IUP_IGNORE_BRANCHOPEN", "1"); + XtVaSetValues(wNewItem, XmNoutlineState, XmEXPANDED, NULL); + } + else + XtVaSetValues(wNewItem, XmNoutlineState, XmCOLLAPSED, NULL); + } + + /* Root always expanded */ + XtVaSetValues((Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"), XmNoutlineState, XmEXPANDED, NULL); + + XtRealizeWidget(wNewItem); + XmStringFree(itemTitle); +} + +static void motTreeAddRootNode(Ihandle* ih) +{ + Widget wRootItem; + motTreeItemData *itemData; + Pixel bgcolor, fgcolor; + int num_args = 0; + Arg args[30]; + + itemData = calloc(1, sizeof(motTreeItemData)); + itemData->image = XmUNSPECIFIED_PIXMAP; + itemData->image_expanded = XmUNSPECIFIED_PIXMAP; + itemData->image_mask = XmUNSPECIFIED_PIXMAP; + itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP; + itemData->kind = ITREE_BRANCH; + + /* Get default foreground color */ + XtVaGetValues(ih->handle, XmNforeground, &fgcolor, NULL); + XtVaGetValues(ih->handle, XmNbackground, &bgcolor, NULL); + + iupmotSetArg(args, num_args, XmNentryParent, NULL); + iupmotSetArg(args, num_args, XmNuserData, itemData); + iupmotSetArg(args, num_args, XmNforeground, fgcolor); + iupmotSetArg(args, num_args, XmNbackground, bgcolor); + iupmotSetArg(args, num_args, XmNoutlineState, XmEXPANDED); + iupmotSetArg(args, num_args, XmNmarginHeight, ih->data->spacing); + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNviewType, XmSMALL_ICON); + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + iupmotSetArg(args, num_args, XmNtraversalOn, True); + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + iupmotSetArg(args, num_args, XmNsmallIconPixmap, ih->data->def_image_expanded); + iupmotSetArg(args, num_args, XmNsmallIconMask, ih->data->def_image_expanded_mask); + + wRootItem = XtCreateManagedWidget("icon", xmIconGadgetClass, ih->handle, args, num_args); + + /* Select the new item */ + XtVaSetValues(wRootItem, XmNvisualEmphasis, XmSELECTED, NULL); + + XtRealizeWidget(wRootItem); + + /* Save the root node for later use */ + iupAttribSetStr(ih, "_IUPTREE_ROOTITEM", (char*)wRootItem); + + /* MarkStart node */ + iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)wRootItem); + + /* Set the default VALUE */ + /* In Motif this will set also the current focus */ + motTreeSetFocusNode(ih, wRootItem); +} + +/*****************************************************************************/ + +static int motTreeSetImageExpandedAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + motTreeItemData *itemData; + unsigned char itemState; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + XtVaGetValues(wItem, XmNuserData, &itemData, NULL); + XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL); + itemData->image_expanded = (Pixmap)iupImageGetImage(value, ih, 0); + if (!itemData->image_expanded) + { + itemData->image_expanded = XmUNSPECIFIED_PIXMAP; + itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP; + } + else + { + itemData->image_expanded_mask = (Pixmap)iupImageGetMask(value); + if (!itemData->image_expanded_mask) itemData->image_expanded_mask = XmUNSPECIFIED_PIXMAP; + } + + if (itemData->kind == ITREE_BRANCH && itemState == XmEXPANDED) + { + if (itemData->image_expanded == XmUNSPECIFIED_PIXMAP) + XtVaSetValues(wItem, XmNsmallIconPixmap, (Pixmap)ih->data->def_image_expanded, + XmNsmallIconMask, (Pixmap)ih->data->def_image_expanded_mask, + NULL); + else + XtVaSetValues(wItem, XmNsmallIconPixmap, itemData->image_expanded, + XmNsmallIconMask, itemData->image_expanded_mask, + NULL); + } + + return 1; +} + +static int motTreeSetImageAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + motTreeItemData *itemData; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + XtVaGetValues(wItem, XmNuserData, &itemData, NULL); + itemData->image = (Pixmap)iupImageGetImage(value, ih, 0); + if (!itemData->image) + { + itemData->image = XmUNSPECIFIED_PIXMAP; + itemData->image_mask = XmUNSPECIFIED_PIXMAP; + } + else + { + itemData->image_mask = (Pixmap)iupImageGetMask(value); + if (!itemData->image_mask) itemData->image_mask = XmUNSPECIFIED_PIXMAP; + } + + if (itemData->kind == ITREE_BRANCH) + { + unsigned char itemState; + XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL); + if (itemState == XmCOLLAPSED) + { + if (itemData->image == XmUNSPECIFIED_PIXMAP) + XtVaSetValues(wItem, XmNsmallIconPixmap, (Pixmap)ih->data->def_image_collapsed, + XmNsmallIconMask, (Pixmap)ih->data->def_image_collapsed_mask, + NULL); + else + XtVaSetValues(wItem, XmNsmallIconPixmap, itemData->image, + XmNsmallIconMask, itemData->image_mask, + NULL); + } + } + else + { + if (itemData->image == XmUNSPECIFIED_PIXMAP) + XtVaSetValues(wItem, XmNsmallIconPixmap, (Pixmap)ih->data->def_image_leaf, + XmNsmallIconMask, (Pixmap)ih->data->def_image_leaf_mask, + NULL); + else + XtVaSetValues(wItem, XmNsmallIconPixmap, itemData->image, + XmNsmallIconMask, itemData->image_mask, + NULL); + } + + return 1; +} + +static int motTreeSetImageBranchExpandedAttrib(Ihandle* ih, const char* value) +{ + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + ih->data->def_image_expanded = iupImageGetImage(value, ih, 0); + if (!ih->data->def_image_expanded) + { + ih->data->def_image_expanded = (void*)XmUNSPECIFIED_PIXMAP; + ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + else + { + ih->data->def_image_expanded_mask = iupImageGetMask(value); + if (!ih->data->def_image_expanded_mask) ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + + /* Update all images, starting at root node */ + motTreeUpdateImages(ih, &wRoot, 1, ITREE_UPDATEIMAGE_EXPANDED); + + return 1; +} + +static int motTreeSetImageBranchCollapsedAttrib(Ihandle* ih, const char* value) +{ + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + ih->data->def_image_collapsed = iupImageGetImage(value, ih, 0); + if (!ih->data->def_image_collapsed) + { + ih->data->def_image_collapsed = (void*)XmUNSPECIFIED_PIXMAP; + ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + else + { + ih->data->def_image_collapsed_mask = iupImageGetMask(value); + if (!ih->data->def_image_collapsed_mask) ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + + /* Update all images, starting at root node */ + motTreeUpdateImages(ih, &wRoot, 1, ITREE_UPDATEIMAGE_COLLAPSED); + + return 1; +} + +static int motTreeSetImageLeafAttrib(Ihandle* ih, const char* value) +{ + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + ih->data->def_image_leaf = iupImageGetImage(value, ih, 0); + if (!ih->data->def_image_leaf) + { + ih->data->def_image_leaf = (void*)XmUNSPECIFIED_PIXMAP; + ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + else + { + ih->data->def_image_leaf_mask = iupImageGetMask(value); + if (!ih->data->def_image_leaf_mask) ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + + /* Update all images, starting at root node */ + motTreeUpdateImages(ih, &wRoot, 1, ITREE_UPDATEIMAGE_LEAF); + + return 1; +} + +static char* motTreeGetStateAttrib(Ihandle* ih, const char* name_id) +{ + int hasChildren; + unsigned char itemState; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + XtVaGetValues(wItem, XmNnumChildren, &hasChildren, NULL); + XtVaGetValues(wItem, XmNoutlineState, &itemState, NULL); + + if (hasChildren) + { + if(itemState == XmEXPANDED) + return "EXPANDED"; + else + return "COLLAPSED"; + } + + return NULL; +} + +static int motTreeSetStateAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + if (iupStrEqualNoCase(value, "EXPANDED")) + XtVaSetValues(wItem, XmNoutlineState, XmEXPANDED, NULL); + else + XtVaSetValues(wItem, XmNoutlineState, XmCOLLAPSED, NULL); + + return 0; +} + +static char* motTreeGetColorAttrib(Ihandle* ih, const char* name_id) +{ + unsigned char r, g, b; + Pixel color; + char* str; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + + XtVaGetValues(wItem, XmNforeground, &color, NULL); + iupmotColorGetRGB(color, &r, &g, &b); + + str = iupStrGetMemory(20); + sprintf(str, "%d %d %d", (int)r, (int)g, (int)b); + return str; +} + +static int motTreeSetColorAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + Pixel color; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + XtVaSetValues(wItem, XmNforeground, color, NULL); + return 0; +} + +static char* motTreeGetDepthAttrib(Ihandle* ih, const char* name_id) +{ + Widget wRoot; + int dep = 0; + char* depth; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + + wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + while((wRoot != wItem) && (wItem != NULL)) + { + XtVaGetValues(wItem, XmNentryParent, &wItem, NULL); + dep++; + } + + depth = iupStrGetMemory(10); + sprintf(depth, "%d", dep); + return depth; +} + +static int motTreeSetMoveNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + Widget wItemDst, wParent, wItemSrc; + + if (!ih->handle) /* do not store the action before map */ + return 0; + wItemSrc = motTreeFindNodeFromString(ih, name_id); + if (!wItemSrc) + return 0; + wItemDst = motTreeFindNodeFromString(ih, value); + if (!wItemDst) + return 0; + + /* If Drag item is an ancestor of Drop item then return */ + wParent = wItemDst; + while(wParent) + { + XtVaGetValues(wParent, XmNentryParent, &wParent, NULL); + if (wParent == wItemSrc) + return 0; + } + + /* Copying the node and its children to the new position */ + motTreeCopyNode(ih, wItemSrc, wItemDst, 0); /* not a full copy, preserve user data */ + + /* Deleting the node (and its children) inserted into the old position */ + motTreeRemoveNode(ih, wItemSrc, 0); /* do not delete the user data, we copy the references in CopyNode */ + + return 0; +} + +static int motTreeSetCopyNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + Widget wItemDst, wParent, wItemSrc; + + if (!ih->handle) /* do not store the action before map */ + return 0; + wItemSrc = motTreeFindNodeFromString(ih, name_id); + if (!wItemSrc) + return 0; + wItemDst = motTreeFindNodeFromString(ih, value); + if (!wItemDst) + return 0; + + /* If Drag item is an ancestor of Drop item then return */ + wParent = wItemDst; + while(wParent) + { + XtVaGetValues(wParent, XmNentryParent, &wParent, NULL); + if (wParent == wItemSrc) + return 0; + } + + /* Copying the node and its children to the new position */ + motTreeCopyNode(ih, wItemSrc, wItemDst, 1); + + return 0; +} + +static char* motTreeGetParentAttrib(Ihandle* ih, const char* name_id) +{ + Widget wItemParent; + char* str; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + + /* get the parent item */ + XtVaGetValues(wItem, XmNentryParent, &wItemParent, NULL); + if (!wItemParent) + return NULL; + + str = iupStrGetMemory(10); + sprintf(str, "%d", motTreeGetNodeId(ih, wItemParent)); + return str; +} + +static char* motTreeGetChildCountAttrib(Ihandle* ih, const char* name_id) +{ + char* str; + WidgetList wList = NULL; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + + str = iupStrGetMemory(10); + sprintf(str, "%d", XmContainerGetItemChildren(ih->handle, wItem, &wList)); + if (wList) XtFree((char*)wList); + return str; +} + +static int motTreeCount(Ihandle* ih, Widget wItem) +{ + WidgetList wList = NULL; + int i, count = 0; + int childCount = XmContainerGetItemChildren(ih->handle, wItem, &wList); + count++; + for (i=0; ikind == ITREE_BRANCH) + return "BRANCH"; + else + return "LEAF"; +} + +static char* motTreeGetValueAttrib(Ihandle* ih) +{ + char* str; + Widget wItem = motTreeGetFocusNode(ih); + if (!wItem) + return "0"; /* default VALUE is root */ + + str = iupStrGetMemory(10); + sprintf(str, "%d", motTreeGetNodeId(ih, wItem)); + return str; +} + +static int motTreeSetMarkAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->mark_mode==ITREE_MARK_SINGLE) + return 0; + + if(iupStrEqualNoCase(value, "CLEARALL")) + motTreeContainerDeselectAll(ih); + else if(iupStrEqualNoCase(value, "MARKALL")) + motTreeContainerSelectAll(ih); + else if(iupStrEqualNoCase(value, "INVERTALL")) /* INVERTALL *MUST* appear before INVERT, or else INVERTALL will never be called. */ + motTreeInvertAllNodeMarking(ih); + else if(iupStrEqualPartial(value, "INVERT")) + { + unsigned char isSelected; + Widget wItem = motTreeFindNodeFromString(ih, &value[strlen("INVERT")]); + if (!wItem) + return 0; + + XtVaGetValues(wItem, XmNvisualEmphasis, &isSelected, NULL); + if (isSelected == XmSELECTED) + XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL); + else + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + } + else if(iupStrEqualNoCase(value, "BLOCK")) + { + Widget wItem = (Widget)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE"); + Widget wFocusItem = motTreeGetFocusNode(ih); + if(!wFocusItem || !wItem) + return 0; + motTreeSelectRange(ih, wFocusItem, wItem, 0); + } + else + { + Widget wItem1, wItem2; + char str1[50], str2[50]; + if (iupStrToStrStr(value, str1, str2, '-')!=2) + return 0; + + wItem1 = motTreeFindNodeFromString(ih, str1); + if (!wItem1) + return 0; + wItem2 = motTreeFindNodeFromString(ih, str2); + if (!wItem2) + return 0; + + motTreeSelectRange(ih, wItem1, wItem2, 0); + } + + return 1; +} + +static int motTreeSetValueAttrib(Ihandle* ih, const char* value) +{ + Widget wRoot, wItem; + + if (motTreeSetMarkAttrib(ih, value)) + return 0; + + wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + if (iupStrEqualNoCase(value, "ROOT")) + wItem = wRoot; + else if(iupStrEqualNoCase(value, "LAST")) + wItem = motTreeGetLastVisibleNode(ih, wRoot); + else if(iupStrEqualNoCase(value, "PGUP")) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + if(!wItemFocus) + return 0; + + ih->data->id_control = -1; + motTreeFindVisibleNodeId(ih, &wRoot, 1, wItemFocus); + ih->data->id_control -= 10; /* less 10 visible nodes */ + + if(ih->data->id_control < 0) + ih->data->id_control = 0; /* Begin of tree = Root id */ + + wItem = motTreeFindVisibleNodeFromId(ih, &wRoot, 1); + } + else if(iupStrEqualNoCase(value, "PGDN")) + { + Widget wNext, wItemFocus; + + wItemFocus = motTreeGetFocusNode(ih); + if(!wItemFocus) + return 0; + + ih->data->id_control = -1; + motTreeFindVisibleNodeId(ih, &wRoot, 1, wItemFocus); + ih->data->id_control += 10; /* more 10 visible nodes */ + + wNext = motTreeFindVisibleNodeFromId(ih, &wRoot, 1); + + if (ih->data->id_control >= 0) + wNext = motTreeGetLastVisibleNode(ih, wRoot); + + wItem = wNext; + } + else if(iupStrEqualNoCase(value, "NEXT")) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + if (!wItemFocus) + return 0; + + wItem = motTreeGetNextVisibleNode(ih, wRoot, wItemFocus); + } + else if(iupStrEqualNoCase(value, "PREVIOUS")) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + if(!wItemFocus) + return 0; + + wItem = motTreeGetPreviousVisibleNode(ih, wRoot, wItemFocus); + } + else + wItem = motTreeFindNodeFromString(ih, value); + + if (!wItem) + return 0; + + /* select */ + if (ih->data->mark_mode==ITREE_MARK_SINGLE) + { + /* clear previous selection */ + XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL); + XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL); + + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + } + + /* set focus (will scroll to visible) */ + motTreeSetFocusNode(ih, wItem); + + iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", motTreeGetNodeId(ih, wItem)); + + return 0; +} + +static int motTreeSetMarkStartAttrib(Ihandle* ih, const char* name_id) +{ + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)wItem); + + return 1; +} + +static char* motTreeGetMarkedAttrib(Ihandle* ih, const char* name_id) +{ + unsigned char isSelected; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + + XtVaGetValues(wItem, XmNvisualEmphasis, &isSelected, NULL); + + if(isSelected == XmSELECTED) + return "YES"; + else + return "NO"; +} + +static int motTreeSetMarkedAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + if (iupStrBoolean(value)) + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + else + XtVaSetValues(wItem, XmNvisualEmphasis, XmNOT_SELECTED, NULL); + + return 0; +} + +static char* motTreeGetTitle(Widget wItem) +{ + char *title; + XmString itemTitle; + XtVaGetValues(wItem, XmNlabelString, &itemTitle, NULL); + title = iupmotConvertString(itemTitle); + XmStringFree(itemTitle); + return title; +} + +static char* motTreeGetTitleAttrib(Ihandle* ih, const char* name_id) +{ + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + return motTreeGetTitle(wItem); +} + +static int motTreeSetTitleAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + iupmotSetString(wItem, XmNlabelString, value); + + return 0; +} + +static int motTreeSetTitleFontAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + XmFontList fontlist = NULL; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + if (value) + { + char attr[20]; + sprintf(attr, "TITLEFOUNDRY%s", name_id); + fontlist = iupmotGetFontList(iupAttribGet(ih, attr), value); + } + XtVaSetValues(wItem, XmNrenderTable, fontlist, NULL); + + return 0; +} + +static char* motTreeGetTitleFontAttrib(Ihandle* ih, const char* name_id) +{ + XmFontList fontlist; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + + XtVaGetValues(wItem, XmNrenderTable, &fontlist, NULL); + return iupmotFindFontList(fontlist); +} + +static char* motTreeGetFindUserDataAttrib(Ihandle* ih, const char* name_id) +{ + int id; + char* str = (char*)(name_id+1); /* skip ':' */ + void* userdata = NULL; + if (sscanf(str, "%p", &userdata)!=1) + return NULL; + id = motTreeGetUserDataId(ih, userdata); + if (id == -1) + return NULL; + str = iupStrGetMemory(16); + sprintf(str, "%d", id); + return str; +} + +static char* motTreeGetUserDataAttrib(Ihandle* ih, const char* name_id) +{ + motTreeItemData *itemData; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return NULL; + + XtVaGetValues(wItem, XmNuserData, &itemData, NULL); + + return itemData->userdata; +} + +static int motTreeSetUserDataAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + motTreeItemData *itemData; + Widget wItem = motTreeFindNodeFromString(ih, name_id); + if (!wItem) + return 0; + + XtVaGetValues(wItem, XmNuserData, &itemData, NULL); + itemData->userdata = (void*)value; + + return 0; +} + +static int motTreeSetRenameAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->show_rename) + { + IFni cbShowRename = (IFni)IupGetCallback(ih, "SHOWRENAME_CB"); + Widget wItemFocus = motTreeGetFocusNode(ih); + if (cbShowRename) + cbShowRename(ih, motTreeGetNodeId(ih, wItemFocus)); + motTreeShowEditField(ih, wItemFocus); + } + else + { + IFnis cbRenameNode = (IFnis)IupGetCallback(ih, "RENAMENODE_CB"); + if (cbRenameNode) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + cbRenameNode(ih, motTreeGetNodeId(ih, wItemFocus), motTreeGetTitle(wItemFocus)); + } + } + + (void)value; + return 0; +} + +static int motTreeSetDelNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if(iupStrEqualNoCase(value, "SELECTED")) /* selected here means the specified one */ + { + Widget wItem = motTreeFindNodeFromString(ih, name_id); + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + /* the root node can't be deleted */ + if(!wItem || wItem == wRoot) /* root is the unique child */ + return 0; + + /* deleting the specified node (and it's children) */ + motTreeRemoveNode(ih, wItem, 1); + } + else if(iupStrEqualNoCase(value, "CHILDREN")) /* children of the specified one */ + { + Widget wItem = motTreeFindNodeFromString(ih, name_id); + + if(!wItem) + return 0; + + { + /* deleting the selected node's children only */ + WidgetList wItemList = NULL; + int numChild = XmContainerGetItemChildren(ih->handle, wItem, &wItemList); + if(numChild) + motTreeRemoveChildren(ih, wItemList, numChild, 1); + if (wItemList) XtFree((char*)wItemList); + } + } + else if(iupStrEqualNoCase(value, "MARKED")) /* Delete the array of marked nodes */ + { + WidgetList wSelectedItemList = NULL; + Widget wRoot; + int countItems, i; + + XtVaGetValues(ih->handle, XmNselectedObjects, &wSelectedItemList, + XmNselectedObjectCount, &countItems, NULL); + + wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + for(i = 0; i < countItems; i++) + { + int ok = XmIsIconGadget(wSelectedItemList[i]); + if ((wSelectedItemList[i] != wRoot) && ok) /* the root node can't be deleted */ + motTreeRemoveNode(ih, wSelectedItemList[i], 1); + } + } + + return 0; +} + +static char* motTreeGetIndentationAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(255); + Dimension indent; + XtVaGetValues(ih->handle, XmNoutlineIndentation, &indent, NULL); + sprintf(str, "%d", (int)indent); + return str; +} + +static int motTreeSetIndentationAttrib(Ihandle* ih, const char* value) +{ + int indent; + if (iupStrToInt(value, &indent)) + XtVaSetValues(ih->handle, XmNoutlineIndentation, (Dimension)indent, NULL); + return 0; +} + +static int motTreeSetTopItemAttrib(Ihandle* ih, const char* value) +{ + Widget wItem = motTreeFindNodeFromString(ih, value); + Widget sb_win; + Widget wItemParent; + + if (!wItem) + return 0; + + /* expand all parents */ + XtVaGetValues(wItem, XmNentryParent, &wItemParent, NULL); + while(wItemParent) + { + XtVaSetValues(wItemParent, XmNoutlineState, XmEXPANDED, NULL); + XtVaGetValues(wItemParent, XmNentryParent, &wItemParent, NULL); + } + + sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + XmScrollVisible(sb_win, wItem, 0, 0); + + return 0; +} + +static int motTreeSpacingFunc(Ihandle* ih, Widget wItem, void *data) +{ + XtVaSetValues(wItem, XmNmarginHeight, ih->data->spacing, NULL); + (void)data; + return 1; +} + +static int motTreeSetSpacingAttrib(Ihandle* ih, const char* value) +{ + if (!iupStrToInt(value, &ih->data->spacing)) + ih->data->spacing = 1; + + if (ih->data->spacing < 1) + ih->data->spacing = 1; + + if (ih->handle) + { + motTreeForEach(ih, NULL, (motTreeNodeFunc)motTreeSpacingFunc, 0); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int motTreeSetExpandAllAttrib(Ihandle* ih, const char* value) +{ + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + if (iupStrBoolean(value)) + motTreeExpandCollapseAllNodes(ih, &wRoot, 1, XmEXPANDED); + else + { + motTreeExpandCollapseAllNodes(ih, &wRoot, 1, XmCOLLAPSED); + + /* The root node is always expanded */ + XtVaSetValues((Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"), XmNoutlineState, XmEXPANDED, NULL); + } + + return 0; +} + +static int motTreeSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + Pixel color; + + /* ignore given value for the scrollbars, must use only from parent */ + char* parent_value = iupBaseNativeParentGetBgColor(ih); + + color = iupmotColorGetPixelStr(parent_value); + if (color != (Pixel)-1) + { + Widget sb = NULL; + + iupmotSetBgColor(sb_win, color); + + XtVaGetValues(sb_win, XmNverticalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + + XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb, NULL); + if (sb) iupmotSetBgColor(sb, color); + } + + color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + Widget wRoot; + Widget clipwin = NULL; + + XtVaGetValues(sb_win, XmNclipWindow, &clipwin, NULL); + if (clipwin) iupmotSetBgColor(clipwin, color); + + wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + /* Update all children, starting at root node */ + motTreeUpdateBgColor(ih, &wRoot, 1, color); + } + + iupdrvBaseSetBgColorAttrib(ih, value); /* use given value for contents */ + + /* update internal image cache */ + iupTreeUpdateImages(ih); + + return 1; +} + +static int motTreeSetFgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + XtVaSetValues(ih->handle, XmNforeground, color, NULL); + + return 1; +} + +void iupdrvTreeUpdateMarkMode(Ihandle *ih) +{ + XtVaSetValues(ih->handle, XmNselectionPolicy, (ih->data->mark_mode==ITREE_MARK_SINGLE)? XmSINGLE_SELECT: XmEXTENDED_SELECT, NULL); +} + +/************************************************************************************************/ + + +static void motTreeSetRenameCaretPos(Widget cbEdit, const char* value) +{ + int pos = 1; + + if (iupStrToInt(value, &pos)) + { + if (pos < 1) pos = 1; + pos--; /* IUP starts at 1 */ + + XtVaSetValues(cbEdit, XmNcursorPosition, pos, NULL); + } +} + +static void motTreeSetRenameSelectionPos(Widget cbEdit, const char* value) +{ + int start = 1, end = 1; + + if (iupStrToIntInt(value, &start, &end, ':') != 2) + return; + + if(start < 1 || end < 1) + return; + + start--; /* IUP starts at 1 */ + end--; + + XmTextSetSelection(cbEdit, start, end, CurrentTime); +} + +/*****************************************************************************/ + +static int motTreeCallBranchCloseCb(Ihandle* ih, Widget wItem) +{ + IFni cbBranchClose = (IFni)IupGetCallback(ih, "BRANCHCLOSE_CB"); + + if(cbBranchClose) + return cbBranchClose(ih, motTreeGetNodeId(ih, wItem)); + + return IUP_DEFAULT; +} + +static int motTreeCallBranchOpenCb(Ihandle* ih, Widget wItem) +{ + IFni cbBranchOpen; + + if (iupAttribGet(ih, "_IUP_IGNORE_BRANCHOPEN")) + { + iupAttribSetStr(ih, "_IUP_IGNORE_BRANCHOPEN", NULL); + return IUP_DEFAULT; + } + + cbBranchOpen = (IFni)IupGetCallback(ih, "BRANCHOPEN_CB"); + if (cbBranchOpen) + return cbBranchOpen(ih, motTreeGetNodeId(ih, wItem)); + + return IUP_DEFAULT; +} + +static void motTreeCallMultiSelectionCb(Ihandle* ih) +{ + IFnIi cbMulti = (IFnIi)IupGetCallback(ih, "MULTISELECTION_CB"); + IFnii cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB"); + WidgetList wSelectedItemList = NULL; + Widget wRoot; + int countItems; + + wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + + XtVaGetValues(ih->handle, XmNselectedObjects, &wSelectedItemList, + XmNselectedObjectCount, &countItems, NULL); + if (countItems == 0) + return; + + if (cbMulti || cbSelec) + { + int* id_rowItem = malloc(sizeof(int) * countItems); + int i = 0; + + for(i = 0; i < countItems; i++) + id_rowItem[i] = motTreeGetNodeId(ih, wSelectedItemList[i]); + + if (cbMulti) + cbMulti(ih, id_rowItem, countItems); + else + { + for (i=0; ihandle, (Position)x, (Position)y); + if (wItem) + return motTreeGetNodeId(ih, wItem); + return -1; +} + +static void motTreeCallRightClickCb(Ihandle* ih, int x, int y) +{ + IFni cbRightClick = (IFni)IupGetCallback(ih, "RIGHTCLICK_CB"); + if (cbRightClick) + { + int id = motTreeConvertXYToPos(ih, x, y); + if (id != -1) + cbRightClick(ih, id); + } +} + +static void motTreeCallRenameCb(Ihandle* ih) +{ + IFnis cbRename; + Widget wItem, wEdit; + int ignore = 0; + String title = NULL; + + wItem = (Widget)iupAttribGet(ih, "_IUPTREE_SELECTED"); + wEdit = (Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD"); + + XtVaGetValues((Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD"), XmNvalue, &title, NULL); + + cbRename = (IFnis)IupGetCallback(ih, "RENAME_CB"); + if (cbRename) + { + if (cbRename(ih, motTreeGetNodeId(ih, wItem), title) == IUP_IGNORE) + ignore = 1; + } + + if (!ignore) + iupmotSetString(wItem, XmNlabelString, title); + + XtDestroyWidget(wEdit); + + iupAttribSetStr(ih, "_IUPTREE_EDITFIELD", NULL); + iupAttribSetStr(ih, "_IUPTREE_SELECTED", NULL); +} + +static int motTreeCallDragDropCb(Ihandle* ih, Widget wItemDrag, Widget wItemDrop, int *is_ctrl) +{ + IFniiii cbDragDrop = (IFniiii)IupGetCallback(ih, "DRAGDROP_CB"); + int is_shift = 0; + char key[5]; + iupdrvGetKeyState(key); + if (key[0] == 'S') + is_shift = 1; + if (key[1] == 'C') + *is_ctrl = 1; + else + *is_ctrl = 0; + + if (cbDragDrop) + { + int drag_id = motTreeGetNodeId(ih, wItemDrag); + int drop_id = motTreeGetNodeId(ih, wItemDrop); + return cbDragDrop(ih, drag_id, drop_id, is_shift, *is_ctrl); + } + + return IUP_CONTINUE; /* allow to move by default if callback not defined */ +} + +static void motTreeEditFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + if (evt->type == FocusOut) + motTreeCallRenameCb(ih); + + (void)cont; + (void)w; +} + +static void motTreeEditKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont) +{ + KeySym motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + if (motcode == XK_Return) + { + Widget wItem = (Widget)iupAttribGet(ih, "_IUPTREE_SELECTED"); + motTreeCallRenameCb(ih); + motTreeSetFocusNode(ih, wItem); + } + else if (motcode == XK_Escape) + { + Widget wEdit = (Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD"); + Widget wItem = (Widget)iupAttribGet(ih, "_IUPTREE_SELECTED"); + + XtDestroyWidget(wEdit); + motTreeSetFocusNode(ih, wItem); + + iupAttribSetStr(ih, "_IUPTREE_EDITFIELD", NULL); + iupAttribSetStr(ih, "_IUPTREE_SELECTED", NULL); + } + + (void)cont; + (void)w; +} + +static void motTreeScrollbarOffset(Widget sb_win, Position *x, Position *y) +{ + Widget sb_horiz, sb_vert; + XtVaGetValues(sb_win, XmNhorizontalScrollBar, &sb_horiz, NULL); + if (sb_horiz) + { + int pos; + XtVaGetValues(sb_horiz, XmNvalue, &pos, NULL); + *x = *x - (Position)pos; + } + XtVaGetValues(sb_win, XmNverticalScrollBar, &sb_vert, NULL); + if (sb_vert) + { + int pos; + XtVaGetValues(sb_vert, XmNvalue, &pos, NULL); + *y = *y - (Position)pos; + } +} + +static void motTreeShowEditField(Ihandle* ih, Widget wItem) +{ + int num_args = 0, w_img = 0; + Arg args[30]; + Position x, y; + Dimension w, h; + char* child_id = iupDialogGetChildIdStr(ih); + Widget cbEdit; + XmString title; + char* value; + Pixel color; + Pixmap image = XmUNSPECIFIED_PIXMAP; + XmFontList fontlist; + Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT"); + + XtVaGetValues(wItem, XmNx, &x, + XmNy, &y, + XmNwidth, &w, + XmNheight, &h, + XmNlabelString, &title, + XmNsmallIconPixmap, &image, + XmNforeground, &color, + XmNrenderTable, &fontlist, + NULL); + + motTreeScrollbarOffset(sb_win, &x, &y); + iupdrvImageGetInfo((void*)image, &w_img, NULL, NULL); + w_img += 3; /* add some room for borders */ + + iupmotSetArg(args, num_args, XmNx, x+w_img); /* x-position */ + iupmotSetArg(args, num_args, XmNy, y); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, w-w_img); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, h); /* default height to avoid 0 */ + iupmotSetArg(args, num_args, XmNmarginHeight, ih->data->spacing); /* default padding */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + iupmotSetArg(args, num_args, XmNforeground, color); + iupmotSetArg(args, num_args, XmNrenderTable, fontlist); + iupmotSetArg(args, num_args, XmNvalue, iupmotConvertString(title)); + iupmotSetArg(args, num_args, XmNtraversalOn, True); + + cbEdit = XtCreateManagedWidget( + child_id, /* child identifier */ + xmTextWidgetClass, /* widget class */ + sb_win, + args, num_args); + + /* Disable Drag Source */ + iupmotDisableDragSource(cbEdit); + + XtAddEventHandler(cbEdit, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(cbEdit, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(cbEdit, FocusChangeMask, False, (XtEventHandler)motTreeEditFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(cbEdit, KeyPressMask, False, (XtEventHandler)motTreeEditKeyPressEvent, (XtPointer)ih); + + iupAttribSetStr(ih, "_IUPTREE_SELECTED", (char*)wItem); + iupAttribSetStr(ih, "_IUPTREE_EDITFIELD", (char*)cbEdit); + + XmProcessTraversal(cbEdit, XmTRAVERSE_CURRENT); + + XmTextSetSelection(cbEdit, (XmTextPosition)0, (XmTextPosition)XmTextGetLastPosition(cbEdit), CurrentTime); + + value = iupAttribGetStr(ih, "RENAMECARET"); + if (value) + motTreeSetRenameCaretPos(cbEdit, value); + + value = iupAttribGetStr(ih, "RENAMESELECTION"); + if (value) + motTreeSetRenameSelectionPos(cbEdit, value); + + /* the parents callbacks can be called while editing + so we must avoid their processing if _IUPTREE_EDITFIELD is defined. */ +} + +static void motTreeSelectionCallback(Widget w, Ihandle* ih, XmContainerSelectCallbackStruct *nptr) +{ + IFnii cbSelec; + int is_ctrl = 0; + (void)w; + (void)nptr; + +printf("SelectionCallback(%d)\n", nptr->selected_item_count); + + if (ih->data->mark_mode == ITREE_MARK_MULTIPLE) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[0] == 'S') + return; + else if (key[1] == 'C') + is_ctrl = 1; + + if (nptr->selected_item_count>1 && !is_ctrl) + { + if (IupGetCallback(ih, "MULTISELECTION_CB")) + { + if (nptr->auto_selection_type==XmAUTO_NO_CHANGE) + motTreeCallMultiSelectionCb(ih); + } + else + { + if (nptr->auto_selection_type==XmAUTO_MOTION) + motTreeCallMultiSelectionCb(ih); + } + return; + } + } + + cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB"); + if (cbSelec) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + int curpos = motTreeGetNodeId(ih, wItemFocus); + if (is_ctrl) + { + unsigned char isSelected; + XtVaGetValues(wItemFocus, XmNvisualEmphasis, &isSelected, NULL); + cbSelec(ih, curpos, isSelected == XmSELECTED? 1: 0); + } + else + { + int oldpos = iupAttribGetInt(ih, "_IUPTREE_OLDVALUE"); + if (oldpos != curpos) + { + cbSelec(ih, oldpos, 0); /* unselected */ + cbSelec(ih, curpos, 1); /* selected */ + + iupAttribSetInt(ih, "_IUPTREE_OLDVALUE", curpos); + } + } + } +} + +static void motTreeDefaultActionCallback(Widget w, Ihandle* ih, XmContainerSelectCallbackStruct *nptr) +{ + unsigned char itemState; + WidgetList wSelectedItemList = NULL; + int countItems; + motTreeItemData *itemData; + Widget wItem; + (void)w; + + wSelectedItemList = nptr->selected_items; + countItems = nptr->selected_item_count; + + if (!countItems || (Widget)iupAttribGet(ih, "_IUPTREE_EDITFIELD")) + return; + + /* this works also when using multiple selection */ + wItem = wSelectedItemList[0]; + + XtVaGetValues(wItem, XmNoutlineState, &itemState, + XmNuserData, &itemData, NULL); + + if (itemData->kind == ITREE_BRANCH) + { + if (itemState == XmEXPANDED) + XtVaSetValues(wItem, XmNoutlineState, XmCOLLAPSED, NULL); + else + XtVaSetValues(wItem, XmNoutlineState, XmEXPANDED, NULL); + } + else + { + IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB"); + if (cbExecuteLeaf) + cbExecuteLeaf(ih, motTreeGetNodeId(ih, wItem)); + } +} + +static void motTreeOutlineChangedCallback(Widget w, Ihandle* ih, XmContainerOutlineCallbackStruct *nptr) +{ + motTreeItemData *itemData; + XtVaGetValues(nptr->item, XmNuserData, &itemData, NULL); + + if (nptr->reason == XmCR_EXPANDED) + { + if (motTreeCallBranchOpenCb(ih, nptr->item) == IUP_IGNORE) + nptr->new_outline_state = XmCOLLAPSED; /* prevent the change */ + else + { + XtVaSetValues(nptr->item, XmNsmallIconPixmap, (itemData->image_expanded!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded: (Pixmap)ih->data->def_image_expanded, NULL); + XtVaSetValues(nptr->item, XmNsmallIconMask, (itemData->image_expanded_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_expanded_mask: (Pixmap)ih->data->def_image_expanded_mask, NULL); + } + } + else if (nptr->reason == XmCR_COLLAPSED) + { + if (motTreeCallBranchCloseCb(ih, nptr->item) == IUP_IGNORE) + nptr->new_outline_state = XmEXPANDED; /* prevent the change */ + else + { + XtVaSetValues(nptr->item, XmNsmallIconPixmap, (itemData->image!=XmUNSPECIFIED_PIXMAP)? itemData->image: (Pixmap)ih->data->def_image_collapsed, NULL); + XtVaSetValues(nptr->item, XmNsmallIconMask, (itemData->image_mask!=XmUNSPECIFIED_PIXMAP)? itemData->image_mask: (Pixmap)ih->data->def_image_collapsed_mask, NULL); + } + } + + (void)w; +} + +static void motTreeTraverseObscuredCallback(Widget widget, Ihandle* ih, XmTraverseObscuredCallbackStruct *cbs) +{ + (void)ih; + /* allow to do automatic scroll when navigating in the tree */ + XmScrollVisible(widget, cbs->traversal_destination, 10, 10); +} + +static void motTreeKeyReleaseEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont) +{ + KeySym motcode; + + if (iupAttribGet(ih, "_IUPTREE_EDITFIELD")) + return; + + motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + if (motcode == XK_Down || motcode == XK_U || motcode == XK_Home || motcode == XK_End) + { + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & ShiftMask)) + motTreeCallMultiSelectionCb(ih); + } + + (void)w; + (void)cont; +} + +static void motTreeKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont) +{ + KeySym motcode; + + if (iupAttribGet(ih, "_IUPTREE_EDITFIELD")) + return; + + *cont = True; + iupmotKeyPressEvent(w, ih, (XEvent*)evt, cont); + if (*cont == False) + return; + + motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + if (motcode == XK_F2) + motTreeSetRenameAttrib(ih, NULL); + else if (motcode == XK_F1) + iupmotHelpCallback(w, ih, NULL); + else if ((motcode == XK_Down || motcode == XK_Up) && (evt->state & ControlMask)) + { + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + Widget wItem; + Widget wItemFocus = motTreeGetFocusNode(ih); + + /* Ctrl+Arrows move only focus */ + if (motcode == XK_Down) + wItem = motTreeGetNextVisibleNode(ih, wRoot, wItemFocus); + else + wItem = motTreeGetPreviousVisibleNode(ih, wRoot, wItemFocus); + + motTreeSetFocusNode(ih, wItem); + *cont = False; + } + else if(motcode == XK_Home || motcode == XK_End) + { + Widget wRoot = (Widget)iupAttribGet(ih, "_IUPTREE_ROOTITEM"); + Widget wItem; + + /* Not processed by Motif */ + + if (motcode == XK_Home) + wItem = wRoot; + else + wItem = motTreeGetLastVisibleNode(ih, wRoot); + + /* Ctrl+Arrows move only focus */ + if (!(evt->state & ControlMask)) + { + /* Shift+Arrows select block */ + if (evt->state & ShiftMask) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + if (!wItemFocus) + return; + motTreeSelectRange(ih, wItemFocus, wItem, 1); + } + else + { + /* clear previous selection */ + XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL); + XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL); + + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + } + } + + motTreeSetFocusNode(ih, wItem); + *cont = False; + } + else if(motcode == XK_space && (evt->state & ControlMask)) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + if (wItemFocus) + { + unsigned char isSelected; + XtVaGetValues(wItemFocus, XmNvisualEmphasis, &isSelected, NULL); + if (isSelected == XmSELECTED) + XtVaSetValues(wItemFocus, XmNvisualEmphasis, XmNOT_SELECTED, NULL); + else + XtVaSetValues(wItemFocus, XmNvisualEmphasis, XmSELECTED, NULL); + } + } +} + +static void motTreeButtonEvent(Widget w, Ihandle* ih, XButtonEvent* evt, Boolean* cont) +{ + (void)w; + (void)cont; + + if (iupAttribGet(ih, "_IUPTREE_EDITFIELD")) + return; + + *cont = True; + iupmotButtonPressReleaseEvent(w, ih, (XEvent*)evt, cont); + if (*cont == False) + return; + + if (evt->type==ButtonPress) + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_ENTERLEAVE", "1"); + + if (evt->button==Button1) + { + Widget wItemFocus = motTreeGetFocusNode(ih); + static Widget wLastItem = NULL; + static Time last = 0; + int clicktwice = 0, doubleclicktime = XtGetMultiClickTime(iupmot_display); + int elapsed = (int)(evt->time - last); + last = evt->time; + + /* stay away from double click and leave some room for clicks */ + if (elapsed > (3*doubleclicktime)/2 && elapsed <= 3*doubleclicktime) + clicktwice = 1; + + if (clicktwice && wLastItem && wLastItem==wItemFocus) + { + motTreeSetRenameAttrib(ih, NULL); + *cont = False; + } + wLastItem = wItemFocus; + } + else if (evt->button==Button3) + motTreeCallRightClickCb(ih, evt->x, evt->y); + } + else if (evt->type==ButtonRelease) + { + if (evt->button==Button1) + { + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE && (evt->state & ShiftMask)) + motTreeCallMultiSelectionCb(ih); + } + } +} + +static void motTreeTransferProc(Widget drop_context, XtPointer client_data, Atom *seltype, Atom *type, XtPointer value, unsigned long *length, int format) +{ + Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False); + Widget wItemDrop = (Widget)client_data; + Widget wItemDrag = (Widget)value; + + if (*type == atomTreeItem) + { + Widget wParent; + Ihandle* ih = NULL; + int is_ctrl; + + if (!wItemDrop || wItemDrag == wItemDrop) + return; + + wParent = wItemDrop; + while(wParent) + { + XtVaGetValues(wParent, XmNentryParent, &wParent, NULL); + if (wParent == wItemDrag) + return; + } + + XtVaGetValues(XtParent(wItemDrag), XmNuserData, &ih, NULL); + + if (motTreeCallDragDropCb(ih, wItemDrag, wItemDrop, &is_ctrl) == IUP_CONTINUE) + { + /* Copy the dragged item to the new position. */ + Widget wNewItem = motTreeCopyNode(ih, wItemDrag, wItemDrop, is_ctrl); + + if (!is_ctrl) + { + /* do not delete the user data, we copy the references in CopyNode */ + motTreeRemoveNode(ih, wItemDrag, 0); + } + + /* Select the dragged item */ + XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL); + XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL); + XtVaSetValues(wNewItem, XmNvisualEmphasis, XmSELECTED, NULL); + + motTreeSetFocusNode(ih, wNewItem); + } + } + + (void)drop_context; + (void)seltype; + (void)format; + (void)length; +} + +static void motTreeDropProc(Widget w, XtPointer client_data, XmDropProcCallbackStruct* drop_data) +{ + Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False); + XmDropTransferEntryRec transferList[2]; + Arg args[10]; + int i, num_args = 0; + Widget wItemDrop, drop_context; + Cardinal numExportTargets; + Atom *exportTargets; + Boolean found = False; + (void)client_data; + + drop_context = drop_data->dragContext; + + /* retrieve the data targets */ + iupmotSetArg(args, num_args, XmNexportTargets, &exportTargets); + iupmotSetArg(args, num_args, XmNnumExportTargets, &numExportTargets); + XtGetValues(drop_context, args, num_args); + + for (i = 0; i < (int)numExportTargets; i++) + { + if (exportTargets[i] == atomTreeItem) + { + found = True; + break; + } + } + + wItemDrop = XmObjectAtPoint(w, drop_data->x, drop_data->y); + if (!wItemDrop) + found = False; + + num_args = 0; + if ((!found) || (drop_data->dropAction != XmDROP) || (drop_data->operation != XmDROP_COPY && drop_data->operation != XmDROP_MOVE)) + { + iupmotSetArg(args, num_args, XmNtransferStatus, XmTRANSFER_FAILURE); + iupmotSetArg(args, num_args, XmNnumDropTransfers, 0); + } + else + { + /* set up transfer requests for drop site */ + transferList[0].target = atomTreeItem; + transferList[0].client_data = (XtPointer)wItemDrop; + iupmotSetArg(args, num_args, XmNdropTransfers, transferList); + iupmotSetArg(args, num_args, XmNnumDropTransfers, 1); + iupmotSetArg(args, num_args, XmNtransferProc, motTreeTransferProc); + } + + XmDropTransferStart(drop_context, args, num_args); +} + +static void motTreeDragDropFinishCallback(Widget drop_context, XtPointer client_data, XtPointer call_data) +{ + Widget source_icon = NULL; + XtVaGetValues(drop_context, XmNsourceCursorIcon, &source_icon, NULL); + if (source_icon) + XtDestroyWidget(source_icon); + (void)call_data; + (void)client_data; +} + +static void motTreeDragMotionCallback(Widget drop_context, Widget wItemDrag, XmDragMotionCallbackStruct* drag_motion) +{ + Ihandle* ih = NULL; + XtVaGetValues(XtParent(wItemDrag), XmNuserData, &ih, NULL); + if (!iupAttribGet(ih, "NODRAGFEEDBACK")) + { + Widget wItem; + int x = drag_motion->x; + int y = drag_motion->y; + iupdrvScreenToClient(ih, &x, &y); + wItem = XmObjectAtPoint(ih->handle, (Position)x, (Position)y); + if (wItem) + { + XtVaSetValues(ih->handle, XmNselectedObjects, NULL, NULL); + XtVaSetValues(ih->handle, XmNselectedObjectCount, 0, NULL); + XtVaSetValues(wItem, XmNvisualEmphasis, XmSELECTED, NULL); + } + } + (void)drop_context; +} + +static Boolean motTreeConvertProc(Widget drop_context, Atom *selection, Atom *target, Atom *type_return, + XtPointer *value_return, unsigned long *length_return, int *format_return) +{ + Atom atomMotifDrop = XInternAtom(iupmot_display, "_MOTIF_DROP", False); + Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False); + Widget wItemDrag = NULL; + + /* check if we are dealing with a drop */ + if (*selection != atomMotifDrop || *target != atomTreeItem) + return False; + + XtVaGetValues(drop_context, XmNclientData, &wItemDrag, NULL); + if (!wItemDrag) + return False; + + /* format the value for transfer */ + *type_return = atomTreeItem; + *value_return = (XtPointer)wItemDrag; + *length_return = 1; + *format_return = 32; + return True; +} + +static void motTreeStartDrag(Widget w, XButtonEvent* evt, String* params, Cardinal* num_params) +{ + Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False); + Atom exportList[1]; + Widget drag_icon, drop_context; + Pixmap pixmap = 0, mask = 0; + int num_args = 0; + Arg args[40]; + Pixel fg, bg; + Widget wItemDrag = XmObjectAtPoint(w, (Position)evt->x, (Position)evt->y); + if (!wItemDrag) + return; + + XtVaGetValues(wItemDrag, XmNsmallIconPixmap, &pixmap, + XmNsmallIconMask, &mask, + XmNbackground, &bg, + XmNforeground, &fg, + NULL); + + iupmotSetArg(args, num_args, XmNpixmap, pixmap); + iupmotSetArg(args, num_args, XmNmask, mask); + drag_icon = XmCreateDragIcon(w, "drag_icon", args, num_args); + + exportList[0] = atomTreeItem; + + /* specify resources for DragContext for the transfer */ + num_args = 0; + iupmotSetArg(args, num_args, XmNcursorBackground, bg); + iupmotSetArg(args, num_args, XmNcursorForeground, fg); + /* iupmotSetArg(args, num_args, XmNsourcePixmapIcon, drag_icon); works, but only outside the dialog, inside disapears */ + iupmotSetArg(args, num_args, XmNsourceCursorIcon, drag_icon); /* does not work, shows the default cursor */ + iupmotSetArg(args, num_args, XmNexportTargets, exportList); + iupmotSetArg(args, num_args, XmNnumExportTargets, 1); + iupmotSetArg(args, num_args, XmNdragOperations, XmDROP_MOVE|XmDROP_COPY); + iupmotSetArg(args, num_args, XmNconvertProc, motTreeConvertProc); + iupmotSetArg(args, num_args, XmNclientData, wItemDrag); + + /* start the drag and register a callback to clean up when done */ + drop_context = XmDragStart(w, (XEvent*)evt, args, num_args); + XtAddCallback(drop_context, XmNdragDropFinishCallback, (XtCallbackProc)motTreeDragDropFinishCallback, NULL); + XtAddCallback(drop_context, XmNdragMotionCallback, (XtCallbackProc)motTreeDragMotionCallback, (XtPointer)wItemDrag); + + (void)params; + (void)num_params; +} + +static void motTreeEnableDragDrop(Widget w) +{ + Atom atomTreeItem = XInternAtom(iupmot_display, "TREE_ITEM", False); + Atom importList[1]; + Arg args[40]; + int num_args = 0; + char dragTranslations[] = "#override : StartDrag()"; + static int do_rec = 0; + if (!do_rec) + { + XtActionsRec rec = {"StartDrag", (XtActionProc)motTreeStartDrag}; + XtAppAddActions(iupmot_appcontext, &rec, 1); + do_rec = 1; + } + XtOverrideTranslations(w, XtParseTranslationTable(dragTranslations)); + + importList[0] = atomTreeItem; + iupmotSetArg(args, num_args, XmNimportTargets, importList); + iupmotSetArg(args, num_args, XmNnumImportTargets, 1); + iupmotSetArg(args, num_args, XmNdropSiteOperations, XmDROP_MOVE|XmDROP_COPY); + iupmotSetArg(args, num_args, XmNdropProc, motTreeDropProc); + XmDropSiteUpdate(w, args, num_args); + + XtVaSetValues(XmGetXmDisplay(iupmot_display), XmNenableDragIcon, True, NULL); +} + +static int motTreeMapMethod(Ihandle* ih) +{ + int num_args = 0; + Arg args[40]; + Widget parent = iupChildTreeGetNativeParentHandle(ih); + char* child_id = iupDialogGetChildIdStr(ih); + Widget sb_win; + + /******************************/ + /* Create the scrolled window */ + /******************************/ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNscrollingPolicy, XmAUTOMATIC); + iupmotSetArg(args, num_args, XmNvisualPolicy, XmVARIABLE); + iupmotSetArg(args, num_args, XmNscrollBarDisplayPolicy, XmAS_NEEDED); + iupmotSetArg(args, num_args, XmNspacing, 0); /* no space between scrollbars and text */ + iupmotSetArg(args, num_args, XmNborderWidth, 0); + iupmotSetArg(args, num_args, XmNshadowThickness, 2); + + sb_win = XtCreateManagedWidget( + child_id, /* child identifier */ + xmScrolledWindowWidgetClass, /* widget class */ + parent, /* widget parent */ + args, num_args); + + if (!sb_win) + return IUP_ERROR; + + XtAddCallback (sb_win, XmNtraverseObscuredCallback, (XtCallbackProc)motTreeTraverseObscuredCallback, (XtPointer)ih); + + parent = sb_win; + child_id = "container"; + + num_args = 0; + + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + + iupmotSetArg(args, num_args, XmNmarginHeight, 0); /* default padding */ + iupmotSetArg(args, num_args, XmNmarginWidth, 0); + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + iupmotSetArg(args, num_args, XmNhighlightThickness, 2); + iupmotSetArg(args, num_args, XmNshadowThickness, 0); + + iupmotSetArg(args, num_args, XmNlayoutType, XmOUTLINE); + iupmotSetArg(args, num_args, XmNentryViewType, XmSMALL_ICON); + iupmotSetArg(args, num_args, XmNselectionPolicy, XmSINGLE_SELECT); + iupmotSetArg(args, num_args, XmNoutlineIndentation, 20); + + if (iupAttribGetBoolean(ih, "HIDELINES")) + iupmotSetArg(args, num_args, XmNoutlineLineStyle, XmNO_LINE); + else + iupmotSetArg(args, num_args, XmNoutlineLineStyle, XmSINGLE); + + if (iupAttribGetBoolean(ih, "HIDEBUTTONS")) + iupmotSetArg(args, num_args, XmNoutlineButtonPolicy, XmOUTLINE_BUTTON_ABSENT); + else + iupmotSetArg(args, num_args, XmNoutlineButtonPolicy, XmOUTLINE_BUTTON_PRESENT); + + ih->handle = XtCreateManagedWidget( + child_id, /* child identifier */ + xmContainerWidgetClass, /* widget class */ + parent, /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + iupAttribSetStr(ih, "_IUP_EXTRAPARENT", (char*)parent); + + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)motTreeEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)motTreeEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)motTreeFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)motTreeKeyPressEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, KeyReleaseMask, False, (XtEventHandler)motTreeKeyReleaseEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)motTreeButtonEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, PointerMotionMask, False, (XtEventHandler)iupmotPointerMotionEvent, (XtPointer)ih); + + /* Callbacks */ + /* XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); NOT WORKING */ + XtAddCallback(ih->handle, XmNoutlineChangedCallback, (XtCallbackProc)motTreeOutlineChangedCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNdefaultActionCallback, (XtCallbackProc)motTreeDefaultActionCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNselectionCallback, (XtCallbackProc)motTreeSelectionCallback, (XtPointer)ih); + + XtRealizeWidget(parent); + + if (ih->data->show_dragdrop) + { + motTreeEnableDragDrop(ih->handle); + XtVaSetValues(ih->handle, XmNuserData, ih, NULL); /* to be used in motTreeTransferProc */ + } + else + iupmotDisableDragSource(ih->handle); + + /* Force background update before setting the images */ + { + char* value = iupAttribGet(ih, "BGCOLOR"); + if (value) + { + motTreeSetBgColorAttrib(ih, value); + iupAttribSetStr(ih, "BGCOLOR", NULL); + } + } + + /* Initialize the default images */ + ih->data->def_image_leaf = iupImageGetImage("IMGLEAF", ih, 0); + if (!ih->data->def_image_leaf) + { + ih->data->def_image_leaf = (void*)XmUNSPECIFIED_PIXMAP; + ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + else + { + ih->data->def_image_leaf_mask = iupImageGetMask("IMGLEAF"); + if (!ih->data->def_image_leaf_mask) ih->data->def_image_leaf_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + + ih->data->def_image_collapsed = iupImageGetImage("IMGCOLLAPSED", ih, 0); + if (!ih->data->def_image_collapsed) + { + ih->data->def_image_collapsed = (void*)XmUNSPECIFIED_PIXMAP; + ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + else + { + ih->data->def_image_collapsed_mask = iupImageGetMask("IMGCOLLAPSED"); + if (!ih->data->def_image_collapsed_mask) ih->data->def_image_collapsed_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + + ih->data->def_image_expanded = iupImageGetImage("IMGEXPANDED", ih, 0); + if (!ih->data->def_image_expanded) + { + ih->data->def_image_expanded = (void*)XmUNSPECIFIED_PIXMAP; + ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + else + { + ih->data->def_image_expanded_mask = iupImageGetMask("IMGEXPANDED"); + if (!ih->data->def_image_expanded_mask) ih->data->def_image_expanded_mask = (void*)XmUNSPECIFIED_PIXMAP; + } + + motTreeAddRootNode(ih); + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)motTreeConvertXYToPos); + + return IUP_NOERROR; +} + +void iupdrvTreeInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motTreeMapMethod; + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motTreeSetBgColorAttrib, "TXTBGCOLOR", NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, motTreeSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT); + + /* IupTree Attributes - GENERAL */ + iupClassRegisterAttribute(ic, "EXPANDALL", NULL, motTreeSetExpandAllAttrib, NULL, NULL, IUPAF_WRITEONLY||IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INDENTATION", motTreeGetIndentationAttrib, motTreeSetIndentationAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "COUNT", motTreeGetCountAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPACING", iupTreeGetSpacingAttrib, motTreeSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "TOPITEM", NULL, motTreeSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + /* IupTree Attributes - IMAGES */ + iupClassRegisterAttributeId(ic, "IMAGE", NULL, motTreeSetImageAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "IMAGEEXPANDED", NULL, motTreeSetImageExpandedAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "IMAGELEAF", NULL, motTreeSetImageLeafAttrib, IUPAF_SAMEASSYSTEM, "IMGLEAF", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEBRANCHCOLLAPSED", NULL, motTreeSetImageBranchCollapsedAttrib, IUPAF_SAMEASSYSTEM, "IMGCOLLAPSED", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEBRANCHEXPANDED", NULL, motTreeSetImageBranchExpandedAttrib, IUPAF_SAMEASSYSTEM, "IMGEXPANDED", IUPAF_NO_INHERIT); + + /* IupTree Attributes - NODES */ + iupClassRegisterAttributeId(ic, "STATE", motTreeGetStateAttrib, motTreeSetStateAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "DEPTH", motTreeGetDepthAttrib, NULL, IUPAF_READONLY|IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "KIND", motTreeGetKindAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "PARENT", motTreeGetParentAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "COLOR", motTreeGetColorAttrib, motTreeSetColorAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "NAME", motTreeGetTitleAttrib, motTreeSetTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TITLE", motTreeGetTitleAttrib, motTreeSetTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "USERDATA", motTreeGetUserDataAttrib, motTreeSetUserDataAttrib, IUPAF_NO_STRING|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "CHILDCOUNT", motTreeGetChildCountAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TITLEFONT", motTreeGetTitleFontAttrib, motTreeSetTitleFontAttrib, IUPAF_NO_INHERIT); + + /* IupTree Attributes - MARKS */ + iupClassRegisterAttributeId(ic, "MARKED", motTreeGetMarkedAttrib, motTreeSetMarkedAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "MARK", NULL, motTreeSetMarkAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "STARTING", NULL, motTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "MARKSTART", NULL, motTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute (ic, "VALUE", motTreeGetValueAttrib, motTreeSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupTree Attributes - ACTION */ + iupClassRegisterAttributeId(ic, "DELNODE", NULL, motTreeSetDelNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RENAME", NULL, motTreeSetRenameAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "MOVENODE", NULL, motTreeSetMoveNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "COPYNODE", NULL, motTreeSetCopyNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "FINDUSERDATA", motTreeGetFindUserDataAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); +} diff --git a/iup/src/mot/iupmot_val.c b/iup/src/mot/iupmot_val.c new file mode 100755 index 0000000..200d2b4 --- /dev/null +++ b/iup/src/mot/iupmot_val.c @@ -0,0 +1,488 @@ +/** \file + * \brief Valuator Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_val.h" +#include "iup_image.h" +#include "iup_drv.h" + +#include "iupmot_drv.h" +#include "iupmot_color.h" + + +void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h) +{ + int ticks_size = 0; + if (iupAttribGetInt(ih, "SHOWTICKS")) + ticks_size = 8; + + if (ih->data->type == IVAL_HORIZONTAL) + { + *w = 30; + *h = 20+ticks_size; + } + else + { + *w = 20+ticks_size; + *h = 30; + } +} + +static void motValRemoveOldTicks(Widget scale) +{ + WidgetList children = (WidgetList)0; + Cardinal num_children = (Cardinal)0; + Cardinal i; + String name; + + XtVaGetValues(scale, XmNchildren, &children, + XmNnumChildren, &num_children, + NULL); + + for (i = 0; i < num_children; i++) + { + if (XmIsSeparatorGadget(children[i])) + { + if ((name = XtName(children[i])) != (String)0) + { + if ((strcmp(name, "BigTic") == 0) || + (strcmp(name, "MedTic") == 0) || + (strcmp(name, "SmallTic") == 0)) + { + XtDestroyWidget(children[i]); + } + } + } + } +} + +static int motValSetShowTicksAttrib(Ihandle* ih, const char* value) +{ + int tick_freq, show_ticks; + + if (!ih->data->show_ticks) /* can only set if already not zero */ + return 0; + + show_ticks = atoi(value); + if (show_ticks<2) show_ticks=2; + ih->data->show_ticks = show_ticks; + + motValRemoveOldTicks(ih->handle); + + /* Defines the interval frequency for tick marks */ + tick_freq = SHRT_MAX/(show_ticks-1); + XmScaleSetTicks(ih->handle, tick_freq, 0, 0, 8, 0, 0); + return 0; +} + +static int motValSetPageStepAttrib(Ihandle* ih, const char* value) +{ + int pagesize; + ih->data->pagestep = atof(value); + pagesize = (int)(ih->data->pagestep*SHRT_MAX); + XtVaSetValues(ih->handle, XmNscaleMultiple, pagesize, NULL); + return 0; /* do not store value in hash table */ +} + +static int motValSetStepAttrib(Ihandle* ih, const char* value) +{ + ih->data->step = atof(value); + return 0; /* do not store value in hash table */ +} + +static int motValSetValueAttrib(Ihandle* ih, const char* value) +{ + int ival; + + ih->data->val = atof(value); + iupValCropValue(ih); + + ival = (int)(((ih->data->val-ih->data->vmin)/(ih->data->vmax - ih->data->vmin))*SHRT_MAX); + XtVaSetValues(ih->handle, XmNvalue, ival, NULL); + + return 0; /* do not store value in hash table */ +} + +static int motValSetBgColorAttrib(Ihandle* ih, const char* value) +{ + Pixel color; + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + r = (r*8)/10; + g = (g*8)/10; + b = (b*8)/10; + + color = iupmotColorGetPixel(r, g, b); + if (color != (Pixel)-1) + { + Widget w = XtNameToWidget(ih->handle, "*Scrollbar"); + XtVaSetValues(w, XmNtroughColor, color, NULL); + } + + return iupdrvBaseSetBgColorAttrib(ih, value); +} + +static int motValSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + Pixel color; + + /* ignore given value, must use only from parent */ + value = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + + color = iupmotColorGetPixelStr(value); + if (color != (Pixel)-1) + { + XtVaSetValues(ih->handle, XmNbackground, color, NULL); + return 1; + } + else + { + Pixmap pixmap = (Pixmap)iupImageGetImage(value, ih, 0); + if (pixmap) + { + XtVaSetValues(ih->handle, XmNbackgroundPixmap, pixmap, NULL); + return 1; + } + } + return 0; +} + + +/*********************************************************************************************/ + + +static void motValCallAction(Ihandle* ih, int ival, int cb_state) +{ + double old_val = ih->data->val; + IFn cb; + + ih->data->val = (((double)ival/(double)SHRT_MAX)*(ih->data->vmax - ih->data->vmin)) + ih->data->vmin; + iupValCropValue(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + { + if (ih->data->val == old_val) + return; + + cb(ih); + } + else + { + IFnd cb_old; + if (cb_state == 0) + cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB"); + else if (cb_state == -1) + cb_old = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB"); + else + cb_old = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB"); + + if (cb_old) + cb_old(ih, ih->data->val); + } +} + +static void motValIncPageValue(Ihandle *ih, int dir) +{ + int pagesize, ival; + pagesize = (int)(ih->data->pagestep*SHRT_MAX); + + if (ih->data->inverted) + dir *= -1; + + XtVaGetValues(ih->handle, XmNvalue, &ival, NULL); + ival += dir*pagesize; + if (ival < 0) ival = 0; + if (ival > SHRT_MAX) ival = SHRT_MAX; + XtVaSetValues(ih->handle, XmNvalue, ival, NULL); + + motValCallAction(ih, ival, 1); +} + +static void motValIncLineValue(Ihandle *ih, int dir) +{ + int linesize, ival; + linesize = (int)(ih->data->step*SHRT_MAX); + + if (ih->data->inverted) + dir *= -1; + + XtVaGetValues(ih->handle, XmNvalue, &ival, NULL); + ival += dir*linesize; + if (ival < 0) ival = 0; + if (ival > SHRT_MAX) ival = SHRT_MAX; + XtVaSetValues(ih->handle, XmNvalue, ival, NULL); + + motValCallAction(ih, ival, 1); +} + +static void motValKeyPressEvent(Widget w, Ihandle *ih, XKeyEvent *evt, Boolean *cont) +{ + KeySym motcode; + + *cont = True; + iupmotKeyPressEvent(w, ih, (XEvent*)evt, cont); + if (*cont == False) + return; + + motcode = XKeycodeToKeysym(iupmot_display, evt->keycode, 0); + + /* add missing support for numeric keyboard */ + /* add missing support for left/right in vertical + and up/down in horizontal */ + if (motcode == XK_Left || motcode == XK_KP_Left || + motcode == XK_Up || motcode == XK_KP_Up) + { + motValIncLineValue(ih, -1); + *cont = False; + return; + } + if (motcode == XK_Right || motcode == XK_KP_Right || + motcode == XK_Down || motcode == XK_KP_Down) + { + motValIncLineValue(ih, 1); + *cont = False; + return; + } + if (motcode == XK_Prior || motcode == XK_KP_Page_Up) + { + motValIncPageValue(ih, -1); + *cont = False; + return; + } + if (motcode == XK_Next || motcode == XK_KP_Page_Down) + { + motValIncPageValue(ih, 1); + *cont = False; + return; + } + + /* change Home and End default behaviour */ + if (ih->data->inverted) + { + if (motcode==XK_Home || motcode==XK_KP_Home) + { + int ival = SHRT_MAX; /* set to maximum */ + XtVaSetValues(ih->handle, XmNvalue, ival, NULL); + motValCallAction(ih, ival, 1); + *cont = False; + return; + } + if (motcode==XK_End || motcode==XK_KP_End) + { + int ival = 0; /* set to minimum */ + XtVaSetValues(ih->handle, XmNvalue, ival, NULL); + motValCallAction(ih, ival, 1); + *cont = False; + return; + } + } + else + { + /* add missing support for numeric keyboard */ + if (motcode==XK_KP_Home) + { + int ival = 0; /* set to minimum */ + XtVaSetValues(ih->handle, XmNvalue, ival, NULL); + motValCallAction(ih, ival, 1); + *cont = False; + return; + } + if (motcode==XK_KP_End) + { + int ival = SHRT_MAX; /* set to maximum */ + XtVaSetValues(ih->handle, XmNvalue, ival, NULL); + motValCallAction(ih, ival, 1); + *cont = False; + return; + } + } +} + +static void motValValueChangedCallback(Widget w, Ihandle* ih, XmScaleCallbackStruct *cbs) +{ + int cb_state = 1; + + if(cbs->reason == XmCR_DRAG) + cb_state = 0; + else if (cbs->event && (cbs->event->type==ButtonRelease || cbs->event->type==KeyRelease)) + cb_state = -1; + + motValCallAction(ih, cbs->value, cb_state); + + (void)w; +} + +static void motValButtonPressReleaseEvent(Widget w, Ihandle* ih, XButtonEvent* evt, Boolean* cont) +{ + (void)w; + (void)cont; + + /* When Button1 is pressed, the Scrollbar loses its focus to the scale, + So we avoid calling GETFOCUS/KILLFOCUS. + */ + + if (evt->type==ButtonPress && evt->button==Button1) + { + iupAttribSetStr(ih, "_IUPVAL_IGNOREFOCUS", "1"); + } + if (evt->type==ButtonRelease && evt->button==Button1) + { + iupAttribSetStr(ih, "_IUPVAL_IGNOREFOCUS", NULL); + iupAttribSetStr(ih, "_IUPVAL_IGNOREKILLFOCUS", "1"); + } +} + +static void motValFocusChangeEvent(Widget w, Ihandle *ih, XEvent *evt, Boolean *cont) +{ + if (iupAttribGet(ih, "_IUPVAL_IGNOREFOCUS")) + return; + + if (evt->type == FocusOut && iupAttribGet(ih, "_IUPVAL_IGNOREKILLFOCUS")) + { + iupAttribSetStr(ih, "_IUPVAL_IGNOREKILLFOCUS", NULL); + return; + } + + iupmotFocusChangeEvent(w, ih, evt, cont); +} + + +/*********************************************************************************************/ + + +static int motValMapMethod(Ihandle* ih) +{ + int num_args = 0; + Arg args[30]; + int show_ticks; + + /* Core */ + iupmotSetArg(args, num_args, XmNmappedWhenManaged, False); /* not visible when managed */ + iupmotSetArg(args, num_args, XmNx, 0); /* x-position */ + iupmotSetArg(args, num_args, XmNy, 0); /* y-position */ + iupmotSetArg(args, num_args, XmNwidth, 10); /* default width to avoid 0 */ + iupmotSetArg(args, num_args, XmNheight, 10); /* default height to avoid 0 */ + /* Primitive */ + if (iupAttribGetBoolean(ih, "CANFOCUS")) + iupmotSetArg(args, num_args, XmNtraversalOn, True); + else + iupmotSetArg(args, num_args, XmNtraversalOn, False); + iupmotSetArg(args, num_args, XmNhighlightThickness, 2); + iupmotSetArg(args, num_args, XmNnavigationType, XmTAB_GROUP); + /* Scale */ + iupmotSetArg(args, num_args, XmNminimum, 0); + iupmotSetArg(args, num_args, XmNmaximum, SHRT_MAX); + iupmotSetArg(args, num_args, XmNslidingMode, XmSLIDER); + iupmotSetArg(args, num_args, XmNsliderMark, XmETCHED_LINE); + iupmotSetArg(args, num_args, XmNsliderSize, 16); + iupmotSetArg(args, num_args, XmNshowValue, XmNONE); + + if (ih->data->type == IVAL_HORIZONTAL) + { + iupmotSetArg(args, num_args, XmNorientation, XmHORIZONTAL); + if (ih->data->inverted) + iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_LEFT); + else + iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_RIGHT); + } + else + { + iupmotSetArg(args, num_args, XmNorientation, XmVERTICAL); + if (ih->data->inverted) + iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_TOP); + else + iupmotSetArg(args, num_args, XmNprocessingDirection, XmMAX_ON_BOTTOM); + } + + ih->handle = XtCreateManagedWidget( + iupDialogGetChildIdStr(ih), /* child identifier */ + xmScaleWidgetClass, /* widget class */ + iupChildTreeGetNativeParentHandle(ih), /* widget parent */ + args, num_args); + + if (!ih->handle) + return IUP_ERROR; + + /* callbacks */ + XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih); + + /* XmScale changes the default behavior of these, must set directly into the scrollbar */ + /* XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih); */ + /* XtAddEventHandler(ih->handle, KeyPressMask, False, (XtEventHandler)iupmotKeyPressEvent, (XtPointer)ih); */ + + XtAddCallback(ih->handle, XmNdragCallback, (XtCallbackProc)motValValueChangedCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNvalueChangedCallback, (XtCallbackProc)motValValueChangedCallback, (XtPointer)ih); + XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih); + + { + Widget sb = XtNameToWidget(ih->handle, "Scrollbar"); /* TODO: Test this in other Motifs */ + if (sb) + { + XtAddEventHandler(sb, FocusChangeMask, False, (XtEventHandler)motValFocusChangeEvent, (XtPointer)ih); + XtAddEventHandler(sb, KeyPressMask, False, (XtEventHandler)motValKeyPressEvent, (XtPointer)ih); + XtAddEventHandler(sb, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)motValButtonPressReleaseEvent, (XtPointer)ih); + } + } + + /* Ticks can only be created before XtRealizeWidget */ + show_ticks = iupAttribGetInt(ih, "SHOWTICKS"); + if (show_ticks) + { + if (show_ticks<2) show_ticks=2; + ih->data->show_ticks = show_ticks; /* non zero value, can be changed later, but not to zero */ + } + + ih->serial = iupDialogGetChildId(ih); /* must be after using the string */ + + /* initialize the widget */ + XtRealizeWidget(ih->handle); + + return IUP_NOERROR; +} + +void iupdrvValInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = motValMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, motValSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, motValSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + + /* IupVal only */ + iupClassRegisterAttribute(ic, "VALUE", iupValGetValueAttrib, motValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PAGESTEP", iupValGetPageStepAttrib, motValSetPageStepAttrib, IUPAF_SAMEASSYSTEM, "0.1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWTICKS", iupValGetShowTicksAttrib, motValSetShowTicksAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "STEP", iupValGetStepAttrib, motValSetStepAttrib, IUPAF_SAMEASSYSTEM, "0.01", IUPAF_NO_INHERIT); +} diff --git a/iup/src/mot/iupunix_help.c b/iup/src/mot/iupunix_help.c new file mode 100755 index 0000000..02be1da --- /dev/null +++ b/iup/src/mot/iupunix_help.c @@ -0,0 +1,44 @@ +/** \file + * \brief Motif Driver IupHelp + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" + +#include "iup_str.h" + +int IupHelp(const char *url) +{ + char *cmd; + int ret; + char *browser = getenv("IUP_HELPAPP"); + if (!browser) + browser = IupGetGlobal("HELPAPP"); + + if (!browser) + { + char* system = IupGetGlobal("SYSTEM"); + if (iupStrEqualNoCase(system, "Linux") || + iupStrEqualNoCase(system, "FreeBSD")) + browser = "firefox"; + else if (iupStrEqualNoCase(system, "Darwin")) + browser = "safari"; + else if (iupStrEqualPartial(system, "CYGWIN")) + browser = "iexplore"; + else + browser = "netscape"; + } + + cmd = (char*)malloc(sizeof(char)*(strlen(url)+strlen(browser)+3)); + sprintf(cmd, "%s %s &", browser, url); + ret = system(cmd); + free(cmd); + if (ret == -1) + return -1; + return 1; +} diff --git a/iup/src/mot/iupunix_info.c b/iup/src/mot/iupunix_info.c new file mode 100755 index 0000000..b522638 --- /dev/null +++ b/iup/src/mot/iupunix_info.c @@ -0,0 +1,305 @@ +/** \file + * \brief UNIX System Information + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +/* This module should depend only on IUP core headers + and UNIX system headers. NO Motif headers allowed. */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "iup_str.h" +#include "iup_drvinfo.h" + + +int iupdrvMakeDirectory(const char* name) +{ + mode_t oldmask = umask((mode_t)0); + int fail = mkdir(name, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | + S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH); + umask (oldmask); + if (fail) + return 0; + return 1; +} + +int iupdrvIsFile(const char* name) +{ + struct stat status; + if (stat(name, &status) != 0) + return 0; + if (S_ISDIR(status.st_mode)) + return 0; + return 1; +} + +int iupdrvIsDirectory(const char* name) +{ + struct stat status; + if (stat(name, &status) != 0) + return 0; + if (S_ISDIR(status.st_mode)) + return 1; + return 0; +} + +char* iupdrvGetCurrentDirectory(void) +{ + size_t size = 256; + char *buffer = (char *)malloc(size); + + for (;;) + { + if (getcwd(buffer, size) != NULL) + return buffer; + + if (errno != ERANGE) + { + free(buffer); + return NULL; + } + + size += size; + buffer = (char *)realloc(buffer, size); + } + + return NULL; +} + +int iupdrvSetCurrentDirectory(const char* dir) +{ + return chdir(dir) == 0? 1: 0; +} + +int iupdrvGetWindowDecor(void* wnd, int *border, int *caption) +{ + XWindowAttributes wa; + wa.x = 0; wa.y = 0; + XGetWindowAttributes((Display*)iupdrvGetDisplay(), (Window)wnd, &wa); + if (wa.x > 0 && wa.y > 0 && wa.y >= wa.x) + { + *border = wa.x; + *caption = wa.y - *border; + return 1; + } + + *border = 0; + *caption = 0; + + return 0; +} + +static int xGetWorkAreaSize(Display* display, int screen, int *width, int *height) +{ + /* _NET_WORKAREA, x, y, width, height CARDINAL[][4]/32 */ + static Atom workarea = 0; + Atom type; + long *data; + int format; + unsigned long after, ndata; + + if (!workarea) + workarea = XInternAtom(display, "_NET_WORKAREA", False); + + XGetWindowProperty(display, RootWindow(display, screen), + workarea, 0, LONG_MAX, False, XA_CARDINAL, &type, &format, &ndata, + &after, (unsigned char **)&data); + if (type != XA_CARDINAL || data == NULL) + { + if (data) XFree(data); + return 0; + } + + *width = data[2]; /* get only for the first desktop */ + *height = data[3]; + + XFree(data); + return 1; +} + +void iupdrvGetScreenSize(int *width, int *height) +{ + Display* display = (Display*)iupdrvGetDisplay(); + int screen = XDefaultScreen(display); + if (!xGetWorkAreaSize(display, screen, width, height)) + { + *width = DisplayWidth(display, screen); + *height = DisplayHeight(display, screen); + } +} + +void iupdrvGetFullSize(int *width, int *height) +{ + Display* display = (Display*)iupdrvGetDisplay(); + int screen = XDefaultScreen(display); + Window root = RootWindow(display, screen); + XWindowAttributes wa; + XGetWindowAttributes(display, root, &wa); + *width = wa.width; + *height = wa.height; +} + +static int xCheckVisualInfo(Display* drv_display, int bpp) +{ + int nitems; + XVisualInfo info, *ret_info; + + info.depth = bpp; + ret_info = XGetVisualInfo(drv_display, VisualDepthMask, &info, &nitems); + if (ret_info != NULL) + { + XFree(ret_info); + return 1; + } + return 0; +} + +int iupdrvGetScreenDepth(void) +{ + static int first = 1; + static int bpp; + + if (first) + { + Display* drv_display = (Display*)iupdrvGetDisplay(); + + if (xCheckVisualInfo(drv_display, 24)) + { + bpp = 24; + return bpp; + } + + if (xCheckVisualInfo(drv_display, 16)) + { + bpp = 16; + return bpp; + } + + if (xCheckVisualInfo(drv_display, 8)) + { + bpp = 8; + return bpp; + } + + if (xCheckVisualInfo(drv_display, 4)) + { + bpp = 4; + return bpp; + } + + bpp = 2; + + first = 0; + } + + return bpp; +} + +void iupdrvGetCursorPos(int *x, int *y) +{ + Window root, child; + int cx, cy; + unsigned int keys; + Display* display = (Display*)iupdrvGetDisplay(); + int screen = XDefaultScreen(display); + + XQueryPointer(display, RootWindow(display, screen), + &root, &child, x, y, &cx, &cy, &keys); +} + +static int xCheckModifier(KeyCode* modifiermap, int max_keypermod, int index, const char* keys) +{ + int i; + for (i = 0; i < max_keypermod; i++) + { + KeyCode key = modifiermap[max_keypermod * index + i]; + if (key) + { + int KeyIndex = key / 8; + int KeyMask = 1 << (key % 8); + if (keys[KeyIndex] & KeyMask) + return 1; + } + } + return 0; +} + +void iupdrvGetKeyState(char* key) +{ + char keys[32]; + Display* display = (Display*)iupdrvGetDisplay(); + XModifierKeymap *modMap = XGetModifierMapping(display); + XQueryKeymap(display, keys); + + if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, ShiftMapIndex, keys)) + key[0] = 'S'; + else + key[0] = ' '; + if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, ControlMapIndex, keys)) + key[1] = 'C'; + else + key[1] = ' '; + if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, Mod1MapIndex, keys) || + xCheckModifier(modMap->modifiermap, modMap->max_keypermod, Mod5MapIndex, keys)) + key[2] = 'A'; + else + key[2] = ' '; + if (xCheckModifier(modMap->modifiermap, modMap->max_keypermod, Mod4MapIndex, keys)) + key[3] = 'Y'; + else + key[3] = ' '; + + key[4] = 0; + + XFreeModifiermap(modMap); +} + +char *iupdrvGetSystemName(void) +{ + struct utsname un; + char *str = iupStrGetMemory(50); + + uname(&un); + strcpy(str, un.sysname); + + return str; +} + +char *iupdrvGetSystemVersion(void) +{ + struct utsname un; + char *str = iupStrGetMemory(60); + + uname(&un); + strcpy(str, un.release); + strcat(str, "."); + strcat(str, un.version); + + return str; +} + +char *iupdrvGetComputerName(void) +{ + char* str = iupStrGetMemory(50); + gethostname(str, 50); + return str; +} + +char *iupdrvGetUserName(void) +{ + return (char*)getlogin(); +} diff --git a/iup/src/win/iupwin_brush.c b/iup/src/win/iupwin_brush.c new file mode 100755 index 0000000..228e6d4 --- /dev/null +++ b/iup/src/win/iupwin_brush.c @@ -0,0 +1,62 @@ +/** \file + * \brief Windows Brush Cache + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include + +#include "iup.h" +#include "iup_array.h" + +#include "iupwin_brush.h" + + +typedef struct _IwinBrush +{ + HBRUSH hbrush; + COLORREF color; +} IwinBrush; + +static Iarray* win_brushes = NULL; + +HBRUSH iupwinBrushGet(COLORREF color) +{ + int i, count = iupArrayCount(win_brushes); + + /* If a brush with the desired color already exists... */ + IwinBrush* brushes = (IwinBrush*)iupArrayGetData(win_brushes); + for (i = 0; i < count; i++) + { + if (brushes[i].color == color) + return brushes[i].hbrush; + } + + /* If it doesn't exist, it should be created... */ + brushes = (IwinBrush*)iupArrayInc(win_brushes); + + brushes[i].color = color; + brushes[i].hbrush = CreateSolidBrush(color); + + return brushes[i].hbrush; +} + +void iupwinBrushInit(void) +{ + win_brushes = iupArrayCreate(50, sizeof(IwinBrush)); +} + +void iupwinBrushFinish(void) +{ + int i, count = iupArrayCount(win_brushes); + IwinBrush* brushes = (IwinBrush*)iupArrayGetData(win_brushes); + for (i = 0; i < count; i++) + { + DeleteObject(brushes[i].hbrush); + brushes[i].hbrush = NULL; + } + iupArrayDestroy(win_brushes); +} diff --git a/iup/src/win/iupwin_brush.h b/iup/src/win/iupwin_brush.h new file mode 100755 index 0000000..463f323 --- /dev/null +++ b/iup/src/win/iupwin_brush.h @@ -0,0 +1,26 @@ +/** \file + * \brief Windows Brush Cache + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPWIN_BRUSH_H +#define __IUPWIN_BRUSH_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* returns a brush from the brush cache. */ +HBRUSH iupwinBrushGet(COLORREF c); + +/* initializes the brush cache */ +void iupwinBrushInit(void); +void iupwinBrushFinish(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/win/iupwin_button.c b/iup/src/win/iupwin_button.c new file mode 100755 index 0000000..7f780e3 --- /dev/null +++ b/iup/src/win/iupwin_button.c @@ -0,0 +1,715 @@ +/** \file + * \brief Button Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_button.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_image.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" + + +#ifndef CDIS_SHOWKEYBOARDCUES +#define CDIS_SHOWKEYBOARDCUES 0x0200 /* it is defined only when _WIN32_WINNT >= 0x0501 */ +#endif + + +static int winButtonGetBorder(void) +{ + return 4; +} + +void iupdrvButtonAddBorders(int *x, int *y) +{ + int border_size = winButtonGetBorder()*2; + (*x) += border_size; + (*y) += border_size; +} + +/****************************************************************/ + +static int winButtonCalcAlignPosX(int horiz_alignment, int rect_width, int width, int xpad, int shift) +{ + int x; + + if (horiz_alignment == IUP_ALIGN_ARIGHT) + x = rect_width - (width + 2*xpad); + else if (horiz_alignment == IUP_ALIGN_ACENTER) + x = (rect_width - (width + 2*xpad))/2; + else /* ALEFT */ + x = 0; + + x += xpad; + + if (shift) + x++; + + return x; +} + +static int winButtonCalcAlignPosY(int vert_alignment, int rect_height, int height, int ypad, int shift) +{ + int y; + + if (vert_alignment == IUP_ALIGN_ABOTTOM) + y = rect_height - (height + 2*ypad); + else if (vert_alignment == IUP_ALIGN_ATOP) + y = 0; + else /* ACENTER */ + y = (rect_height - (height + 2*ypad))/2; + + y += ypad; + + if (shift) + y++; + + return y; +} + +static HBITMAP winButtonGetBitmap(Ihandle* ih, UINT itemState, int *shift, int *w, int *h, int *bpp, HBITMAP *hMask) +{ + char *name; + int make_inactive = 0; + HBITMAP hBitmap; + *hMask = NULL; + + if (itemState & ODS_DISABLED) + { + name = iupAttribGet(ih, "IMINACTIVE"); + if (!name) + { + name = iupAttribGet(ih, "IMAGE"); + make_inactive = 1; + } + } + else + { + name = iupAttribGet(ih, "IMPRESS"); + if (itemState & ODS_SELECTED && name) + { + if (shift && !iupAttribGetStr(ih, "IMPRESSBORDER")) + *shift = 0; + } + else + name = iupAttribGet(ih, "IMAGE"); + } + + hBitmap = iupImageGetImage(name, ih, make_inactive); + + /* must use this info, since image can be a driver image loaded from resources */ + iupdrvImageGetInfo(hBitmap, w, h, bpp); + + if (*bpp == 8) + *hMask = iupdrvImageCreateMask(IupGetHandle(name)); + + return hBitmap; +} + +static void winButtonDrawImageText(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState) +{ + int xpad = ih->data->horiz_padding + border, + ypad = ih->data->vert_padding + border; + int x, y, width, height, + txt_x, txt_y, txt_width, txt_height, + img_x, img_y, img_width, img_height, + bpp, shift = 0; + HFONT hFont = (HFONT)iupwinGetHFontAttrib(ih); + HBITMAP hBitmap, hMask; + COLORREF fgcolor; + + char* title = iupdrvBaseGetTitleAttrib(ih); + char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */ + iupdrvFontGetMultiLineStringSize(ih, str, &txt_width, &txt_height); + if (str && str!=title) free(str); + + if (itemState & ODS_DISABLED) + fgcolor = GetSysColor(COLOR_GRAYTEXT); + else + fgcolor = ih->data->fgcolor; + + hBitmap = winButtonGetBitmap(ih, itemState, NULL, &img_width, &img_height, &bpp, &hMask); + if (!hBitmap) + return; + + if (ih->data->img_position == IUP_IMGPOS_RIGHT || + ih->data->img_position == IUP_IMGPOS_LEFT) + { + width = img_width + txt_width + ih->data->spacing; + height = iupMAX(img_height, txt_height); + } + else + { + width = iupMAX(img_width, txt_width); + height = img_height + txt_height + ih->data->spacing; + } + + if (itemState & ODS_SELECTED && !iupwin_comctl32ver6) + shift = 1; + + x = winButtonCalcAlignPosX(ih->data->horiz_alignment, rect_width, width, xpad, shift); + y = winButtonCalcAlignPosY(ih->data->vert_alignment, rect_height, height, ypad, shift); + + switch(ih->data->img_position) + { + case IUP_IMGPOS_TOP: + img_y = y; + txt_y = y + img_height + ih->data->spacing; + if (img_width > txt_width) + { + img_x = x; + txt_x = x + (img_width-txt_width)/2; + } + else + { + img_x = x + (txt_width-img_width)/2; + txt_x = x; + } + break; + case IUP_IMGPOS_BOTTOM: + img_y = y + txt_height + ih->data->spacing; + txt_y = y; + if (img_width > txt_width) + { + img_x = x; + txt_x = x + (img_width-txt_width)/2; + } + else + { + img_x = x + (txt_width-img_width)/2; + txt_x = x; + } + break; + case IUP_IMGPOS_RIGHT: + img_x = x + txt_width + ih->data->spacing; + txt_x = x; + if (img_height > txt_height) + { + img_y = y; + txt_y = y + (img_height-txt_height)/2; + } + else + { + img_y = y + (txt_height-img_height)/2; + txt_y = y; + } + break; + default: /* IUP_IMGPOS_LEFT */ + img_x = x; + txt_x = x + img_width + ih->data->spacing; + if (img_height > txt_height) + { + img_y = y; + txt_y = y + (img_height-txt_height)/2; + } + else + { + img_y = y + (txt_height-img_height)/2; + txt_y = y; + } + break; + } + + iupwinDrawBitmap(hDC, hBitmap, hMask, img_x, img_y, img_width, img_height, bpp); + iupwinDrawText(hDC, title, txt_x, txt_y, txt_width, txt_height, hFont, fgcolor, 0); + + if (hMask) + DeleteObject(hMask); +} + +static void winButtonDrawImage(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState) +{ + int xpad = ih->data->horiz_padding + border, + ypad = ih->data->vert_padding + border; + int x, y, width, height, bpp, shift = 0; + HBITMAP hBitmap, hMask; + + if (itemState & ODS_SELECTED && !iupwin_comctl32ver6) + shift = 1; + + hBitmap = winButtonGetBitmap(ih, itemState, &shift, &width, &height, &bpp, &hMask); + if (!hBitmap) + return; + + x = winButtonCalcAlignPosX(ih->data->horiz_alignment, rect_width, width, xpad, shift); + y = winButtonCalcAlignPosY(ih->data->vert_alignment, rect_height, height, ypad, shift); + + iupwinDrawBitmap(hDC, hBitmap, hMask, x, y, width, height, bpp); + + if (hMask) + DeleteObject(hMask); +} + +static void winButtonDrawText(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState) +{ + int xpad = ih->data->horiz_padding + border, + ypad = ih->data->vert_padding + border; + int x, y, width, height, shift = 0; + COLORREF fgcolor; + + char* title = iupdrvBaseGetTitleAttrib(ih); + if (title) + { + HFONT hFont = (HFONT)iupwinGetHFontAttrib(ih); + char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */ + iupdrvFontGetMultiLineStringSize(ih, str, &width, &height); + if (str && str!=title) free(str); + + if (itemState & ODS_DISABLED) + fgcolor = GetSysColor(COLOR_GRAYTEXT); + else + fgcolor = ih->data->fgcolor; + + if (itemState & ODS_SELECTED && !iupwin_comctl32ver6) + shift = 1; + + x = winButtonCalcAlignPosX(ih->data->horiz_alignment, rect_width, width, xpad, shift); + y = winButtonCalcAlignPosY(ih->data->vert_alignment, rect_height, height, ypad, shift); + + iupwinDrawText(hDC, title, x, y, width, height, hFont, fgcolor, 0); + } + else + { + /* fill with the background color if defined at the element */ + char* bgcolor = iupAttribGet(ih, "BGCOLOR"); + if (bgcolor) + { + RECT rect; + unsigned char r=0, g=0, b=0; + iupStrToRGB(bgcolor, &r, &g, &b); + SetDCBrushColor(hDC, RGB(r,g,b)); + rect.left = xpad; + rect.top = ypad; + rect.right = rect_width - xpad; + rect.bottom = rect_height - ypad; + FillRect(hDC, &rect, (HBRUSH)GetStockObject(DC_BRUSH)); + } + } +} + +static void winButtonDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem) +{ + iupwinBitmapDC bmpDC; + int border, draw_border; + int width = drawitem->rcItem.right - drawitem->rcItem.left; + int height = drawitem->rcItem.bottom - drawitem->rcItem.top; + + HDC hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, width, height); + + iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem); + + if ((drawitem->itemState & ODS_FOCUS) && !(drawitem->itemState & ODS_HOTLIGHT)) + drawitem->itemState |= ODS_DEFAULT; + + border = winButtonGetBorder(); + + if (ih->data->type & IUP_BUTTON_IMAGE && iupAttribGet(ih, "IMPRESS") && !iupAttribGetStr(ih, "IMPRESSBORDER")) + draw_border = 0; + else + { + if (iupAttribGetBoolean(ih, "FLAT")) + { + if (drawitem->itemState & ODS_HOTLIGHT || iupAttribGet(ih, "_IUPWINBUT_ENTERWIN")) + draw_border = 1; + else + draw_border = 0; + } + else + draw_border = 1; + } + + if (draw_border) + iupwinDrawButtonBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState); + + if (ih->data->type == IUP_BUTTON_IMAGE) + winButtonDrawImage(ih, hDC, width, height, border, drawitem->itemState); + else if (ih->data->type == IUP_BUTTON_TEXT) + winButtonDrawText(ih, hDC, width, height, border, drawitem->itemState); + else /* both */ + winButtonDrawImageText(ih, hDC, width, height, border, drawitem->itemState); + + if (drawitem->itemState & ODS_FOCUS) + { + border--; + iupdrvDrawFocusRect(ih, hDC, border, border, width-2*border, height-2*border); + } + + iupwinDrawDestroyBitmapDC(&bmpDC); +} + + +/***********************************************************************************************/ + + +static int winButtonSetImageAttrib(Ihandle* ih, const char* value) +{ + (void)value; + if (ih->data->type != IUP_BUTTON_TEXT) + { + iupdrvDisplayUpdate(ih); + return 1; + } + else + return 0; +} + +static int winButtonSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + (void)value; + if (ih->data->type != IUP_BUTTON_TEXT) + { + iupdrvDisplayUpdate(ih); + return 1; + } + else + return 0; +} + +static int winButtonSetImPressAttrib(Ihandle* ih, const char* value) +{ + (void)value; + if (ih->data->type != IUP_BUTTON_TEXT) + { + iupdrvDisplayUpdate(ih); + return 1; + } + else + return 0; +} + +static int winButtonSetActiveAttrib(Ihandle* ih, const char* value) +{ + /* redraw IMINACTIVE image if any */ + if (ih->data->type != IUP_BUTTON_TEXT) + iupdrvDisplayUpdate(ih); + + return iupBaseSetActiveAttrib(ih, value); +} + +static int winButtonSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + char value1[30]="", value2[30]=""; + + iupStrToStrStr(value, value1, value2, ':'); + + if (iupStrEqualNoCase(value1, "ARIGHT")) + ih->data->horiz_alignment = IUP_ALIGN_ARIGHT; + else if (iupStrEqualNoCase(value1, "ALEFT")) + ih->data->horiz_alignment = IUP_ALIGN_ALEFT; + else /* "ACENTER" */ + ih->data->horiz_alignment = IUP_ALIGN_ACENTER; + + if (iupStrEqualNoCase(value2, "ABOTTOM")) + ih->data->vert_alignment = IUP_ALIGN_ABOTTOM; + else if (iupStrEqualNoCase(value2, "ATOP")) + ih->data->vert_alignment = IUP_ALIGN_ATOP; + else /* "ACENTER" */ + ih->data->vert_alignment = IUP_ALIGN_ACENTER; + + iupdrvDisplayRedraw(ih); + + return 1; +} + +static char* winButtonGetAlignmentAttrib(Ihandle *ih) +{ + char* horiz_align2str[3] = {"ALEFT", "ACENTER", "ARIGHT"}; + char* vert_align2str[3] = {"ATOP", "ACENTER", "ABOTTOM"}; + char *str = iupStrGetMemory(50); + sprintf(str, "%s:%s", horiz_align2str[ih->data->horiz_alignment], vert_align2str[ih->data->vert_alignment]); + return str; +} + +static int winButtonSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + if (ih->handle) + iupdrvDisplayRedraw(ih); + return 0; +} + +static int winButtonSetBgColorAttrib(Ihandle* ih, const char* value) +{ + /* update internal image cache for controls that have the IMAGE attribute */ + if (ih->data->type != IUP_BUTTON_TEXT) + { + iupAttribSetStr(ih, "BGCOLOR", value); + iupImageUpdateParent(ih); + iupdrvDisplayRedraw(ih); + } + return 1; +} + +static char* winButtonGetBgColorAttrib(Ihandle* ih) +{ + /* the most important use of this is to provide + the correct background for images */ + if (iupwin_comctl32ver6 && !iupAttribGet(ih, "IMPRESS")) + { + COLORREF cr; + if (iupwinDrawGetThemeButtonBgColor(ih->handle, &cr)) + { + char* str = iupStrGetMemory(20); + sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr)); + return str; + } + } + + if (iupAttribGet(ih, "IMPRESS")) + return iupBaseNativeParentGetBgColorAttrib(ih); + else + return NULL; +} + +static int winButtonSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (iupStrToRGB(value, &r, &g, &b)) + { + ih->data->fgcolor = RGB(r,g,b); + iupdrvDisplayRedraw(ih); + } + return 1; +} + +/****************************************************************************************/ + +static int winButtonProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + if (ih->data->type != IUP_BUTTON_TEXT) + { + /* redraw IMPRESS image if any */ + if ((msg == WM_LBUTTONDOWN || msg == WM_LBUTTONUP) && iupAttribGet(ih, "IMPRESS")) + iupdrvDisplayRedraw(ih); + } + + switch (msg) + { + case WM_XBUTTONDBLCLK: + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_XBUTTONDOWN: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + { + iupwinButtonDown(ih, msg, wp, lp); + break; + } + case WM_XBUTTONUP: + case WM_LBUTTONUP: + case WM_MBUTTONUP: + case WM_RBUTTONUP: + { + iupwinButtonUp(ih, msg, wp, lp); + + /* BN_CLICKED will NOT be notified when not receiving the focus */ + if (msg==WM_LBUTTONUP && !iupAttribGetBoolean(ih, "FOCUSONCLICK")) + { + Icallback cb = IupGetCallback(ih, "ACTION"); + if (cb && cb(ih) == IUP_CLOSE) + IupExitLoop(); + } + + break; + } + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + if (wp==VK_RETURN) + { + /* enter activates the button */ + iupdrvActivate(ih); + + *result = 0; + return 1; /* abort default processing, or the default button will be activated, + in this case even if there is a default button, this button must be activated instead. */ + } + break; + case WM_MOUSELEAVE: + if (!iupwin_comctl32ver6) + { + iupAttribSetStr(ih, "_IUPWINBUT_ENTERWIN", NULL); + iupdrvDisplayRedraw(ih); + } + break; + case WM_MOUSEMOVE: + if (!iupwin_comctl32ver6) + { + if (!iupAttribGet(ih, "_IUPWINBUT_ENTERWIN")) + { + iupAttribSetStr(ih, "_IUPWINBUT_ENTERWIN", "1"); + iupdrvDisplayRedraw(ih); + } + } + break; + case WM_SETFOCUS: + { + HWND previous = (HWND)wp; + if (!iupAttribGetBoolean(ih, "FOCUSONCLICK") && wp && iupAttribGet(ih, "_IUPWIN_ENTERWIN")) + { + SetFocus(previous); + *result = 0; + return 1; + } + } + break; + } + + return iupwinBaseProc(ih, msg, wp, lp, result); +} + +static int winButtonWmNotify(Ihandle* ih, NMHDR* msg_info, int *result) +{ + if (msg_info->code == NM_CUSTOMDRAW) + { + NMCUSTOMDRAW *customdraw = (NMCUSTOMDRAW*)msg_info; + + if (customdraw->dwDrawStage==CDDS_PREERASE) + { + DRAWITEMSTRUCT drawitem; + drawitem.itemState = 0; + + if (customdraw->uItemState & CDIS_DISABLED) + drawitem.itemState |= ODS_DISABLED; + else if (customdraw->uItemState & CDIS_SELECTED) + drawitem.itemState |= ODS_SELECTED; + else if (customdraw->uItemState & CDIS_HOT) + drawitem.itemState |= ODS_HOTLIGHT; + else if (customdraw->uItemState & CDIS_DEFAULT) + drawitem.itemState |= ODS_DEFAULT; + + if (customdraw->uItemState & CDIS_FOCUS && (customdraw->uItemState & CDIS_SHOWKEYBOARDCUES)) + drawitem.itemState |= ODS_FOCUS; + + drawitem.hDC = customdraw->hdc; + drawitem.rcItem = customdraw->rc; + + winButtonDrawItem(ih, (void*)&drawitem); /* Simulate a WM_DRAWITEM */ + + *result = CDRF_SKIPDEFAULT; + return 1; + } + } + + return 0; /* result not used */ +} + +static int winButtonWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp) +{ + int cmd = HIWORD(wp); + switch (cmd) + { + case BN_DOUBLECLICKED: + case BN_CLICKED: + { + Icallback cb = IupGetCallback(ih, "ACTION"); + if (cb && cb(ih) == IUP_CLOSE) + IupExitLoop(); + } + } + + (void)lp; + return 0; /* not used */ +} + +static int winButtonMapMethod(Ihandle* ih) +{ + char* value; + DWORD dwStyle = WS_CHILD | + BS_NOTIFY; /* necessary because of the base messages */ + + if (!ih->parent) + return IUP_ERROR; + + /* Buttons with the BS_PUSHBUTTON style do NOT use the returned brush in WM_CTLCOLORBTN. + Buttons with these styles are always drawn with the default system colors. + So FGCOLOR and BGCOLOR do NOT work. + The BS_FLAT style does NOT completely remove the borders. With XP styles is ignored. So FLAT do NOT work. + BCM_SETTEXTMARGIN is not working. + Buttons with images and with XP styles do NOT draw the focus feedback. + Can NOT remove the borders when using IMPRESS. + So IUP will draw its own button, + but uses the Windows functions to draw text and images in native format. */ + if (iupwin_comctl32ver6) + dwStyle |= BS_PUSHBUTTON; /* it will be an ownerdraw because we use NM_CUSTOMDRAW */ + else + dwStyle |= BS_OWNERDRAW; + + value = iupAttribGet(ih, "IMAGE"); + if (value) + { + ih->data->type = IUP_BUTTON_IMAGE; + + value = iupAttribGet(ih, "TITLE"); + if (value) + ih->data->type |= IUP_BUTTON_TEXT; + } + else + ih->data->type = IUP_BUTTON_TEXT; + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + dwStyle |= WS_TABSTOP; + + if (!iupwinCreateWindowEx(ih, "BUTTON", 0, dwStyle)) + return IUP_ERROR; + + /* Process WM_COMMAND */ + IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winButtonWmCommand); + + /* Process BUTTON_CB */ + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winButtonProc); + + if (iupwin_comctl32ver6) + IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winButtonWmNotify); /* Process WM_NOTIFY */ + else + IupSetCallback(ih, "_IUPWIN_DRAWITEM_CB", (Icallback)winButtonDrawItem); /* Process WM_DRAWITEM */ + + return IUP_NOERROR; +} + +void iupdrvButtonInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winButtonMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, winButtonSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", winButtonGetBgColorAttrib, winButtonSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winButtonSetFgColorAttrib, "DLGFGCOLOR", NULL, IUPAF_NOT_MAPPED); /* force the new default value */ + iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupButton only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", winButtonGetAlignmentAttrib, winButtonSetAlignmentAttrib, "ACENTER:ACENTER", NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, winButtonSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, winButtonSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, winButtonSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FOCUSONCLICK", NULL, NULL, "YES", NULL, IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "PADDING", iupButtonGetPaddingAttrib, winButtonSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); +} diff --git a/iup/src/win/iupwin_canvas.c b/iup/src/win/iupwin_canvas.c new file mode 100755 index 0000000..bb88b8a --- /dev/null +++ b/iup/src/win/iupwin_canvas.c @@ -0,0 +1,724 @@ +/** \file + * \brief Canvas Control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_canvas.h" +#include "iup_key.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_brush.h" + + +static void winCanvasSetScrollInfo(HWND hWnd, int imin, int imax, int ipos, int ipage, int flag) +{ + SCROLLINFO scrollinfo; + scrollinfo.cbSize = sizeof(SCROLLINFO); + scrollinfo.fMask = SIF_RANGE | SIF_PAGE | SIF_POS; + scrollinfo.nPage = ipage; + scrollinfo.nPos = ipos; + scrollinfo.nMax = imax; + scrollinfo.nMin = imin; + SetScrollInfo(hWnd, flag, &scrollinfo, TRUE); +} + +static int winCanvasSetBgColorAttrib(Ihandle *ih, const char *value) +{ + (void)value; + iupdrvDisplayUpdate(ih); + return 1; +} + +static int winCanvasSetDXAttrib(Ihandle *ih, const char *value) +{ + if (ih->data->sb & IUP_SB_HORIZ) + { + double posx, xmin, xmax; + float dx; + int iposx, ipagex; + + if (!iupStrToFloat(value, &dx)) + return 1; + + xmin = iupAttribGetFloat(ih, "XMIN"); + xmax = iupAttribGetFloat(ih, "XMAX"); + posx = ih->data->posx; + + iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx, + IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx); + + if (dx >= (xmax-xmin)) + { + if (iupAttribGetBoolean(ih, "XAUTOHIDE")) + ShowScrollBar(ih->handle, SB_HORZ, FALSE); + else + EnableScrollBar(ih->handle, SB_HORZ, ESB_DISABLE_BOTH); + return 1; + } + else + { + ShowScrollBar(ih->handle, SB_HORZ, TRUE); + EnableScrollBar(ih->handle, SB_HORZ, ESB_ENABLE_BOTH); + } + + winCanvasSetScrollInfo(ih->handle, IUP_SB_MIN, IUP_SB_MAX, iposx, ipagex, SB_HORZ); + + /* update position because it could be corrected */ + iupCanvasCalcScrollRealPos(xmin, xmax, &posx, + IUP_SB_MIN, IUP_SB_MAX, ipagex, &iposx); + + ih->data->posx = (float)posx; + } + return 1; +} + +static int winCanvasSetPosXAttrib(Ihandle *ih, const char *value) +{ + if (ih->data->sb & IUP_SB_HORIZ) + { + double xmin, xmax, dx; + float posx; + int iposx, ipagex; + + if (!iupStrToFloat(value, &posx)) + return 1; + + xmin = iupAttribGetFloat(ih, "XMIN"); + xmax = iupAttribGetFloat(ih, "XMAX"); + dx = iupAttribGetFloat(ih, "DX"); + + if (posx < xmin) posx = (float)xmin; + if (posx > (xmax - dx)) posx = (float)(xmax - dx); + ih->data->posx = posx; + + iupCanvasCalcScrollIntPos(xmin, xmax, dx, posx, + IUP_SB_MIN, IUP_SB_MAX, &ipagex, &iposx); + + SetScrollPos(ih->handle,SB_HORZ,iposx,TRUE); + } + return 1; +} + +static int winCanvasSetDYAttrib(Ihandle *ih, const char *value) +{ + if (ih->data->sb & IUP_SB_VERT) + { + double posy, ymin, ymax; + float dy; + int iposy, ipagey; + + if (!iupStrToFloat(value, &dy)) + return 1; + + ymin = iupAttribGetFloat(ih, "YMIN"); + ymax = iupAttribGetFloat(ih, "YMAX"); + posy = ih->data->posy; + + iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy, + IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy); + + if (dy >= (ymax-ymin)) + { + if (iupAttribGetBoolean(ih, "YAUTOHIDE")) + ShowScrollBar(ih->handle, SB_VERT, FALSE); + else + EnableScrollBar(ih->handle, SB_VERT, ESB_DISABLE_BOTH); + return 1; + } + else + { + ShowScrollBar(ih->handle, SB_VERT, TRUE); + EnableScrollBar(ih->handle, SB_VERT, ESB_ENABLE_BOTH); + } + + winCanvasSetScrollInfo(ih->handle, IUP_SB_MIN, IUP_SB_MAX, iposy, ipagey, SB_VERT); + + /* update position because it could be corrected */ + iupCanvasCalcScrollRealPos(ymin, ymax, &posy, + IUP_SB_MIN, IUP_SB_MAX, ipagey, &iposy); + + ih->data->posy = (float)posy; + } + return 1; +} + +static int winCanvasSetPosYAttrib(Ihandle *ih, const char *value) +{ + if (ih->data->sb & IUP_SB_VERT) + { + double ymin, ymax, dy; + float posy; + int iposy, ipagey; + + if (!iupStrToFloat(value, &posy)) + return 1; + + ymin = iupAttribGetFloat(ih, "YMIN"); + ymax = iupAttribGetFloat(ih, "YMAX"); + dy = iupAttribGetFloat(ih, "DY"); + + if (posy < ymin) posy = (float)ymin; + if (posy > (ymax - dy)) posy = (float)(ymax - dy); + ih->data->posy = posy; + + iupCanvasCalcScrollIntPos(ymin, ymax, dy, posy, + IUP_SB_MIN, IUP_SB_MAX, &ipagey, &iposy); + + SetScrollPos(ih->handle,SB_VERT,iposy,TRUE); + } + return 1; +} + +static void winCanvasGetScrollInfo(HWND hWnd, int *ipos, int *ipage, int flag, int track) +{ + SCROLLINFO scrollinfo; + scrollinfo.cbSize = sizeof(SCROLLINFO); + if (track) + scrollinfo.fMask = SIF_PAGE | SIF_TRACKPOS; + else + scrollinfo.fMask = SIF_PAGE | SIF_POS; + GetScrollInfo(hWnd, flag, &scrollinfo); + *ipage = scrollinfo.nPage; + if (track) + *ipos = scrollinfo.nTrackPos; + else + *ipos = scrollinfo.nPos; +} + +static void winCanvasUpdateHorScroll(Ihandle* ih, WORD winop) +{ + IFniff cb; + double xmin, xmax, posx, linex; + int ipagex, iposx, ilinex, op; + + /* unused */ + if (winop == SB_TOP || + winop == SB_BOTTOM || + winop == SB_ENDSCROLL) + return; + + xmax = iupAttribGetFloat(ih,"XMAX"); + xmin = iupAttribGetFloat(ih,"XMIN"); + + winCanvasGetScrollInfo(ih->handle, &iposx, &ipagex, SB_HORZ, winop==SB_THUMBTRACK? 1: 0); + + if (!iupAttribGet(ih,"LINEX")) + { + ilinex = ipagex/10; + if (!ilinex) + ilinex = 1; + } + else + { + /* line and page convertions are the same */ + linex = iupAttribGetFloat(ih,"LINEX"); + iupCanvasCalcScrollIntPos(xmin, xmax, linex, 0, + IUP_SB_MIN, IUP_SB_MAX, &ilinex, NULL); + } + + switch (winop) + { + case SB_LINEDOWN: + iposx = iposx + ilinex; + op = IUP_SBRIGHT; + break; + case SB_LINEUP: + iposx = iposx - ilinex; + op = IUP_SBLEFT; + break; + case SB_PAGEDOWN: + iposx = iposx + ipagex; + op = IUP_SBPGRIGHT; + break; + case SB_PAGEUP: + iposx = iposx - ipagex; + op = IUP_SBPGLEFT; + break; + case SB_THUMBTRACK: + op = IUP_SBDRAGH; + break; + case SB_THUMBPOSITION: + op = IUP_SBPOSH; + break; + default: + return; + } + + iupCanvasCalcScrollRealPos(xmin, xmax, &posx, + IUP_SB_MIN, IUP_SB_MAX, ipagex, &iposx); + + SetScrollPos(ih->handle,SB_HORZ,iposx,TRUE); + ih->data->posx = (float)posx; + + cb = (IFniff)IupGetCallback(ih,"SCROLL_CB"); + if (cb) + cb(ih,op,(float)posx,ih->data->posy); + else + { + IFnff cb = (IFnff)IupGetCallback(ih,"ACTION"); + if (cb) + cb (ih, (float)posx, ih->data->posy); + } +} + +static void winCanvasUpdateVerScroll(Ihandle* ih, WORD winop) +{ + IFniff cb; + double ymin, ymax, posy, liney; + int ipagey, iposy, iliney, op; + + /* unused */ + if (winop == SB_TOP || + winop == SB_BOTTOM || + winop == SB_ENDSCROLL) + return; + + ymax = iupAttribGetFloat(ih,"YMAX"); + ymin = iupAttribGetFloat(ih,"YMIN"); + + winCanvasGetScrollInfo(ih->handle, &iposy, &ipagey, SB_VERT, winop==SB_THUMBTRACK? 1: 0); + + if (!iupAttribGet(ih, "LINEY")) + { + iliney = ipagey/10; + if (!iliney) + iliney = 1; + } + else + { + /* line and page convertions are the same */ + liney = iupAttribGetFloat(ih,"LINEY"); + iupCanvasCalcScrollIntPos(ymin, ymax, liney, 0, + IUP_SB_MIN, IUP_SB_MAX, &iliney, NULL); + } + + switch (winop) + { + case SB_LINEDOWN: + iposy = iposy + iliney; + op = IUP_SBDN; + break; + case SB_LINEUP: + iposy = iposy - iliney; + op = IUP_SBUP; + break; + case SB_PAGEDOWN: + iposy = iposy + ipagey; + op = IUP_SBPGDN; + break; + case SB_PAGEUP: + iposy = iposy - ipagey; + op = IUP_SBPGUP; + break; + case SB_THUMBTRACK: + op = IUP_SBDRAGV; + break; + case SB_THUMBPOSITION: + op = IUP_SBPOSV; + break; + default: + return; + } + + iupCanvasCalcScrollRealPos(ymin, ymax, &posy, + IUP_SB_MIN, IUP_SB_MAX, ipagey, &iposy); + + SetScrollPos(ih->handle,SB_VERT,iposy,TRUE); + ih->data->posy = (float)posy; + + cb = (IFniff)IupGetCallback(ih,"SCROLL_CB"); + if (cb) + cb(ih, op, ih->data->posx,(float)posy); + else + { + IFnff cb = (IFnff)IupGetCallback(ih,"ACTION"); + if (cb) + cb (ih, ih->data->posx, (float)posy); + } +} + +static int winCanvasProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + switch (msg) + { + case WM_ERASEBKGND: + /* only paint background if ACTION is not defined */ + if (!IupGetCallback(ih, "ACTION")) + { + RECT rect; + HDC hdc = (HDC)wp; + COLORREF color; + iupwinGetColorRef(ih, "BGCOLOR", &color); + GetClientRect(ih->handle, &rect); + FillRect(hdc, &rect, iupwinBrushGet(color)); + } + /* always return non zero value */ + *result = 1; + return 1; + case WM_PAINT: + { + IFnff cb = (IFnff)IupGetCallback(ih, "ACTION"); + if (cb) + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(ih->handle, &ps); + iupAttribSetStr(ih, "HDC_WMPAINT", (char*)&hdc); + iupAttribSetStrf(ih, "CLIPRECT", "%d %d %d %d", ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right-ps.rcPaint.left, ps.rcPaint.bottom-ps.rcPaint.top); + + cb(ih, ih->data->posx, ih->data->posy); + + iupAttribSetStr(ih, "CLIPRECT", NULL); + iupAttribSetStr(ih, "HDC_WMPAINT", NULL); + EndPaint(ih->handle, &ps); + } + break; + } + case WM_SIZE: + { + IFnii cb = (IFnii)IupGetCallback(ih, "RESIZE_CB"); + if (cb) + { + RECT rect; + GetClientRect(ih->handle, &rect); + cb(ih, rect.right-rect.left, rect.bottom-rect.top); + /* w=LOWORD (lp), h=HIWORD(lp) can not be used because and invalid size + at the first time of WM_SIZE with scroolbars. */ + } + *result = 0; + return 1; + } + case WM_GETDLGCODE: + /* avoid beeps when keys are pressed */ + *result = DLGC_WANTCHARS|DLGC_WANTARROWS; + return 1; + case WM_MOUSEWHEEL: + { + IFnfiis cb = (IFnfiis)IupGetCallback(ih, "WHEEL_CB"); + short delta = (short)HIWORD(wp); + if (cb) + { + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + POINT p; + p.x = LOWORD(lp); p.y = HIWORD(lp); + ScreenToClient(ih->handle, &p); + + iupwinButtonKeySetStatus(LOWORD(wp), status, 0); + + cb(ih, (float)delta/120.0f, p.x, p.y, status); + } + else + { + if (ih->data->sb & IUP_SB_VERT) + { + int i, winop = delta>0? SB_LINEUP: SB_LINEDOWN; + delta = (short)abs(delta/120); + for (i=0; i < delta; i++) + SendMessage(ih->handle, WM_VSCROLL, MAKELONG(winop, 0), 0); + } + } + + *result = 0; + return 1; + } + case WM_XBUTTONDBLCLK: + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_XBUTTONDOWN: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + { + /* Force focus on canvas click */ + if (iupAttribGetBoolean(ih, "CANFOCUS")) + SetFocus(ih->handle); + + SetCapture(ih->handle); + + if (iupwinButtonDown(ih, msg, wp, lp)) + { + /* refresh the cursor, it could have been changed in BUTTON_CB */ + SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE)); + } + + if (msg==WM_XBUTTONDOWN || msg==WM_XBUTTONDBLCLK) + *result = 1; + else + *result = 0; + return 1; + } + case WM_MOUSEMOVE: + { + if (iupwinMouseMove(ih, msg, wp, lp)) + { + /* refresh the cursor, it could have been changed in MOTION_CB */ + SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE)); + } + + break; /* let iupwinBaseProc process enter/leavewin */ + } + case WM_XBUTTONUP: + case WM_LBUTTONUP: + case WM_MBUTTONUP: + case WM_RBUTTONUP: + { + ReleaseCapture(); + + if (iupwinButtonUp(ih, msg, wp, lp)) + { + /* refresh the cursor, it could have been changed in BUTTON_CB */ + SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE)); + } + + *result = 0; + if (msg==WM_XBUTTONUP) + *result = 1; + return 1; + } + case WM_KILLFOCUS: + { + if (GetCapture() == ih->handle) + ReleaseCapture(); + break; + } + case WM_SETCURSOR: + { + if (ih->handle == (HWND)wp && LOWORD(lp)==HTCLIENT) + { + HCURSOR hCur = (HCURSOR)iupAttribGet(ih, "_IUPWIN_HCURSOR"); + if (hCur) + { + SetCursor(hCur); + *result = 1; + return 1; + } + else if (iupAttribGet(ih, "CURSOR")) + { + SetCursor(NULL); + *result = 1; + return 1; + } + } + break; + } + case WM_INITMENU: + /* abort capture if a menu is opened */ + ReleaseCapture(); + break; + case WM_VSCROLL: + winCanvasUpdateVerScroll(ih, LOWORD(wp)); + *result = 0; + return 1; + case WM_HSCROLL: + winCanvasUpdateHorScroll(ih, LOWORD(wp)); + *result = 0; + return 1; + } + + /* can be a container */ + if (ih->firstchild) + return iupwinBaseContainerProc(ih, msg, wp, lp, result); + else + return iupwinBaseProc(ih, msg, wp, lp, result); +} + +static void winCanvasRegisterClass(void) +{ + WNDCLASS wndclass; + ZeroMemory(&wndclass, sizeof(WNDCLASS)); + + wndclass.hInstance = iupwin_hinstance; + wndclass.lpszClassName = "IupCanvas"; + wndclass.lpfnWndProc = (WNDPROC)iupwinBaseWinProc; + wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); + wndclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; /* using CS_OWNDC will minimize the work of cdActivate in the CD library */ + wndclass.hbrBackground = NULL; /* remove the background to optimize redraw */ + + RegisterClass(&wndclass); +} + +static int winCanvasMapMethod(Ihandle* ih) +{ + CLIENTCREATESTRUCT clientstruct; + void *clientdata = NULL; + char *classname; + DWORD dwStyle = WS_CHILD, dwExStyle = 0; + + if (!ih->parent) + return IUP_ERROR; + + if (ih->iclass->is_interactive) + { + if (iupAttribGetBoolean(ih, "CANFOCUS")) + dwStyle |= WS_TABSTOP; + } + + if (ih->firstchild) /* can be a container */ + { + dwStyle |= WS_CLIPSIBLINGS; + + if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED")) + dwExStyle |= WS_EX_COMPOSITED; + else + dwStyle |= WS_CLIPCHILDREN; + } + + if (iupAttribGetBoolean(ih, "MDICLIENT")) + { + /* creating a MDI Client that will be inside the MDI Frame, + it will work as parent of all MDI children */ + Ihandle *winmenu = IupGetAttributeHandle(ih, "MDIMENU"); + + classname = "mdiclient"; + + iupAttribSetStr(ih, "BORDER", "NO"); + + iupAttribSetStr(IupGetDialog(ih), "MDICLIENT_HANDLE", (char*)ih); + + clientdata = &clientstruct; + clientstruct.hWindowMenu = winmenu? winmenu->handle: NULL; + + /* The system increments the identifier + for each additional MDI child window the application creates, + and reassigns identifiers when the application + destroys a window to keep the range of identifiers contiguous. */ + clientstruct.idFirstChild = IUP_MDICHILD_START; + } + else + classname = "IupCanvas"; + + if (iupAttribGetBoolean(ih, "BORDER")) + dwStyle |= WS_BORDER; + + ih->data->sb = iupBaseGetScrollbar(ih); + if (ih->data->sb & IUP_SB_HORIZ) + dwStyle |= WS_HSCROLL; + if (ih->data->sb & IUP_SB_VERT) + dwStyle |= WS_VSCROLL; + + ih->serial = iupDialogGetChildId(ih); + + ih->handle = CreateWindowEx(dwExStyle,/* extended style */ + classname, /* window class */ + NULL, /* title */ + dwStyle, /* window style */ + 0, /* x-position */ + 0, /* y-position */ + 10, /* default width to avoid 0 */ + 10, /* default height to avoid 0 */ + iupChildTreeGetNativeParentHandle(ih), /* window parent */ + (HMENU)ih->serial, /* child identifier */ + iupwin_hinstance, /* instance of app. */ + clientdata); + + if (!ih->handle) + return IUP_ERROR; + + /* associate HWND with Ihandle*, all Win32 controls must call this. */ + iupwinHandleSet(ih); + + IupSetCallback(ih, "_IUPWIN_OLDPROC_CB", (Icallback)DefWindowProc); + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winCanvasProc); + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + return IUP_NOERROR; +} + +static void winCanvasMDICloseChildren(Ihandle* client) +{ + HWND hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0); + + /* As long as the MDI client has a child, close it */ + while (hWndChild) + { + Ihandle* child = iupwinHandleGet(hWndChild); + if (iupObjectCheck(child) && iupAttribGetBoolean(child, "MDICHILD")) + IupDestroy(child); + + hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0); + } +} + +static void winCanvasUnMapMethod(Ihandle* ih) +{ + if (iupAttribGetBoolean(ih, "MDICLIENT")) + { + /* hide the MDI client window to avoid multiple re-paints */ + ShowWindow(ih->handle, SW_HIDE); + + /* must destroy all MDI Children */ + winCanvasMDICloseChildren(ih); + + DestroyWindow(ih->handle); + + /* mdiclient class is not a IUP class, must return here */ + return; + } + + /* remove the association before destroying */ + iupwinHandleRemove(ih); + + /* remove from parent and destroys window */ + SetParent(ih->handle, NULL); + DestroyWindow(ih->handle); +} + +static void winCanvasReleaseMethod(Iclass* ic) +{ + (void)ic; + if (iupwinClassExist("IupCanvas")) + UnregisterClass("IupCanvas", iupwin_hinstance); +} + +void iupdrvCanvasInitClass(Iclass* ic) +{ + if (!iupwinClassExist("IupCanvas")) + winCanvasRegisterClass(); + + /* Driver Dependent Class functions */ + ic->Map = winCanvasMapMethod; + ic->UnMap = winCanvasUnMapMethod; + ic->Release = winCanvasReleaseMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winCanvasSetBgColorAttrib, "255 255 255", NULL, IUPAF_DEFAULT); /* force new default value */ + + /* IupCanvas only */ + iupClassRegisterAttribute(ic, "DRAWSIZE", iupdrvBaseGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "DX", NULL, winCanvasSetDXAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "DY", NULL, winCanvasSetDYAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "POSX", iupCanvasGetPosXAttrib, winCanvasSetPosXAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "POSY", iupCanvasGetPosYAttrib, winCanvasSetPosYAttrib, "0.0", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "XAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "YAUTOHIDE", NULL, NULL, "YES", NULL, IUPAF_NOT_MAPPED); + + /* IupCanvas Windows only */ + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HWND", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_clipboard.c b/iup/src/win/iupwin_clipboard.c new file mode 100755 index 0000000..1e0fab4 --- /dev/null +++ b/iup/src/win/iupwin_clipboard.c @@ -0,0 +1,190 @@ +/** \file + * \brief Clipboard for the Windows Driver. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" + +#include "iupwin_drv.h" + + +static int winClipboardSetTextAttrib(Ihandle *ih, const char *value) +{ + HANDLE hHandle; + void* clip_str; + int size = strlen(value)+1; + (void)ih; + + if (!OpenClipboard(NULL)) + return 0; + + hHandle = GlobalAlloc(GMEM_MOVEABLE, size); + if (!hHandle) + return 0; + + clip_str = GlobalLock(hHandle); + CopyMemory(clip_str, value, size); + GlobalUnlock(hHandle); + + EmptyClipboard(); + SetClipboardData(CF_TEXT, hHandle); + CloseClipboard(); + + return 0; +} + +static char* winClipboardGetTextAttrib(Ihandle *ih) +{ + HANDLE hHandle; + char* str; + (void)ih; + + if (!OpenClipboard(NULL)) + return NULL; + + hHandle = GetClipboardData(CF_TEXT); + if (!hHandle) + { + CloseClipboard(); + return NULL; + } + + str = iupStrGetMemoryCopy((char*)GlobalLock(hHandle)); + + GlobalUnlock(hHandle); + CloseClipboard(); + return str; +} + +static int winClipboardSetImageAttrib(Ihandle *ih, const char *value) +{ + HBITMAP hBitmap; + + if (!OpenClipboard(NULL)) + return 0; + + hBitmap = (HBITMAP)iupImageGetImage(value, ih, 0); + iupImageClearCache(ih, hBitmap); + + EmptyClipboard(); + SetClipboardData(CF_BITMAP, (HANDLE)hBitmap); + CloseClipboard(); + + return 0; +} + +static int winClipboardSetNativeImageAttrib(Ihandle *ih, const char *value) +{ + if (!OpenClipboard(NULL)) + return 0; + + EmptyClipboard(); + SetClipboardData(CF_DIB, (HANDLE)value); + CloseClipboard(); + + (void)ih; + return 0; +} + +static HANDLE winCopyHandle(HANDLE hHandle) +{ + void *src_data, *dst_data; + SIZE_T size = GlobalSize(hHandle); + HANDLE hNewHandle = GlobalAlloc(GMEM_MOVEABLE, size); + if (!hNewHandle) + return NULL; + + src_data = GlobalLock(hHandle); + dst_data = GlobalLock(hNewHandle); + CopyMemory(dst_data, src_data, size); + GlobalUnlock(hHandle); + GlobalUnlock(hNewHandle); + + return hNewHandle; +} + +static char* winClipboardGetNativeImageAttrib(Ihandle *ih) +{ + HANDLE hHandle; + + if (!OpenClipboard(NULL)) + return 0; + + hHandle = GetClipboardData(CF_DIB); + if (!hHandle) + { + CloseClipboard(); + return NULL; + } + + hHandle = winCopyHandle(hHandle); /* must duplicate because CloseClipboard will invalidate the handle */ + CloseClipboard(); + + (void)ih; + return (char*)hHandle; +} + +static char* winClipboardGetTextAvailableAttrib(Ihandle *ih) +{ + int check; + (void)ih; + OpenClipboard(NULL); + check = IsClipboardFormatAvailable(CF_TEXT); + CloseClipboard(); + if (check) + return "YES"; + else + return "NO"; +} + +static char* winClipboardGetImageAvailableAttrib(Ihandle *ih) +{ + int check; + (void)ih; + OpenClipboard(NULL); + check = IsClipboardFormatAvailable(CF_DIB); + CloseClipboard(); + if (check) + return "YES"; + else + return "NO"; +} + +/******************************************************************************/ + +Ihandle* IupClipboard(void) +{ + return IupCreate("clipboard"); +} + +Iclass* iupClipboardGetClass(void) +{ + Iclass* ic = iupClassNew(NULL); + + ic->name = "clipboard"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECONTROL; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Attribute functions */ + iupClassRegisterAttribute(ic, "TEXT", winClipboardGetTextAttrib, winClipboardSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NATIVEIMAGE", winClipboardGetNativeImageAttrib, winClipboardSetNativeImageAttrib, NULL, NULL, IUPAF_NO_STRING|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, winClipboardSetImageAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TEXTAVAILABLE", winClipboardGetTextAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEAVAILABLE", winClipboardGetImageAvailableAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/src/win/iupwin_colordlg.c b/iup/src/win/iupwin_colordlg.c new file mode 100755 index 0000000..f0baa79 --- /dev/null +++ b/iup/src/win/iupwin_colordlg.c @@ -0,0 +1,133 @@ +/** \file + * \brief IupColorDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" + + +#define IUP_COLOR_RED 706 + +static UINT_PTR winColorDlgHookProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) +{ + (void)wParam; + if (uiMsg == WM_INITDIALOG) + { + HWND hWndItem; + CHOOSECOLOR* choosecolor = (CHOOSECOLOR*)lParam; + Ihandle* ih = (Ihandle*)choosecolor->lCustData; + + char* value = iupAttribGet(ih, "TITLE"); + if (value) + SetWindowText(hWnd, value); + + ih->handle = hWnd; + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + iupAttribSetStr(ih, "HWND", (char*)hWnd); /* used by HELP_CB in winDialogBaseProc */ + + hWndItem = GetDlgItem(hWnd, IUP_COLOR_RED); + SetFocus(hWndItem); + } + return 0; +} + +static char* winColorDlgColorsToString(COLORREF* lpCustColors) +{ + int i, inc, off = 0; + char iup_str[20]; + char* str = iupStrGetMemory(300); + for (i=0; i < 16; i++) + { + inc = sprintf(iup_str, "%d %d %d;", (int)GetRValue(*lpCustColors), (int)GetGValue(*lpCustColors), (int)GetBValue(*lpCustColors)); + memcpy(str+off, iup_str, inc); + off += inc; + lpCustColors++; + } + str[off-1] = 0; /* remove last separator */ + return str; +} + +static void winColorDlgStringToColors(char* str, COLORREF* lpCustColors) +{ + int i = 0; + unsigned char r, g, b; + + while (str && *str && i < 16) + { + if (iupStrToRGB(str, &r, &g, &b)) + *lpCustColors = RGB(r,g,b); + + str = strchr(str, ';'); + if (str) str++; + i++; + lpCustColors++; + } +} + +static int winColorDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + CHOOSECOLOR choosecolor; + unsigned char r, g, b; + COLORREF lpCustColors[16]; + char* value; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + if (!parent) + parent = GetActiveWindow(); + + iupStrToRGB(iupAttribGet(ih, "VALUE"), &r, &g, &b); + + ZeroMemory(lpCustColors, 16*sizeof(COLORREF)); + + value = iupAttribGetStr(ih, "COLORTABLE"); + if (value) + winColorDlgStringToColors(value, lpCustColors); + + ZeroMemory(&choosecolor, sizeof(CHOOSECOLOR)); + choosecolor.lStructSize = sizeof(CHOOSECOLOR); + choosecolor.hwndOwner = parent; + choosecolor.rgbResult = RGB(r, g, b); + choosecolor.lpCustColors = lpCustColors; + choosecolor.lCustData = (LPARAM)ih; + + choosecolor.Flags = CC_RGBINIT|CC_FULLOPEN; + if (IupGetCallback(ih, "HELP_CB")) + choosecolor.Flags |= CC_SHOWHELP; + + choosecolor.Flags |= CC_ENABLEHOOK; + choosecolor.lpfnHook = (LPCCHOOKPROC)winColorDlgHookProc; + + if (!ChooseColor(&choosecolor)) + { + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "COLORTABLE", NULL); + iupAttribSetStr(ih, "STATUS", NULL); + return IUP_NOERROR; + } + + iupAttribSetStrf(ih, "VALUE", "%d %d %d", GetRValue(choosecolor.rgbResult), + GetGValue(choosecolor.rgbResult), + GetBValue(choosecolor.rgbResult)); + iupAttribSetStr(ih, "COLORTABLE", winColorDlgColorsToString(lpCustColors)); + iupAttribSetStr(ih, "STATUS", "1"); + + return IUP_NOERROR; +} + +void iupdrvColorDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = winColorDlgPopup; +} diff --git a/iup/src/win/iupwin_common.c b/iup/src/win/iupwin_common.c new file mode 100755 index 0000000..a1a7c0f --- /dev/null +++ b/iup/src/win/iupwin_common.c @@ -0,0 +1,865 @@ +/** \file + * \brief Windows Base Procedure + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_key.h" +#include "iup_str.h" +#include "iup_class.h" +#include "iup_attrib.h" +#include "iup_focus.h" +#include "iup_image.h" +#include "iup_dialog.h" +#include "iup_drvinfo.h" +#include "iup_drv.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_brush.h" + + +#ifndef XBUTTON1 +#define XBUTTON1 0x0001 /* not defined in MingW3 */ +#endif + +int iupwinClassExist(const char* name) +{ + WNDCLASS WndClass; + if (GetClassInfo(iupwin_hinstance, name, &WndClass)) + return 1; + return 0; +} + +int iupwinGetScreenRes(void) +{ + int res; + HDC ScreenDC = GetDC(NULL); + res = GetDeviceCaps(ScreenDC, LOGPIXELSY); + ReleaseDC(NULL, ScreenDC); + return res; +} + +void iupdrvActivate(Ihandle* ih) +{ + /* do not use BM_CLICK because it changes the focus + and does not animates the button press */ + SendMessage(ih->handle, BM_SETSTATE, TRUE, 0); + IupFlush(); + Sleep(150); + SendMessage(GetParent(ih->handle), WM_COMMAND, MAKEWPARAM(0, BN_CLICKED), (LPARAM)ih->handle); + SendMessage(ih->handle, BM_SETSTATE, FALSE, 0); +} + +WCHAR* iupwinStrChar2Wide(const char* str) +{ + if (str) + { + int len = strlen(str)+1; + WCHAR* wstr = malloc(len * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, str, -1, wstr, len); + return wstr; + } + + return NULL; +} + +int iupdrvGetScrollbarSize(void) +{ + int xv = GetSystemMetrics(SM_CXVSCROLL); + int yh = GetSystemMetrics(SM_CYHSCROLL); + return xv > yh ? xv : yh; +} + +void iupdrvReparent(Ihandle* ih) +{ + SetParent(ih->handle, iupChildTreeGetNativeParentHandle(ih)); +} + +void iupdrvBaseLayoutUpdateMethod(Ihandle *ih) +{ + SetWindowPos(ih->handle, NULL, ih->x, ih->y, ih->currentwidth, ih->currentheight, + SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER); +} + +void iupdrvDisplayRedraw(Ihandle *ih) +{ + /* REDRAW Now */ + RedrawWindow(ih->handle,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_INTERNALPAINT|RDW_NOCHILDREN|RDW_UPDATENOW); +} + +void iupdrvDisplayUpdate(Ihandle *ih) +{ + /* Post a REDRAW */ + RedrawWindow(ih->handle,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_INTERNALPAINT|RDW_NOCHILDREN); +} + +void iupdrvScreenToClient(Ihandle* ih, int *x, int *y) +{ + POINT p; + p.x = *x; + p.y = *y; + ScreenToClient(ih->handle, &p); + *x = p.x; + *y = p.y; +} + +static void winTrackMouse(HWND hwnd, int enter) +{ + TRACKMOUSEEVENT mouse; + mouse.cbSize = sizeof(TRACKMOUSEEVENT); + + if (enter) + mouse.dwFlags = TME_HOVER; + else + mouse.dwFlags = TME_LEAVE; + + mouse.hwndTrack = hwnd; + mouse.dwHoverTime = 1; + TrackMouseEvent(&mouse); +} + +static void winCallEnterLeaveWindow(Ihandle *ih, int enter) +{ + Icallback cb = NULL; + + if (!ih->iclass->is_interactive) + return; + + if (enter) + { + winTrackMouse(ih->handle, 0); + + if (!iupAttribGetInt(ih, "_IUPWIN_ENTERWIN")) + { + cb = IupGetCallback(ih,"ENTERWINDOW_CB"); + iupAttribSetStr(ih, "_IUPWIN_ENTERWIN", "1"); + } + } + else + { + cb = IupGetCallback(ih,"LEAVEWINDOW_CB"); + iupAttribSetStr(ih, "_IUPWIN_ENTERWIN", NULL); + } + + if (cb) + cb(ih); +} + +void iupwinMergeStyle(Ihandle* ih, DWORD old_mask, DWORD value) +{ + DWORD dwStyle = GetWindowLong(ih->handle, GWL_STYLE); + dwStyle &= ~(old_mask); /* clear old bits */ + dwStyle |= value; + SetWindowLong(ih->handle, GWL_STYLE, dwStyle); +} + +void iupwinSetStyle(Ihandle* ih, DWORD value, int set) +{ + DWORD dwStyle = GetWindowLong(ih->handle, GWL_STYLE); + if (set) + dwStyle |= value; + else + dwStyle &= ~(value); + SetWindowLong(ih->handle, GWL_STYLE, dwStyle); +} + +int iupwinBaseProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + (void)lp; + + switch (msg) + { + case WM_GETDLGCODE: + { + *result = DLGC_WANTALLKEYS; + return 1; + } + case WM_NOTIFY: /* usually sent only to parent, + but TIPs are configured to be handled here */ + { + NMHDR* msg_info = (NMHDR*)lp; + if (msg_info->code == TTN_GETDISPINFO) + iupwinTipsGetDispInfo(lp); + break; + } + case WM_DROPFILES: + iupwinDropFiles((HDROP)wp, ih); + break; + case WM_HELP: + { + Ihandle* child; + HELPINFO* help_info = (HELPINFO*)lp; + + if (help_info->iContextType == HELPINFO_MENUITEM) + child = iupwinMenuGetItemHandle((HMENU)help_info->hItemHandle, (int)help_info->iCtrlId); + else + child = iupwinHandleGet(help_info->hItemHandle); + + if (child) + { + Icallback cb = (Icallback) IupGetCallback(child, "HELP_CB"); + if (cb) + { + if (cb(child) == IUP_CLOSE) + IupExitLoop(); + + *result = 0; + return 1; /* abort default processing */ + } + } + break; + } + case WM_MOUSELEAVE: + winCallEnterLeaveWindow(ih, 0); + break; + case WM_MOUSEMOVE: + winCallEnterLeaveWindow(ih, 1); + break; + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + if (!iupwinKeyEvent(ih, (int)wp, 1)) + { + *result = 0; + return 1; /* abort default processing */ + } + break; + case WM_SYSKEYUP: + case WM_KEYUP: + { + int ret; + if (wp == VK_SNAPSHOT) /* called only on key up */ + { + ret = iupwinKeyEvent(ih, (int)wp, 1); + if (ret && iupObjectCheck(ih)) + ret = iupwinKeyEvent(ih, (int)wp, 0); + } + else + ret = iupwinKeyEvent(ih, (int)wp, 0); + + if (!ret) + { + *result = 0; + return 1; /* abort default processing */ + } + + break; + } + case WM_SETFOCUS: + iupwinWmSetFocus(ih); + break; + case WM_KILLFOCUS: + iupCallKillFocusCb(ih); + break; + case WOM_CLOSE: + case WOM_DONE: + case WOM_OPEN: + { + IFni cb = (IFni)IupGetCallback(ih, "WOM_CB"); + if (cb) + { + int v = -2; /* Error */ + switch(msg) + { + case WOM_OPEN: v = 1; break; + case WOM_DONE: v = 0; break; + case WOM_CLOSE: v = -1; break; + } + cb(ih, v); + } + break; + } + } + + return 0; +} + +LRESULT CALLBACK iupwinBaseWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) +{ + int ret = 0; + LRESULT result = 0; + IwinProc winProc; + WNDPROC oldProc; + Ihandle *ih; + + ih = iupwinHandleGet(hwnd); + if (!ih) + return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */ + + /* retrieve the control previous procedure for subclassing */ + oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB"); + + /* check if the element defines a custom procedure */ + winProc = (IwinProc)IupGetCallback(ih, "_IUPWIN_CTRLPROC_CB"); + if (winProc) + ret = winProc(ih, msg, wp, lp, &result); + else + ret = iupwinBaseProc(ih, msg, wp, lp, &result); + + if (ret) + return result; + else + return CallWindowProc(oldProc, hwnd, msg, wp, lp); +} + +static Ihandle* winContainerWmCommandGetIhandle(Ihandle *ih, WPARAM wp, LPARAM lp) +{ + /* WPARAM - if HIWORD is 0 if the message is from a menu. + or HIWORD is 1 if the message is from an accelerator. + or HIWORD is the notification code if the message is from a control. + LOWORD is the identifier. + LPARAM - the control sending the message or 0. */ + + Ihandle *child = NULL; + + if (HIWORD(wp)==0 && lp==0 && LOWORD(wp)>10) + { + Ihandle* dlg_menu = IupGetAttributeHandle(ih, "MENU"); + if (dlg_menu) + child = iupwinMenuGetItemHandle((HMENU)dlg_menu->handle, LOWORD(wp)); /* menu */ + } + else + { + if (lp==0) + child = ih; /* native parent */ + else + { + child = iupwinHandleGet((void*)lp); /* control */ + if (!child) + child = iupwinHandleGet((void*)GetParent((HWND)lp)); /* control */ + } + } + + return child; +} + +int iupwinBaseContainerProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + /* All messages here are sent to the parent Window, + but they are usefull for child controls. */ + + switch (msg) + { + case WM_COMMAND: + { + Ihandle* child = winContainerWmCommandGetIhandle(ih, wp, lp); + if (child) + { + IFnii cb = (IFnii)IupGetCallback(child, "_IUPWIN_COMMAND_CB"); + if (cb) + cb(child, wp, lp); + } + + break; + } + case WM_CTLCOLOREDIT: + case WM_CTLCOLORLISTBOX: + case WM_CTLCOLORBTN: + case WM_CTLCOLORSCROLLBAR: + case WM_CTLCOLORSTATIC: + { + Ihandle* child = iupwinHandleGet((void*)lp); + if (child) + { + IFctlColor cb = (IFctlColor)IupGetCallback(child, "_IUPWIN_CTLCOLOR_CB"); + if (cb) + return cb(child, (HDC)wp, result); + } + break; + } + case WM_DRAWITEM: /* for OWNERDRAW controls */ + { + Ihandle *child = NULL; + DRAWITEMSTRUCT *drawitem = (LPDRAWITEMSTRUCT)lp; + if (!drawitem) + break; + + if (wp == 0) /* a menu */ + child = iupwinMenuGetItemHandle((HMENU)drawitem->hwndItem, drawitem->itemID); + else + child = iupwinHandleGet(drawitem->hwndItem); + + if (child) + { + IFdrawItem cb = (IFdrawItem)IupGetCallback(child, "_IUPWIN_DRAWITEM_CB"); + if (cb) + { + cb(child, (void*)drawitem); + *result = TRUE; + return 1; + } + } + break; + } + case WM_HSCROLL: + case WM_VSCROLL: + { + Ihandle *child = iupwinHandleGet((void*)lp); + if (child) + { + IFni cb = (IFni)IupGetCallback(child, "_IUPWIN_CUSTOMSCROLL_CB"); + if (cb) + cb(child, LOWORD(wp)); + } + break; + } + case WM_NOTIFY: /* Currently, the following controls support custom draw functionality: + Header, List-view, Rebar, Toolbar, ToolTip, Trackbar, Tree-view. + And for Button if using Windows XP Style. */ + { + Ihandle *child; + NMHDR* msg_info = (NMHDR*)lp; + if (!msg_info) + break; + + child = iupwinHandleGet(msg_info->hwndFrom); + if (child) + { + IFnotify cb = (IFnotify)IupGetCallback(child, "_IUPWIN_NOTIFY_CB"); + if (cb) + { + if (cb(child, (void*)msg_info, result)) + return 1; + } + } + break; + } + } + + return iupwinBaseProc(ih, msg, wp, lp, result); +} + +void iupwinChangeProc(Ihandle *ih, WNDPROC new_proc) +{ + IupSetCallback(ih, "_IUPWIN_OLDPROC_CB", (Icallback)GetWindowLongPtr(ih->handle, GWLP_WNDPROC)); + SetWindowLongPtr(ih->handle, GWLP_WNDPROC, (LONG_PTR)new_proc); +} + +void iupdrvBaseUnMapMethod(Ihandle* ih) +{ + WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB"); + if (oldProc) + { + SetWindowLongPtr(ih->handle, GWLP_WNDPROC, (LONG_PTR)oldProc); + IupSetCallback(ih, "_IUPWIN_OLDPROC_CB", NULL); + } + + /* remove the association before destroying */ + iupwinHandleRemove(ih); + + /* destroys window (it will remove from parent) */ + DestroyWindow(ih->handle); +} + +void iupwinDropFiles(HDROP hDrop, Ihandle *ih) +{ + char *filename; + int i, numFiles, numchar, ret; + POINT point; + + IFnsiii cb = (IFnsiii)IupGetCallback(ih, "DROPFILES_CB"); + if (!cb) return; + + numFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0); + DragQueryPoint(hDrop, &point); + for (i = 0; i < numFiles; i++) + { + numchar = DragQueryFile(hDrop, i, NULL, 0); + filename = malloc(numchar+1); + if (!filename) + break; + + DragQueryFile(hDrop, i, filename, numchar+1); + + ret = cb(ih, filename, numFiles-i-1, (int) point.x, (int) point.y); + + free(filename); + + if (ret == IUP_IGNORE) + break; + } + DragFinish(hDrop); +} + +int iupwinGetColorRef(Ihandle *ih, char *name, COLORREF *color) +{ + unsigned char r, g, b; + /* must use IupGetAttribute to use inheritance */ + if (iupStrToRGB(IupGetAttribute(ih, name), &r, &g, &b)) + { + *color = RGB(r,g,b); + return 1; + } + return 0; +} + +int iupwinGetParentBgColor(Ihandle* ih, COLORREF* cr) +{ + unsigned char r, g, b; + char* color = iupBaseNativeParentGetBgColorAttrib(ih); + if (iupStrToRGB(color, &r, &g, &b)) + { + *cr = RGB(r,g,b); + return 1; + } + return 0; +} + +int iupdrvBaseSetZorderAttrib(Ihandle* ih, const char* value) +{ + if (IsWindowVisible(ih->handle)) + { + if (iupStrEqualNoCase(value, "TOP")) + SetWindowPos(ih->handle, HWND_TOP, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE); + else + SetWindowPos(ih->handle, HWND_BOTTOM, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE); + } + + return 0; +} + +void iupdrvSetVisible(Ihandle* ih, int visible) +{ + ShowWindow(ih->handle, visible? SW_SHOWNORMAL: SW_HIDE); +} + +int iupdrvIsVisible(Ihandle* ih) +{ + return IsWindowVisible(ih->handle); +} + +int iupdrvIsActive(Ihandle* ih) +{ + return IsWindowEnabled(ih->handle); +} + +void iupdrvSetActive(Ihandle* ih, int enable) +{ + EnableWindow(ih->handle, enable); +} + +int iupdrvBaseSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (!value) value = ""; + SetWindowText(ih->handle, value); + return 0; +} + +char* iupdrvBaseGetTitleAttrib(Ihandle* ih) +{ + int nc = GetWindowTextLength(ih->handle); + if (nc) + { + char* str = iupStrGetMemory(nc+1); + GetWindowText(ih->handle, str, nc+1); + return str; + } + else + return NULL; +} + +int iupwinSetDragDropAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + DragAcceptFiles(ih->handle, TRUE); + else + DragAcceptFiles(ih->handle, FALSE); + return 1; +} + +char *iupdrvBaseGetXAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + RECT rect; + GetWindowRect(ih->handle, &rect); + sprintf(str, "%d", (int)rect.left); + return str; +} + +char *iupdrvBaseGetYAttrib(Ihandle *ih) +{ + char* str = iupStrGetMemory(20); + RECT rect; + GetWindowRect(ih->handle, &rect); + sprintf(str, "%d", (int)rect.top); + return str; +} + +char* iupdrvBaseGetClientSizeAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + RECT rect; + GetClientRect(ih->handle, &rect); + sprintf(str, "%dx%d", (int)(rect.right-rect.left), (int)(rect.bottom-rect.top)); + return str; +} + +#ifndef IDC_HAND +#define IDC_HAND MAKEINTRESOURCE(32649) +#endif +#ifndef IDC_APPSTARTING +#define IDC_APPSTARTING MAKEINTRESOURCE(32650) +#endif +#ifndef IDC_HELP +#define IDC_HELP MAKEINTRESOURCE(32651) +#endif + +static HCURSOR winGetCursor(Ihandle* ih, const char* name) +{ + static struct { + const char* iupname; + const char* sysname; + } table[] = { + {"NONE", NULL}, + {"NULL", NULL}, + {"ARROW", IDC_ARROW}, + {"BUSY", IDC_WAIT}, + {"CROSS", IDC_CROSS}, + {"HAND", IDC_HAND}, + {"MOVE", IDC_SIZEALL}, + {"RESIZE_N", IDC_SIZENS}, + {"RESIZE_S", IDC_SIZENS}, + {"RESIZE_NS", IDC_SIZENS}, + {"RESIZE_W", IDC_SIZEWE}, + {"RESIZE_E", IDC_SIZEWE}, + {"RESIZE_WE", IDC_SIZEWE}, + {"RESIZE_NE", IDC_SIZENESW}, + {"RESIZE_SE", IDC_SIZENWSE}, + {"RESIZE_NW", IDC_SIZENWSE}, + {"RESIZE_SW", IDC_SIZENESW}, + {"TEXT", IDC_IBEAM}, + {"HELP", IDC_HELP}, + {"IUP", IDC_HELP}, + {"NO", IDC_NO}, + {"UPARROW", IDC_UPARROW}, + {"APPSTARTING", IDC_APPSTARTING} + }; + + HCURSOR cur; + char str[50]; + int i, count = sizeof(table)/sizeof(table[0]); + + /* check the cursor cache first (per control)*/ + sprintf(str, "_IUPWIN_CURSOR_%s", name); + cur = (HCURSOR)iupAttribGet(ih, str); + if (cur) + return cur; + + /* check the pre-defined IUP names first */ + for (i = 0; i < count; i++) + { + if (iupStrEqualNoCase(name, table[i].iupname)) + { + if (table[i].sysname) + cur = LoadCursor(NULL, table[i].sysname); + else + cur = NULL; + + break; + } + } + + if (i == count) + { + /* check other system cursors */ + /* cursor PEN is handled here */ + if (iupStrEqualNoCase(name, "PEN")) + name = "CURSOR_PEN"; + + /* check for an name defined cursor */ + cur = iupImageGetCursor(name); + } + + iupAttribSetStr(ih, str, (char*)cur); + return cur; +} + +int iupdrvBaseSetCursorAttrib(Ihandle* ih, const char* value) +{ + /* Cursor can be NULL in Windows. */ + HCURSOR hCur = winGetCursor(ih, value); + iupAttribSetStr(ih, "_IUPWIN_HCURSOR", (char*)hCur); /* To be used in WM_SETCURSOR */ + /* refresh the cursor */ + SendMessage(ih->handle, WM_SETCURSOR, (WPARAM)ih->handle, MAKELPARAM(1,WM_MOUSEMOVE)); + return 1; +} + +void iupdrvBaseRegisterCommonAttrib(Iclass* ic) +{ + iupClassRegisterAttribute(ic, "HFONT", iupwinGetHFontAttrib, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); +} + +int iupwinButtonDown(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp) +{ + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + int ret, doubleclick = 0; + int b = 0; + + IFniiiis cb = (IFniiiis) IupGetCallback(ih, "BUTTON_CB"); + if (!cb) + return 0; + + if (msg==WM_XBUTTONDBLCLK || + msg==WM_LBUTTONDBLCLK || + msg==WM_MBUTTONDBLCLK || + msg==WM_RBUTTONDBLCLK) + doubleclick = 1; + + iupwinButtonKeySetStatus(LOWORD(wp), status, doubleclick); + + if (msg==WM_LBUTTONDOWN || msg==WM_LBUTTONDBLCLK) + b = IUP_BUTTON1; + else if (msg==WM_MBUTTONDOWN || msg==WM_MBUTTONDBLCLK) + b = IUP_BUTTON2; + else if (msg==WM_RBUTTONDOWN || msg==WM_RBUTTONDBLCLK) + b = IUP_BUTTON3; + else if (msg==WM_XBUTTONDOWN || msg==WM_XBUTTONDBLCLK) + { + if (HIWORD(wp) == XBUTTON1) + b = IUP_BUTTON4; + else + b = IUP_BUTTON5; + } + + ret = cb(ih, b, 1, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp), status); + if (ret == IUP_CLOSE) + IupExitLoop(); + else if (ret == IUP_IGNORE) + return -1; + + return 1; +} + +int iupwinButtonUp(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp) +{ + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + int ret, b=0; + IFniiiis cb = (IFniiiis) IupGetCallback(ih, "BUTTON_CB"); + if (!cb) + return 0; + + iupwinButtonKeySetStatus(LOWORD(wp), status, 0); + + /* also updates the button status, since wp could not have the flag */ + if (msg==WM_LBUTTONUP) + { + b = IUP_BUTTON1; + iupKEYSETBUTTON1(status); + } + else if (msg==WM_MBUTTONUP) + { + b = IUP_BUTTON2; + iupKEYSETBUTTON2(status); + } + else if (msg==WM_RBUTTONUP) + { + b = IUP_BUTTON3; + iupKEYSETBUTTON3(status); + } + else if (msg==WM_XBUTTONUP) + { + if (HIWORD(wp) == XBUTTON1) + { + b = IUP_BUTTON4; + iupKEYSETBUTTON4(status); + } + else + { + b = IUP_BUTTON5; + iupKEYSETBUTTON5(status); + } + } + + ret = cb(ih, b, 0, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp), status); + if (ret == IUP_CLOSE) + IupExitLoop(); + else if (ret == IUP_IGNORE) + return -1; + + return 1; +} + +int iupwinMouseMove(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp) +{ + IFniis cb = (IFniis)IupGetCallback(ih, "MOTION_CB"); + if (cb) + { + char status[IUPKEY_STATUS_SIZE] = IUPKEY_STATUS_INIT; + iupwinButtonKeySetStatus(LOWORD(wp), status, 0); + cb(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp), status); + return 1; + } + (void)msg; + return 0; +} + +int iupwinCreateWindowEx(Ihandle* ih, LPCSTR lpClassName, DWORD dwExStyle, DWORD dwStyle) +{ + ih->serial = iupDialogGetChildId(ih); + + ih->handle = CreateWindowEx(dwExStyle, /* extended window style */ + lpClassName, /* window class */ + NULL, /* title */ + dwStyle, /* window style */ + 0, /* x-position */ + 0, /* y-position */ + 10, /* default width to avoid 0 */ + 10, /* default height to avoid 0 */ + iupChildTreeGetNativeParentHandle(ih), /* window parent */ + (HMENU)ih->serial, /* child identifier */ + iupwin_hinstance, /* instance of app. */ + NULL); + + if (!ih->handle) + return 0; + + /* associate HWND with Ihandle*, all Win32 controls must call this. */ + iupwinHandleSet(ih); + + /* replace the WinProc to handle base callbacks */ + iupwinChangeProc(ih, iupwinBaseWinProc); + + return 1; +} + +char* iupwinGetClipboardText(Ihandle* ih) +{ + HANDLE Handle; + char* str; + + if (!IsClipboardFormatAvailable(CF_TEXT)) + return NULL; + + if (!OpenClipboard(ih->handle)) + return NULL; + + Handle = GetClipboardData(CF_TEXT); + if (!Handle) + { + CloseClipboard(); + return NULL; + } + + str = (char*)GlobalLock(Handle); + str = iupStrDup(str); + + GlobalUnlock(Handle); + + CloseClipboard(); + + return str; +} diff --git a/iup/src/win/iupwin_dialog.c b/iup/src/win/iupwin_dialog.c new file mode 100755 index 0000000..39fdc0c --- /dev/null +++ b/iup/src/win/iupwin_dialog.c @@ -0,0 +1,1439 @@ +/** \file + * \brief IupDialog class + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_layout.h" +#include "iup_dlglist.h" +#include "iup_attrib.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_drvfont.h" +#include "iup_focus.h" +#include "iup_str.h" +#define _IUPDLG_PRIVATE +#include "iup_dialog.h" +#include "iup_image.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_brush.h" +#include "iupwin_info.h" + + +#define IWIN_TRAY_NOTIFICATION 102 + +static int WM_HELPMSG; + +static int winDialogSetBgColorAttrib(Ihandle* ih, const char* value); +static int winDialogSetTrayAttrib(Ihandle *ih, const char *value); + +/**************************************************************** + Utilities +****************************************************************/ + +int iupdrvDialogIsVisible(Ihandle* ih) +{ + return iupdrvIsVisible(ih); +} + +void iupdrvDialogUpdateSize(Ihandle* ih) +{ + RECT rect; + GetWindowRect(ih->handle, &rect); + ih->currentwidth = rect.right-rect.left; + ih->currentheight = rect.bottom-rect.top; +} + +void iupdrvDialogGetSize(InativeHandle* handle, int *w, int *h) +{ + RECT rect; + GetWindowRect(handle, &rect); + if (w) *w = rect.right-rect.left; + if (h) *h = rect.bottom-rect.top; +} + +void iupdrvDialogSetVisible(Ihandle* ih, int visible) +{ + ShowWindow(ih->handle, visible? ih->data->cmd_show: SW_HIDE); +} + +void iupdrvDialogGetPosition(InativeHandle* handle, int *x, int *y) +{ + RECT rect; + GetWindowRect(handle, &rect); + if (x) *x = rect.left; + if (y) *y = rect.top; +} + +void iupdrvDialogSetPosition(Ihandle *ih, int x, int y) +{ + /* Only moves the window and places it at the top of the Z order. */ + SetWindowPos(ih->handle, HWND_TOP, x, y, 0, 0, SWP_NOSIZE); +} + +void iupdrvDialogGetDecoration(Ihandle* ih, int *border, int *caption, int *menu) +{ + if (ih->data->menu) + *menu = iupdrvMenuGetMenuBarSize(ih->data->menu); + else + *menu = 0; + + if (ih->handle) + { + iupdrvGetWindowDecor(ih->handle, border, caption); + + if (*menu) + *caption -= *menu; + } + else + { + int has_titlebar = iupAttribGetBoolean(ih, "MAXBOX") || + iupAttribGetBoolean(ih, "MINBOX") || + iupAttribGetBoolean(ih, "MENUBOX") || + IupGetAttribute(ih, "TITLE"); /* must use IupGetAttribute to check from the native implementation */ + + *caption = 0; + if (has_titlebar) + { + if (iupAttribGetBoolean(ih, "TOOLBOX") && iupAttribGet(ih, "PARENTDIALOG")) + *caption = GetSystemMetrics(SM_CYSMCAPTION); /* tool window */ + else + *caption = GetSystemMetrics(SM_CYCAPTION); /* normal window */ + } + + *border = 0; + if (iupAttribGetBoolean(ih, "RESIZE")) + { + *border = GetSystemMetrics(SM_CXFRAME); /* Thickness of the sizing border around the perimeter of a window */ + } /* that can be resized, in pixels. */ + else if (has_titlebar) + { + *border = GetSystemMetrics(SM_CXFIXEDFRAME); /* Thickness of the frame around the perimeter of a window */ + } /* that has a caption but is not sizable, in pixels. */ + else if (iupAttribGetBoolean(ih, "BORDER")) + { + *border = GetSystemMetrics(SM_CXBORDER); + } + } +} + +int iupdrvDialogSetPlacement(Ihandle* ih) +{ + char* placement; + + ih->data->cmd_show = SW_SHOWNORMAL; + ih->data->show_state = IUP_SHOW; + + if (iupAttribGetBoolean(ih, "FULLSCREEN")) + return 1; + + placement = iupAttribGet(ih, "PLACEMENT"); + if (!placement) + { + if (IsIconic(ih->handle) || IsZoomed(ih->handle)) + ih->data->show_state = IUP_RESTORE; + return 0; + } + + if (iupStrEqualNoCase(placement, "MAXIMIZED")) + { + ih->data->cmd_show = SW_SHOWMAXIMIZED; + ih->data->show_state = IUP_MAXIMIZE; + } + else if (iupStrEqualNoCase(placement, "MINIMIZED")) + { + ih->data->cmd_show = SW_SHOWMINIMIZED; + ih->data->show_state = IUP_MINIMIZE; + } + else if (iupStrEqualNoCase(placement, "FULL")) + { + int width, height, x, y; + int caption, border, menu; + iupdrvDialogGetDecoration(ih, &border, &caption, &menu); + + /* the dialog will cover the task bar */ + iupdrvGetFullSize(&width, &height); + + /* position the decoration and menu outside the screen */ + x = -(border); + y = -(border+caption+menu); + + width += 2*border; + height += 2*border + caption + menu; + + /* set the new size and position */ + /* WM_SIZE will update the layout */ + SetWindowPos(ih->handle, HWND_TOP, x, y, width, height, 0); + + if (IsIconic(ih->handle) || IsZoomed(ih->handle)) + ih->data->show_state = IUP_RESTORE; + } + + iupAttribSetStr(ih, "PLACEMENT", NULL); /* reset to NORMAL */ + + return 1; +} + +static int winDialogMDICloseChildren(Ihandle* ih) +{ + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + if (iupObjectCheck(client)) + { + HWND hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0); + + /* As long as the MDI client has a child, close it */ + while (hWndChild) + { + Ihandle* child = iupwinHandleGet(hWndChild); + if (iupObjectCheck(child) && iupAttribGetBoolean(child, "MDICHILD")) + { + Icallback cb = IupGetCallback(child, "CLOSE_CB"); + if (cb) + { + int ret = cb(child); + if (ret == IUP_IGNORE) + return 0; + if (ret == IUP_CLOSE) + IupExitLoop(); + } + + IupDestroy(child); + } + + hWndChild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0); + } + } + return 1; +} + + +/**************************************************************************** + WindowProc +****************************************************************************/ + + +static Ihandle* winMinMaxHandle = NULL; + +static int winDialogCheckMinMaxInfo(Ihandle* ih, MINMAXINFO* minmax) +{ + int min_w = 1, min_h = 1; /* MINSIZE default value */ + int max_w = 65535, max_h = 65535; /* MAXSIZE default value */ + + iupStrToIntInt(iupAttribGet(ih, "MINSIZE"), &min_w, &min_h, 'x'); + iupStrToIntInt(iupAttribGet(ih, "MAXSIZE"), &max_w, &max_h, 'x'); + + minmax->ptMinTrackSize.x = min_w; + minmax->ptMinTrackSize.y = min_h; + minmax->ptMaxTrackSize.x = max_w; + minmax->ptMaxTrackSize.y = max_h; + + if (winMinMaxHandle == ih) + winMinMaxHandle = NULL; + + return 1; +} + +static void winDialogResize(Ihandle* ih, int width, int height) +{ + IFnii cb; + + iupdrvDialogUpdateSize(ih); + + cb = (IFnii)IupGetCallback(ih, "RESIZE_CB"); + if (!cb || cb(ih, width, height)!=IUP_IGNORE) /* width and height here are for the client area */ + { + ih->data->ignore_resize = 1; + IupRefresh(ih); + ih->data->ignore_resize = 0; + } +} + +static int winDialogBaseProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + if (iupwinBaseContainerProc(ih, msg, wp, lp, result)) + return 1; + + iupwinMenuDialogProc(ih, msg, wp, lp); + + switch (msg) + { + case WM_GETMINMAXINFO: + { + if (winDialogCheckMinMaxInfo(ih, (MINMAXINFO*)lp)) + { + *result = 0; + return 1; + } + break; + } + case WM_MOVE: + { + IFnii cb = (IFnii)IupGetCallback(ih, "MOVE_CB"); + RECT rect; + GetWindowRect(ih->handle, &rect); /* ignore LPARAM because they are the clientpos and not X/Y */ + if (cb) cb(ih, rect.left, rect.top); + break; + } + case WM_SIZE: + { + if (ih->data->ignore_resize) + break; + + switch(wp) + { + case SIZE_MINIMIZED: + { + if (ih->data->show_state != IUP_MINIMIZE) + { + IFni show_cb = (IFni)IupGetCallback(ih, "SHOW_CB"); + if (show_cb && show_cb(ih, IUP_MINIMIZE) == IUP_CLOSE) + IupExitLoop(); + ih->data->show_state = IUP_MINIMIZE; + } + break; + } + case SIZE_MAXIMIZED: + { + if (ih->data->show_state != IUP_MAXIMIZE) + { + IFni show_cb = (IFni)IupGetCallback(ih, "SHOW_CB"); + if (show_cb && show_cb(ih, IUP_MAXIMIZE) == IUP_CLOSE) + IupExitLoop(); + ih->data->show_state = IUP_MAXIMIZE; + } + + winDialogResize(ih, LOWORD(lp), HIWORD(lp)); + break; + } + case SIZE_RESTORED: + { + if (ih->data->show_state == IUP_MAXIMIZE || ih->data->show_state == IUP_MINIMIZE) + { + IFni show_cb = (IFni)IupGetCallback(ih, "SHOW_CB"); + if (show_cb && show_cb(ih, IUP_RESTORE) == IUP_CLOSE) + IupExitLoop(); + ih->data->show_state = IUP_RESTORE; + } + + winDialogResize(ih, LOWORD(lp), HIWORD(lp)); + break; + } + } + + break; + } + case WM_USER+IWIN_TRAY_NOTIFICATION: + { + int dclick = 0; + int button = 0; + int pressed = 0; + + switch (lp) + { + case WM_LBUTTONDOWN: + pressed = 1; + button = 1; + break; + case WM_MBUTTONDOWN: + pressed = 1; + button = 2; + break; + case WM_RBUTTONDOWN: + pressed = 1; + button = 3; + break; + case WM_LBUTTONDBLCLK: + dclick = 1; + button = 1; + break; + case WM_MBUTTONDBLCLK: + dclick = 1; + button = 2; + break; + case WM_RBUTTONDBLCLK: + dclick = 1; + button = 3; + break; + case WM_LBUTTONUP: + button = 1; + break; + case WM_MBUTTONUP: + button = 2; + break; + case WM_RBUTTONUP: + button = 3; + break; + } + + if (button != 0) + { + IFniii cb = (IFniii)IupGetCallback(ih, "TRAYCLICK_CB"); + if (cb && cb(ih, button, pressed, dclick) == IUP_CLOSE) + IupExitLoop(); + } + + break; + } + case WM_CLOSE: + { + Icallback cb = IupGetCallback(ih, "CLOSE_CB"); + if (cb) + { + int ret = cb(ih); + if (ret == IUP_IGNORE) + { + *result = 0; + return 1; + } + if (ret == IUP_CLOSE) + IupExitLoop(); + } + + /* child mdi is automatically destroyed */ + if (iupAttribGetBoolean(ih, "MDICHILD")) + IupDestroy(ih); + else + { + if (!winDialogMDICloseChildren(ih)) + { + *result = 0; + return 1; + } + + IupHide(ih); /* IUP default processing */ + } + + *result = 0; + return 1; + } + case WM_SETCURSOR: + { + if (ih->handle == (HWND)wp && LOWORD(lp)==HTCLIENT) + { + HCURSOR hCur = (HCURSOR)iupAttribGet(ih, "_IUPWIN_HCURSOR"); + if (hCur) + { + SetCursor(hCur); + *result = 1; + return 1; + } + else if (iupAttribGet(ih, "CURSOR")) + { + SetCursor(NULL); + *result = 1; + return 1; + } + } + break; + } + case WM_ERASEBKGND: + { + HBITMAP hBitmap = (HBITMAP)iupAttribGet(ih, "_IUPWIN_BACKGROUND_BITMAP"); + if (hBitmap) + { + RECT rect; + HDC hdc = (HDC)wp; + + HBRUSH hBrush = CreatePatternBrush(hBitmap); + GetClientRect(ih->handle, &rect); + FillRect(hdc, &rect, hBrush); + DeleteObject(hBrush); + + /* return non zero value */ + *result = 1; + return 1; + } + else + { + unsigned char r, g, b; + char* color = iupAttribGet(ih, "_IUPWIN_BACKGROUND_COLOR"); + if (iupStrToRGB(color, &r, &g, &b)) + { + RECT rect; + HDC hdc = (HDC)wp; + + SetDCBrushColor(hdc, RGB(r,g,b)); + GetClientRect(ih->handle, &rect); + FillRect(hdc, &rect, (HBRUSH)GetStockObject(DC_BRUSH)); + + /* return non zero value */ + *result = 1; + return 1; + } + } + break; + } + case WM_DESTROY: + { + /* Since WM_CLOSE changed the Windows default processing */ + /* WM_DESTROY is NOT received by IupDialogs */ + /* Except when they are children of other IupDialogs and the parent is destroyed. */ + /* So we have to destroy the child dialog. */ + /* The application is responsable for destroying the children before this happen. */ + IupDestroy(ih); + break; + } + } + + if (msg == (UINT)WM_HELPMSG) + { + Ihandle* child = NULL; + DWORD* struct_ptr = (DWORD*)lp; + if (*struct_ptr == sizeof(CHOOSECOLOR)) + { + CHOOSECOLOR* choosecolor = (CHOOSECOLOR*)lp; + child = (Ihandle*)choosecolor->lCustData; + } + if (*struct_ptr == sizeof(CHOOSEFONT)) + { + CHOOSEFONT* choosefont = (CHOOSEFONT*)lp; + child = (Ihandle*)choosefont->lCustData; + } + + if (child) + { + Icallback cb = IupGetCallback(child, "HELP_CB"); + if (cb && cb(child) == IUP_CLOSE) + EndDialog((HWND)iupAttribGet(child, "HWND"), IDCANCEL); + } + } + + return 0; +} + +static LRESULT CALLBACK winDialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) +{ + LRESULT result; + Ihandle *ih = iupwinHandleGet(hwnd); + if (!ih) + { + /* the first time WM_GETMINMAXINFO is called, Ihandle is not associated yet */ + if (msg == WM_GETMINMAXINFO && winMinMaxHandle) + { + if (winDialogCheckMinMaxInfo(winMinMaxHandle, (MINMAXINFO*)lp)) + return 0; + } + + return DefWindowProc(hwnd, msg, wp, lp); + } + + if (winDialogBaseProc(ih, msg, wp, lp, &result)) + return result; + + return DefWindowProc(hwnd, msg, wp, lp); +} + +static LRESULT CALLBACK winDialogMDIChildProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) +{ + LRESULT result; + Ihandle *ih = iupwinHandleGet(hwnd); + if (!ih) + { + /* the first time WM_GETMINMAXINFO is called, Ihandle is not associated yet */ + if (msg == WM_GETMINMAXINFO && winMinMaxHandle) + { + if (winDialogCheckMinMaxInfo(winMinMaxHandle, (MINMAXINFO*)lp)) + return 0; + } + + return DefMDIChildProc(hwnd, msg, wp, lp); + } + + switch (msg) + { + case WM_MDIACTIVATE: + { + HWND hNewActive = (HWND)lp; + if (hNewActive == ih->handle) + { + Icallback cb = (Icallback)IupGetCallback(ih, "MDIACTIVATE_CB"); + if (cb) cb(ih); + } + break; + } + } + + if (winDialogBaseProc(ih, msg, wp, lp, &result)) + return result; + + return DefMDIChildProc(hwnd, msg, wp, lp); +} + +static Ihandle* winDialogGetMdiChildId(Ihandle* ih, int mdi_child_id) +{ + int id, max_child_id, real_id = -1; + char name[50]; + Ihandle* child; + + max_child_id = iupAttribGetInt(ih, "_IUPWIN_MAX_MDI_ID"); + + for (id = 0; id < max_child_id; id++) + { + sprintf(name, "_IUPWIN_MDI_ID_[%d]", id); + child = (Ihandle*)iupAttribGet(ih, name); + if (iupObjectCheck(child)) + { + real_id++; + if (real_id == mdi_child_id) + return child; + } + } + + return NULL; +} + +static LRESULT CALLBACK winDialogMDIFrameProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) +{ + LRESULT result; + HWND hWndClient = NULL; + Ihandle *ih = iupwinHandleGet(hwnd); + if (!ih) + { + /* the first time WM_GETMINMAXINFO is called, Ihandle is not associated yet */ + if (msg == WM_GETMINMAXINFO && winMinMaxHandle) + { + if (winDialogCheckMinMaxInfo(winMinMaxHandle, (MINMAXINFO*)lp)) + return 0; + } + + return DefFrameProc(hwnd, hWndClient, msg, wp, lp); + } + + { + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + if (client) hWndClient = client->handle; + } + + if (winDialogBaseProc(ih, msg, wp, lp, &result)) + return result; + + switch (msg) + { + case WM_MENUCOMMAND: + { + int menuId = GetMenuItemID((HMENU)lp, (int)wp); + if (menuId >= IUP_MDICHILD_START && hWndClient) + { + Ihandle* child = winDialogGetMdiChildId(ih, menuId-IUP_MDICHILD_START); + if (child) + SendMessage(hWndClient, WM_MDIACTIVATE, (WPARAM)child->handle, 0); + break; + } + } + } + + + return DefFrameProc(hwnd, hWndClient, msg, wp, lp); +} + +static void winDialogRegisterClass(int mdi) +{ + char* name; + WNDCLASS wndclass; + WNDPROC winproc; + ZeroMemory(&wndclass, sizeof(WNDCLASS)); + + if (mdi == 2) + { + name = "IupDialogMDIChild"; + winproc = (WNDPROC)winDialogMDIChildProc; + } + else if (mdi == 1) + { + name = "IupDialogMDIFrame"; + winproc = (WNDPROC)winDialogMDIFrameProc; + } + else + { + if (mdi == -1) + name = "IupDialogControl"; + else + name = "IupDialog"; + winproc = (WNDPROC)winDialogProc; + } + + wndclass.hInstance = iupwin_hinstance; + wndclass.lpszClassName = name; + wndclass.lpfnWndProc = (WNDPROC)winproc; + wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); + + /* To use a standard system color, must increase the background-color value by one */ + if (mdi == 1) + wndclass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1); + else + wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); + + if (mdi == 0) + wndclass.style |= CS_SAVEBITS; + + if (mdi == -1) + wndclass.style |= CS_HREDRAW | CS_VREDRAW; + + RegisterClass(&wndclass); +} + + +/**************************************************************** + dialog class functions +****************************************************************/ + + +static int winDialogMapMethod(Ihandle* ih) +{ + InativeHandle* native_parent; + DWORD dwStyle = WS_CLIPSIBLINGS, + dwExStyle = 0; + int has_titlebar = 0, + has_border = 0; + char* classname = "IupDialog"; + + char* title = iupAttribGet(ih, "TITLE"); + if (title) + has_titlebar = 1; + + if (iupAttribGetBoolean(ih, "DIALOGFRAME")) + { + iupAttribSetStr(ih, "RESIZE", "NO"); + iupAttribSetStr(ih, "MINBOX", "NO"); + } + + if (iupAttribGetBoolean(ih, "RESIZE")) + dwStyle |= WS_THICKFRAME; + else + iupAttribSetStr(ih, "MAXBOX", "NO"); /* Must also remove this to RESIZE=NO work */ + + if (iupAttribGetBoolean(ih, "MAXBOX")) + { + dwStyle |= WS_MAXIMIZEBOX; + has_titlebar = 1; + } + + if (iupAttribGetBoolean(ih, "MINBOX")) + { + dwStyle |= WS_MINIMIZEBOX; + has_titlebar = 1; + } + + if (iupAttribGetBoolean(ih, "MENUBOX")) + { + dwStyle |= WS_SYSMENU; + has_titlebar = 1; + } + + if (iupAttribGetBoolean(ih, "BORDER") || has_titlebar) + has_border = 1; + + if (iupAttribGetBoolean(ih, "MDICHILD")) + { + static int mdi_child_id = 0; + Ihandle *client; + char name[50]; + + /* must have a parent dialog (the mdi frame) */ + Ihandle* parent = IupGetAttributeHandle(ih, "PARENTDIALOG"); + if (!parent || !parent->handle) + return IUP_ERROR; + + /* set when the mdi client is mapped */ + client = (Ihandle*)iupAttribGet(parent, "MDICLIENT_HANDLE"); + if (!client) + return IUP_ERROR; + + /* store the mdi client handle in each mdi child also */ + iupAttribSetStr(ih, "MDICLIENT_HANDLE", (char*)client); + + sprintf(name, "_IUPWIN_MDI_ID_[%d]", mdi_child_id); + iupAttribSetStr(parent, name, (char*)ih); + mdi_child_id++; + iupAttribSetInt(parent, "_IUPWIN_MAX_MDI_ID", mdi_child_id); + + classname = "IupDialogMDIChild"; + + /* The actual parent is the mdi client */ + native_parent = client->handle; + + dwStyle |= WS_CHILD; + if (has_titlebar) + dwStyle |= WS_CAPTION; + else if (has_border) + dwStyle |= WS_BORDER; + + if (!IupGetName(ih)) + iupAttribSetHandleName(ih); + } + else + { + native_parent = iupDialogGetNativeParent(ih); + + if (native_parent) + { + dwStyle |= WS_POPUP; + + if (has_titlebar) + dwStyle |= WS_CAPTION; + else if (has_border) + dwStyle |= WS_BORDER; + } + else + { + if (has_titlebar) + { + dwStyle |= WS_OVERLAPPED; + } + else + { + if (has_border) + dwStyle |= WS_POPUP | WS_BORDER; + else + dwStyle |= WS_POPUP; + + dwExStyle |= WS_EX_NOACTIVATE; /* this will hide it from the taskbar */ + } + } + + if (iupAttribGet(ih, "MDIFRAME")) + classname = "IupDialogMDIFrame"; + } + + if (iupAttribGetBoolean(ih, "TOOLBOX") && native_parent) + dwExStyle |= WS_EX_TOOLWINDOW | WS_EX_WINDOWEDGE; + + if (iupAttribGetBoolean(ih, "DIALOGFRAME") && native_parent) + dwExStyle |= WS_EX_DLGMODALFRAME; /* this will hide the MENUBOX but not the close button */ + + if (iupAttribGetBoolean(ih, "COMPOSITED")) + dwExStyle |= WS_EX_COMPOSITED; + else + dwStyle |= WS_CLIPCHILDREN; + + if (iupAttribGetBoolean(ih, "HELPBUTTON")) + dwExStyle |= WS_EX_CONTEXTHELP; + + if (iupAttribGetBoolean(ih, "CONTROL") && native_parent) + { + /* TODO: this were used by LuaCom to create embeded controls, + don't know if it is still working */ + dwStyle = WS_CHILD | WS_TABSTOP | WS_CLIPCHILDREN; + classname = "IupDialogControl"; + } + + /* CreateWindowEx will send WM_GETMINMAXINFO before Ihandle is associated with HWND */ + if (iupAttribGet(ih, "MINSIZE") || iupAttribGet(ih, "MAXSIZE")) + winMinMaxHandle = ih; + + /* size will be updated in IupRefresh -> winDialogLayoutUpdate */ + /* position will be updated in iupDialogShowXY */ + + if (iupAttribGetBoolean(ih, "MDICHILD")) + ih->handle = CreateMDIWindow(classname, + title, /* title */ + dwStyle, /* style */ + 0, /* x-position */ + 0, /* y-position */ + 100, /* horizontal size - set this to avoid size calculation problems */ + 100, /* vertical size */ + native_parent, /* owner window */ + iupwin_hinstance, /* instance of app. */ + 0); /* no creation parameters */ + else + ih->handle = CreateWindowEx(dwExStyle, /* extended styles */ + classname, /* class */ + title, /* title */ + dwStyle, /* style */ + 0, /* x-position */ + 0, /* y-position */ + 100, /* horizontal size - set this to avoid size calculation problems */ + 100, /* vertical size */ + native_parent, /* owner window */ + (HMENU)0, /* Menu or child-window identifier */ + iupwin_hinstance, /* instance of app. */ + NULL); /* no creation parameters */ + if (!ih->handle) + return IUP_ERROR; + + /* associate HWND with Ihandle*, all Win32 controls must call this. */ + iupwinHandleSet(ih); + + if (iupStrEqual(classname, "IupDialogMDIChild")) /* hides the mdi child */ + ShowWindow(ih->handle, SW_HIDE); + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + /* Reset attributes handled during creation that */ + /* also can be changed later, and can be consulted from the native system. */ + iupAttribSetStr(ih, "TITLE", NULL); + iupAttribSetStr(ih, "BORDER", NULL); + + /* Ignore VISIBLE before mapping */ + iupAttribSetStr(ih, "VISIBLE", NULL); + + /* Set the default CmdShow for ShowWindow */ + ih->data->cmd_show = SW_SHOWNORMAL; + + return IUP_NOERROR; +} + +static void winDialogUnMapMethod(Ihandle* ih) +{ + if (ih->data->menu) + { + ih->data->menu->handle = NULL; /* the dialog will destroy the native menu */ + IupDestroy(ih->data->menu); + } + + if (iupAttribGet(ih, "_IUPDLG_HASTRAY")) + winDialogSetTrayAttrib(ih, NULL); + + /* remove the association before destroying */ + iupwinHandleRemove(ih); + + /* Destroys the window, so we can destroy the class */ + if (iupAttribGetBoolean(ih, "MDICHILD")) + { + /* for MDICHILDs must send WM_MDIDESTROY, instead of calling DestroyWindow */ + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + SendMessage(client->handle, WM_MDIDESTROY, (WPARAM)ih->handle, 0); + } + else + DestroyWindow(ih->handle); /* this will destroy the Windows children also. */ + /* but IupDestroy already destroyed the IUP children */ + /* so it is safe to call DestroyWindow */ +} + +static void winDialogLayoutUpdateMethod(Ihandle *ih) +{ + if (ih->data->ignore_resize) + return; + + ih->data->ignore_resize = 1; + + /* for dialogs the position is not updated here */ + SetWindowPos(ih->handle, 0, 0, 0, ih->currentwidth, ih->currentheight, + SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSENDCHANGING); + + ih->data->ignore_resize = 0; +} + +static void winDialogReleaseMethod(Iclass* ic) +{ + (void)ic; + if (iupwinClassExist("IupDialog")) + { + UnregisterClass("IupDialog", iupwin_hinstance); + UnregisterClass("IupDialogControl", iupwin_hinstance); + UnregisterClass("IupDialogMDIChild", iupwin_hinstance); + UnregisterClass("IupDialogMDIFrame", iupwin_hinstance); + } +} + + + +/**************************************************************************** + Attributes +****************************************************************************/ + + +static int winDialogSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (iupStrToRGB(value, &r, &g, &b)) + { + iupAttribStoreStr(ih, "_IUPWIN_BACKGROUND_COLOR", value); + iupAttribSetStr(ih, "_IUPWIN_BACKGROUND_BITMAP", NULL); + RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_ERASENOW); /* force a WM_ERASEBKGND now */ + return 1; + } + return 0; +} + +static int winDialogSetBackgroundAttrib(Ihandle* ih, const char* value) +{ + if (winDialogSetBgColorAttrib(ih, value)) + return 1; + else + { + HBITMAP hBitmap = iupImageGetImage(value, ih, 0); + if (hBitmap) + { + iupAttribSetStr(ih, "_IUPWIN_BACKGROUND_COLOR", NULL); + iupAttribSetStr(ih, "_IUPWIN_BACKGROUND_BITMAP", (char*)hBitmap); + RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_ERASENOW); /* force a WM_ERASEBKGND now */ + return 1; + } + } + + return 0; +} + +static HWND iupwin_mdifirst = NULL; +static HWND iupwin_mdinext = NULL; + +static char* winDialogGetMdiActiveAttrib(Ihandle *ih) +{ + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + if (client) + { + HWND hchild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0); + Ihandle* child = iupwinHandleGet(hchild); + if (child) + { + iupwin_mdinext = NULL; + iupwin_mdifirst = hchild; + return IupGetName(child); + } + } + + iupwin_mdifirst = NULL; + iupwin_mdinext = NULL; + return NULL; +} + +static char* winDialogGetMdiNextAttrib(Ihandle *ih) +{ + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + if (client) + { + Ihandle* child; + HWND hchild = iupwin_mdinext? iupwin_mdinext: iupwin_mdifirst; + + /* Skip the icon title windows */ + while (hchild && GetWindow (hchild, GW_OWNER)) + hchild = GetWindow(hchild, GW_HWNDNEXT); + + if (!hchild || hchild == iupwin_mdifirst) + { + iupwin_mdinext = NULL; + return NULL; + } + + child = iupwinHandleGet(hchild); + if (child) + { + iupwin_mdinext = hchild; + return IupGetName(child); + } + } + + iupwin_mdinext = NULL; + return NULL; +} + +/* define this here, so we do not need to define _WIN32_WINNT=0x0500 */ +#ifndef WS_EX_LAYERED +#define WS_EX_LAYERED 0x00080000 +#endif + +#ifndef LWA_ALPHA +#define LWA_ALPHA 0x00000002 +#endif + +typedef BOOL (WINAPI*winSetLayeredWindowAttributes)( + HWND hwnd, + COLORREF crKey, + BYTE bAlpha, + DWORD dwFlags); + +static int winDialogSetOpacityAttrib(Ihandle *ih, const char *value) +{ + DWORD dwExStyle = GetWindowLong(ih->handle, GWL_EXSTYLE); + if (!value) + { + if (dwExStyle & WS_EX_LAYERED) + { + dwExStyle &= ~WS_EX_LAYERED; /* remove the style */ + SetWindowLong(ih->handle, GWL_EXSTYLE, dwExStyle); + RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_INVALIDATE|RDW_FRAME|RDW_ALLCHILDREN); /* invalidate everything and all children */ + } + return 0; + } + + if (!(dwExStyle & WS_EX_LAYERED)) + { + dwExStyle |= WS_EX_LAYERED; /* add the style */ + SetWindowLong(ih->handle, GWL_EXSTYLE, dwExStyle); + } + + { + static winSetLayeredWindowAttributes mySetLayeredWindowAttributes = NULL; + + int opacity; + if (!iupStrToInt(value, &opacity)) + return 0; + + if (!mySetLayeredWindowAttributes) + { + HMODULE hinstDll = LoadLibrary("user32.dll"); + if (hinstDll) + mySetLayeredWindowAttributes = (winSetLayeredWindowAttributes)GetProcAddress(hinstDll, "SetLayeredWindowAttributes"); + } + + if (mySetLayeredWindowAttributes) + mySetLayeredWindowAttributes(ih->handle, 0, (BYTE)opacity, LWA_ALPHA); + } + + RedrawWindow(ih->handle, NULL, NULL, RDW_ERASE|RDW_INVALIDATE|RDW_FRAME|RDW_ALLCHILDREN); /* invalidate everything and all children */ + return 1; +} + +static int winDialogSetMdiArrangeAttrib(Ihandle *ih, const char *value) +{ + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + if (client) + { + UINT msg = 0; + WPARAM wp = 0; + + if (iupStrEqualNoCase(value, "TILEHORIZONTAL")) + { + msg = WM_MDITILE; + wp = MDITILE_HORIZONTAL; + } + else if (iupStrEqualNoCase(value, "TILEVERTICAL")) + { + msg = WM_MDITILE; + wp = MDITILE_VERTICAL; + } + else if (iupStrEqualNoCase(value, "CASCADE")) + msg = WM_MDICASCADE; + else if (iupStrEqualNoCase(value, "ICON")) + msg = WM_MDIICONARRANGE; + + if (msg) + SendMessage(client->handle, msg, wp, 0); + } + return 0; +} + +static int winDialogSetMdiActivateAttrib(Ihandle *ih, const char *value) +{ + Ihandle* client = (Ihandle*)iupAttribGet(ih, "MDICLIENT_HANDLE"); + if (client) + { + Ihandle* child = IupGetHandle(value); + if (child) + SendMessage(client->handle, WM_MDIACTIVATE, (WPARAM)child->handle, 0); + else + { + HWND hchild = (HWND)SendMessage(client->handle, WM_MDIGETACTIVE, 0, 0); + if (iupStrEqualNoCase(value, "NEXT")) + SendMessage(client->handle, WM_MDINEXT, (WPARAM)hchild, TRUE); + else if (iupStrEqualNoCase(value, "PREVIOUS")) + SendMessage(client->handle, WM_MDINEXT, (WPARAM)hchild, FALSE); + } + } + return 0; +} + +static int winDialogSetMdiCloseAllAttrib(Ihandle *ih, const char *value) +{ + (void)value; + winDialogMDICloseChildren(ih); + return 0; +} + +static void winDialogTrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip) +{ + NOTIFYICONDATA tnd; + memset(&tnd, 0, sizeof(NOTIFYICONDATA)); + + tnd.cbSize = sizeof(NOTIFYICONDATA); + tnd.hWnd = hWnd; + tnd.uID = 1000; + + if (dwMessage == NIM_ADD) + { + tnd.uFlags = NIF_MESSAGE; + tnd.uCallbackMessage = WM_USER+IWIN_TRAY_NOTIFICATION; + } + else if (dwMessage == NIM_MODIFY) + { + if (hIcon) + { + tnd.uFlags |= NIF_ICON; + tnd.hIcon = hIcon; + } + + if (pszTip) + { + tnd.uFlags |= NIF_TIP; + lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip)); + } + } + + Shell_NotifyIcon(dwMessage, &tnd); +} + +static int winDialogCheckTray(Ihandle *ih) +{ + if (iupAttribGet(ih, "_IUPDLG_HASTRAY")) + return 1; + + if (iupAttribGetBoolean(ih, "TRAY")) + { + winDialogTrayMessage(ih->handle, NIM_ADD, NULL, NULL); + iupAttribSetStr(ih, "_IUPDLG_HASTRAY", "YES"); + return 1; + } + + return 0; +} + +static int winDialogSetTrayAttrib(Ihandle *ih, const char *value) +{ + int tray = iupStrBoolean(value); + if (iupAttribGet(ih, "_IUPDLG_HASTRAY")) + { + if (!tray) + { + winDialogTrayMessage(ih->handle, NIM_DELETE, NULL, NULL); + iupAttribSetStr(ih, "_IUPDLG_HASTRAY", NULL); + } + } + else + { + if (tray) + { + winDialogTrayMessage(ih->handle, NIM_ADD, NULL, NULL); + iupAttribSetStr(ih, "_IUPDLG_HASTRAY", "YES"); + } + } + return 1; +} + +static int winDialogSetTrayTipAttrib(Ihandle *ih, const char *value) +{ + if (winDialogCheckTray(ih)) + winDialogTrayMessage(ih->handle, NIM_MODIFY, NULL, (PSTR)value); + return 1; +} + +static int winDialogSetTrayImageAttrib(Ihandle *ih, const char *value) +{ + if (winDialogCheckTray(ih)) + { + HICON hIcon = (HICON)iupImageGetIcon(value); + if (hIcon) + winDialogTrayMessage(ih->handle, NIM_MODIFY, hIcon, NULL); + } + return 1; +} + +static int winDialogSetBringFrontAttrib(Ihandle *ih, const char *value) +{ + if (iupStrBoolean(value)) + SetForegroundWindow(ih->handle); + return 0; +} + +static int winDialogSetTopMostAttrib(Ihandle *ih, const char *value) +{ + if (iupStrBoolean(value)) + SetWindowPos(ih->handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); + else + SetWindowPos(ih->handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); + return 1; +} + +static int winDialogSetIconAttrib(Ihandle* ih, const char *value) +{ + if (!value) + SendMessage(ih->handle, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)NULL); + else + { + HICON icon = iupImageGetIcon(value); + if (icon) + SendMessage(ih->handle, WM_SETICON, (WPARAM) ICON_BIG, (LPARAM)icon); + } + + if (IsIconic(ih->handle)) + RedrawWindow(ih->handle, NULL, NULL, RDW_INVALIDATE|RDW_ERASE|RDW_UPDATENOW); /* redraw the icon */ + else + RedrawWindow(ih->handle, NULL, NULL, RDW_FRAME|RDW_UPDATENOW); /* only the frame needs to be redrawn */ + + return 1; +} + +static int winDialogSetFullScreenAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + { + if (!iupAttribGet(ih, "_IUPWIN_FS_STYLE")) + { + int width, height; + LONG off_style, new_style; + + BOOL visible = ShowWindow (ih->handle, SW_HIDE); + + /* remove the decorations */ + off_style = WS_BORDER | WS_THICKFRAME | WS_CAPTION | + WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU; + new_style = GetWindowLong(ih->handle, GWL_STYLE); + iupAttribSetStr(ih, "_IUPWIN_FS_STYLE", (char*)new_style); + new_style &= (~off_style); + SetWindowLong(ih->handle, GWL_STYLE, new_style); + + /* save the previous decoration attributes */ + iupAttribStoreStr(ih, "_IUPWIN_FS_MAXBOX", iupAttribGet(ih, "MAXBOX")); + iupAttribStoreStr(ih, "_IUPWIN_FS_MINBOX", iupAttribGet(ih, "MINBOX")); + iupAttribStoreStr(ih, "_IUPWIN_FS_MENUBOX",iupAttribGet(ih, "MENUBOX")); + iupAttribStoreStr(ih, "_IUPWIN_FS_RESIZE", iupAttribGet(ih, "RESIZE")); + iupAttribStoreStr(ih, "_IUPWIN_FS_BORDER", iupAttribGet(ih, "BORDER")); + iupAttribStoreStr(ih, "_IUPWIN_FS_TITLE", IupGetAttribute(ih, "TITLE")); /* must use IupGetAttribute to check from the native implementation */ + + /* save the previous position and size */ + iupAttribStoreStr(ih, "_IUPWIN_FS_X", IupGetAttribute(ih, "X")); /* must use IupGetAttribute to check from the native implementation */ + iupAttribStoreStr(ih, "_IUPWIN_FS_Y", IupGetAttribute(ih, "Y")); + iupAttribStoreStr(ih, "_IUPWIN_FS_SIZE", IupGetAttribute(ih, "RASTERSIZE")); + + /* remove the decorations attributes */ + iupAttribSetStr(ih, "MAXBOX", "NO"); + iupAttribSetStr(ih, "MINBOX", "NO"); + iupAttribSetStr(ih, "MENUBOX", "NO"); + IupSetAttribute(ih, "TITLE", NULL); + iupAttribSetStr(ih, "RESIZE", "NO"); + iupAttribSetStr(ih, "BORDER", "NO"); + + /* full screen size */ + iupdrvGetFullSize(&width, &height); + + SetWindowPos(ih->handle, HWND_TOP, 0, 0, width, height, SWP_FRAMECHANGED); + + /* layout will be updated in WM_SIZE */ + if (visible) + ShowWindow(ih->handle, SW_SHOW); + } + } + else + { + LONG style = (LONG)iupAttribGet(ih, "_IUPWIN_FS_STYLE"); + if (style) + { + BOOL visible = ShowWindow(ih->handle, SW_HIDE); + + /* restore the decorations attributes */ + iupAttribStoreStr(ih, "MAXBOX", iupAttribGet(ih, "_IUPWIN_FS_MAXBOX")); + iupAttribStoreStr(ih, "MINBOX", iupAttribGet(ih, "_IUPWIN_FS_MINBOX")); + iupAttribStoreStr(ih, "MENUBOX",iupAttribGet(ih, "_IUPWIN_FS_MENUBOX")); + IupSetAttribute(ih, "TITLE", iupAttribGet(ih, "_IUPWIN_FS_TITLE")); /* TITLE is not stored in the HashTable */ + iupAttribStoreStr(ih, "RESIZE", iupAttribGet(ih, "_IUPWIN_FS_RESIZE")); + iupAttribStoreStr(ih, "BORDER", iupAttribGet(ih, "_IUPWIN_FS_BORDER")); + + /* restore the decorations */ + SetWindowLong(ih->handle, GWL_STYLE, style); + + /* restore position and size */ + SetWindowPos(ih->handle, HWND_TOP, + iupAttribGetInt(ih, "_IUPWIN_FS_X"), + iupAttribGetInt(ih, "_IUPWIN_FS_Y"), + IupGetInt(ih, "_IUPWIN_FS_SIZE"), + IupGetInt2(ih, "_IUPWIN_FS_SIZE"), 0); + + /* layout will be updated in WM_SIZE */ + if (visible) + ShowWindow(ih->handle, SW_SHOW); + + /* remove auxiliar attributes */ + iupAttribSetStr(ih, "_IUPWIN_FS_MAXBOX", NULL); + iupAttribSetStr(ih, "_IUPWIN_FS_MINBOX", NULL); + iupAttribSetStr(ih, "_IUPWIN_FS_MENUBOX",NULL); + iupAttribSetStr(ih, "_IUPWIN_FS_TITLE", NULL); + iupAttribSetStr(ih, "_IUPWIN_FS_RESIZE", NULL); + iupAttribSetStr(ih, "_IUPWIN_FS_BORDER", NULL); + + iupAttribSetStr(ih, "_IUPWIN_FS_X", NULL); + iupAttribSetStr(ih, "_IUPWIN_FS_Y", NULL); + iupAttribSetStr(ih, "_IUPWIN_FS_SIZE", NULL); + + iupAttribSetStr(ih, "_IUPWIN_FS_STYLE", NULL); + } + } + return 1; +} + + +void iupdrvDialogInitClass(Iclass* ic) +{ + if (!iupwinClassExist("IupDialog")) + { + winDialogRegisterClass(0); + winDialogRegisterClass(1); + winDialogRegisterClass(2); + winDialogRegisterClass(-1); + + WM_HELPMSG = RegisterWindowMessage(HELPMSGSTRING); + } + + /* Driver Dependent Class functions */ + ic->Map = winDialogMapMethod; + ic->UnMap = winDialogUnMapMethod; + ic->LayoutUpdate = winDialogLayoutUpdateMethod; + ic->Release = winDialogReleaseMethod; + + /* Callback Windows Only*/ + iupClassRegisterCallback(ic, "MDIACTIVATE_CB", ""); + + /* Callback Windows and GTK Only */ + iupClassRegisterCallback(ic, "TRAYCLICK_CB", "iii"); + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winDialogSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* Base Container */ + iupClassRegisterAttribute(ic, "CLIENTSIZE", iupdrvBaseGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + + /* IupDialog only */ + iupClassRegisterAttribute(ic, "BACKGROUND", NULL, winDialogSetBackgroundAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ICON", NULL, winDialogSetIconAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FULLSCREEN", NULL, winDialogSetFullScreenAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SAVEUNDER", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MINSIZE", NULL, NULL, IUPAF_SAMEASSYSTEM, "1x1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MAXSIZE", NULL, NULL, IUPAF_SAMEASSYSTEM, "65535x65535", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupDialog Windows Only */ + iupClassRegisterAttribute(ic, "HWND", iupBaseGetWidAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDIARRANGE", NULL, winDialogSetMdiArrangeAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDIACTIVATE", NULL, winDialogSetMdiActivateAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDICLOSEALL", NULL, winDialogSetMdiCloseAllAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDIACTIVE", winDialogGetMdiActiveAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDINEXT", winDialogGetMdiNextAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "OPACITY", NULL, winDialogSetOpacityAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LAYERALPHA", NULL, winDialogSetOpacityAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BRINGFRONT", NULL, winDialogSetBringFrontAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "COMPOSITED", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED); + + iupClassRegisterAttribute(ic, "CONTROL", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HELPBUTTON", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TOOLBOX", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDIFRAME", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDICLIENT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDIMENU", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MDICHILD", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + /* IupDialog Windows and GTK Only */ + iupClassRegisterAttribute(ic, "TOPMOST", NULL, winDialogSetTopMostAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TRAY", NULL, winDialogSetTrayAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TRAYIMAGE", NULL, winDialogSetTrayImageAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TRAYTIP", NULL, winDialogSetTrayTipAttrib, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_draw.c b/iup/src/win/iupwin_draw.c new file mode 100755 index 0000000..4a810e6 --- /dev/null +++ b/iup/src/win/iupwin_draw.c @@ -0,0 +1,328 @@ +/** \file + * \brief Draw Functions + * + * See Copyright Notice in "iup.h" + */ + +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0501 +#include +#include +#include + +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_attrib.h" +#include "iup_class.h" +#include "iup_str.h" + +#include "iupwin_drv.h" +#include "iupwin_info.h" +#include "iupwin_draw.h" + + +#ifndef TABP_AEROWIZARDBODY +#define TABP_AEROWIZARDBODY 11 /* manually added definition */ +#endif + +#ifndef TMT_FILLCOLORHINT +#define TMT_FILLCOLORHINT 3821 +#endif +#ifndef TMT_TEXTCOLOR +#define TMT_TEXTCOLOR 3823 +#endif + + +typedef HTHEME (STDAPICALLTYPE *_winThemeOpenData)(HWND hwnd, LPCWSTR pszClassList); +typedef HRESULT (STDAPICALLTYPE *_winThemeCloseData)(HTHEME hTheme); +typedef HRESULT (STDAPICALLTYPE *_winThemeDrawBackground)(HTHEME hTheme, HDC hDC, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect); +typedef HRESULT (STDAPICALLTYPE *_winThemeGetColor)(HTHEME hTheme, int iPartId, int iStateId, int iPropId, COLORREF *pColor); + +static _winThemeOpenData winThemeOpenData = NULL; +static _winThemeCloseData winThemeCloseData = NULL; +static _winThemeDrawBackground winThemeDrawBackground = NULL; +static _winThemeGetColor winThemeGetColor = NULL; + +typedef BOOL (CALLBACK* _winAlphaBlendFunc)( HDC hdcDest, + int xoriginDest, int yoriginDest, + int wDest, int hDest, HDC hdcSrc, + int xoriginSrc, int yoriginSrc, + int wSrc, int hSrc, + BLENDFUNCTION ftn); +static _winAlphaBlendFunc winAlphaBlend = NULL; + +static int winDrawThemeEnabled(void) +{ + return winThemeOpenData? 1: 0; +} + +void iupwinDrawText(HDC hDC, const char* text, int x, int y, int width, int height, HFONT hFont, COLORREF fgcolor, int style) +{ + COLORREF oldcolor; + RECT rect; + HFONT hOldFont = SelectObject(hDC, hFont); + + rect.left = x; + rect.top = y; + rect.right = x+width; + rect.bottom = y+height; + + SetTextAlign(hDC, TA_TOP|TA_LEFT); + SetBkMode(hDC, TRANSPARENT); + oldcolor = SetTextColor(hDC, fgcolor); + + DrawText(hDC, text, -1, &rect, style|DT_NOCLIP); + + SelectObject(hDC, hOldFont); + SetTextColor(hDC, oldcolor); + SetBkMode(hDC, OPAQUE); +} + +void iupwinDrawBitmap(HDC hDC, HBITMAP hBitmap, HBITMAP hMask, int x, int y, int width, int height, int bpp) +{ + HDC hMemDC = CreateCompatibleDC(hDC); + SelectObject(hMemDC, hBitmap); + + if (bpp == 32 && winAlphaBlend) + { + BLENDFUNCTION blendfunc; + blendfunc.BlendOp = AC_SRC_OVER; + blendfunc.BlendFlags = 0; + blendfunc.SourceConstantAlpha = 0xFF; + blendfunc.AlphaFormat = AC_SRC_ALPHA; + + winAlphaBlend(hDC, x, y, width, height, + hMemDC, 0, 0, width, height, + blendfunc); + } + else if (bpp == 8 && hMask) + MaskBlt(hDC, x, y, width, height, + hMemDC, 0, 0, + hMask, 0, 0, MAKEROP4(SRCCOPY, 0xAA0000)); + else + BitBlt(hDC, x, y, width, height, + hMemDC, 0, 0, + SRCCOPY); + + + DeleteDC(hMemDC); +} + +void iupwinDrawInit(void) +{ + if (!winAlphaBlend) + { + HINSTANCE lib = LoadLibrary("Msimg32"); + if (lib) + winAlphaBlend = (_winAlphaBlendFunc)GetProcAddress(lib, "AlphaBlend"); + } + + if (!winThemeOpenData && iupwin_comctl32ver6) + { + HMODULE hinstDll = LoadLibrary("uxtheme.dll"); + if (hinstDll) + { + winThemeOpenData = (_winThemeOpenData)GetProcAddress(hinstDll, "OpenThemeData"); + winThemeCloseData = (_winThemeCloseData)GetProcAddress(hinstDll, "CloseThemeData"); + winThemeDrawBackground = (_winThemeDrawBackground)GetProcAddress(hinstDll, "DrawThemeBackground"); + winThemeGetColor = (_winThemeGetColor)GetProcAddress(hinstDll, "GetThemeColor"); + } + } +} + +static int winDrawGetThemeStateId(int itemState) +{ + if (itemState & ODS_DISABLED) + return PBS_DISABLED; + else if (itemState & ODS_SELECTED) + return PBS_PRESSED; + else if (itemState & ODS_HOTLIGHT) + return PBS_HOT; + else if (itemState & ODS_DEFAULT) + return PBS_DEFAULTED; + else + return PBS_NORMAL; +} + +static int winDrawThemeButtonBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState) +{ + int iStateId; + HTHEME hTheme; + + if (!winDrawThemeEnabled()) + return 0; + + hTheme = winThemeOpenData(hWnd, L"BUTTON"); + if (!hTheme) + return 0; + + iStateId = winDrawGetThemeStateId(itemState); + + winThemeDrawBackground(hTheme, hDC, BP_PUSHBUTTON, iStateId, rect, NULL); + + winThemeCloseData(hTheme); + return 1; +} + +void iupwinDrawThemeFrameBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState) +{ + int iStateId = GBS_NORMAL; + HTHEME hTheme; + + if (!winDrawThemeEnabled()) + return; + + hTheme = winThemeOpenData(hWnd, L"BUTTON"); + if (!hTheme) + return; + + if (itemState & ODS_DISABLED) + iStateId = GBS_DISABLED; + + winThemeDrawBackground(hTheme, hDC, BP_GROUPBOX, iStateId, rect, NULL); + + winThemeCloseData(hTheme); +} + +int iupwinDrawGetThemeTabsBgColor(HWND hWnd, COLORREF *color) +{ + HTHEME hTheme; + HRESULT ret; + + if (!winDrawThemeEnabled()) + return 0; + + hTheme = winThemeOpenData(hWnd, L"TAB"); + if (!hTheme) + return 0; + + if (iupwinIsVista()) + ret = winThemeGetColor(hTheme, TABP_AEROWIZARDBODY, TIS_NORMAL, TMT_FILLCOLORHINT, color); + else + ret = winThemeGetColor(hTheme, TABP_BODY, TIS_NORMAL, TMT_FILLCOLORHINT, color); + + winThemeCloseData(hTheme); + return (ret == S_OK)? 1: 0; +} + +int iupwinDrawGetThemeButtonBgColor(HWND hWnd, COLORREF *color) +{ + HTHEME hTheme; + HRESULT ret; + + if (!winDrawThemeEnabled()) + return 0; + + hTheme = winThemeOpenData(hWnd, L"BUTTON"); + if (!hTheme) + return 0; + + ret = winThemeGetColor(hTheme, BP_PUSHBUTTON, PBS_NORMAL, TMT_FILLCOLORHINT, color); + + winThemeCloseData(hTheme); + return (ret == S_OK)? 1: 0; +} + +int iupwinDrawGetThemeFrameFgColor(HWND hWnd, COLORREF *color) +{ + HTHEME hTheme; + HRESULT ret; + + if (!winDrawThemeEnabled()) + return 0; + + hTheme = winThemeOpenData(hWnd, L"BUTTON"); + if (!hTheme) + return 0; + + ret = winThemeGetColor(hTheme, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, color); + + winThemeCloseData(hTheme); + return (ret == S_OK)? 1: 0; +} + +static int winDrawGetStateId(int itemState) +{ + if (itemState & ODS_DISABLED) + return DFCS_INACTIVE; + else if (itemState & ODS_SELECTED) + return DFCS_PUSHED; + else if (itemState & ODS_HOTLIGHT) + return DFCS_HOT; + else + return 0; +} + +void iupwinDrawButtonBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState) +{ + if (!winDrawThemeButtonBorder(hWnd, hDC, rect, itemState)) + { + DrawFrameControl(hDC, rect, DFC_BUTTON, DFCS_BUTTONPUSH | winDrawGetStateId(itemState)); + if (itemState & ODS_DEFAULT) /* if a button has the focus, must draw the default button frame */ + FrameRect(hDC, rect, (HBRUSH)GetStockObject(BLACK_BRUSH)); + } +} + +void iupdrvDrawFocusRect(Ihandle* ih, void* gc, int x, int y, int w, int h) +{ + HDC hDC = (HDC)gc; + RECT rect; + (void)ih; + + rect.left = x; + rect.top = y; + rect.right = x+w; + rect.bottom = y+h; + + DrawFocusRect(hDC, &rect); +} + +void iupwinDrawRemoveTheme(HWND hwnd) +{ + typedef HRESULT (STDAPICALLTYPE *winSetWindowTheme)(HWND hwnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList); + static winSetWindowTheme mySetWindowTheme = NULL; + if (!mySetWindowTheme) + { + HMODULE hinstDll = LoadLibrary("uxtheme.dll"); + if (hinstDll) + mySetWindowTheme = (winSetWindowTheme)GetProcAddress(hinstDll, "SetWindowTheme"); + } + + if (mySetWindowTheme) + mySetWindowTheme(hwnd, L"", L""); +} + +void iupwinDrawParentBackground(Ihandle* ih, HDC hDC, RECT* rect) +{ + unsigned char r=0, g=0, b=0; + char* color = iupBaseNativeParentGetBgColorAttrib(ih); + iupStrToRGB(color, &r, &g, &b); + SetDCBrushColor(hDC, RGB(r,g,b)); + FillRect(hDC, rect, (HBRUSH)GetStockObject(DC_BRUSH)); +} + +HDC iupwinDrawCreateBitmapDC(iupwinBitmapDC *bmpDC, HDC hDC, int w, int h) +{ + bmpDC->w = w; + bmpDC->h = h; + bmpDC->hDC = hDC; + + bmpDC->hBitmap = CreateCompatibleBitmap(bmpDC->hDC, w, h); + bmpDC->hBitmapDC = CreateCompatibleDC(bmpDC->hDC); + bmpDC->hOldBitmap = SelectObject(bmpDC->hBitmapDC, bmpDC->hBitmap); + return bmpDC->hBitmapDC; +} + +void iupwinDrawDestroyBitmapDC(iupwinBitmapDC *bmpDC) +{ + BitBlt(bmpDC->hDC, 0, 0, bmpDC->w, bmpDC->h, bmpDC->hBitmapDC, 0, 0, SRCCOPY); + SelectObject(bmpDC->hBitmapDC, bmpDC->hOldBitmap); + DeleteObject(bmpDC->hBitmap); + DeleteDC(bmpDC->hBitmapDC); +} + diff --git a/iup/src/win/iupwin_draw.h b/iup/src/win/iupwin_draw.h new file mode 100755 index 0000000..c9a57e6 --- /dev/null +++ b/iup/src/win/iupwin_draw.h @@ -0,0 +1,47 @@ +/** \file + * \brief Draw Functions + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPWIN_DRAW_H +#define __IUPWIN_DRAW_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void iupwinDrawInit(void); + +void iupwinDrawBitmap(HDC hDC, HBITMAP hBitmap, HBITMAP hMask, int x, int y, int width, int height, int bpp); +void iupwinDrawText(HDC hDC, const char* text, int x, int y, int width, int height, HFONT hFont, COLORREF fgcolor, int style); + +void iupwinDrawParentBackground(Ihandle* ih, HDC hDC, RECT* rect); +void iupwinDrawButtonBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState); + +void iupwinDrawThemeFrameBorder(HWND hWnd, HDC hDC, RECT *rect, UINT itemState); +int iupwinDrawGetThemeTabsBgColor(HWND hWnd, COLORREF *color); +int iupwinDrawGetThemeButtonBgColor(HWND hWnd, COLORREF *color); +int iupwinDrawGetThemeFrameFgColor(HWND hWnd, COLORREF *color); +void iupwinDrawRemoveTheme(HWND hWnd); + +typedef struct _iupwinBitmapDC +{ + HBITMAP hBitmap, hOldBitmap; + HDC hBitmapDC, hDC; + int w, h; +} iupwinBitmapDC; + +HDC iupwinDrawCreateBitmapDC(iupwinBitmapDC *bmpDC, HDC hDC, int w, int h); +void iupwinDrawDestroyBitmapDC(iupwinBitmapDC *bmpDC); + +#ifndef ODS_HOTLIGHT /* Only defined if WINVER >= 0x0500 */ +#define ODS_HOTLIGHT 0x0040 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/win/iupwin_drv.h b/iup/src/win/iupwin_drv.h new file mode 100755 index 0000000..3372c1a --- /dev/null +++ b/iup/src/win/iupwin_drv.h @@ -0,0 +1,113 @@ +/** \file + * \brief Windows Driver + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPWIN_DRV_H +#define __IUPWIN_DRV_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifndef WS_EX_COMPOSITED +#define WS_EX_COMPOSITED 0x02000000L /* it is defined only when _WIN32_WINNT >= 0x0501 */ +#endif + + +/* global variables */ +/* declared where they are initialized */ +extern HINSTANCE iupwin_hinstance; /* winopen.c */ +extern HINSTANCE iupwin_dll_hinstance; /* winmain.c */ +extern int iupwin_comctl32ver6; /* winopen.c */ + +void iupwinShowLastError(void); + +/* focus */ +void iupwinWmSetFocus(Ihandle *ih); + +/* key */ +int iupwinKeyEvent(Ihandle* ih, int wincode, int press); +void iupwinButtonKeySetStatus(WORD keys, char* status, int doubleclick); +void iupwinKeyEncode(int key, unsigned int *keyval, unsigned int *state); + +/* tips */ +void iupwinTipsGetDispInfo(LPARAM lp); + +/* font */ +char* iupwinGetHFontAttrib(Ihandle *ih); +HFONT iupwinGetHFont(const char* value); +char* iupwinFindHFont(HFONT hFont); + +/* menu */ +void iupwinMenuDialogProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp); + +/* common */ + +/* Definition of a callback used to return the background brush of controls called "_IUPWIN_CTLCOLOR_CB". */ +typedef int (*IFctlColor)(Ihandle* ih, HDC hdc, LRESULT *result); + +/* Definition of a callback used to draw custom controls called "_IUPWIN_DRAWITEM_CB". + drawitem is a pointer to a DRAWITEMSTRUCT struct. */ +typedef void (*IFdrawItem)(Ihandle* ih, void* drawitem); + +/* Definition of a callback used to notify custom controls called "_IUPWIN_NOTIFY_CB". + msg_info is a pointer to a NMHDR struct. */ +typedef int (*IFnotify)(Ihandle* ih, void* msg_info, HRESULT *result); + +/* Definition of callback used for custom WinProc. Can return 0 or 1. + 0 = do default processing. + 1 = ABORT default processing and the result value should be returned. +*/ +typedef int (*IwinProc)(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result); + +/* Base WinProc used by all native elements. Configure base message handling + and custom IwinProc using "_IUPWIN_CTRLPROC_CB" callback. */ +LRESULT CALLBACK iupwinBaseWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp); + +/* Base IwinProc callback used by native controls. */ +int iupwinBaseProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result); + +/* Base IwinProc callback used by native containers. + Handle messages that are sent to the parent Window. */ +int iupwinBaseContainerProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result); + +/* Creates the Window with native parent and child ID, associate HWND with Ihandle*, + and replace the WinProc by iupwinBaseWinProc */ +int iupwinCreateWindowEx(Ihandle* ih, LPCSTR lpClassName, DWORD dwExStyle, DWORD dwStyle); + +int iupwinClassExist(const char* name); +int iupwinGetColorRef(Ihandle *ih, char *name, COLORREF *color); +int iupwinGetParentBgColor(Ihandle* ih, COLORREF* cr); +void iupwinDropFiles(HDROP hDrop, Ihandle *ih); +Ihandle* iupwinMenuGetItemHandle(HMENU hmenu, int menuId); +Ihandle* iupwinMenuGetHandle(HMENU hMenu); +int iupwinSetDragDropAttrib(Ihandle* ih, const char* value); +void iupwinChangeProc(Ihandle *ih, WNDPROC new_proc); +void iupwinMergeStyle(Ihandle* ih, DWORD old_mask, DWORD value); +void iupwinSetStyle(Ihandle* ih, DWORD value, int set); +WCHAR* iupwinStrChar2Wide(const char* str); +int iupwinButtonUp(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp); +int iupwinButtonDown(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp); +int iupwinMouseMove(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp); +char* iupwinGetClipboardText(Ihandle* ih); + +int iupwinGetScreenRes(void); +/* 1 point = 1/72 inch */ +/* pixel = (point/72)*(pixel/inch) */ +#define IUPWIN_PT2PIXEL(_pt, _res) MulDiv(_pt, _res, 72) /* (((_pt)*(_res))/72) */ +#define IUPWIN_PIXEL2PT(_pixel, _res) MulDiv(_pixel, 72, _res) /* (((_pixel)*72)/(_res)) */ + + +/* child window identifier of the first MDI child window created, + should not conflict with any other command identifiers. */ +#define IUP_MDICHILD_START 100000000 + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/win/iupwin_filedlg.c b/iup/src/win/iupwin_filedlg.c new file mode 100755 index 0000000..da66b4b --- /dev/null +++ b/iup/src/win/iupwin_filedlg.c @@ -0,0 +1,580 @@ +/** \file + * \brief IupFileDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" +#include "iup_drvinfo.h" + +#include "iupwin_drv.h" + + +#ifndef OFN_FORCESHOWHIDDEN +#define OFN_FORCESHOWHIDDEN 0x10000000 /* Show All files including System and hidden files */ +#endif + +#define MAX_FILENAME_SIZE 65000 +#define IUP_PREVIEWCANVAS 3000 + +enum {IUP_DIALOGOPEN, IUP_DIALOGSAVE, IUP_DIALOGDIR}; + + +static void winFileDlgStrReplacePathSlash(char* name) +{ + /* check for "/" */ + int i, len = strlen(name); + for (i = 0; i < len; i++) + { + if (name[i] == '/') + name[i] = '\\'; + } +} + +static INT CALLBACK winFileDlgBrowseCallback(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData) +{ + (void)lParam; + if (uMsg == BFFM_INITIALIZED) + { + char* value; + Ihandle* ih = (Ihandle*)lpData; + ih->handle = hWnd; + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + value = iupStrDup(iupAttribGet(ih, "DIRECTORY")); + if (value) + { + winFileDlgStrReplacePathSlash(value); + SendMessage(hWnd, BFFM_SETSELECTION, TRUE, (LPARAM)value); + free(value); + } + } + else if (uMsg == BFFM_SELCHANGED) + { + char* buffer = iupStrGetMemory(MAX_FILENAME_SIZE); + ITEMIDLIST* selecteditem = (ITEMIDLIST*)lParam; + buffer[0] = 0; + SHGetPathFromIDList(selecteditem, buffer); + if (buffer[0] == 0) + SendMessage(hWnd, BFFM_ENABLEOK, 0, (LPARAM)FALSE); + else + SendMessage(hWnd, BFFM_ENABLEOK, 0, (LPARAM)TRUE); + } + return 0; +} + +static void winFileDlgGetFolder(Ihandle *ih) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + BROWSEINFO browseinfo; + char buffer[MAX_PATH]; + ITEMIDLIST *selecteditem; + + if (!parent) + parent = GetActiveWindow(); + + ZeroMemory(&browseinfo, sizeof(BROWSEINFO)); + browseinfo.lpszTitle = iupAttribGet(ih, "TITLE"); + browseinfo.pszDisplayName = buffer; + browseinfo.lpfn = winFileDlgBrowseCallback; + browseinfo.lParam = (LPARAM)ih; + browseinfo.ulFlags = BIF_NEWDIALOGSTYLE; + browseinfo.hwndOwner = parent; + + selecteditem = SHBrowseForFolder(&browseinfo); + if (!selecteditem) + { + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "STATUS", "-1"); + } + else + { + SHGetPathFromIDList(selecteditem, buffer); + iupAttribStoreStr(ih, "VALUE", buffer); + iupAttribSetStr(ih, "STATUS", "0"); + } + + iupAttribSetStr(ih, "FILEEXIST", NULL); + iupAttribSetStr(ih, "FILTERUSED", NULL); +} + +/************************************************************************************************/ + +static UINT_PTR CALLBACK winFileDlgSimpleHook(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) +{ + (void)wParam; + switch(uiMsg) + { + case WM_INITDIALOG: + { + OPENFILENAME* openfilename = (OPENFILENAME*)lParam; + Ihandle* ih = (Ihandle*)openfilename->lCustData; + ih->handle = GetParent(hWnd); + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)ih); + break; + } + case WM_DESTROY: + { + Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER); + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + if (cb) cb(ih, NULL, "FINISH"); + break; + } + case WM_NOTIFY: + { + LPOFNOTIFY pofn = (LPOFNOTIFY)lParam; + Ihandle* ih = (Ihandle*)pofn->lpOFN->lCustData; + switch (pofn->hdr.code) + { + case CDN_INITDONE: + { + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + if (cb) cb(ih, NULL, "INIT"); + break; + } + case CDN_FILEOK: + case CDN_SELCHANGE: + { + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + if (cb) + { + char* filename = iupStrGetMemory(MAX_FILENAME_SIZE); + if (CommDlg_OpenSave_GetFilePath(GetParent(hWnd), filename, MAX_FILENAME_SIZE) <= MAX_FILENAME_SIZE) + { + int ret; + char* file_msg; + + if (!iupdrvIsFile(filename)) + break; + + if (pofn->hdr.code == CDN_FILEOK) + file_msg = "OK"; + else + file_msg = "SELECT"; + + ret = cb(ih, filename, file_msg); + if (pofn->hdr.code == CDN_FILEOK && ret == IUP_IGNORE) + { + SetWindowLongPtr(hWnd, DWLP_MSGRESULT, 1L); + return 1; /* will refuse the file */ + } + } + } + break; + } + case CDN_HELP: + { + Icallback cb = (Icallback) IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + EndDialog(GetParent(hWnd), IDCANCEL); + break; + } + } + break; + } + } + return 0; +} + +static void winFileDlgSetPreviewCanvasPos(HWND hWnd, HWND hWndPreview) +{ + int height, width, ypos, xpos; + RECT rect, dlgrect; + HWND hWndFileList = GetDlgItem(GetParent(hWnd), 0x0471); + HWND hWndFileCombo = GetDlgItem(GetParent(hWnd), 0x047C); + + /* GetWindowRect return screen coordinates, must convert to parent's client coordinates */ + GetWindowRect(hWnd, &dlgrect); + + GetWindowRect(hWndPreview, &rect); + ypos = rect.top - dlgrect.top; /* keep the same vertical position, at first time this is 0 */ + height = rect.bottom-rect.top; /* keep the same height */ + + GetWindowRect(hWndFileList, &rect); + xpos = rect.left - dlgrect.left; /* horizontally align with file list at left */ + + GetWindowRect(hWndFileCombo, &rect); + width = (rect.right - dlgrect.left) - xpos; /* set size to align with file combo at right */ + + /* also position the child window that contains the template, must have room for the preview canvas */ + if (ypos) /* first time does nothing */ + SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, (rect.right - dlgrect.left), (dlgrect.bottom - dlgrect.top), SWP_NOMOVE|SWP_NOZORDER); + + SetWindowPos(hWndPreview, HWND_TOP, xpos, ypos, width, height, SWP_NOZORDER); +} + +static void winFileDlgUpdatePreviewGLCanvas(Ihandle* ih) +{ + Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS"); + if (glcanvas) + { + iupAttribSetStr(glcanvas, "HWND", iupAttribGet(ih, "HWND")); + glcanvas->iclass->Map(glcanvas); + } +} + +static UINT_PTR CALLBACK winFileDlgPreviewHook(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) +{ + /* hWnd here is a handle to the child window that contains the template, + NOT the file dialog. Only the preview canvas is a child of this window. */ + + switch(uiMsg) + { + case WM_INITDIALOG: + { + OPENFILENAME* openfilename = (OPENFILENAME*)lParam; + Ihandle* ih = (Ihandle*)openfilename->lCustData; + HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS); + + ih->handle = GetParent(hWnd); + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + + if (hWndPreview) + { + RECT rect; + + winFileDlgSetPreviewCanvasPos(hWnd, hWndPreview); + + GetClientRect(hWndPreview, &rect); + iupAttribSetInt(ih, "PREVIEWWIDTH", rect.right - rect.left); + iupAttribSetInt(ih, "PREVIEWHEIGHT", rect.bottom - rect.top); + } + SetWindowLongPtr(hWnd, DWLP_USER, (LONG_PTR)ih); + iupAttribSetStr(ih, "WID", (char*)hWndPreview); + iupAttribSetStr(ih, "HWND", (char*)hWndPreview); + winFileDlgUpdatePreviewGLCanvas(ih); + break; + } + case WM_DRAWITEM: + { + if (wParam == IUP_PREVIEWCANVAS) + { + LPDRAWITEMSTRUCT lpDrawItem = (LPDRAWITEMSTRUCT)lParam; + Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER); + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + char* filename = iupStrGetMemory(MAX_FILENAME_SIZE); + iupAttribSetStr(ih, "PREVIEWDC", (char*)lpDrawItem->hDC); + if (CommDlg_OpenSave_GetFilePath(GetParent(hWnd), filename, MAX_FILENAME_SIZE) <= MAX_FILENAME_SIZE) + { + if (iupdrvIsFile(filename)) + cb(ih, filename, "PAINT"); + else + cb(ih, NULL, "PAINT"); + } + else + cb(ih, NULL, "PAINT"); + iupAttribSetStr(ih, "PREVIEWDC", NULL); + } + break; + } + case WM_SIZE: + { + HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS); + if (hWndPreview) + { + Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER); + RECT rect; + + winFileDlgSetPreviewCanvasPos(hWnd, hWndPreview); + + GetClientRect(hWndPreview, &rect); + iupAttribSetInt(ih, "PREVIEWWIDTH", rect.right-rect.left); + + RedrawWindow(hWndPreview, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW); + } + break; + } + case WM_DESTROY: + { + Ihandle* ih = (Ihandle*)GetWindowLongPtr(hWnd, DWLP_USER); + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + cb(ih, NULL, "FINISH"); + break; + } + case WM_NOTIFY: + { + LPOFNOTIFY pofn = (LPOFNOTIFY)lParam; + Ihandle* ih = (Ihandle*)pofn->lpOFN->lCustData; + IFnss cb = (IFnss)IupGetCallback(ih, "FILE_CB"); + switch (pofn->hdr.code) + { + case CDN_INITDONE: + { + HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS); + cb(ih, NULL, "INIT"); + if (hWndPreview) RedrawWindow(hWndPreview, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW); + break; + } + case CDN_FILEOK: + case CDN_SELCHANGE: + { + HWND hWndPreview = GetDlgItem(hWnd, IUP_PREVIEWCANVAS); + char* filename = iupStrGetMemory(MAX_FILENAME_SIZE); + if (CommDlg_OpenSave_GetFilePath(GetParent(hWnd), filename, MAX_FILENAME_SIZE) <= MAX_FILENAME_SIZE) + { + int ret; + char* file_msg; + + if (!iupdrvIsFile(filename)) + break; + + if (pofn->hdr.code == CDN_FILEOK) + file_msg = "OK"; + else + file_msg = "SELECT"; + + ret = cb(ih, filename, file_msg); + if (pofn->hdr.code == CDN_FILEOK && ret == IUP_IGNORE) + { + SetWindowLongPtr(hWnd, DWLP_MSGRESULT, 1L); + return 1; /* will refuse the file */ + } + } + if (pofn->hdr.code == CDN_SELCHANGE && hWndPreview) + RedrawWindow(hWndPreview, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW); + break; + } + case CDN_HELP: + { + Icallback cb = (Icallback) IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + EndDialog(GetParent(hWnd), IDCANCEL); + break; + } + } + break; + } + } + return 0; +} + +static char* winFileDlgStrReplaceSeparator(const char* name) +{ + int i=0; + char* buffer = (char*)malloc(strlen(name)+2); + + /* replace symbols "|" by terminator "\0" */ + + while (*name) + { + buffer[i] = *name; + + if (buffer[i] == '|') + buffer[i] = 0; + + i++; + name++; + } + + buffer[i] = 0; + buffer[i+1] = 0; /* additional 0 at the end */ + return buffer; +} + +static int winFileDlgPopup(Ihandle *ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + OPENFILENAME openfilename; + int result, dialogtype; + char *value; + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + value = iupAttribGetStr(ih, "DIALOGTYPE"); + if (iupStrEqualNoCase(value, "SAVE")) + dialogtype = IUP_DIALOGSAVE; + else if (iupStrEqualNoCase(value, "DIR")) + dialogtype = IUP_DIALOGDIR; + else + dialogtype = IUP_DIALOGOPEN; + + if (dialogtype == IUP_DIALOGDIR) + { + winFileDlgGetFolder(ih); + return IUP_NOERROR; + } + + if (!parent) + parent = GetActiveWindow(); + + ZeroMemory(&openfilename, sizeof(OPENFILENAME)); + openfilename.lStructSize = sizeof(OPENFILENAME); + openfilename.hwndOwner = parent; + + value = iupAttribGet(ih, "EXTFILTER"); + if (value) + { + int index; + openfilename.lpstrFilter = winFileDlgStrReplaceSeparator(value); + + value = iupAttribGet(ih, "FILTERUSED"); + if (iupStrToInt(value, &index)) + openfilename.nFilterIndex = index; + else + openfilename.nFilterIndex = 1; + } + else + { + value = iupAttribGet(ih, "FILTER"); + if (value) + { + int sz1, sz2; + char* info = iupAttribGet(ih, "FILTERINFO"); + if (!info) + info = value; + + /* concat FILTERINFO+FILTER */ + sz1 = strlen(info)+1; + sz2 = strlen(value)+1; + openfilename.lpstrFilter = (char*)malloc(sz1+sz2+1); + + memcpy((char*)openfilename.lpstrFilter, info, sz1); + memcpy((char*)openfilename.lpstrFilter+sz1, value, sz2); + ((char*)openfilename.lpstrFilter)[sz1+sz2] = 0; /* additional 0 at the end */ + openfilename.nFilterIndex = 1; + } + } + + openfilename.lpstrFile = (char*)malloc(MAX_FILENAME_SIZE+1); + value = iupAttribGet(ih, "FILE"); + if (value) + { + strncpy(openfilename.lpstrFile, value, MAX_FILENAME_SIZE); + winFileDlgStrReplacePathSlash(openfilename.lpstrFile); + } + else + openfilename.lpstrFile[0] = 0; + + openfilename.nMaxFile = MAX_FILENAME_SIZE; + + openfilename.lpstrInitialDir = iupStrDup(iupAttribGet(ih, "DIRECTORY")); + if (openfilename.lpstrInitialDir) + winFileDlgStrReplacePathSlash((char*)openfilename.lpstrInitialDir); + + openfilename.lpstrTitle = iupAttribGet(ih, "TITLE"); + openfilename.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; + + if (!iupAttribGetBoolean(ih, "NOOVERWRITEPROMPT")) + openfilename.Flags |= OFN_OVERWRITEPROMPT; + + if (iupAttribGetBoolean(ih, "SHOWHIDDEN")) + openfilename.Flags |= OFN_FORCESHOWHIDDEN; + + value = iupAttribGet(ih, "ALLOWNEW"); + if (!value) + { + if (dialogtype == IUP_DIALOGSAVE) + value = "YES"; + else + value = "NO"; + } + if (iupStrBoolean(value)) + openfilename.Flags |= OFN_CREATEPROMPT; + else + openfilename.Flags |= OFN_FILEMUSTEXIST; + + if (iupAttribGetBoolean(ih, "NOCHANGEDIR")) + openfilename.Flags |= OFN_NOCHANGEDIR; + + if (iupAttribGetBoolean(ih, "MULTIPLEFILES")) + openfilename.Flags |= OFN_ALLOWMULTISELECT; + + openfilename.lpfnHook = winFileDlgSimpleHook; + openfilename.Flags |= OFN_ENABLEHOOK | OFN_EXPLORER | OFN_ENABLESIZING; + openfilename.lCustData = (LPARAM)ih; + + if (iupAttribGetBoolean(ih, "SHOWPREVIEW") && IupGetCallback(ih, "FILE_CB")) + { + openfilename.Flags |= OFN_ENABLETEMPLATE; + openfilename.hInstance = iupwin_dll_hinstance? iupwin_dll_hinstance: iupwin_hinstance; + openfilename.lpTemplateName = "iupPreviewDlg"; + openfilename.lpfnHook = winFileDlgPreviewHook; + } + + if (IupGetCallback(ih, "HELP_CB")) + openfilename.Flags |= OFN_SHOWHELP; + + if (dialogtype == IUP_DIALOGOPEN) + result = GetOpenFileName(&openfilename); + else + result = GetSaveFileName(&openfilename); + + if (result) + { + if (iupAttribGetBoolean(ih, "MULTIPLEFILES")) + { + int i = 0; + + /* If there is more than one file, replace terminator by the separator */ + if (openfilename.lpstrFile && openfilename.lpstrFile[openfilename.nFileOffset-1] == 0 && openfilename.nFileOffset>0) + { + while (openfilename.lpstrFile[i] != 0 || openfilename.lpstrFile[i+1] != 0) + { + if (openfilename.lpstrFile[i]==0) + openfilename.lpstrFile[i] = '|'; + i++; + } + openfilename.lpstrFile[i] = '|'; + } + + iupAttribSetStr(ih, "STATUS", "0"); + iupAttribSetStr(ih, "FILEEXIST", NULL); + } + else + { + if (iupdrvIsFile(openfilename.lpstrFile)) /* check if file exists */ + { + iupAttribSetStr(ih, "FILEEXIST", "YES"); + iupAttribSetStr(ih, "STATUS", "0"); + } + else + { + iupAttribSetStr(ih, "FILEEXIST", "NO"); + iupAttribSetStr(ih, "STATUS", "1"); + } + } + + iupAttribStoreStr(ih, "VALUE", openfilename.lpstrFile); + iupAttribSetInt(ih, "FILTERUSED", (int)openfilename.nFilterIndex); + } + else + { + iupAttribSetStr(ih, "FILTERUSED", NULL); + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "FILEEXIST", NULL); + iupAttribSetStr(ih, "STATUS", "-1"); + } + + if (openfilename.lpstrFilter) free((char*)openfilename.lpstrFilter); + if (openfilename.lpstrInitialDir) free((char*)openfilename.lpstrInitialDir); + if (openfilename.lpstrFile) free(openfilename.lpstrFile); + + return IUP_NOERROR; +} + +void iupdrvFileDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = winFileDlgPopup; + + /* IupFileDialog Windows and GTK Only */ + iupClassRegisterAttribute(ic, "EXTFILTER", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILTERINFO", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILTERUSED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MULTIPLEFILES", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_focus.c b/iup/src/win/iupwin_focus.c new file mode 100755 index 0000000..63da02d --- /dev/null +++ b/iup/src/win/iupwin_focus.c @@ -0,0 +1,62 @@ +/** \file + * \brief Windows Focus + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include + +#include "iup.h" +#include "iup_object.h" +#include "iup_focus.h" +#include "iup_assert.h" +#include "iup_drv.h" +#include "iup_attrib.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" + +/* not defined for gcc */ +#ifndef WM_CHANGEUISTATE +#define WM_CHANGEUISTATE 0x0127 +#endif +#ifndef UIS_CLEAR +#define UIS_CLEAR 2 +#endif +#ifndef UISF_HIDEFOCUS +#define UISF_HIDEFOCUS 0x1 +#endif + +/* Since Windows XP, the focus feedback only appears after the user press a key. + Except for the IupText where the feedback is the caret. + Before that if you click in a control the focus feedback will be hidden. + + We manually send WM_CHANGEUISTATE because we do not use IsDialogMessage anymore, + and the focus feedback was not shown even after the used press a key. + + TODO: I would like a form to always show the feedback, but could not understand how WM_CHANGEUISTATE works. + Neither SystemParametersInfo(SPI_SETKEYBOARDCUES, TRUE) or SystemParametersInfo(SPI_SETKEYBOARDPREF, TRUE) worked. +*/ +void iupdrvSetFocus(Ihandle *ih) +{ + SetFocus(ih->handle); + SendMessage(ih->handle, WM_CHANGEUISTATE, UIS_CLEAR|UISF_HIDEFOCUS, 0); +} + +void iupwinWmSetFocus(Ihandle *ih) +{ + Ihandle* dialog = IupGetDialog(ih); + if (ih != dialog) + iupAttribSetStr(dialog, "_IUPWIN_LASTFOCUS", (char*)ih); /* used by IupMenu */ + else + { + /* if a control inside that dialog had the focus, then reset to it when the dialog gets the focus */ + Ihandle* lastfocus = (Ihandle*)iupAttribGet(dialog, "_IUPWIN_LASTFOCUS"); + if (lastfocus) IupSetFocus(lastfocus); + } + + iupCallGetFocusCb(ih); +} diff --git a/iup/src/win/iupwin_font.c b/iup/src/win/iupwin_font.c new file mode 100755 index 0000000..659e2d9 --- /dev/null +++ b/iup/src/win/iupwin_font.c @@ -0,0 +1,342 @@ +/** \file + * \brief Windows Font mapping + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include + +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_array.h" +#include "iup_attrib.h" +#include "iup_object.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_assert.h" + +#include "iupwin_drv.h" +#include "iupwin_info.h" + + +typedef struct IwinFont_ +{ + char standardfont[200]; + HFONT hFont; + int charwidth, charheight; +} IwinFont; + +static Iarray* win_fonts = NULL; + +static IwinFont* winFindFont(const char *standardfont) +{ + HFONT hFont; + int height_pixels; + char typeface[50] = ""; + int height = 8; + int is_bold = 0, + is_italic = 0, + is_underline = 0, + is_strikeout = 0; + int res = iupwinGetScreenRes(); + int i, count = iupArrayCount(win_fonts); + const char* mapped_name; + + /* Check if the standardfont already exists in cache */ + IwinFont* fonts = (IwinFont*)iupArrayGetData(win_fonts); + for (i = 0; i < count; i++) + { + if (iupStrEqualNoCase(standardfont, fonts[i].standardfont)) + return &fonts[i]; + } + + /* parse the old format first */ + if (!iupFontParseWin(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout)) + { + if (!iupFontParsePango(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout)) + return NULL; + } + + mapped_name = iupFontGetWinName(typeface); + if (mapped_name) + strcpy(typeface, mapped_name); + + /* get in pixels */ + if (height < 0) + height_pixels = height; /* already in pixels */ + else + height_pixels = -IUPWIN_PT2PIXEL(height, res); + + if (height_pixels == 0) + return NULL; + + hFont = CreateFont(height_pixels, + 0,0,0, + (is_bold) ? FW_BOLD : FW_NORMAL, + is_italic, + is_underline, + is_strikeout, + DEFAULT_CHARSET,OUT_TT_PRECIS, + CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + FF_DONTCARE|DEFAULT_PITCH, + typeface); + if (!hFont) + return NULL; + + /* create room in the array */ + fonts = (IwinFont*)iupArrayInc(win_fonts); + + strcpy(fonts[i].standardfont, standardfont); + fonts[i].hFont = hFont; + + { + TEXTMETRIC tm; + HDC hdc = GetDC(NULL); + HFONT oldfont = SelectObject(hdc, hFont); + + GetTextMetrics(hdc, &tm); + + SelectObject(hdc, oldfont); + ReleaseDC(NULL, hdc); + + fonts[i].charwidth = tm.tmAveCharWidth; + fonts[i].charheight = tm.tmHeight; + } + + return &fonts[i]; +} + +static void winFontFromLogFont(LOGFONT* logfont, char * font) +{ + int is_bold = (logfont->lfWeight == FW_NORMAL)? 0: 1; + int is_italic = logfont->lfItalic; + int is_underline = logfont->lfUnderline; + int is_strikeout = logfont->lfStrikeOut; + int height_pixels = logfont->lfHeight; /* negative value */ + int res = iupwinGetScreenRes(); + int height = IUPWIN_PIXEL2PT(-height_pixels, res); /* return in points */ + + sprintf(font, "%s, %s%s%s%s %d", logfont->lfFaceName, + is_bold?"Bold ":"", + is_italic?"Italic ":"", + is_underline?"Underline ":"", + is_strikeout?"Strikeout ":"", + height); +} + +char* iupdrvGetSystemFont(void) +{ + static char systemfont[200] = ""; + NONCLIENTMETRICS ncm; + ncm.cbSize = sizeof(NONCLIENTMETRICS); + if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, FALSE)) + winFontFromLogFont(&ncm.lfMessageFont, systemfont); + else + strcpy(systemfont, "Tahoma, 10"); + return systemfont; +} + +char* iupwinFindHFont(HFONT hFont) +{ + int i, count = iupArrayCount(win_fonts); + + /* Check if the standardfont already exists in cache */ + IwinFont* fonts = (IwinFont*)iupArrayGetData(win_fonts); + for (i = 0; i < count; i++) + { + if (hFont == fonts[i].hFont) + return fonts[i].standardfont; + } + + return NULL; +} + +HFONT iupwinGetHFont(const char* value) +{ + IwinFont* winfont = winFindFont(value); + if (!winfont) + return NULL; + else + return winfont->hFont; +} + +static IwinFont* winFontCreateNativeFont(Ihandle *ih, const char* value) +{ + IwinFont* winfont = winFindFont(value); + if (!winfont) + { + iupERROR1("Failed to create Font: %s", value); + return NULL; + } + + iupAttribSetStr(ih, "_IUP_WINFONT", (char*)winfont); + return winfont; +} + +static IwinFont* winFontGet(Ihandle *ih) +{ + IwinFont* winfont = (IwinFont*)iupAttribGet(ih, "_IUP_WINFONT"); + if (!winfont) + winfont = winFontCreateNativeFont(ih, iupGetFontAttrib(ih)); + return winfont; +} + +char* iupwinGetHFontAttrib(Ihandle *ih) +{ + IwinFont* winfont = winFontGet(ih); + if (!winfont) + return NULL; + else + return (char*)winfont->hFont; +} + +int iupdrvSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + IwinFont* winfont = winFontCreateNativeFont(ih, value); + if (!winfont) + return 1; + + /* If FONT is changed, must update the SIZE attribute */ + iupBaseUpdateSizeFromFont(ih); + + /* FONT attribute must be able to be set before mapping, + so the font is enable for size calculation. */ + if (ih->handle && (ih->iclass->nativetype != IUP_TYPEVOID)) + SendMessage(ih->handle, WM_SETFONT, (WPARAM)winfont->hFont, MAKELPARAM(TRUE,0)); + + return 1; +} + +static HDC winFontGetDC(Ihandle* ih) +{ + if (ih->iclass->nativetype == IUP_TYPEVOID) + return GetDC(NULL); + else + return GetDC(ih->handle); /* handle can be NULL here */ +} + +static void winFontReleaseDC(Ihandle* ih, HDC hdc) +{ + if (ih->iclass->nativetype == IUP_TYPEVOID) + ReleaseDC(NULL, hdc); + else + ReleaseDC(ih->handle, hdc); /* handle can be NULL here */ +} + +void iupdrvFontGetMultiLineStringSize(Ihandle* ih, const char* str, int *w, int *h) +{ + int num_lin, max_w; + + IwinFont* winfont = winFontGet(ih); + if (!winfont) + { + if (w) *w = 0; + if (h) *h = 0; + return; + } + + if (!str) + { + if (w) *w = 0; + if (h) *h = winfont->charheight * 1; + return; + } + + max_w = 0; + num_lin = 1; + if (str[0]) + { + SIZE size; + int len; + const char *nextstr; + const char *curstr = str; + + HDC hdc = winFontGetDC(ih); + HFONT oldhfont = SelectObject(hdc, winfont->hFont); + + do + { + nextstr = iupStrNextLine(curstr, &len); + GetTextExtentPoint32(hdc, curstr, len, &size); + max_w = iupMAX(max_w, size.cx); + + curstr = nextstr; + if (*nextstr) + num_lin++; + } while(*nextstr); + + SelectObject(hdc, oldhfont); + winFontReleaseDC(ih, hdc); + } + + if (w) *w = max_w; + if (h) *h = winfont->charheight*num_lin; +} + +int iupdrvFontGetStringWidth(Ihandle* ih, const char* str) +{ + HDC hdc; + HFONT oldhfont, hFont; + SIZE size; + int len; + char* line_end; + + if (!str || str[0]==0) + return 0; + + hFont = (HFONT)iupwinGetHFontAttrib(ih); + if (!hFont) + return 0; + + hdc = winFontGetDC(ih); + oldhfont = SelectObject(hdc, hFont); + + line_end = strchr(str, '\n'); + if (line_end) + len = line_end-str; + else + len = strlen(str); + + GetTextExtentPoint32(hdc, str, len, &size); + + SelectObject(hdc, oldhfont); + winFontReleaseDC(ih, hdc); + + return size.cx; +} + +void iupdrvFontGetCharSize(Ihandle* ih, int *charwidth, int *charheight) +{ + IwinFont* winfont = winFontGet(ih); + if (!winfont) + { + if (charwidth) *charwidth = 0; + if (charheight) *charheight = 0; + return; + } + + if (charwidth) *charwidth = winfont->charwidth; + if (charheight) *charheight = winfont->charheight; +} + +void iupdrvFontInit(void) +{ + win_fonts = iupArrayCreate(50, sizeof(IwinFont)); +} + +void iupdrvFontFinish(void) +{ + int i, count = iupArrayCount(win_fonts); + IwinFont* fonts = (IwinFont*)iupArrayGetData(win_fonts); + for (i = 0; i < count; i++) + { + DeleteObject(fonts[i].hFont); + fonts[i].hFont = NULL; + } + iupArrayDestroy(win_fonts); +} diff --git a/iup/src/win/iupwin_fontdlg.c b/iup/src/win/iupwin_fontdlg.c new file mode 100755 index 0000000..0602441 --- /dev/null +++ b/iup/src/win/iupwin_fontdlg.c @@ -0,0 +1,160 @@ +/** \file + * \brief IupFontDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" +#include "iup_drvfont.h" + +#include "iupwin_drv.h" + + +#define IUP_FONTFAMILYCOMBOBOX 0x0470 + +static UINT_PTR winFontDlgHookProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) +{ + (void)wParam; + if (uiMsg == WM_INITDIALOG) + { + HWND hWndItem; + CHOOSEFONT* choosefont = (CHOOSEFONT*)lParam; + Ihandle* ih = (Ihandle*)choosefont->lCustData; + + char* value = iupAttribGet(ih, "TITLE"); + if (value) + SetWindowText(hWnd, value); + + ih->handle = hWnd; + iupDialogUpdatePosition(ih); + ih->handle = NULL; /* reset handle */ + iupAttribSetStr(ih, "HWND", (char*)hWnd); /* used by HELP_CB in winDialogBaseProc */ + + hWndItem = GetDlgItem(hWnd, IUP_FONTFAMILYCOMBOBOX); + SetFocus(hWndItem); + } + return 0; +} + +static int winFontDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + unsigned char r, g, b; + CHOOSEFONT choosefont; + LOGFONT logfont; + char* standardfont; + int height_pixels; + char typeface[50] = ""; + int height = 8; + int is_bold = 0, + is_italic = 0, + is_underline = 0, + is_strikeout = 0; + int res = iupwinGetScreenRes(); + + iupAttribSetInt(ih, "_IUPDLG_X", x); /* used in iupDialogUpdatePosition */ + iupAttribSetInt(ih, "_IUPDLG_Y", y); + + if (!parent) + parent = GetActiveWindow(); + + standardfont = iupAttribGet(ih, "VALUE"); + if (!standardfont) + return IUP_ERROR; + + /* parse the old format first */ + if (!iupFontParseWin(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout)) + { + if (!iupFontParsePango(standardfont, typeface, &height, &is_bold, &is_italic, &is_underline, &is_strikeout)) + return IUP_ERROR; + } + + /* get size in pixels */ + if (height < 0) + height_pixels = height; /* already in pixels */ + else + height_pixels = -IUPWIN_PT2PIXEL(height, res); + + if (height_pixels == 0) + return IUP_ERROR; + + ZeroMemory(&choosefont, sizeof(CHOOSEFONT)); + choosefont.lStructSize = sizeof(CHOOSEFONT); + + if (iupStrToRGB(iupAttribGet(ih, "COLOR"), &r, &g, &b)) + choosefont.rgbColors = RGB(r, g, b); + + choosefont.hwndOwner = parent; + choosefont.lpLogFont = &logfont; + choosefont.Flags = CF_SCREENFONTS | CF_EFFECTS | CF_INITTOLOGFONTSTRUCT | CF_ENABLEHOOK; + choosefont.lCustData = (LPARAM)ih; + choosefont.lpfnHook = (LPCFHOOKPROC)winFontDlgHookProc; + + if (IupGetCallback(ih, "HELP_CB")) + choosefont.Flags |= CF_SHOWHELP; + + strcpy(logfont.lfFaceName, typeface); + logfont.lfHeight = height_pixels; + logfont.lfWeight = (is_bold)? FW_BOLD: FW_NORMAL; + logfont.lfItalic = (BYTE)is_italic; + logfont.lfUnderline = (BYTE)is_underline; + logfont.lfStrikeOut = (BYTE)is_strikeout; + + logfont.lfCharSet = DEFAULT_CHARSET; + logfont.lfEscapement = 0; + logfont.lfOrientation = 0; + logfont.lfWidth = 0; + logfont.lfOutPrecision = OUT_TT_PRECIS; + logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS; + logfont.lfQuality = DEFAULT_QUALITY; + logfont.lfPitchAndFamily = FF_DONTCARE|DEFAULT_PITCH; + + if (!ChooseFont(&choosefont)) + { + iupAttribSetStr(ih, "VALUE", NULL); + iupAttribSetStr(ih, "COLOR", NULL); + iupAttribSetStr(ih, "STATUS", NULL); + return IUP_NOERROR; + } + + is_bold = (logfont.lfWeight == FW_NORMAL)? 0: 1; + is_italic = logfont.lfItalic; + is_underline = logfont.lfUnderline; + is_strikeout = logfont.lfStrikeOut; + height_pixels = logfont.lfHeight; + + if (height < 0) /* not an error, use old value as a reference for the units */ + height = height_pixels; /* return in pixels */ + else + height = IUPWIN_PIXEL2PT(-height_pixels, res); /* return in points */ + + iupAttribSetStrf(ih, "VALUE", "%s, %s%s%s%s %d", logfont.lfFaceName, + is_bold?"Bold ":"", + is_italic?"Italic ":"", + is_underline?"Underline ":"", + is_strikeout?"Strikeout ":"", + height); + + iupAttribSetStrf(ih, "COLOR", "%d %d %d", GetRValue(choosefont.rgbColors), + GetGValue(choosefont.rgbColors), + GetBValue(choosefont.rgbColors)); + iupAttribSetStr(ih, "STATUS", "1"); + + return IUP_NOERROR; +} + +void iupdrvFontDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = winFontDlgPopup; + + /* IupFontDialog Windows Only */ + iupClassRegisterAttribute(ic, "COLOR", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_frame.c b/iup/src/win/iupwin_frame.c new file mode 100755 index 0000000..0949b5d --- /dev/null +++ b/iup/src/win/iupwin_frame.c @@ -0,0 +1,203 @@ +/** \file + * \brief Frame Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_frame.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" +#include "iupwin_info.h" + + +void iupdrvFrameGetDecorOffset(Ihandle* ih, int *x, int *y) +{ + if (iupwin_comctl32ver6) + { + *x = 3; + *y = 3; + } + else + { + *x = 2; + *y = 2; + } + + if (iupAttribGet(ih, "_IUPFRAME_HAS_TITLE") || iupAttribGet(ih, "TITLE")) + { + (*y) += iupFrameGetTitleHeight(ih); + } +} + +static void winFrameDrawText(HDC hDC, const char* text, int x, int y, COLORREF fgcolor) +{ + COLORREF oldcolor; + + SetTextAlign(hDC, TA_TOP|TA_LEFT); + SetBkMode(hDC, TRANSPARENT); + oldcolor = SetTextColor(hDC, fgcolor); + + TextOut(hDC, x, y, text, strlen(text)); + + SetTextColor(hDC, oldcolor); + SetBkMode(hDC, OPAQUE); +} + +static void winFrameDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem) +{ + iupwinBitmapDC bmpDC; + HDC hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, drawitem->rcItem.right-drawitem->rcItem.left, + drawitem->rcItem.bottom-drawitem->rcItem.top); + + iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem); + + if (iupAttribGet(ih, "_IUPFRAME_HAS_TITLE")) + { + int x, y; + HFONT hOldFont, hFont = (HFONT)iupwinGetHFontAttrib(ih); + int txt_height = iupFrameGetTitleHeight(ih); + COLORREF fgcolor; + SIZE size; + + char* title = iupdrvBaseGetTitleAttrib(ih); + if (!title) title = ""; + + x = drawitem->rcItem.left+7; + y = drawitem->rcItem.top; + + hOldFont = SelectObject(hDC, hFont); + GetTextExtentPoint32(hDC, title, strlen(title), &size); + ExcludeClipRect(hDC, x-2, y, x+size.cx+2, y+size.cy); + + drawitem->rcItem.top += txt_height/2; + if (iupwin_comctl32ver6) + iupwinDrawThemeFrameBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState); + else + DrawEdge(hDC, &drawitem->rcItem, EDGE_ETCHED, BF_RECT); + + SelectClipRgn(hDC, NULL); + + if (drawitem->itemState & ODS_DISABLED) + fgcolor = GetSysColor(COLOR_GRAYTEXT); + else + { + unsigned char r, g, b; + char* color = iupAttribGetInherit(ih, "FGCOLOR"); + if (!color) + { + if (!iupwinDrawGetThemeFrameFgColor(ih->handle, &fgcolor)) + fgcolor = 0; /* black */ + } + else + { + if (iupStrToRGB(color, &r, &g, &b)) + fgcolor = RGB(r,g,b); + else + fgcolor = 0; /* black */ + } + } + + winFrameDrawText(hDC, title, x, y, fgcolor); + + SelectObject(hDC, hOldFont); + } + else + { + char* value = iupAttribGetStr(ih, "SUNKEN"); + if (iupStrBoolean(value)) + DrawEdge(hDC, &drawitem->rcItem, EDGE_SUNKEN, BF_RECT); + else + DrawEdge(hDC, &drawitem->rcItem, EDGE_ETCHED, BF_RECT); + } + + iupwinDrawDestroyBitmapDC(&bmpDC); +} + +static int winFrameProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + switch (msg) + { + case WM_GETDLGCODE: + { + *result = DLGC_STATIC; /* same return as GROUPBOX */ + return 1; + } + case WM_NCHITTEST: + { + *result = HTTRANSPARENT; /* same return as GROUPBOX */ + return 1; + } + case WM_ERASEBKGND: + { + /* just to ignore the internal processing */ + *result = 1; + return 1; + } + } + + return iupwinBaseContainerProc(ih, msg, wp, lp, result); +} + +static int winFrameMapMethod(Ihandle* ih) +{ + char *title; + DWORD dwStyle = WS_CHILD|WS_CLIPSIBLINGS| + BS_OWNERDRAW, /* owner draw necessary because BS_GROUPBOX does not work ok */ + dwExStyle = 0; + + if (!ih->parent) + return IUP_ERROR; + + title = iupAttribGet(ih, "TITLE"); + if (title) + iupAttribSetStr(ih, "_IUPFRAME_HAS_TITLE", "1"); + + if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED")) + dwExStyle |= WS_EX_COMPOSITED; + else + dwStyle |= WS_CLIPCHILDREN; + + if (!iupwinCreateWindowEx(ih, "BUTTON", dwExStyle, dwStyle)) + return IUP_ERROR; + + /* replace the WinProc to handle other messages */ + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winFrameProc); + + /* Process WM_DRAWITEM */ + IupSetCallback(ih, "_IUPWIN_DRAWITEM_CB", (Icallback)winFrameDrawItem); + + return IUP_NOERROR; +} + +void iupdrvFrameInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winFrameMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", iupBaseNativeParentGetBgColorAttrib, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_globalattrib.c b/iup/src/win/iupwin_globalattrib.c new file mode 100755 index 0000000..a176925 --- /dev/null +++ b/iup/src/win/iupwin_globalattrib.c @@ -0,0 +1,243 @@ +/** \file + * \brief Windows Driver iupdrvSetGlobal + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvinfo.h" +#include "iup_strmessage.h" + +#include "iupwin_drv.h" + +static int win_monitor_index = 0; + +/* Not defined in compilers older than VC9 */ +#ifndef MAPVK_VK_TO_VSC +#define MAPVK_VK_TO_VSC (0) +#endif + +static void winGlobalSendKey(int key, int press) +{ + unsigned int keyval, state; + INPUT input[2]; + LPARAM extra_info; + WORD state_scan = 0, key_scan; + ZeroMemory(input, 2*sizeof(INPUT)); + + iupwinKeyEncode(key, &keyval, &state); + if (!keyval) + return; + + extra_info = GetMessageExtraInfo(); + if (state) + state_scan = (WORD)MapVirtualKey(state, MAPVK_VK_TO_VSC); + key_scan = (WORD)MapVirtualKey(keyval, MAPVK_VK_TO_VSC); + + if (press & 0x01) + { + if (state) + { + /* modifier first */ + input[0].type = INPUT_KEYBOARD; + input[0].ki.wVk = (WORD)state; + input[0].ki.wScan = state_scan; + input[0].ki.dwExtraInfo = extra_info; + + /* key second */ + input[1].type = INPUT_KEYBOARD; + input[1].ki.wVk = (WORD)keyval; + input[1].ki.wScan = key_scan; + input[1].ki.dwExtraInfo = extra_info; + + SendInput(2, input, sizeof(INPUT)); + } + else + { + input[0].type = INPUT_KEYBOARD; + input[0].ki.wVk = (WORD)keyval; + input[0].ki.wScan = key_scan; + input[0].ki.dwExtraInfo = extra_info; + + SendInput(1, input, sizeof(INPUT)); + } + } + + if (press & 0x02) + { + if (state) + { + /* key first */ + input[0].type = INPUT_KEYBOARD; + input[0].ki.dwFlags = KEYEVENTF_KEYUP; + input[0].ki.wVk = (WORD)keyval; + input[0].ki.wScan = key_scan; + input[0].ki.dwExtraInfo = extra_info; + + /* modifier second */ + input[1].type = INPUT_KEYBOARD; + input[1].ki.dwFlags = KEYEVENTF_KEYUP; + input[1].ki.wVk = (WORD)state; + input[1].ki.wScan = state_scan; + input[1].ki.dwExtraInfo = extra_info; + + SendInput(2, input, sizeof(INPUT)); + } + else + { + input[0].type = INPUT_KEYBOARD; + input[0].ki.dwFlags = KEYEVENTF_KEYUP; + input[0].ki.wVk = (WORD)keyval; + input[0].ki.wScan = key_scan; + input[0].ki.dwExtraInfo = extra_info; + + SendInput(1, input, sizeof(INPUT)); + } + } +} + +static BOOL CALLBACK winMonitorInfoEnum(HMONITOR handle, HDC handle_dc, LPRECT rect, LPARAM data) +{ + RECT* monitors_rect = (RECT*)data; + monitors_rect[win_monitor_index] = *rect; + win_monitor_index++; + (void)handle_dc; + (void)handle; + return TRUE; +} + +int iupdrvSetGlobal(const char *name, const char *value) +{ + if (iupStrEqual(name, "LANGUAGE")) + { + iupStrMessageUpdateLanguage(value); + return 1; + } + if (iupStrEqual(name, "CURSORPOS")) + { + int x, y; + if (iupStrToIntInt(value, &x, &y, 'x') == 2) + SetCursorPos(x, y); + return 0; + } + if (iupStrEqual(name, "KEYPRESS")) + { + int key; + if (iupStrToInt(value, &key)) + winGlobalSendKey(key, 0x01); + return 0; + } + if (iupStrEqual(name, "KEYRELEASE")) + { + int key; + if (iupStrToInt(value, &key)) + winGlobalSendKey(key, 0x02); + return 0; + } + if (iupStrEqual(name, "KEY")) + { + int key; + if (iupStrToInt(value, &key)) + winGlobalSendKey(key, 0x03); + return 0; + } + return 1; +} + +char *iupdrvGetGlobal(const char *name) +{ + if (iupStrEqual(name, "CURSORPOS")) + { + int x, y; + char* str = iupStrGetMemory(50); + iupdrvGetCursorPos(&x, &y); + sprintf(str, "%dx%d", x, y); + return str; + } + if (iupStrEqual(name, "SHIFTKEY")) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[0] == 'S') + return "ON"; + return "OFF"; + } + if (iupStrEqual(name, "CONTROLKEY")) + { + char key[5]; + iupdrvGetKeyState(key); + if (key[1] == 'C') + return "ON"; + return "OFF"; + } + if (iupStrEqual(name, "MODKEYSTATE")) + { + char *str = iupStrGetMemory(5); + iupdrvGetKeyState(str); + return str; + } + if (iupStrEqual(name, "SCREENSIZE")) + { + char *str = iupStrGetMemory(50); + int w, h; + iupdrvGetScreenSize(&w, &h); + sprintf(str, "%dx%d", w, h); + return str; + } + if (iupStrEqual(name, "FULLSIZE")) + { + char *str = iupStrGetMemory(50); + int w, h; + iupdrvGetFullSize(&w, &h); + sprintf(str, "%dx%d", w, h); + return str; + } + if (iupStrEqual(name, "SCREENDEPTH")) + { + char *str = iupStrGetMemory(50); + int bpp = iupdrvGetScreenDepth(); + sprintf(str, "%d", bpp); + return str; + } + if (iupStrEqual(name, "VIRTUALSCREEN")) + { + char *str = iupStrGetMemory(50); + int x = GetSystemMetrics(SM_XVIRTUALSCREEN); + int y = GetSystemMetrics(SM_YVIRTUALSCREEN); + int w = GetSystemMetrics(SM_CXVIRTUALSCREEN); + int h = GetSystemMetrics(SM_CYVIRTUALSCREEN); + sprintf(str, "%d %d %d %d", x, y, w, h); + return str; + } + if (iupStrEqual(name, "MONITORSINFO")) + { + int i; + int monitors_count = GetSystemMetrics(SM_CMONITORS); + RECT* monitors_rect = malloc(monitors_count*sizeof(RECT)); + char *str = iupStrGetMemory(monitors_count*50); + char* pstr = str; + + win_monitor_index = 0; + EnumDisplayMonitors(NULL, NULL, winMonitorInfoEnum, (LPARAM)monitors_rect); + + for (i=0; i < monitors_count; i++) + pstr += sprintf(pstr, "%d %d %d %d\n", (int)monitors_rect[i].left, (int)monitors_rect[i].top, (int)(monitors_rect[i].right-monitors_rect[i].left), (int)(monitors_rect[i].bottom-monitors_rect[i].top)); + + free(monitors_rect); + return str; + } + if (iupStrEqual(name, "TRUECOLORCANVAS")) + { + if (iupdrvGetScreenDepth() > 8) + return "YES"; + return "NO"; + } + return NULL; +} diff --git a/iup/src/win/iupwin_handle.c b/iup/src/win/iupwin_handle.c new file mode 100755 index 0000000..d5a7f77 --- /dev/null +++ b/iup/src/win/iupwin_handle.c @@ -0,0 +1,56 @@ +/** \file + * \brief HWND to ihandle table + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_table.h" + +#include "iupwin_handle.h" + + +static Itable* winhandle_table; /* table indexed by HWND containing Ihandle* address */ + +Ihandle* iupwinHandleGet(void* handle) +{ + Ihandle* ih; + if (!handle) + return NULL; + ih = (Ihandle*)iupTableGet(winhandle_table, (char*)handle); + if (ih && !iupObjectCheck(ih)) + return NULL; + return ih; +} + +void iupwinHandleSet(Ihandle *ih) +{ + iupTableSet(winhandle_table, (char*)ih->handle, ih, IUPTABLE_POINTER); +} + +void iupwinHandleAdd(Ihandle *ih, InativeHandle* hWnd) +{ + iupTableSet(winhandle_table, (char*)hWnd, ih, IUPTABLE_POINTER); +} + +void iupwinHandleRemove(Ihandle *ih) +{ + iupTableRemove(winhandle_table, (char*)ih->handle); +} + +void iupwinHandleInit(void) +{ + winhandle_table = iupTableCreate(IUPTABLE_POINTERINDEXED); +} + +void iupwinHandleFinish(void) +{ + iupTableDestroy(winhandle_table); + winhandle_table = NULL; +} diff --git a/iup/src/win/iupwin_handle.h b/iup/src/win/iupwin_handle.h new file mode 100755 index 0000000..4a8643d --- /dev/null +++ b/iup/src/win/iupwin_handle.h @@ -0,0 +1,28 @@ +/** \file + * \brief HWND to ihandle table + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPWIN_HANDLE_H +#define __IUPWIN_HANDLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Returns the IUP handle given the Windows handle. */ + +Ihandle* iupwinHandleGet(void* handle); +void iupwinHandleSet(Ihandle *ih); +void iupwinHandleAdd(Ihandle *ih, InativeHandle* hWnd); +void iupwinHandleRemove(Ihandle *ih); +void iupwinHandleInit(void); +void iupwinHandleFinish(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/win/iupwin_image.c b/iup/src/win/iupwin_image.c new file mode 100755 index 0000000..2db9800 --- /dev/null +++ b/iup/src/win/iupwin_image.c @@ -0,0 +1,668 @@ +/** \file + * \brief Image Resource. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_image.h" + +#include "iupwin_drv.h" + +/* RGB in RGBA DIBs are pre-multiplied by alpha to AlphaBlend usage. */ +#define iupALPHAPRE(_src, _alpha) (((_src)*(_alpha))/255) + +static int winDibNumColors(BITMAPINFOHEADER* bmih) +{ + if (bmih->biBitCount > 8) + { + if (bmih->biCompression == BI_BITFIELDS) + return 3; + else + return 0; + } + else + { + if (bmih->biClrUsed != 0) + return bmih->biClrUsed; + else + return 1 << bmih->biBitCount; + } +} + +void iupdrvImageGetRawData(void* handle, unsigned char* imgdata) +{ + int x, y, w, h, bpp, bmp_line_size, bits_size; + BYTE* bits; + HANDLE hHandle = (HANDLE)handle; + void* dib = GlobalLock(hHandle); + BITMAPINFOHEADER* bmih = (BITMAPINFOHEADER*)dib; + + w = bmih->biWidth; + h = abs(bmih->biHeight); + bpp = iupImageNormBpp(bmih->biBitCount); + bmp_line_size = ((w * bmih->biBitCount + 31) / 32) * 4; /* DWORD aligned, 4 bytes boundary in a N bpp image */ + bits_size = bmp_line_size*h; + + bits = ((BYTE*)dib) + sizeof(BITMAPINFOHEADER) + winDibNumColors(bmih)*sizeof(RGBQUAD); + + /* windows bitmaps are bottom up */ + /* imgdata is bottom up */ + + if (bmih->biHeight < 0) + bits = bits + (bits_size - bmp_line_size); /* start of last line */ + + if (bpp == 8) + { + for (y = 0; y < h; y++) + { + for (x = 0; x < w; x++) + { + switch (bmih->biBitCount) + { + case 1: + *imgdata++ = (unsigned char)((bits[x / 8] >> (7 - x % 8)) & 0x01); + break; + case 4: + *imgdata++ = (unsigned char)((bits[x / 2] >> ((1 - x % 2) * 4)) & 0x0F); + break; + case 8: + *imgdata++ = bits[x]; + break; + } + } + + if (bmih->biHeight < 0) + bits -= bmp_line_size; + else + bits += bmp_line_size; + } + } + else + { + int offset, planesize; + unsigned short color; + unsigned int rmask = 0, gmask = 0, bmask = 0, + roff = 0, goff = 0, boff = 0; /* pixel bit mask control when reading 16 and 32 bpp images */ + unsigned char *red, *green, *blue, *alpha; + + planesize = w*h; + red = imgdata; + green = imgdata+planesize; + blue = imgdata+2*planesize; + alpha = imgdata+3*planesize; + + if (bmih->biBitCount == 16) + offset = bmp_line_size; /* do not increment for each pixel, jump line */ + else + offset = bmp_line_size - (w*bmih->biBitCount)/8; /* increment for each pixel, jump pad */ + + if (bmih->biCompression == BI_BITFIELDS) + { + unsigned int Mask; + unsigned int* palette = (unsigned int*)(((BYTE*)bmih) + sizeof(BITMAPINFOHEADER)); + + rmask = Mask = palette[0]; + while (!(Mask & 0x01)) + {Mask >>= 1; roff++;} + + gmask = Mask = palette[1]; + while (!(Mask & 0x01)) + {Mask >>= 1; goff++;} + + bmask = Mask = palette[2]; + while (!(Mask & 0x01)) + {Mask >>= 1; boff++;} + } + else if (bmih->biBitCount == 16) + { + bmask = 0x001F; + gmask = 0x03E0; + rmask = 0x7C00; + boff = 0; + goff = 5; + roff = 10; + } + + for (y = 0; y < h; y++) + { + for (x = 0; x < w; x++) + { + if (bmih->biBitCount == 16) + { + color = ((unsigned short*)bits)[x]; + *red++ = (unsigned char)((((rmask & color) >> roff) * 255) / (rmask >> roff)); + *green++ = (unsigned char)((((gmask & color) >> goff) * 255) / (gmask >> goff)); + *blue++ = (unsigned char)((((bmask & color) >> boff) * 255) / (bmask >> boff)); + } + else + { + *blue++ = *bits++; + *green++ = *bits++; + *red++ = *bits++; + + if (bmih->biBitCount == 32) + { + if (alpha) + *alpha++ = *bits++; + else + bits++; + } + } + } + + bits += offset; + + if (bmih->biHeight < 0) + bits -= 2*bmp_line_size; + } + } + + GlobalUnlock(hHandle); +} + +void* iupdrvImageCreateImageRaw(int width, int height, int bpp, iupColor* colors, int colors_count, unsigned char *imgdata) +{ + int y,x,bmp_line_size,channels,bits_size,header_size; + HANDLE hHandle; + BYTE* bits; /* DIB bitmap bits, created in CreateDIBSection and filled here */ + void* dib; + BITMAPINFOHEADER* bmih; + + bmp_line_size = ((width * bpp + 31) / 32) * 4; /* DWORD aligned, 4 bytes boundary in a N bpp image */ + bits_size = bmp_line_size*height; + header_size = sizeof(BITMAPINFOHEADER) + colors_count*sizeof(RGBQUAD); + + hHandle = GlobalAlloc(GMEM_MOVEABLE, header_size+bits_size); + if (!hHandle) + return NULL; + + dib = GlobalLock(hHandle); + bits = ((BYTE*)dib) + header_size; + + bmih = (BITMAPINFOHEADER*)dib; + + memset(bmih, 0, sizeof(BITMAPINFOHEADER)); + bmih->biSize = sizeof(BITMAPINFOHEADER); + bmih->biWidth = width; + bmih->biHeight = height; + bmih->biPlanes = 1; /* not the same as PLANES */ + bmih->biBitCount = (WORD)bpp; + bmih->biCompression = BI_RGB; + bmih->biClrUsed = colors_count; + + if (colors_count) + { + RGBQUAD* bitmap_colors = (RGBQUAD*)(((BYTE*)dib) + sizeof(BITMAPINFOHEADER)); + int i; + for (i=0;ibiWidth; + if (h) *h = abs(bmih->biHeight); + if (bpp) *bpp = iupImageNormBpp(bmih->biBitCount); + + if (bmih->biBitCount <= 8) + { + RGBQUAD* bitmap_colors = (RGBQUAD*)(((BYTE*)bmih) + sizeof(BITMAPINFOHEADER)); + int i; + + if (bmih->biClrUsed != 0) + *colors_count = bmih->biClrUsed; + else + *colors_count = 1 << bmih->biBitCount; + + for (i=0;i<*colors_count;i++) + { + colors[i].r = bitmap_colors[i].rgbRed; + colors[i].g = bitmap_colors[i].rgbGreen; + colors[i].b = bitmap_colors[i].rgbBlue; + } + } + + GlobalUnlock(hHandle); + return 1; +} + +static int winImageInitDibColors(iupColor* colors, RGBQUAD* bmpcolors, int colors_count, + unsigned char bg_r, unsigned char bg_g, unsigned char bg_b, int make_inactive) +{ + int i, ret = 0; + for (i=0;ibiSize = sizeof(BITMAPINFOHEADER); + bmih->biWidth = width; + bmih->biHeight = height; + bmih->biPlanes = 1; /* not the same as PLANES */ + bmih->biBitCount = (WORD)bpp; + bmih->biCompression = BI_RGB; + bmih->biClrUsed = colors_count; + + if (colors_count) + { + /* since colors are only passed to the CreateDIBSection here, must update BGCOLOR and inactive here */ + RGBQUAD* bitmap_colors = (RGBQUAD*)(((BYTE*)bmih) + sizeof(BITMAPINFOHEADER)); + if (winImageInitDibColors(colors, bitmap_colors, colors_count, bg_r, bg_g, bg_b, make_inactive)) + iupAttribSetStr(ih, "_IUP_BGCOLOR_DEPEND", "1"); + } + + hDC = GetDC(NULL); + hBitmap = CreateDIBSection(hDC, (BITMAPINFO*)bmih, DIB_RGB_COLORS, (void**)bits, NULL, 0x0); + ReleaseDC(NULL, hDC); + free(bmih); + + return hBitmap; +} + +void* iupdrvImageCreateImage(Ihandle *ih, const char* bgcolor, int make_inactive) +{ + unsigned char bg_r = 0, bg_g = 0, bg_b = 0; + int y,x,bmp_line_size,data_line_size, + width = ih->currentwidth, + height = ih->currentheight, + channels = iupAttribGetInt(ih, "CHANNELS"), + flat_alpha = iupAttribGetBoolean(ih, "FLAT_ALPHA"), + bpp = iupAttribGetInt(ih, "BPP"); + unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + HBITMAP hBitmap; + BYTE* bits; /* DIB bitmap bits, created in CreateDIBSection and filled here */ + + iupStrToRGB(bgcolor, &bg_r, &bg_g, &bg_b); + + hBitmap = winImageCreateBitmap(ih, width, height, bpp, &bits, bg_r, bg_g, bg_b, make_inactive); + if (!hBitmap) + return NULL; + + bmp_line_size = ((width * bpp + 31) / 32) * 4; /* DWORD aligned, 4 bytes boundary in a N bpp image */ + data_line_size = width*channels; + + /* windows bitmaps are bottom up */ + imgdata += (height-1)*data_line_size; /* iupimage is top down */ + + for (y=0; ycurrentwidth, + height = ih->currentheight, + channels = iupAttribGetInt(ih, "CHANNELS"), + bpp = iupAttribGetInt(ih, "BPP"); + unsigned char *imgdata = (unsigned char*)iupAttribGetStr(ih, "WID"); + HBITMAP hBitmap; + BYTE* bitmask, *bitmask_ptr; + iupColor colors[256]; + + if (bpp == 8) + iupImageInitColorTable(ih, colors, &colors_count); + + mask_line_size = ((width + 15) / 16) * 2; /* WORD aligned, 2 bytes boundary in a 1 bpp image */ + data_line_size = width*channels; + + bitmask = malloc(height * mask_line_size); + memset(bitmask, 0, height * mask_line_size); /* opaque */ + + /* mask and iupimage are top down */ + + bitmask_ptr = bitmask; + for (y=0; y +#include + +#include +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_drv.h" + +#include "iupwin_info.h" + + +int iupwinIsVista(void) +{ + OSVERSIONINFO osvi; + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + + if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion >= 6) + return 1; + + return 0; +} + +int iupwinGetSystemMajorVersion(void) +{ + OSVERSIONINFO osvi; + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + return osvi.dwMajorVersion; +} + +char *iupwinGetSystemLanguage(void) +{ + LANGID id = GetSystemDefaultUILanguage(); + char *lang = NULL; + switch(id) + { + case 0x0000: lang = "Language Neutral"; break; + case 0x007f: lang = "Locale Invariant"; break; + case 0x0400: lang = "User Default Language"; break; + case 0x0800: lang = "System Default Language"; break; + case 0x0436: lang = "Afrikaans"; break; + case 0x041c: lang = "Albanian"; break; + case 0x0401: lang = "Arabic (Saudi Arabia)"; break; + case 0x0801: lang = "Arabic (Iraq)"; break; + case 0x0c01: lang = "Arabic (Egypt)"; break; + case 0x1001: lang = "Arabic (Libya)"; break; + case 0x1401: lang = "Arabic (Algeria)"; break; + case 0x1801: lang = "Arabic (Morocco)"; break; + case 0x1c01: lang = "Arabic (Tunisia)"; break; + case 0x2001: lang = "Arabic (Oman)"; break; + case 0x2401: lang = "Arabic (Yemen)"; break; + case 0x2801: lang = "Arabic (Syria)"; break; + case 0x2c01: lang = "Arabic (Jordan)"; break; + case 0x3001: lang = "Arabic (Lebanon)"; break; + case 0x3401: lang = "Arabic (Kuwait)"; break; + case 0x3801: lang = "Arabic (U.A.E.)"; break; + case 0x3c01: lang = "Arabic (Bahrain)"; break; + case 0x4001: lang = "Arabic (Qatar)"; break; + case 0x042b: lang = "Armenian"; break; + case 0x042c: lang = "Azeri (Latin)"; break; + case 0x082c: lang = "Azeri (Cyrillic)"; break; + case 0x042d: lang = "Basque"; break; + case 0x0423: lang = "Belarusian"; break; + case 0x0402: lang = "Bulgarian"; break; + case 0x0455: lang = "Burmese"; break; + case 0x0403: lang = "Catalan"; break; + case 0x0404: lang = "Chinese (Taiwan)"; break; + case 0x0804: lang = "Chinese"; break; + case 0x0c04: lang = "Chinese (Hong Kong)"; break; + case 0x1004: lang = "Chinese (Singapore)"; break; + case 0x1404: lang = "Chinese (Macau)"; break; + case 0x041a: lang = "Croatian"; break; + case 0x0405: lang = "Czech"; break; + case 0x0406: lang = "Danish"; break; + case 0x0465: lang = "Divehi"; break; + case 0x0413: lang = "Dutch (Netherlands)"; break; + case 0x0813: lang = "Dutch (Belgium)"; break; + case 0x0409: lang = "English (United States)"; break; + case 0x0809: lang = "English (United Kingdom)"; break; + case 0x0c09: lang = "English (Australian)"; break; + case 0x1009: lang = "English (Canadian)"; break; + case 0x1409: lang = "English (New Zealand)"; break; + case 0x1809: lang = "English (Ireland)"; break; + case 0x1c09: lang = "English (South Africa)"; break; + case 0x2009: lang = "English (Jamaica)"; break; + case 0x2409: lang = "English (Caribbean)"; break; + case 0x2809: lang = "English (Belize)"; break; + case 0x2c09: lang = "English (Trinidad)"; break; + case 0x3009: lang = "English (Zimbabwe)"; break; + case 0x3409: lang = "English (Philippines)"; break; + case 0x0425: lang = "Estonian"; break; + case 0x0438: lang = "Faeroese"; break; + case 0x0429: lang = "Farsi"; break; + case 0x040b: lang = "Finnish"; break; + case 0x040c: lang = "French (Standard)"; break; + case 0x080c: lang = "French (Belgian)"; break; + case 0x0c0c: lang = "French (Canadian)"; break; + case 0x100c: lang = "French (Switzerland)"; break; + case 0x140c: lang = "French (Luxembourg)"; break; + case 0x180c: lang = "French (Monaco)"; break; + case 0x0456: lang = "Galician"; break; + case 0x0437: lang = "Georgian"; break; + case 0x0407: lang = "German (Standard)"; break; + case 0x0807: lang = "German (Switzerland)"; break; + case 0x0c07: lang = "German (Austria)"; break; + case 0x1007: lang = "German (Luxembourg)"; break; + case 0x1407: lang = "German (Liechtenstein)"; break; + case 0x0408: lang = "Greek"; break; + case 0x0447: lang = "Gujarati"; break; + case 0x040d: lang = "Hebrew"; break; + case 0x0439: lang = "Hindi"; break; + case 0x040e: lang = "Hungarian"; break; + case 0x040f: lang = "Icelandic"; break; + case 0x0421: lang = "Indonesian"; break; + case 0x0410: lang = "Italian (Standard)"; break; + case 0x0810: lang = "Italian (Switzerland)"; break; + case 0x0411: lang = "Japanese"; break; + case 0x044b: lang = "Kannada"; break; + case 0x0457: lang = "Konkani"; break; + case 0x0412: lang = "Korean"; break; + case 0x0812: lang = "Korean (Johab)"; break; + case 0x0440: lang = "Kyrgyz"; break; + case 0x0426: lang = "Latvian"; break; + case 0x0427: lang = "Lithuanian"; break; + case 0x0827: lang = "Lithuanian (Classic)"; break; + case 0x042f: lang = "Macedonian"; break; + case 0x043e: lang = "Malay (Malaysian)"; break; + case 0x083e: lang = "Malay (Brunei Darussalam)"; break; + case 0x044e: lang = "Marathi"; break; + case 0x0450: lang = "Mongolian"; break; + case 0x0414: lang = "Norwegian (Bokmal)"; break; + case 0x0814: lang = "Norwegian (Nynorsk)"; break; + case 0x0415: lang = "Polish"; break; + case 0x0416: lang = "Portuguese (Brazil)"; break; + case 0x0816: lang = "Portuguese (Portugal)"; break; + case 0x0446: lang = "Punjabi"; break; + case 0x0418: lang = "Romanian"; break; + case 0x0419: lang = "Russian"; break; + case 0x044f: lang = "Sanskrit"; break; + case 0x0c1a: lang = "Serbian (Cyrillic)"; break; + case 0x081a: lang = "Serbian (Latin)"; break; + case 0x041b: lang = "Slovak"; break; + case 0x0424: lang = "Slovenian"; break; + case 0x040a: lang = "Spanish (Spain, Traditional Sort)"; break; + case 0x080a: lang = "Spanish (Mexican)"; break; + case 0x0c0a: lang = "Spanish (Spain, International Sort)"; break; + case 0x100a: lang = "Spanish (Guatemala)"; break; + case 0x140a: lang = "Spanish (Costa Rica)"; break; + case 0x180a: lang = "Spanish (Panama)"; break; + case 0x1c0a: lang = "Spanish (Dominican Republic)"; break; + case 0x200a: lang = "Spanish (Venezuela)"; break; + case 0x240a: lang = "Spanish (Colombia)"; break; + case 0x280a: lang = "Spanish (Peru)"; break; + case 0x2c0a: lang = "Spanish (Argentina)"; break; + case 0x300a: lang = "Spanish (Ecuador)"; break; + case 0x340a: lang = "Spanish (Chile)"; break; + case 0x380a: lang = "Spanish (Uruguay)"; break; + case 0x3c0a: lang = "Spanish (Paraguay)"; break; + case 0x400a: lang = "Spanish (Bolivia)"; break; + case 0x440a: lang = "Spanish (El Salvador)"; break; + case 0x480a: lang = "Spanish (Honduras)"; break; + case 0x4c0a: lang = "Spanish (Nicaragua)"; break; + case 0x500a: lang = "Spanish (Puerto Rico)"; break; + case 0x0430: lang = "Sutu"; break; + case 0x0441: lang = "Swahili (Kenya)"; break; + case 0x041d: lang = "Swedish"; break; + case 0x081d: lang = "Swedish (Finland)"; break; + case 0x045a: lang = "Syriac"; break; + case 0x0449: lang = "Tamil"; break; + case 0x0444: lang = "Tatar (Tatarstan)"; break; + case 0x044a: lang = "Telugu"; break; + case 0x041e: lang = "Thai"; break; + case 0x041f: lang = "Turkish"; break; + case 0x0422: lang = "Ukrainian"; break; + case 0x0420: lang = "Urdu (Pakistan)"; break; + case 0x0820: lang = "Urdu (India)"; break; + case 0x0443: lang = "Uzbek (Latin)"; break; + case 0x0843: lang = "Uzbek (Cyrillic)"; break; + case 0x042a: lang = "Vietnamese"; break; + } + return lang; +} + +#define PACKVERSION(major,minor) MAKELONG(minor,major) +typedef struct _DLLVERSIONINFO +{ + DWORD cbSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformID; +} DLLVERSIONINFO; +typedef HRESULT (CALLBACK* DLLGETVERSIONPROC)(DLLVERSIONINFO *); + +static DWORD winGetDllVersion(LPCTSTR lpszDllName) +{ + HINSTANCE hinstDll; + DWORD dwVersion = 0; + + /* For security purposes, LoadLibrary should be provided with a + fully-qualified path to the DLL. The lpszDllName variable should be + tested to ensure that it is a fully qualified path before it is used. */ + hinstDll = LoadLibrary(lpszDllName); + + if (hinstDll) + { + DLLGETVERSIONPROC pDllGetVersion; + pDllGetVersion = (DLLGETVERSIONPROC)GetProcAddress(hinstDll, "DllGetVersion"); + + /* Because some DLLs might not implement this function, you + must test for it explicitly. Depending on the particular + DLL, the lack of a DllGetVersion function can be a useful + indicator of the version. */ + + if (pDllGetVersion) + { + DLLVERSIONINFO dvi; + HRESULT hr; + + ZeroMemory(&dvi, sizeof(dvi)); + dvi.cbSize = sizeof(dvi); + + hr = pDllGetVersion(&dvi); + if (SUCCEEDED(hr)) + dwVersion = PACKVERSION(dvi.dwMajorVersion, dvi.dwMinorVersion); + } + + FreeLibrary(hinstDll); + } + + return dwVersion; +} + +int iupwinGetComCtl32Version(void) +{ + return winGetDllVersion(TEXT("comctl32.dll")); +} + +void iupwinGetSysColor(char* color, int wincolor) +{ + COLORREF syscolor = GetSysColor(wincolor); + sprintf(color, "%d %d %d", (int)GetRValue(syscolor), (int)GetGValue(syscolor), (int)GetBValue(syscolor)); +} + +char* iupwinGetSystemFgColor(void) +{ + static char def_fgcolor[50]; + iupwinGetSysColor(def_fgcolor, COLOR_WINDOWTEXT); + return def_fgcolor; +} + +int iupwinIsAppThemed(void) +{ + typedef BOOL (STDAPICALLTYPE *winIsAppThemed)(void); + static winIsAppThemed myIsAppThemed = NULL; + if (!myIsAppThemed) + { + HMODULE hinstDll = LoadLibrary("uxtheme.dll"); + if (hinstDll) + myIsAppThemed = (winIsAppThemed)GetProcAddress(hinstDll, "IsAppThemed"); + } + + if (myIsAppThemed) + return myIsAppThemed(); + else + return 0; +} diff --git a/iup/src/win/iupwin_info.h b/iup/src/win/iupwin_info.h new file mode 100755 index 0000000..d39bae0 --- /dev/null +++ b/iup/src/win/iupwin_info.h @@ -0,0 +1,29 @@ +/** \file + * \brief Windows System Information + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPWIN_INFO_H +#define __IUPWIN_INFO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* system */ +int iupwinGetSystemMajorVersion(void); +int iupwinGetComCtl32Version(void); +char* iupwinGetSystemLanguage(void); +int iupwinIsAppThemed(void); +int iupwinIsVista(void); + +/* color */ +void iupwinGetSysColor(char* color, int wincolor); +char* iupwinGetSystemFgColor(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/src/win/iupwin_key.c b/iup/src/win/iupwin_key.c new file mode 100755 index 0000000..921ed94 --- /dev/null +++ b/iup/src/win/iupwin_key.c @@ -0,0 +1,348 @@ +/** \file + * \brief Windows Driver keyboard mapping + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include + +#include "iup.h" +#include "iupkey.h" + +#include "iup_object.h" +#include "iup_key.h" + +#include "iupwin_drv.h" + + +#ifndef VK_OEM_PLUS +#define VK_OEM_PLUS 0xBB /* '+' any country */ +#define VK_OEM_COMMA 0xBC /* ',' any country */ +#define VK_OEM_MINUS 0xBD /* '-' any country */ +#define VK_OEM_PERIOD 0xBE /* '.' any country */ +#define VK_OEM_102 0xE2 /* "<>" or "\|" on RT 102-key kbd. */ +#endif + +typedef struct _Iwin2iupkey +{ + int wincode; + int iupcode; + int s_iupcode; + int c_iupcode; + int m_iupcode; + int y_iupcode; +} Iwin2iupkey; + +static Iwin2iupkey winkey_map[] = { + +{ VK_ESCAPE, K_ESC, K_sESC, K_cESC, K_mESC, K_yESC }, +{ VK_PAUSE, K_PAUSE, K_sPAUSE, K_cPAUSE, K_mPAUSE, K_yPAUSE }, +{ VK_SNAPSHOT, K_Print, K_sPrint, K_cPrint, K_mPrint, K_yPrint }, +{ VK_APPS, K_Menu, K_sMenu, K_cMenu, K_mMenu, K_yMenu }, + +{ VK_HOME, K_HOME, K_sHOME, K_cHOME, K_mHOME, K_yHOME }, +{ VK_UP, K_UP, K_sUP, K_cUP, K_mUP, K_yUP }, +{ VK_PRIOR, K_PGUP, K_sPGUP, K_cPGUP, K_mPGUP, K_yPGUP }, +{ VK_LEFT, K_LEFT, K_sLEFT, K_cLEFT, K_mLEFT, K_yLEFT }, +{ VK_CLEAR, K_MIDDLE,K_sMIDDLE, K_cMIDDLE,K_mMIDDLE,K_yMIDDLE}, +{ VK_RIGHT, K_RIGHT, K_sRIGHT, K_cRIGHT, K_mRIGHT, K_yRIGHT }, +{ VK_END, K_END, K_sEND, K_cEND, K_mEND, K_yEND }, +{ VK_DOWN, K_DOWN, K_sDOWN, K_cDOWN, K_mDOWN, K_yDOWN }, +{ VK_NEXT, K_PGDN, K_sPGDN, K_cPGDN, K_mPGDN, K_yPGDN }, +{ VK_INSERT, K_INS, K_sINS, K_cINS, K_mINS, K_yINS }, +{ VK_DELETE, K_DEL, K_sDEL, K_cDEL, K_mDEL, K_yDEL }, +{ VK_SPACE, K_SP, K_sSP, K_cSP, K_mSP, K_ySP }, +{ VK_TAB, K_TAB, K_sTAB, K_cTAB, K_mTAB, K_yTAB }, +{ VK_RETURN, K_CR, K_sCR, K_cCR, K_mCR, K_yCR }, +{ VK_BACK, K_BS, K_sBS, K_cBS, K_mBS, K_yBS }, + +/* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) */ +{ '1', K_1, K_exclam, K_c1, K_m1, K_y1 }, +{ '2', K_2, K_at, K_c2, K_m2, K_y2 }, +{ '3', K_3, K_numbersign, K_c3, K_m3, K_y3 }, +{ '4', K_4, K_dollar, K_c4, K_m4, K_y4 }, +{ '5', K_5, K_percent, K_c5, K_m5, K_y5 }, +{ '6', K_6, K_circum, K_c6, K_m6, K_y6 }, +{ '7', K_7, K_ampersand, K_c7, K_m7, K_y7 }, +{ '8', K_8, K_asterisk, K_c8, K_m8, K_y8 }, +{ '9', K_9, K_parentleft, K_c9, K_m9, K_y9 }, +{ '0', K_0, K_parentright, K_c0, K_m0, K_y0 }, + +/* VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) */ +{ 'A', K_a, K_A, K_cA, K_mA, K_yA}, +{ 'B', K_b, K_B, K_cB, K_mB, K_yB}, +{ 'C', K_c, K_C, K_cC, K_mC, K_yC}, +{ 'D', K_d, K_D, K_cD, K_mD, K_yD}, +{ 'E', K_e, K_E, K_cE, K_mE, K_yE}, +{ 'F', K_f, K_F, K_cF, K_mF, K_yF}, +{ 'G', K_g, K_G, K_cG, K_mG, K_yG}, +{ 'H', K_h, K_H, K_cH, K_mH, K_yH}, +{ 'I', K_i, K_I, K_cI, K_mI, K_yI}, +{ 'J', K_j, K_J, K_cJ, K_mJ, K_yJ}, +{ 'K', K_k, K_K, K_cK, K_mK, K_yK}, +{ 'L', K_l, K_L, K_cL, K_mL, K_yL}, +{ 'M', K_m, K_M, K_cM, K_mM, K_yM}, +{ 'N', K_n, K_N, K_cN, K_mN, K_yN}, +{ 'O', K_o, K_O, K_cO, K_mO, K_yO}, +{ 'P', K_p, K_P, K_cP, K_mP, K_yP}, +{ 'Q', K_q, K_Q, K_cQ, K_mQ, K_yQ}, +{ 'R', K_r, K_R, K_cR, K_mR, K_yR}, +{ 'S', K_s, K_S, K_cS, K_mS, K_yS}, +{ 'T', K_t, K_T, K_cT, K_mT, K_yT}, +{ 'U', K_u, K_U, K_cU, K_mU, K_yU}, +{ 'V', K_v, K_V, K_cV, K_mV, K_yV}, +{ 'W', K_w, K_W, K_cW, K_mW, K_yW}, +{ 'X', K_x, K_X, K_cX, K_mX, K_yX}, +{ 'Y', K_y, K_Y, K_cY, K_mY, K_yY}, +{ 'Z', K_z, K_Z, K_cZ, K_mZ, K_yZ}, + +{ VK_F1, K_F1, K_sF1, K_cF1, K_mF1, K_yF1 }, +{ VK_F2, K_F2, K_sF2, K_cF2, K_mF2, K_yF2 }, +{ VK_F3, K_F3, K_sF3, K_cF3, K_mF3, K_yF3 }, +{ VK_F4, K_F4, K_sF4, K_cF4, K_mF4, K_yF4 }, +{ VK_F5, K_F5, K_sF5, K_cF5, K_mF5, K_yF5 }, +{ VK_F6, K_F6, K_sF6, K_cF6, K_mF6, K_yF6 }, +{ VK_F7, K_F7, K_sF7, K_cF7, K_mF7, K_yF7 }, +{ VK_F8, K_F8, K_sF8, K_cF8, K_mF8, K_yF8 }, +{ VK_F9, K_F9, K_sF9, K_cF9, K_mF9, K_yF9 }, +{ VK_F10, K_F10, K_sF10, K_cF10, K_mF10, K_yF10 }, +{ VK_F11, K_F11, K_sF11, K_cF11, K_mF11, K_yF11 }, +{ VK_F12, K_F12, K_sF12, K_cF12, K_mF12, K_yF12 }, + +{ VK_OEM_1, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon }, +{ VK_OEM_PLUS, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual }, +{ VK_OEM_COMMA, K_comma, K_less, K_cComma, K_mComma, K_yComma }, +{ VK_OEM_MINUS, K_minus, K_underscore, K_cMinus, K_mMinus, K_yMinus }, +{ VK_OEM_PERIOD, K_period, K_greater, K_cPeriod, K_mPeriod, K_yPeriod }, +{ VK_OEM_2, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash }, +{ VK_OEM_3, K_grave, K_tilde, 0, 0, 0 }, +{ VK_OEM_4, K_bracketleft, K_braceleft, K_cBracketleft, K_mBracketleft, K_yBracketleft }, +{ VK_OEM_5, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash }, +{ VK_OEM_6, K_bracketright, K_braceright, K_cBracketright,K_mBracketright,K_yBracketright }, +{ VK_OEM_7, K_apostrophe, K_quotedbl, 0, 0, 0 }, +{ VK_OEM_102, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash }, + +{ VK_NUMPAD0, K_0, K_0, K_c0, K_m0, K_y0 }, +{ VK_NUMPAD1, K_1, K_1, K_c1, K_m1, K_y1 }, +{ VK_NUMPAD2, K_2, K_2, K_c2, K_m2, K_y2 }, +{ VK_NUMPAD3, K_3, K_3, K_c3, K_m3, K_y3 }, +{ VK_NUMPAD4, K_4, K_4, K_c4, K_m4, K_y4 }, +{ VK_NUMPAD5, K_5, K_5, K_c5, K_m5, K_y5 }, +{ VK_NUMPAD6, K_6, K_6, K_c6, K_m6, K_y6 }, +{ VK_NUMPAD7, K_7, K_7, K_c7, K_m7, K_y7 }, +{ VK_NUMPAD8, K_8, K_8, K_c8, K_m8, K_y8 }, +{ VK_NUMPAD9, K_9, K_9, K_c9, K_m9, K_y9 }, +{ VK_MULTIPLY, K_asterisk, K_sAsterisk, K_cAsterisk, K_mAsterisk, K_yAsterisk }, +{ VK_ADD, K_plus, K_sPlus, K_cPlus, K_mPlus, K_yPlus }, +{ VK_SUBTRACT, K_minus, K_sMinus, K_cMinus, K_mMinus, K_yMinus }, +{ VK_DECIMAL, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod }, +{ VK_DIVIDE, K_slash, K_sSlash, K_cSlash, K_mSlash, K_ySlash }, +{ VK_SEPARATOR, K_comma, K_sComma, K_cComma, K_mComma, K_yComma } +}; + +static Iwin2iupkey keytable_abnt[] = { +{ '1', K_1, K_exclam, K_c1, K_m1, K_y1 }, +{ '2', K_2, K_at, K_c2, K_m2, K_y2 }, +{ '3', K_3, K_numbersign, K_c3, K_m3, K_y3 }, +{ '4', K_4, K_dollar, K_c4, K_m4, K_y4 }, +{ '5', K_5, K_percent, K_c5, K_m5, K_y5 }, +{ '6', K_6, K_circum, K_c6, K_m6, K_y6 }, + +{ VK_OEM_1, K_ccedilla, K_Ccedilla, K_cCcedilla, K_mCcedilla, K_yCcedilla }, +{ VK_OEM_2, K_semicolon, K_colon, K_cSemicolon, K_mSemicolon, K_ySemicolon }, +{ VK_OEM_3, K_apostrophe, K_quotedbl, 0, 0, 0 }, +{ VK_OEM_4, K_acute, K_grave, 0, 0, 0 }, +{ VK_OEM_5, K_bracketright, K_braceright, K_cBracketleft, K_mBracketleft, K_yBracketleft }, +{ VK_OEM_6, K_bracketleft, K_braceleft, K_cBracketright, K_mBracketright, K_yBracketright }, +{ VK_OEM_7, K_tilde, K_circum, 0, 0, 0 }, +{ VK_OEM_102, K_backslash, K_bar, K_cBackslash, K_mBackslash, K_yBackslash }, +{ VK_OEM_PLUS, K_equal, K_plus, K_cEqual, K_mEqual, K_yEqual }, +{ 0xC1, K_slash, K_question, K_cSlash, K_mSlash, K_ySlash }, +{ 0xC2, K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod }, +{ VK_SEPARATOR,K_period, K_sPeriod, K_cPeriod, K_mPeriod, K_yPeriod }, +{ VK_DECIMAL, K_comma, K_sComma, K_cComma, K_mComma, K_yComma } +}; + + +void iupwinKeyEncode(int key, unsigned int *keyval, unsigned int *state) +{ + int i, iupcode = key & 0xFF; /* 0-255 interval */ + int count = sizeof(winkey_map)/sizeof(winkey_map[0]); + for (i = 0; i < count; i++) + { + Iwin2iupkey* key_map = &(winkey_map[i]); + if (key_map->iupcode == iupcode) + { + *keyval = key_map->wincode; + *state = 0; + + if (iupcode != key) + { + if (key_map->c_iupcode == key) + *state = VK_CONTROL; + else if (key_map->m_iupcode == key) + *state = VK_MENU; + else if (key_map->y_iupcode == key) + *state = VK_LWIN; + else if (key_map->s_iupcode == key) + *state = VK_SHIFT; + } + return; + } + else if (key_map->s_iupcode == key) /* There are Shift keys bellow 256 */ + { + *keyval = key_map->wincode; + *state = VK_SHIFT; + return; + } + } +} + +static int winKeyMap2Iup(Iwin2iupkey* table, int i) +{ + int code = 0; + if (GetKeyState(VK_CONTROL) & 0x8000) + code = table[i].c_iupcode; + else if (GetKeyState(VK_MENU) & 0x8000) + code = table[i].m_iupcode; + else if ((GetKeyState(VK_LWIN) & 0x8000) || (GetKeyState(VK_RWIN) & 0x8000)) + code = table[i].y_iupcode; + else if (GetKeyState(VK_CAPITAL) & 0x01) /* if it's on */ + { + if ((GetKeyState(VK_SHIFT) & 0x8000) || !iupKeyCanCaps(table[i].iupcode)) + return table[i].iupcode; + else + code = table[i].s_iupcode; + } + else if (GetKeyState(VK_SHIFT) & 0x8000) + code = table[i].s_iupcode; + else + return table[i].iupcode; + + if (!code) + code = table[i].iupcode; + + return code; +} + +static int winKeyDecode(int wincode) +{ + HKL k; + int i, count; + + k = GetKeyboardLayout(0); + if ((int)HIWORD(k) == 0x0416) /* ABNT */ + { + int abnt_count = sizeof(keytable_abnt)/sizeof(keytable_abnt[0]); + for (i = 0; i < abnt_count; i++) + { + if (keytable_abnt[i].wincode == wincode) + return winKeyMap2Iup(keytable_abnt, i); + } + } + + count = sizeof(winkey_map)/sizeof(winkey_map[0]); + for (i = 0; i < count; i++) + { + if (winkey_map[i].wincode == wincode) + return winKeyMap2Iup(winkey_map, i); + } + + return 0; +} + +int iupwinKeyEvent(Ihandle* ih, int wincode, int press) +{ + int result, code; + + if (!ih->iclass->is_interactive) + return 1; + + code = winKeyDecode(wincode); + if (code == 0) + return 1; + + if (press) + { + result = iupKeyCallKeyCb(ih, code); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return 1; + } + else if (result == IUP_IGNORE) + return 0; + + /* in the previous callback the dialog could be destroyed */ + if (iupObjectCheck(ih)) + { + /* this is called only for canvas */ + if (ih->iclass->nativetype == IUP_TYPECANVAS) + { + result = iupKeyCallKeyPressCb(ih, code, 1); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return 1; + } + else if (result == IUP_IGNORE) + return 0; + } + } + + if (!iupKeyProcessNavigation(ih, code, (GetKeyState(VK_SHIFT) & 0x8000))) + return 0; + } + else + { + /* this is called only for canvas */ + if (ih->iclass->nativetype == IUP_TYPECANVAS) + { + result = iupKeyCallKeyPressCb(ih, code, 0); + if (result == IUP_CLOSE) + { + IupExitLoop(); + return 1; + } + else if (result == IUP_IGNORE) + return 0; + } + } + + return 1; +} + +void iupwinButtonKeySetStatus(WORD keys, char* status, int doubleclick) +{ + if (keys & MK_SHIFT) + iupKEYSETSHIFT(status); + + if (keys & MK_CONTROL) + iupKEYSETCONTROL(status); + + if (keys & MK_LBUTTON) + iupKEYSETBUTTON1(status); + + if (keys & MK_MBUTTON) + iupKEYSETBUTTON2(status); + + if (keys & MK_RBUTTON) + iupKEYSETBUTTON3(status); + + if (doubleclick) + iupKEYSETDOUBLE(status); + + if (GetKeyState(VK_MENU) & 0x8000) + iupKEYSETALT(status); + + if ((GetKeyState(VK_LWIN) & 0x8000) || (GetKeyState(VK_RWIN) & 0x8000)) + iupKEYSETSYS(status); + + if (keys & MK_XBUTTON1) + iupKEYSETBUTTON4(status); + + if (keys & MK_XBUTTON2) + iupKEYSETBUTTON5(status); +} diff --git a/iup/src/win/iupwin_label.c b/iup/src/win/iupwin_label.c new file mode 100755 index 0000000..d5a1f53 --- /dev/null +++ b/iup/src/win/iupwin_label.c @@ -0,0 +1,339 @@ +/** \file + * \brief Label Control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_label.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_image.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" + + +static void winLabelDrawImage(Ihandle* ih, HDC hDC, int rect_width, int rect_height) +{ + int xpad = ih->data->horiz_padding, + ypad = ih->data->vert_padding; + int x, y, width, height, bpp; + HBITMAP hBitmap, hMask = NULL; + char *name; + int make_inactive = 0; + + if (iupdrvIsActive(ih)) + name = iupAttribGet(ih, "IMAGE"); + else + { + name = iupAttribGet(ih, "IMINACTIVE"); + if (!name) + { + name = iupAttribGet(ih, "IMAGE"); + make_inactive = 1; + } + } + + hBitmap = iupImageGetImage(name, ih, make_inactive); + if (!hBitmap) + return; + + /* must use this info, since image can be a driver image loaded from resources */ + iupdrvImageGetInfo(hBitmap, &width, &height, &bpp); + + if (ih->data->horiz_alignment == IUP_ALIGN_ARIGHT) + x = rect_width - (width + 2*xpad); + else if (ih->data->horiz_alignment == IUP_ALIGN_ACENTER) + x = (rect_width - (width + 2*xpad))/2; + else /* ALEFT */ + x = 0; + + if (ih->data->vert_alignment == IUP_ALIGN_ABOTTOM) + y = rect_height - (height + 2*ypad); + else if (ih->data->vert_alignment == IUP_ALIGN_ATOP) + y = 0; + else /* ACENTER */ + y = (rect_height - (height + 2*ypad))/2; + + x += xpad; + y += ypad; + + if (bpp == 8) + hMask = iupdrvImageCreateMask(IupGetHandle(name)); + + iupwinDrawBitmap(hDC, hBitmap, hMask, x, y, width, height, bpp); + + if (hMask) + DeleteObject(hMask); +} + +static void winLabelDrawText(Ihandle* ih, HDC hDC, int rect_width, int rect_height) +{ + int xpad = ih->data->horiz_padding, + ypad = ih->data->vert_padding; + int x, y, width, height, style; + HFONT hFont = (HFONT)iupwinGetHFontAttrib(ih); + COLORREF fgcolor; + + char* title = iupdrvBaseGetTitleAttrib(ih); + char* str = iupStrProcessMnemonic(title, NULL, 0); /* remove & */ + iupdrvFontGetMultiLineStringSize(ih, str, &width, &height); + if (str && str!=title) free(str); + + if (ih->data->horiz_alignment == IUP_ALIGN_ARIGHT) + style = DT_RIGHT; + else if (ih->data->horiz_alignment == IUP_ALIGN_ACENTER) + style = DT_CENTER; + else /* ALEFT */ + style = DT_LEFT; + + if (ih->data->vert_alignment == IUP_ALIGN_ABOTTOM) + y = rect_height - (height + 2*ypad); + else if (ih->data->vert_alignment == IUP_ALIGN_ATOP) + y = 0; + else /* ACENTER */ + y = (rect_height - (height + 2*ypad))/2; + + /* let DrawText do the horizontal alignment */ + x = xpad; + width = rect_width - 2*xpad; + y += ypad; + + if (iupdrvIsActive(ih)) + fgcolor = ih->data->fgcolor; + else + fgcolor = GetSysColor(COLOR_GRAYTEXT); + + /* WORDWRAP and ELLIPSIS */ + style |= ih->data->text_style; + + iupwinDrawText(hDC, title, x, y, width, height, hFont, fgcolor, style); +} + +static void winLabelDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem) +{ + HDC hDC; + iupwinBitmapDC bmpDC; + int width, height; + + if (!(drawitem->itemAction & ODA_DRAWENTIRE)) + return; + + width = drawitem->rcItem.right - drawitem->rcItem.left; + height = drawitem->rcItem.bottom - drawitem->rcItem.top; + + hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, width, height); + + iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem); + + if (ih->data->type == IUP_LABEL_IMAGE) + winLabelDrawImage(ih, hDC, width, height); + else + winLabelDrawText(ih, hDC, width, height); + + iupwinDrawDestroyBitmapDC(&bmpDC); +} + +/************************************************************************************************/ + +static int winLabelSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + char value1[30] = "", value2[30] = ""; + + iupStrToStrStr(value, value1, value2, ':'); + + if (iupStrEqualNoCase(value1, "ARIGHT")) + ih->data->horiz_alignment = IUP_ALIGN_ARIGHT; + else if (iupStrEqualNoCase(value1, "ACENTER")) + ih->data->horiz_alignment = IUP_ALIGN_ACENTER; + else /* "ALEFT" */ + ih->data->horiz_alignment = IUP_ALIGN_ALEFT; + + if (iupStrEqualNoCase(value2, "ABOTTOM")) + ih->data->vert_alignment = IUP_ALIGN_ABOTTOM; + else if (iupStrEqualNoCase(value2, "ACENTER")) + ih->data->vert_alignment = IUP_ALIGN_ACENTER; + else /* "ATOP" */ + ih->data->vert_alignment = IUP_ALIGN_ATOP; + + iupdrvDisplayRedraw(ih); + } + return 0; +} + +static char* winLabelGetAlignmentAttrib(Ihandle *ih) +{ + if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + char* horiz_align2str[3] = {"ALEFT", "ACENTER", "ARIGHT"}; + char* vert_align2str[3] = {"ATOP", "ACENTER", "ABOTTOM"}; + char *str = iupStrGetMemory(50); + sprintf(str, "%s:%s", horiz_align2str[ih->data->horiz_alignment], vert_align2str[ih->data->vert_alignment]); + return str; + } + else + return NULL; +} + +static int winLabelSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + + if (ih->handle && ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + iupdrvDisplayRedraw(ih); + + return 0; +} + +static int winLabelSetWordWrapAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_TEXT) + { + if (iupStrBoolean(value)) + ih->data->text_style |= DT_WORDBREAK; + else + ih->data->text_style &= ~DT_WORDBREAK; + + iupdrvDisplayRedraw(ih); + } + + return 1; +} + +static int winLabelSetEllipsisAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_LABEL_TEXT) + { + if (iupStrBoolean(value)) + ih->data->text_style |= DT_END_ELLIPSIS; + else + ih->data->text_style &= ~DT_END_ELLIPSIS; + + iupdrvDisplayRedraw(ih); + } + + return 1; +} + +static int winLabelSetFgColorAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + unsigned char r, g, b; + if (iupStrToRGB(value, &r, &g, &b)) + { + ih->data->fgcolor = RGB(r,g,b); + iupdrvDisplayRedraw(ih); + } + } + return 1; +} + +static int winLabelProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + switch (msg) + { + case WM_NCCALCSIZE: + { + if (wp == TRUE) + { + *result = WVR_HREDRAW|WVR_VREDRAW; + return 1; + } + } + } + + return iupwinBaseProc(ih, msg, wp, lp, result); +} + +static int winLabelMapMethod(Ihandle* ih) +{ + char* value; + DWORD dwStyle = WS_CHILD | + SS_NOTIFY; /* SS_NOTIFY is necessary because of the base messages */ + + if (!ih->parent) + return IUP_ERROR; + + value = iupAttribGet(ih, "SEPARATOR"); + if (value) + { + if (iupStrEqualNoCase(value, "HORIZONTAL")) + { + ih->data->type = IUP_LABEL_SEP_HORIZ; + dwStyle |= SS_ETCHEDHORZ; + } + else /* "VERTICAL" */ + { + ih->data->type = IUP_LABEL_SEP_VERT; + dwStyle |= SS_ETCHEDVERT; + } + } + else + { + /* The lack for good alignment support in STATIC control forces IUP to draw its own label, + but uses the Windows functions to draw text and images in native format. */ + dwStyle |= SS_OWNERDRAW; + + value = iupAttribGet(ih, "IMAGE"); + if (value) + ih->data->type = IUP_LABEL_IMAGE; + else + ih->data->type = IUP_LABEL_TEXT; + } + + if (!iupwinCreateWindowEx(ih, "STATIC", 0, dwStyle)) + return IUP_ERROR; + + if (ih->data->type != IUP_LABEL_SEP_HORIZ && ih->data->type != IUP_LABEL_SEP_VERT) + { + /* replace the WinProc to handle other messages */ + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winLabelProc); + + IupSetCallback(ih, "_IUPWIN_DRAWITEM_CB", (Icallback)winLabelDrawItem); + } + + return IUP_NOERROR; +} + +void iupdrvLabelInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winLabelMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + /* the most important use of this is to provide the correct background for images */ + iupClassRegisterAttribute(ic, "BGCOLOR", iupBaseNativeParentGetBgColorAttrib, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winLabelSetFgColorAttrib, "DLGFGCOLOR", NULL, IUPAF_NOT_MAPPED); /* force new default value */ + iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, iupdrvBaseSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupLabel only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", winLabelGetAlignmentAttrib, winLabelSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT:ACENTER", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PADDING", iupLabelGetPaddingAttrib, winLabelSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + + /* IupLabel Windows and GTK only */ + iupClassRegisterAttribute(ic, "WORDWRAP", NULL, winLabelSetWordWrapAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "ELLIPSIS", NULL, winLabelSetEllipsisAttrib, NULL, NULL, IUPAF_DEFAULT); +} diff --git a/iup/src/win/iupwin_list.c b/iup/src/win/iupwin_list.c new file mode 100755 index 0000000..8fdadb6 --- /dev/null +++ b/iup/src/win/iupwin_list.c @@ -0,0 +1,1460 @@ +/** \file + * \brief List Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_mask.h" +#include "iup_focus.h" +#include "iup_list.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" + + +#ifndef EM_SETCUEBANNER /* defined only if _WIN32_WINNT >= 0x501 */ +#define ECM_FIRST 0x1500 /* Edit control messages */ +#define EM_SETCUEBANNER (ECM_FIRST + 1) +#endif + +#define WM_CARET WM_APP+1 /* Custom IUP message */ + +#define WIN_GETCOUNT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETCOUNT: LB_GETCOUNT) +#define WIN_GETTEXTLEN(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETLBTEXTLEN: LB_GETTEXTLEN) +#define WIN_GETTEXT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETLBTEXT: LB_GETTEXT) +#define WIN_ADDSTRING(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_ADDSTRING: LB_ADDSTRING) +#define WIN_DELETESTRING(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_DELETESTRING: LB_DELETESTRING) +#define WIN_INSERTSTRING(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_INSERTSTRING: LB_INSERTSTRING) +#define WIN_RESETCONTENT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_RESETCONTENT: LB_RESETCONTENT) +#define WIN_SETCURSEL(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETCURSEL: LB_SETCURSEL) +#define WIN_GETCURSEL(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETCURSEL: LB_GETCURSEL) +#define WIN_SETHORIZONTALEXTENT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETHORIZONTALEXTENT: LB_SETHORIZONTALEXTENT) +#define WIN_SETITEMDATA(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETITEMDATA: LB_SETITEMDATA) +#define WIN_GETITEMDATA(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_GETITEMDATA: LB_GETITEMDATA) +#define WIN_SETTOPINDEX(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETTOPINDEX: LB_SETTOPINDEX) +#define WIN_SETITEMHEIGHT(_ih) ((_ih->data->is_dropdown || _ih->data->has_editbox)? CB_SETITEMHEIGHT: LB_SETITEMHEIGHT) + + +void iupdrvListAddItemSpace(Ihandle* ih, int *h) +{ + (void)ih; + (void)h; +} + +void iupdrvListAddBorders(Ihandle* ih, int *x, int *y) +{ + int border_size = 2*4; + (*x) += border_size; + (*y) += border_size; + + if (ih->data->is_dropdown) + { + (*x) += 3; /* extra space for the dropdown button */ + + if (ih->data->has_editbox) + { + /* extra border for the editbox */ + int internal_border_size = 2*6; + (*x) += internal_border_size; + (*y) += internal_border_size; + } + } + else + { + if (ih->data->has_editbox) + (*y) += 2*3; /* internal border between editbox and list */ + } +} + +int iupdrvListGetCount(Ihandle* ih) +{ + return SendMessage(ih->handle, WIN_GETCOUNT(ih), 0, 0); +} + +static int winListConvertXYToPos(Ihandle* ih, int x, int y) +{ + int pos; + + if (ih->data->has_editbox) + { + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + + pos = SendMessage(cbedit, EM_CHARFROMPOS, 0, MAKELPARAM(x, y)); + pos = LOWORD(pos); + } + + if (ih->data->has_editbox) + { + HWND cblist = (HWND)iupAttribGet(ih, "_IUPWIN_LISTBOX"); + pos = SendMessage(cblist, LB_ITEMFROMPOINT, 0, MAKELPARAM(x, y))+1; /* IUP Starts at 1 */ + pos = LOWORD(pos); + } + else + { + pos = SendMessage(ih->handle, LB_ITEMFROMPOINT, 0, MAKELPARAM(x, y))+1; + pos = LOWORD(pos); + } + + return pos; +} + +static int winListGetMaxWidth(Ihandle* ih) +{ + int i, item_w, max_w = 0, + count = SendMessage(ih->handle, WIN_GETCOUNT(ih), 0, 0); + + for (i=0; ihandle, WIN_GETITEMDATA(ih), i, 0); + if (item_w > max_w) + max_w = item_w; + } + + return max_w; +} + +static void winListUpdateScrollWidth(Ihandle* ih) +{ + if (ih->data->is_dropdown && iupAttribGetBoolean(ih, "DROPEXPAND")) + { + int w = 3+winListGetMaxWidth(ih)+iupdrvGetScrollbarSize()+3; + SendMessage(ih->handle, CB_SETDROPPEDWIDTH, w, 0); + } + else + SendMessage(ih->handle, WIN_SETHORIZONTALEXTENT(ih), winListGetMaxWidth(ih), 0); +} + +void iupdrvListAppendItem(Ihandle* ih, const char* value) +{ + int pos = SendMessage(ih->handle, WIN_ADDSTRING(ih), 0, (LPARAM)value); + SendMessage(ih->handle, WIN_SETITEMDATA(ih), pos, (LPARAM)iupdrvFontGetStringWidth(ih, value)); + winListUpdateScrollWidth(ih); +} + +void iupdrvListInsertItem(Ihandle* ih, int pos, const char* value) +{ + SendMessage(ih->handle, WIN_INSERTSTRING(ih), pos, (LPARAM)value); + SendMessage(ih->handle, WIN_SETITEMDATA(ih), pos, (LPARAM)iupdrvFontGetStringWidth(ih, value)); + winListUpdateScrollWidth(ih); +} + +void iupdrvListRemoveItem(Ihandle* ih, int pos) +{ + if (ih->data->is_dropdown && !ih->data->has_editbox) + { + /* must check if removing the current item */ + int curpos = SendMessage(ih->handle, WIN_GETCURSEL(ih), 0, 0); + if (pos == curpos) + { + if (curpos > 0) curpos--; + else curpos++; + + SendMessage(ih->handle, WIN_SETCURSEL(ih), curpos, 0); + } + } + + SendMessage(ih->handle, WIN_DELETESTRING(ih), pos, 0L); + winListUpdateScrollWidth(ih); +} + +void iupdrvListRemoveAllItems(Ihandle* ih) +{ + SendMessage(ih->handle, WIN_RESETCONTENT(ih), 0, 0L); + if (ih->data->is_dropdown && iupAttribGetBoolean(ih, "DROPEXPAND")) + SendMessage(ih->handle, CB_SETDROPPEDWIDTH, 0, 0); + else + SendMessage(ih->handle, WIN_SETHORIZONTALEXTENT(ih), 0, 0); +} + +static int winListGetCaretPos(HWND cbedit) +{ + int pos = 0; + POINT point; + + if (GetFocus() != cbedit || !GetCaretPos(&point)) + { + /* if does not have the focus, or could not get caret position, + then use the selection start position */ + SendMessage(cbedit, EM_GETSEL, (WPARAM)&pos, 0); + } + else + { + pos = SendMessage(cbedit, EM_CHARFROMPOS, 0, MAKELPARAM(point.x, point.y)); + pos = LOWORD(pos); + } + + return pos; +} + + +/*********************************************************************************/ + + +static void winListUpdateItemWidth(Ihandle* ih) +{ + int i, count = SendMessage(ih->handle, WIN_GETCOUNT(ih), 0, 0); + for (i=0; ihandle, WIN_GETTEXTLEN(ih), (WPARAM)i, 0); + char* str = iupStrGetMemory(len+1); + SendMessage(ih->handle, WIN_GETTEXT(ih), (WPARAM)i, (LPARAM)str); + SendMessage(ih->handle, WIN_SETITEMDATA(ih), i, (LPARAM)iupdrvFontGetStringWidth(ih, str)); + } +} + +static int winListSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + iupdrvSetStandardFontAttrib(ih, value); + winListUpdateItemWidth(ih); + winListUpdateScrollWidth(ih); + return 1; +} + +static char* winListGetIdValueAttrib(Ihandle* ih, const char* name_id) +{ + int pos = iupListGetPos(ih, name_id); + if (pos != -1) + { + int len = SendMessage(ih->handle, WIN_GETTEXTLEN(ih), (WPARAM)pos, 0); + char* str = iupStrGetMemory(len+1); + SendMessage(ih->handle, WIN_GETTEXT(ih), (WPARAM)pos, (LPARAM)str); + return str; + } + return NULL; +} + +static char* winListGetValueAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + int nc = GetWindowTextLength(ih->handle); + if (nc) + { + char* str = iupStrGetMemory(nc+1); + GetWindowText(ih->handle, str, nc+1); + return str; + } + } + else + { + if (ih->data->is_dropdown || !ih->data->is_multiple) + { + int pos = SendMessage(ih->handle, WIN_GETCURSEL(ih), 0, 0); + char* str = iupStrGetMemory(50); + sprintf(str, "%d", pos+1); /* IUP starts at 1 */ + return str; + } + else + { + int i, count = SendMessage(ih->handle, LB_GETCOUNT, 0, 0); + int* pos = malloc(sizeof(int)*count); + int sel_count = SendMessage(ih->handle, LB_GETSELITEMS, count, (LPARAM)pos); + char* str = iupStrGetMemory(count+1); + memset(str, '-', count); + str[count]=0; + for (i=0; idata->has_editbox) + { + if (!value) value = ""; + SetWindowText(ih->handle, value); + } + else + { + if (ih->data->is_dropdown || !ih->data->is_multiple) + { + int pos; + if (iupStrToInt(value, &pos)==1) + { + SendMessage(ih->handle, WIN_SETCURSEL(ih), pos-1, 0); /* IUP starts at 1 */ + iupAttribSetInt(ih, "_IUPLIST_OLDVALUE", pos); + } + else + { + SendMessage(ih->handle, WIN_SETCURSEL(ih), (WPARAM)-1, 0); /* no selection */ + iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL); + } + } + else + { + /* User has changed a multiple selection on a simple list. */ + int i, len, count; + + /* Clear all selections */ + SendMessage(ih->handle, LB_SETSEL, FALSE, -1); + + if (!value) + { + iupAttribSetStr(ih, "_IUPLIST_OLDVALUE", NULL); + return 0; + } + + count = SendMessage(ih->handle, LB_GETCOUNT, 0, 0L); + len = strlen(value); + if (len < count) + count = len; + + /* update selection list */ + for (i = 0; ihandle, LB_SETSEL, TRUE, i); + } + + iupAttribStoreStr(ih, "_IUPLIST_OLDVALUE", value); + } + } + + return 0; +} + +static int winListSetShowDropdownAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_dropdown) + SendMessage(ih->handle, CB_SHOWDROPDOWN, iupStrBoolean(value), 0); + return 0; +} + +static int winListSetTopItemAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->is_dropdown) + { + int pos = 1; + if (iupStrToInt(value, &pos)) + SendMessage(ih->handle, WIN_SETTOPINDEX(ih), pos-1, 0); /* IUP starts at 1 */ + } + return 0; +} + +static int winListSetSpacingAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->is_dropdown) + return 0; + + if (!iupStrToInt(value, &ih->data->spacing)) + ih->data->spacing = 0; + + if (ih->handle) + { + int height; + iupdrvFontGetCharSize(ih, NULL, &height); + height += 2*ih->data->spacing; + SendMessage(ih->handle, WIN_SETITEMHEIGHT(ih), 0, height); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int winListSetPaddingAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + iupStrToIntInt(value, &(ih->data->horiz_padding), &(ih->data->vert_padding), 'x'); + ih->data->vert_padding = 0; + if (ih->handle) + { + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELPARAM(ih->data->horiz_padding, ih->data->horiz_padding)); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int winListSetFilterAttrib(Ihandle *ih, const char *value) +{ + int style = 0; + + if (!ih->data->has_editbox) + return 0; + + if (iupStrEqualNoCase(value, "LOWERCASE")) + style = ES_LOWERCASE; + else if (iupStrEqualNoCase(value, "NUMBER")) + style = ES_NUMBER; + else if (iupStrEqualNoCase(value, "UPPERCASE")) + style = ES_UPPERCASE; + + if (style) + { + HWND old_handle = ih->handle; + ih->handle = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + iupwinMergeStyle(ih, ES_LOWERCASE|ES_NUMBER|ES_UPPERCASE, style); + ih->handle = old_handle; + } + + return 1; +} + +static int winListSetCueBannerAttrib(Ihandle *ih, const char *value) +{ + if (ih->data->has_editbox && iupwin_comctl32ver6) + { + WCHAR* wstr = iupwinStrChar2Wide(value); + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETCUEBANNER, (WPARAM)FALSE, (LPARAM)wstr); + free(wstr); + return 1; + } + return 0; +} + +static int winListSetClipboardAttrib(Ihandle *ih, const char *value) +{ + UINT msg = 0; + + if (!ih->data->has_editbox) + return 0; + + if (iupStrEqualNoCase(value, "COPY")) + msg = WM_COPY; + else if (iupStrEqualNoCase(value, "CUT")) + msg = WM_CUT; + else if (iupStrEqualNoCase(value, "PASTE")) + msg = WM_PASTE; + else if (iupStrEqualNoCase(value, "CLEAR")) + msg = WM_CLEAR; + else if (iupStrEqualNoCase(value, "UNDO")) + msg = WM_UNDO; + + if (msg) + { + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, msg, 0, 0); + } + + return 0; +} + +static int winListSetSelectedTextAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + if (value) + { + int start = 0, end = 0; + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return 0; + SendMessage(cbedit, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)value); + } + return 0; +} + +static char* winListGetSelectedTextAttrib(Ihandle* ih) +{ + int nc; + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + nc = GetWindowTextLength(cbedit); + if (nc) + { + int start = 0, end = 0; + char* str; + + SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return NULL; + + str = iupStrGetMemory(nc+1); + GetWindowText(cbedit, str, nc+1); + str[end] = 0; /* returns only the selected text */ + str += start; + + return str; + } + else + return NULL; +} + +static int winListSetNCAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_editbox) + return 0; + + if (!iupStrToInt(value, &ih->data->nc)) + ih->data->nc = 0; + + if (ih->handle) + { + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_LIMITTEXT, ih->data->nc, 0L); + } + return 0; +} + +static int winListSetSelectionAttrib(Ihandle* ih, const char* value) +{ + HWND cbedit; + int start=1, end=1; + if (!ih->data->has_editbox) + return 0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)-1, (LPARAM)0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)0, (LPARAM)-1); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<1 || end<1) + return 0; + + start--; /* IUP starts at 1 */ + end--; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)start, (LPARAM)end); + + return 0; +} + +static char* winListGetSelectionAttrib(Ihandle* ih) +{ + int start = 0, end = 0; + char* str; + HWND cbedit; + if (!ih->data->has_editbox) + return NULL; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return NULL; + + str = iupStrGetMemory(100); + + start++; /* IUP starts at 1 */ + end++; + sprintf(str, "%d:%d", start, end); + + return str; +} + +static int winListSetSelectionPosAttrib(Ihandle* ih, const char* value) +{ + int start=0, end=0; + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)-1, (LPARAM)0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)0, (LPARAM)-1); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<0 || end<0) + return 0; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)start, (LPARAM)end); + + return 0; +} + +static char* winListGetSelectionPosAttrib(Ihandle* ih) +{ + int start = 0, end = 0; + char* str; + HWND cbedit; + if (!ih->data->has_editbox) + return NULL; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return NULL; + + str = iupStrGetMemory(100); + sprintf(str, "%d:%d", start, end); + return str; +} + +static int winListSetInsertAttrib(Ihandle* ih, const char* value) +{ + if (value && ih->data->has_editbox) + { + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)value); + } + return 0; +} + +static int winListSetAppendAttrib(Ihandle* ih, const char* value) +{ + int len; + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) value = ""; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + len = GetWindowTextLength(cbedit)+1; + SendMessage(cbedit, EM_SETSEL, (WPARAM)len, (LPARAM)len); + SendMessage(cbedit, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)value); + + return 0; +} + +static int winListSetReadOnlyAttrib(Ihandle* ih, const char* value) +{ + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETREADONLY, (WPARAM)iupStrBoolean(value), 0); + return 0; +} + +static char* winListGetReadOnlyAttrib(Ihandle* ih) +{ + DWORD style; + HWND cbedit; + if (!ih->data->has_editbox) + return NULL; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + style = GetWindowLong(cbedit, GWL_STYLE); + if (style & ES_READONLY) + return "YES"; + else + return "NO"; +} + +static int winListSetCaretAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 1) pos = 1; + pos--; /* IUP starts at 1 */ + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)pos, (LPARAM)pos); + SendMessage(cbedit, EM_SCROLLCARET, 0L, 0L); + + return 0; +} + +static char* winListGetCaretAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char* str = iupStrGetMemory(100); + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + sprintf(str, "%d", winListGetCaretPos(cbedit)+1); + return str; + } + else + return NULL; +} + +static int winListSetCaretPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); /* be permissive in SetCaret, do not abort if invalid */ + if (pos < 0) pos = 0; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_SETSEL, (WPARAM)pos, (LPARAM)pos); + SendMessage(cbedit, EM_SCROLLCARET, 0L, 0L); + + return 0; +} + +static char* winListGetCaretPosAttrib(Ihandle* ih) +{ + if (ih->data->has_editbox) + { + char* str = iupStrGetMemory(100); + HWND cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + sprintf(str, "%d", winListGetCaretPos(cbedit)); + return str; + } + else + return NULL; +} + +static int winListSetScrollToAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 1) pos = 1; + + pos--; /* return to Windows referece */ + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_LINESCROLL, (WPARAM)pos, (LPARAM)0); + + return 0; +} + +static int winListSetScrollToPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + HWND cbedit; + if (!ih->data->has_editbox) + return 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + cbedit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + SendMessage(cbedit, EM_LINESCROLL, (WPARAM)pos, (LPARAM)0); + + return 0; +} + + +/*********************************************************************************/ + + +static int winListCtlColor(Ihandle* ih, HDC hdc, LRESULT *result) +{ + COLORREF cr; + + if (iupwinGetColorRef(ih, "FGCOLOR", &cr)) + SetTextColor(hdc, cr); + + if (iupwinGetColorRef(ih, "BGCOLOR", &cr)) + { + SetBkColor(hdc, cr); + SetDCBrushColor(hdc, cr); + *result = (LRESULT)GetStockObject(DC_BRUSH); + return 1; + } + return 0; +} + +static int winListWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp) +{ + (void)lp; + + if (ih->data->is_dropdown || ih->data->has_editbox) + { + switch (HIWORD(wp)) + { + case CBN_EDITCHANGE: + { + iupBaseCallValueChangedCb(ih); + break; + } + case CBN_SETFOCUS: + iupwinWmSetFocus(ih); + break; + case CBN_KILLFOCUS: + iupCallKillFocusCb(ih); + break; + case CBN_CLOSEUP: + case CBN_DROPDOWN: + { + IFni cb = (IFni)IupGetCallback(ih, "DROPDOWN_CB"); + if (cb) + cb(ih, HIWORD(wp)==CBN_DROPDOWN? 1: 0); + break; + } + case CBN_DBLCLK: + { + IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB"); + if (cb) + { + int pos = SendMessage(ih->handle, CB_GETCURSEL, 0, 0); + pos++; /* IUP starts at 1 */ + iupListSingleCallDblClickCallback(ih, cb, pos); + } + break; + } + case CBN_SELCHANGE: + { + IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION"); + if (cb) + { + int pos = SendMessage(ih->handle, CB_GETCURSEL, 0, 0); + pos++; /* IUP starts at 1 */ + iupListSingleCallActionCallback(ih, cb, pos); + } + + iupBaseCallValueChangedCb(ih); + break; + } + } + } + else + { + switch (HIWORD(wp)) + { + case LBN_DBLCLK: + { + IFnis cb = (IFnis) IupGetCallback(ih, "DBLCLICK_CB"); + if (cb) + { + int pos = SendMessage(ih->handle, LB_GETCURSEL, 0, 0); + pos++; /* IUP starts at 1 */ + iupListSingleCallDblClickCallback(ih, cb, pos); + } + break; + } + case LBN_SELCHANGE: + { + if (!ih->data->is_multiple) + { + IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION"); + if (cb) + { + int pos = SendMessage(ih->handle, LB_GETCURSEL, 0, 0); + pos++; /* IUP starts at 1 */ + iupListSingleCallActionCallback(ih, cb, pos); + } + } + else + { + IFns multi_cb = (IFns)IupGetCallback(ih, "MULTISELECT_CB"); + IFnsii cb = (IFnsii) IupGetCallback(ih, "ACTION"); + if (multi_cb || cb) + { + int sel_count = SendMessage(ih->handle, LB_GETSELCOUNT, 0, 0); + int* pos = malloc(sizeof(int)*sel_count); + SendMessage(ih->handle, LB_GETSELITEMS, sel_count, (LPARAM)pos); + iupListMultipleCallActionCallback(ih, cb, multi_cb, pos, sel_count); + free(pos); + } + } + + iupBaseCallValueChangedCb(ih); + break; + } + } + } + + return 0; /* not used */ +} + +static void winListCallCaretCb(Ihandle* ih, HWND cbedit) +{ + int pos; + + IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB"); + if (!cb) return; + + pos = winListGetCaretPos(cbedit); + + if (pos != ih->data->last_caret_pos) + { + ih->data->last_caret_pos = pos; + cb(ih, 1, pos+1, pos); + } +} + +static int winListCallEditCb(Ihandle* ih, HWND cbedit, const char* insert_value, int key, int dir) +{ + int start, end, ret = 1; + char *value, *new_value; + + IFnis cb = (IFnis)IupGetCallback(ih, "EDIT_CB"); + if (!cb && !ih->data->mask) + return 1; + + SendMessage(cbedit, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + + value = winListGetValueAttrib(ih); + + if (!value) + new_value = iupStrDup(insert_value); + else if (insert_value) + new_value = iupStrInsert(value, insert_value, start, end); + else + { + new_value = value; + iupStrRemove(value, start, end, dir); + } + + if (!new_value) + return 0; /* abort */ + + if (ih->data->nc && (int)strlen(new_value) > ih->data->nc) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (cb) + { + int cb_ret = cb(ih, key, (char*)new_value); + if (cb_ret==IUP_IGNORE) + ret = 0; /* abort processing */ + else if (cb_ret==IUP_CLOSE) + { + IupExitLoop(); + ret = 0; /* abort processing */ + } + else if (cb_ret!=0 && key!=0 && + cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE) + { + WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB"); + CallWindowProc(oldProc, cbedit, WM_CHAR, cb_ret, 0); /* replace key */ + ret = 0; /* abort processing */ + } + } + + if (new_value != value) free(new_value); + return ret; +} + +static int winListEditProc(Ihandle* ih, HWND cbedit, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + int ret = 0; + + if (msg==WM_KEYDOWN) /* process K_ANY before text callbacks */ + { + ret = iupwinBaseProc(ih, msg, wp, lp, result); + if (ret) return 1; + } + + switch (msg) + { + case WM_CHAR: + { + if ((char)wp == '\b') + { + if (!winListCallEditCb(ih, cbedit, NULL, 0, -1)) + ret = 1; + } + else if ((char)wp == '\n' || (char)wp == '\r') + { + ret = 1; + } + else if (!(GetKeyState(VK_CONTROL) & 0x8000 || + GetKeyState(VK_MENU) & 0x8000 || + GetKeyState(VK_LWIN) & 0x8000 || + GetKeyState(VK_RWIN) & 0x8000)) + { + char insert_value[2]; + insert_value[0] = (char)wp; + insert_value[1] = 0; + + if (!winListCallEditCb(ih, cbedit, insert_value, wp, 1)) + ret = 1; + } + + PostMessage(cbedit, WM_CARET, 0, 0L); + + if (wp==VK_TAB) /* the keys have the same definitions as the chars */ + ret = 1; /* abort default processing to avoid beep */ + + break; + } + case WM_KEYDOWN: + { + if (wp == VK_DELETE) /* Del does not generates a WM_CHAR */ + { + if (!winListCallEditCb(ih, cbedit, NULL, 0, 1)) + ret = 1; + } + else if (wp == 'A' && GetKeyState(VK_CONTROL) & 0x8000) /* Ctrl+A = Select All */ + { + SendMessage(cbedit, EM_SETSEL, (WPARAM)0, (LPARAM)-1); + } + + PostMessage(cbedit, WM_CARET, 0, 0L); + break; + } + case WM_CLEAR: + { + if (!winListCallEditCb(ih, cbedit, NULL, 0, 1)) + ret = 1; + + PostMessage(cbedit, WM_CARET, 0, 0L); + break; + } + case WM_CUT: + { + if (!winListCallEditCb(ih, cbedit, NULL, 0, 1)) + ret = 1; + + PostMessage(cbedit, WM_CARET, 0, 0L); + break; + } + case WM_PASTE: + { + if (IupGetCallback(ih, "EDIT_CB") || ih->data->mask) /* test before to avoid alocate clipboard text memory */ + { + char* insert_value = iupwinGetClipboardText(ih); + if (insert_value) + { + if (!winListCallEditCb(ih, cbedit, insert_value, 0, 1)) + ret = 1; + free(insert_value); + } + } + + PostMessage(cbedit, WM_CARET, 0, 0L); + break; + } + case WM_UNDO: + { + IFnis cb = (IFnis)IupGetCallback(ih, "EDIT_CB"); + if (cb) + { + char* value; + WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB"); + CallWindowProc(oldProc, cbedit, WM_UNDO, 0, 0); + + value = winListGetValueAttrib(ih); + cb(ih, 0, (char*)value); + + ret = 1; + } + + PostMessage(cbedit, WM_CARET, 0, 0L); + break; + } + case WM_KEYUP: + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_MBUTTONUP: + case WM_RBUTTONUP: + case WM_LBUTTONUP: + PostMessage(cbedit, WM_CARET, 0, 0L); + break; + case WM_CARET: + winListCallCaretCb(ih, cbedit); + break; + } + + if (ret) /* if abort processing, then the result is 0 */ + { + *result = 0; + return 1; + } + else + { + if (msg==WM_KEYDOWN) + return 0; + else + return iupwinBaseProc(ih, msg, wp, lp, result); + } +} + +static LRESULT CALLBACK winListEditWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) +{ + int ret = 0; + LRESULT result = 0; + WNDPROC oldProc; + Ihandle *ih; + + ih = iupwinHandleGet(hwnd); + if (!ih) + return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */ + + /* retrieve the control previous procedure for subclassing */ + oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB"); + + ret = winListEditProc(ih, hwnd, msg, wp, lp, &result); + + if (ret) + return result; + else + return CallWindowProc(oldProc, hwnd, msg, wp, lp); +} + +static int winListComboListProc(Ihandle* ih, HWND cblist, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + (void)cblist; + + switch (msg) + { + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + if (iupwinButtonDown(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + break; + case WM_MBUTTONUP: + case WM_RBUTTONUP: + case WM_LBUTTONUP: + if (iupwinButtonUp(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + break; + case WM_MOUSEMOVE: + iupwinMouseMove(ih, msg, wp, lp); + iupwinBaseProc(ih, msg, wp, lp, result); /* to process ENTER/LEAVE */ + break; + case WM_MOUSELEAVE: + iupwinBaseProc(ih, msg, wp, lp, result); /* to process ENTER/LEAVE */ + break; + } + + return 0; +} + +static LRESULT CALLBACK winListComboListWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) +{ + int ret = 0; + LRESULT result = 0; + WNDPROC oldProc; + Ihandle *ih; + + ih = iupwinHandleGet(hwnd); + if (!ih) + return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */ + + /* retrieve the control previous procedure for subclassing */ + oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_LISTOLDPROC_CB"); + + ret = winListComboListProc(ih, hwnd, msg, wp, lp, &result); + + if (ret) + return result; + else + return CallWindowProc(oldProc, hwnd, msg, wp, lp); +} + +static int winListProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + if (!ih->data->is_dropdown && !ih->data->has_editbox) + { + switch (msg) + { + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + if (iupwinButtonDown(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + break; + case WM_MBUTTONUP: + case WM_RBUTTONUP: + case WM_LBUTTONUP: + if (iupwinButtonUp(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + break; + case WM_MOUSEMOVE: + iupwinMouseMove(ih, msg, wp, lp); + break; + } + } + + switch (msg) + { + case WM_CHAR: + if (GetKeyState(VK_CONTROL) & 0x8000) + { + /* avoid item search when Ctrl is pressed */ + *result = 0; + return 1; + } + case WM_SETFOCUS: + case WM_KILLFOCUS: + case WM_MOUSELEAVE: + case WM_MOUSEMOVE: + if (ih->data->has_editbox) + return 0; /* do not call base procedure to avoid duplicate messages */ + break; + } + + return iupwinBaseProc(ih, msg, wp, lp, result); +} + + +/*********************************************************************************/ + + +static void winListLayoutUpdateMethod(Ihandle *ih) +{ + if (ih->data->is_dropdown) + { + /* Must add the dropdown area, or it will not be visible */ + RECT rect; + int charheight, calc_h, win_h, win_w, voptions; + + voptions = iupAttribGetInt(ih, "VISIBLE_ITEMS"); + if (voptions <= 0) + voptions = 1; + + iupdrvFontGetCharSize(ih, NULL, &charheight); + calc_h = ih->currentheight + voptions*charheight; + + SendMessage(ih->handle, CB_GETDROPPEDCONTROLRECT, 0, (LPARAM)&rect); + win_h = rect.bottom-rect.top; + win_w = rect.right-rect.left; + + if (ih->currentwidth != win_w || calc_h != win_h) + SetWindowPos(ih->handle, HWND_TOP, ih->x, ih->y, ih->currentwidth, calc_h, + SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOOWNERZORDER); + else + SetWindowPos(ih->handle, HWND_TOP, ih->x, ih->y, 0, 0, + SWP_NOSIZE|SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOOWNERZORDER); + } + else + iupdrvBaseLayoutUpdateMethod(ih); +} + +static int winListMapMethod(Ihandle* ih) +{ + char* class_name; + DWORD dwStyle = WS_CHILD, + dwExStyle = WS_EX_CLIENTEDGE; + + if (!ih->parent) + return IUP_ERROR; + + if (ih->data->is_dropdown || ih->data->has_editbox) + { + class_name = "COMBOBOX"; + + dwStyle |= CBS_NOINTEGRALHEIGHT; + + if (ih->data->is_dropdown) + dwStyle |= WS_VSCROLL|WS_HSCROLL; + else if (ih->data->sb) + { + dwStyle |= WS_VSCROLL|WS_HSCROLL; + + if (!iupAttribGetBoolean(ih, "AUTOHIDE")) + dwStyle |= CBS_DISABLENOSCROLL; + } + + if (ih->data->has_editbox) + { + dwStyle |= CBS_AUTOHSCROLL; + + if (ih->data->is_dropdown) + dwStyle |= CBS_DROPDOWN; /* hidden-list+edit */ + else + dwStyle |= CBS_SIMPLE; /* visible-list+edit */ + } + else + dwStyle |= CBS_DROPDOWNLIST; /* hidden-list */ + + if (iupAttribGetBoolean(ih, "SORT")) + dwStyle |= CBS_SORT; + } + else + { + class_name = "LISTBOX"; + + dwStyle |= LBS_NOINTEGRALHEIGHT|LBS_NOTIFY; + + if (ih->data->is_multiple) + dwStyle |= LBS_EXTENDEDSEL; + + if (ih->data->sb) + { + dwStyle |= WS_VSCROLL|WS_HSCROLL; + + if (!iupAttribGetBoolean(ih, "AUTOHIDE")) + dwStyle |= LBS_DISABLENOSCROLL; + } + + if (iupAttribGetBoolean(ih, "SORT")) + dwStyle |= LBS_SORT; + } + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + dwStyle |= WS_TABSTOP; + + if (!iupwinCreateWindowEx(ih, class_name, dwExStyle, dwStyle)) + return IUP_ERROR; + + /* Custom Procedure */ + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winListProc); + + /* Process background color */ + IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winListCtlColor); + + /* Process WM_COMMAND */ + IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winListWmCommand); + + if (ih->data->is_dropdown || ih->data->has_editbox) + { + COMBOBOXINFO boxinfo; + + ZeroMemory(&boxinfo, sizeof(COMBOBOXINFO)); + boxinfo.cbSize = sizeof(COMBOBOXINFO); + + GetComboBoxInfo(ih->handle, &boxinfo); + + iupwinHandleAdd(ih, boxinfo.hwndList); + iupAttribSetStr(ih, "_IUPWIN_LISTBOX", (char*)boxinfo.hwndList); + + /* subclass the list box. */ + IupSetCallback(ih, "_IUPWIN_LISTOLDPROC_CB", (Icallback)GetWindowLongPtr(boxinfo.hwndList, GWLP_WNDPROC)); + SetWindowLongPtr(boxinfo.hwndList, GWLP_WNDPROC, (LONG_PTR)winListComboListWinProc); + + if (ih->data->has_editbox) + { + iupwinHandleAdd(ih, boxinfo.hwndItem); + iupAttribSetStr(ih, "_IUPWIN_EDITBOX", (char*)boxinfo.hwndItem); + + /* subclass the edit box. */ + IupSetCallback(ih, "_IUPWIN_EDITOLDPROC_CB", (Icallback)GetWindowLongPtr(boxinfo.hwndItem, GWLP_WNDPROC)); + SetWindowLongPtr(boxinfo.hwndItem, GWLP_WNDPROC, (LONG_PTR)winListEditWinProc); + + /* set defaults */ + SendMessage(ih->handle, CB_LIMITTEXT, 0, 0L); + } + } + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)winListConvertXYToPos); + + iupListSetInitialItems(ih); + + return IUP_NOERROR; +} + +void iupdrvListInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winListMapMethod; + ic->LayoutUpdate = winListLayoutUpdateMethod; + + /* Driver Dependent Attribute functions */ + + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, winListSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_NOT_MAPPED); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_NOT_MAPPED); + + /* IupList only */ + iupClassRegisterAttributeId(ic, "IDVALUE", winListGetIdValueAttrib, iupListSetIdValueAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", winListGetValueAttrib, winListSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWDROPDOWN", NULL, winListSetShowDropdownAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TOPITEM", NULL, winListSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VISIBLE_ITEMS", NULL, NULL, IUPAF_SAMEASSYSTEM, "5", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "DROPEXPAND", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPACING", iupListGetSpacingAttrib, winListSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + + iupClassRegisterAttribute(ic, "PADDING", iupListGetPaddingAttrib, winListSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SELECTEDTEXT", winListGetSelectedTextAttrib, winListSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTION", winListGetSelectionAttrib, winListSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTIONPOS", winListGetSelectionPosAttrib, winListSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARET", winListGetCaretAttrib, winListSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARETPOS", winListGetCaretPosAttrib, winListSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INSERT", NULL, winListSetInsertAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPEND", NULL, winListSetAppendAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "READONLY", winListGetReadOnlyAttrib, winListSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "NC", iupListGetNCAttrib, winListSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, winListSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTO", NULL, winListSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, winListSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "CUEBANNER", NULL, winListSetCueBannerAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILTER", NULL, winListSetFilterAttrib, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_loop.c b/iup/src/win/iupwin_loop.c new file mode 100755 index 0000000..7c5dbe7 --- /dev/null +++ b/iup/src/win/iupwin_loop.c @@ -0,0 +1,135 @@ +/** \file + * \brief Windows Message Loop + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" + + +static IFidle win_idle_cb = NULL; +static int win_main_loop = 0; + + +void iupdrvSetIdleFunction(Icallback f) +{ + win_idle_cb = (IFidle)f; +} + +void IupExitLoop(void) +{ + PostQuitMessage(0); +} + +static int winLoopProcessMessage(MSG* msg) +{ + if (msg->message == WM_QUIT) /* IUP_CLOSE returned in a callback or IupHide in a popup dialog or all dialogs closed */ + return IUP_CLOSE; + else + { + TranslateMessage(msg); + DispatchMessage(msg); + return IUP_DEFAULT; + } +} + +int IupMainLoopLevel(void) +{ + return win_main_loop; +} + +int IupMainLoop(void) +{ + MSG msg; + int ret; + + win_main_loop++; + + do + { + if (win_idle_cb) + { + ret = 1; + if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) + { + if (winLoopProcessMessage(&msg) == IUP_CLOSE) + { + win_main_loop--; + return IUP_CLOSE; + } + } + else + { + int ret = win_idle_cb(); + if (ret == IUP_CLOSE) + { + win_idle_cb = NULL; + win_main_loop--; + return IUP_CLOSE; + } + if (ret == IUP_IGNORE) + win_idle_cb = NULL; + } + } + else + { + ret = GetMessage(&msg, NULL, 0, 0); + if (ret == -1) /* error */ + { + win_main_loop--; + return IUP_ERROR; + } + if (ret == 0 || /* WM_QUIT */ + winLoopProcessMessage(&msg) == IUP_CLOSE) /* ret != 0 */ + { + win_main_loop--; + return IUP_NOERROR; + } + } + } while (ret); + + win_main_loop--; + return IUP_NOERROR; +} + +int IupLoopStep(void) +{ + MSG msg; + if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) + return winLoopProcessMessage(&msg); + + return IUP_DEFAULT; +} + +void IupFlush(void) +{ + int post_quit = 0; + MSG msg; + + while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) + { + if (winLoopProcessMessage(&msg) == IUP_CLOSE) + { + post_quit = 1; + break; + } + } + + /* re post the quit message if still inside MainLoop */ + if (post_quit && win_main_loop>0) + PostQuitMessage(0); +} diff --git a/iup/src/win/iupwin_menu.c b/iup/src/win/iupwin_menu.c new file mode 100755 index 0000000..74a8b52 --- /dev/null +++ b/iup/src/win/iupwin_menu.c @@ -0,0 +1,667 @@ +/** \file + * \brief Menu Resources + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_dialog.h" +#include "iup_str.h" +#include "iup_image.h" +#include "iup_dlglist.h" +#include "iup_focus.h" +#include "iup_menu.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_brush.h" + + +Ihandle* iupwinMenuGetHandle(HMENU hMenu) +{ + MENUINFO menuinfo; + menuinfo.cbSize = sizeof(MENUINFO); + menuinfo.fMask = MIM_MENUDATA; + if (GetMenuInfo(hMenu, &menuinfo)) + return (Ihandle*)menuinfo.dwMenuData; + else + return NULL; +} + +Ihandle* iupwinMenuGetItemHandle(HMENU hMenu, int menuId) +{ + MENUITEMINFO menuiteminfo; + menuiteminfo.cbSize = sizeof(MENUITEMINFO); + menuiteminfo.fMask = MIIM_DATA; + + if (GetMenuItemInfo(hMenu, menuId, FALSE, &menuiteminfo)) + return (Ihandle*)menuiteminfo.dwItemData; + else + return NULL; +} + +int iupdrvMenuGetMenuBarSize(Ihandle* ih) +{ + (void)ih; + return GetSystemMetrics(SM_CYMENU); +} + +static void winMenuUpdateBar(Ihandle* ih) +{ + if (iupMenuIsMenuBar(ih) && ih->parent->handle) + DrawMenuBar(ih->parent->handle); + else if (ih->parent) + { + ih = ih->parent; /* check also for children of a menu bar */ + if (iupMenuIsMenuBar(ih) && ih->parent->handle) + DrawMenuBar(ih->parent->handle); + } +} + +static void winMenuGetLastPos(Ihandle* ih, int *last_pos, int *pos) +{ + Ihandle* child; + *last_pos=0; + *pos=0; + for (child=ih->parent->firstchild; child; child=child->brother) + { + if (child == ih) + *pos = *last_pos; + (*last_pos)++; + } +} + +static void winItemCheckToggle(Ihandle* ih) +{ + if (iupAttribGetBoolean(ih->parent, "RADIO")) + { + int last_pos, pos; + winMenuGetLastPos(ih, &last_pos, &pos); + CheckMenuRadioItem((HMENU)ih->handle, 0, last_pos, pos, MF_BYPOSITION); + + winMenuUpdateBar(ih); + } + else if (iupAttribGetBoolean(ih, "AUTOTOGGLE")) + { + if (GetMenuState((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND) & MF_CHECKED) + CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_UNCHECKED|MF_BYCOMMAND); + else + CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_CHECKED|MF_BYCOMMAND); + + winMenuUpdateBar(ih); + } +} + +typedef struct _IchildId +{ + int id, menuid; + Ihandle* child; +} IchildId; + +void iupwinMenuDialogProc(Ihandle* ih_dialog, UINT msg, WPARAM wp, LPARAM lp) +{ + /* called only from winDialogBaseProc */ + + switch (msg) + { + case WM_INITMENUPOPUP: + { + HMENU hMenu = (HMENU)wp; + Ihandle *ih = iupwinMenuGetHandle(hMenu); + if (ih) + { + Icallback cb = (Icallback)IupGetCallback(ih, "OPEN_CB"); + if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "OPEN_CB"); /* check also in the Submenu */ + if (cb) cb(ih); + } + break; + } + case WM_UNINITMENUPOPUP: + { + HMENU hMenu = (HMENU)wp; + Ihandle *ih = iupwinMenuGetHandle(hMenu); + if (ih) + { + Icallback cb = (Icallback)IupGetCallback(ih, "MENUCLOSE_CB"); + if (!cb && ih->parent) cb = (Icallback)IupGetCallback(ih->parent, "MENUCLOSE_CB"); /* check also in the Submenu */ + if (cb) cb(ih); + } + break; + } + case WM_MENUSELECT: + { + HMENU hMenu = (HMENU)lp; + Ihandle *ih; + + if (!lp) + break; + + if ((HIWORD(wp) & MF_POPUP) || (HIWORD(wp) & MF_SYSMENU)) /* drop-down ih or submenu. */ + { + UINT menuindex = LOWORD(wp); + HMENU hsubmenu = GetSubMenu(hMenu, menuindex); + ih = iupwinMenuGetHandle(hsubmenu); /* returns the handle of a IupMenu */ + if (ih) ih = ih->parent; /* gets the submenu */ + } + else /* ih item */ + { + UINT menuID = LOWORD(wp); + ih = iupwinMenuGetItemHandle(hMenu, menuID); + } + + if (ih) + { + Icallback cb = IupGetCallback(ih, "HIGHLIGHT_CB"); + if (cb) cb(ih); + } + break; + } + case WM_MENUCOMMAND: + { + int menuId = GetMenuItemID((HMENU)lp, (int)wp); + Icallback cb; + Ihandle* ih; + + if (menuId >= IUP_MDICHILD_START) + break; + + ih = iupwinMenuGetItemHandle((HMENU)lp, menuId); + if (!ih) + break; + + winItemCheckToggle(ih); + + cb = IupGetCallback(ih, "ACTION"); + if (cb && cb(ih) == IUP_CLOSE) + IupExitLoop(); + + break; + } + case WM_ENTERMENULOOP: + { + /* Simulate WM_KILLFOCUS when the menu interaction is started */ + Ihandle* lastfocus = (Ihandle*)iupAttribGet(ih_dialog, "_IUPWIN_LASTFOCUS"); + if (lastfocus) iupCallKillFocusCb(lastfocus); + break; + } + case WM_EXITMENULOOP: + { + /* Simulate WM_GETFOCUS when the menu interaction is stopped */ + Ihandle* lastfocus = (Ihandle*)iupAttribGet(ih_dialog, "_IUPWIN_LASTFOCUS"); + if (lastfocus) iupCallGetFocusCb(lastfocus); + break; + } + } +} + +int iupdrvMenuPopup(Ihandle* ih, int x, int y) +{ + HWND hWndActive = GetActiveWindow(); + int tray_menu = 0; + int menuId; + + if (!hWndActive) + { + /* search for a valid handle */ + Ihandle* dlg = iupDlgListFirst(); + do + { + if (dlg->handle) + { + hWndActive = dlg->handle; /* found a valid handle */ + + /* if not a "TRAY" dialog, keep searching, because TRAY is a special case */ + if (iupAttribGetBoolean(dlg, "TRAY")) + break; + } + dlg = iupDlgListNext(); + } while (dlg); + } + + /* Necessary to avoid tray dialogs to lock popup menus (they get sticky after the 1st time) */ + if (hWndActive) + { + Ihandle* dlg = iupwinHandleGet(hWndActive); + if (dlg && iupAttribGetBoolean(dlg, "TRAY")) + { + /* To display a context menu for a notification icon, + the current window must be the foreground window. */ + SetForegroundWindow(hWndActive); + tray_menu = 1; + } + } + + /* stop processing here. messages will not go to the message loop */ + menuId = TrackPopupMenu((HMENU)ih->handle, TPM_LEFTALIGN|TPM_RIGHTBUTTON|TPM_RETURNCMD, x, y, 0, hWndActive, NULL); + + if (tray_menu) + { + /* You must force a task switch to the application that + called TrackPopupMenu at some time in the near future. + This is done by posting a benign message to the window. */ + PostMessage(hWndActive, WM_NULL, 0, 0); + } + + if (menuId) + { + Icallback cb; + Ihandle* ih_item = iupwinMenuGetItemHandle((HMENU)ih->handle, menuId); + if (!ih_item) return IUP_NOERROR; + + winItemCheckToggle(ih_item); + + cb = IupGetCallback(ih_item, "ACTION"); + if (cb && cb(ih_item) == IUP_CLOSE) + IupExitLoop(); + } + + return IUP_NOERROR; +} + + +/*******************************************************************************************/ + + +static int winMenuSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + /* must use IupGetAttribute to use inheritance */ + if (iupStrToRGB(value, &r, &g, &b)) + { + MENUINFO menuinfo; + menuinfo.cbSize = sizeof(MENUINFO); + menuinfo.fMask = MIM_BACKGROUND; + menuinfo.hbrBack = iupwinBrushGet(RGB(r,g,b)); + SetMenuInfo((HMENU)ih->handle, &menuinfo); + winMenuUpdateBar(ih); + } + return 1; +} + +static void winMenuChildUnMapMethod(Ihandle* ih) +{ + RemoveMenu((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND); +} + +static int winMenuAddParentSubmenu(Ihandle* ih) +{ + int pos; + MENUITEMINFO menuiteminfo; + + pos = IupGetChildPos(ih->parent, ih); + ih->serial = iupMenuGetChildId(ih); + + menuiteminfo.cbSize = sizeof(MENUITEMINFO); + menuiteminfo.fMask = MIIM_ID|MIIM_DATA|MIIM_SUBMENU|MIIM_STRING; + menuiteminfo.dwTypeData = ""; /* must set or it will be not possible to update */ + menuiteminfo.cch = 0; + menuiteminfo.wID = (UINT)ih->serial; + menuiteminfo.dwItemData = (ULONG_PTR)ih; + menuiteminfo.hSubMenu = (HMENU)ih->firstchild->handle; + + if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo)) + return IUP_ERROR; + + ih->handle = ih->parent->handle; /* gets the HMENU of the parent */ + + /* must update attributes since submenu is actually created after it is mapped */ + iupAttribUpdate(ih); + iupAttribUpdateFromParent(ih); + + winMenuUpdateBar(ih); + + return IUP_NOERROR; +} + +static int winMenuMapMethod(Ihandle* ih) +{ + MENUINFO menuinfo; + + if (iupMenuIsMenuBar(ih)) + { + /* top level menu used for MENU attribute in IupDialog (a menu bar) */ + + ih->handle = (InativeHandle*)CreateMenu(); + if (!ih->handle) + return IUP_ERROR; + + SetMenu(ih->parent->handle, (HMENU)ih->handle); + } + else + { + if (ih->parent) + { + /* parent is a submenu */ + + ih->handle = (InativeHandle*)CreatePopupMenu(); + if (!ih->handle) + return IUP_ERROR; + + if (winMenuAddParentSubmenu(ih->parent) == IUP_ERROR) + { + DestroyMenu((HMENU)ih->handle); + return IUP_ERROR; + } + } + else + { + /* top level menu used for IupPopup */ + + ih->handle = (InativeHandle*)CreatePopupMenu(); + if (!ih->handle) + return IUP_ERROR; + + iupAttribSetStr(ih, "_IUPWIN_POPUP_MENU", "1"); + } + } + + menuinfo.cbSize = sizeof(MENUINFO); + menuinfo.fMask = MIM_MENUDATA; + menuinfo.dwMenuData = (ULONG_PTR)ih; + + if (!iupAttribGetInherit(ih, "_IUPWIN_POPUP_MENU")) /* check in the top level menu using inheritance */ + { + menuinfo.fMask |= MIM_STYLE; + menuinfo.dwStyle = MNS_NOTIFYBYPOS; + } + + SetMenuInfo((HMENU)ih->handle, &menuinfo); + + winMenuUpdateBar(ih); + + return IUP_NOERROR; +} + +static void winMenuUnMapMethod(Ihandle* ih) +{ + if (iupMenuIsMenuBar(ih)) + SetMenu(ih->parent->handle, NULL); + + DestroyMenu((HMENU)ih->handle); /* DestroyMenu is recursive */ +} + +void iupdrvMenuInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winMenuMapMethod; + ic->UnMap = winMenuUnMapMethod; + + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winMenuSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "MENUBGCOLOR", IUPAF_DEFAULT); +} + + +/*******************************************************************************************/ + + +static int winItemSetImageAttrib(Ihandle* ih, const char* value) +{ + HBITMAP hBitmapUnchecked, hBitmapChecked; + char* impress; + + if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */ + return 1; + + hBitmapUnchecked = iupImageGetImage(value, ih, 0); + + impress = iupAttribGet(ih, "IMPRESS"); + if (impress) + hBitmapChecked = iupImageGetImage(impress, ih, 0); + else + hBitmapChecked = hBitmapUnchecked; + + SetMenuItemBitmaps((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND, hBitmapUnchecked, hBitmapChecked); + + winMenuUpdateBar(ih); + + return 1; +} + +static int winItemSetImpressAttrib(Ihandle* ih, const char* value) +{ + HBITMAP hBitmapUnchecked, hBitmapChecked; + + char *image = iupAttribGet(ih, "IMPRESS"); + hBitmapUnchecked = iupImageGetImage(image, ih, 0); + + if (value) + hBitmapChecked = iupImageGetImage(value, ih, 0); + else + hBitmapChecked = hBitmapUnchecked; + + SetMenuItemBitmaps((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND, hBitmapUnchecked, hBitmapChecked); + + winMenuUpdateBar(ih); + + return 1; +} + +static int winItemSetTitleAttrib(Ihandle* ih, const char* value) +{ + char *str; + MENUITEMINFO menuiteminfo; + + if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */ + return 1; + + if (!value) + { + str = " "; + value = str; + } + else + str = iupMenuProcessTitle(ih, value); + + menuiteminfo.cbSize = sizeof(MENUITEMINFO); + menuiteminfo.fMask = MIIM_TYPE; + menuiteminfo.fType = MFT_STRING; + menuiteminfo.dwTypeData = str; + menuiteminfo.cch = strlen(str); + + SetMenuItemInfo((HMENU)ih->handle, (UINT)ih->serial, FALSE, &menuiteminfo); + + if (str != value) free(str); + + winMenuUpdateBar(ih); + + return 1; +} + +static int winItemSetTitleImageAttrib(Ihandle* ih, const char* value) +{ + HBITMAP hBitmap; + MENUITEMINFO menuiteminfo; + + if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */ + return 1; + + hBitmap = iupImageGetImage(value, ih, 0); + + menuiteminfo.cbSize = sizeof(MENUITEMINFO); + menuiteminfo.fMask = MIIM_BITMAP; + menuiteminfo.hbmpItem = hBitmap; + + SetMenuItemInfo((HMENU)ih->handle, (UINT)ih->serial, FALSE, &menuiteminfo); + + winMenuUpdateBar(ih); + + return 1; +} + +static int winItemSetActiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */ + return 1; + + if (iupStrBoolean(value)) + EnableMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_ENABLED|MF_BYCOMMAND); + else + EnableMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_GRAYED|MF_BYCOMMAND); + + winMenuUpdateBar(ih); + + return 0; +} + +static char* winItemGetActiveAttrib(Ihandle* ih) +{ + if (ih->handle == (InativeHandle*)-1) /* check if submenu is actually created */ + return NULL; + + if (GetMenuState((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND) & MF_GRAYED) + return "NO"; + else + return "YES"; +} + +static int winItemSetValueAttrib(Ihandle* ih, const char* value) +{ + if (iupAttribGetBoolean(ih->parent, "RADIO")) + { + int last_pos, pos; + winMenuGetLastPos(ih, &last_pos, &pos); + CheckMenuRadioItem((HMENU)ih->handle, 0, last_pos, pos, MF_BYPOSITION); + } + else + { + if (iupStrBoolean(value)) + CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_CHECKED|MF_BYCOMMAND); + else + CheckMenuItem((HMENU)ih->handle, (UINT)ih->serial, MF_UNCHECKED|MF_BYCOMMAND); + } + + winMenuUpdateBar(ih); + + return 0; +} + +static char* winItemGetValueAttrib(Ihandle* ih) +{ + if (GetMenuState((HMENU)ih->handle, (UINT)ih->serial, MF_BYCOMMAND) & MF_CHECKED) + return "ON"; + else + return "OFF"; +} + +static int winItemMapMethod(Ihandle* ih) +{ + int pos; + MENUITEMINFO menuiteminfo; + + if (!ih->parent || !IsMenu((HMENU)ih->parent->handle)) + return IUP_ERROR; + + pos = IupGetChildPos(ih->parent, ih); + ih->serial = iupMenuGetChildId(ih); + + menuiteminfo.cbSize = sizeof(MENUITEMINFO); + menuiteminfo.fMask = MIIM_ID|MIIM_DATA|MIIM_STRING; + menuiteminfo.dwTypeData = ""; /* must set or it will be not possible to update */ + menuiteminfo.cch = 0; + menuiteminfo.wID = (UINT)ih->serial; + menuiteminfo.dwItemData = (ULONG_PTR)ih; + + if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo)) + return IUP_ERROR; + + ih->handle = ih->parent->handle; /* gets the HMENU of the parent */ + winMenuUpdateBar(ih); + + return IUP_NOERROR; +} + +void iupdrvItemInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winItemMapMethod; + ic->UnMap = winMenuChildUnMapMethod; + + /* Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", winItemGetActiveAttrib, winItemSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "MENUBGCOLOR", IUPAF_DEFAULT); /* used by IupImage */ + + /* IupItem only */ + iupClassRegisterAttribute(ic, "VALUE", winItemGetValueAttrib, winItemSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLE", NULL, winItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLEIMAGE", NULL, winItemSetTitleImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, winItemSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, winItemSetImpressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* Used by iupdrvImageCreateImage */ + /* necessary because it uses an old HBITMAP solution */ + iupClassRegisterAttribute(ic, "FLAT_ALPHA", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); +} + + +/*******************************************************************************************/ + + +static int winSubmenuMapMethod(Ihandle* ih) +{ + if (!ih->parent || !IsMenu((HMENU)ih->parent->handle)) + return IUP_ERROR; + + return iupBaseTypeVoidMapMethod(ih); +} + +void iupdrvSubmenuInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winSubmenuMapMethod; + + /* IupSubmenu only */ + iupClassRegisterAttribute(ic, "ACTIVE", winItemGetActiveAttrib, winItemSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "TITLE", NULL, winItemSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, winItemSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "MENUBGCOLOR", IUPAF_DEFAULT); /* used by IupImage */ + + /* Used by iupdrvImageCreateImage */ + /* necessary because it uses an old HBITMAP solution */ + iupClassRegisterAttribute(ic, "FLAT_ALPHA", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); +} + + +/*******************************************************************************************/ + + +static int winSeparatorMapMethod(Ihandle* ih) +{ + int pos; + MENUITEMINFO menuiteminfo; + + if (!ih->parent || !IsMenu((HMENU)ih->parent->handle)) + return IUP_ERROR; + + pos = IupGetChildPos(ih->parent, ih); + ih->serial = iupMenuGetChildId(ih); + + menuiteminfo.cbSize = sizeof(MENUITEMINFO); + menuiteminfo.fMask = MIIM_FTYPE|MIIM_ID|MIIM_DATA; + menuiteminfo.fType = MFT_SEPARATOR; + menuiteminfo.wID = (UINT)ih->serial; + menuiteminfo.dwItemData = (ULONG_PTR)ih; + + if (!InsertMenuItem((HMENU)ih->parent->handle, pos, TRUE, &menuiteminfo)) + return IUP_ERROR; + + ih->handle = ih->parent->handle; /* gets the HMENU of the parent */ + winMenuUpdateBar(ih); + + return IUP_NOERROR; +} + +void iupdrvSeparatorInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winSeparatorMapMethod; + ic->UnMap = winMenuChildUnMapMethod; +} diff --git a/iup/src/win/iupwin_messagedlg.c b/iup/src/win/iupwin_messagedlg.c new file mode 100755 index 0000000..63159aa --- /dev/null +++ b/iup/src/win/iupwin_messagedlg.c @@ -0,0 +1,105 @@ +/** \file + * \brief Windows IupMessageDlg pre-defined dialog + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_dialog.h" + + +static void winMessageDlgHelpCallback(HELPINFO* HelpInfo) +{ + Ihandle* ih = (Ihandle*)HelpInfo->dwContextId; + Icallback cb = (Icallback)IupGetCallback(ih, "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + { + if (iupStrEqualNoCase(iupAttribGetStr(ih, "BUTTONS"), "OK")) /* only one button */ + EndDialog((HWND)HelpInfo->hItemHandle, IDOK); + else + EndDialog((HWND)HelpInfo->hItemHandle, IDCANCEL); + } +} + +static int winMessageDlgPopup(Ihandle* ih, int x, int y) +{ + InativeHandle* parent = iupDialogGetNativeParent(ih); + MSGBOXPARAMS MsgBoxParams; + int result, num_but = 2; + DWORD dwStyle = MB_TASKMODAL; + char *icon, *buttons; + (void)x; + (void)y; + + if (!parent) + parent = GetActiveWindow(); + + icon = iupAttribGetStr(ih, "DIALOGTYPE"); + if (iupStrEqualNoCase(icon, "ERROR")) + dwStyle |= MB_ICONERROR; + else if (iupStrEqualNoCase(icon, "WARNING")) + dwStyle |= MB_ICONWARNING; + else if (iupStrEqualNoCase(icon, "INFORMATION")) + dwStyle |= MB_ICONINFORMATION; + else if (iupStrEqualNoCase(icon, "QUESTION")) + dwStyle |= MB_ICONQUESTION; + + buttons = iupAttribGetStr(ih, "BUTTONS"); + if (iupStrEqualNoCase(buttons, "OKCANCEL")) + dwStyle |= MB_OKCANCEL; + else if (iupStrEqualNoCase(buttons, "YESNO")) + dwStyle |= MB_YESNO; + else + { + dwStyle |= MB_OK; + num_but = 1; + } + + if (IupGetCallback(ih, "HELP_CB")) + dwStyle |= MB_HELP; + + if (num_but == 2 && iupAttribGetInt(ih, "BUTTONDEFAULT") == 2) + dwStyle |= MB_DEFBUTTON2; + else + dwStyle |= MB_DEFBUTTON1; + + MsgBoxParams.cbSize = sizeof(MSGBOXPARAMS); + MsgBoxParams.hwndOwner = parent; + MsgBoxParams.hInstance = NULL; + MsgBoxParams.lpszText = iupAttribGet(ih, "VALUE"); + MsgBoxParams.lpszCaption = iupAttribGet(ih, "TITLE"); + MsgBoxParams.dwStyle = dwStyle; + MsgBoxParams.lpszIcon = NULL; + MsgBoxParams.dwContextHelpId = (DWORD_PTR)ih; + MsgBoxParams.lpfnMsgBoxCallback = (MSGBOXCALLBACK)winMessageDlgHelpCallback; + MsgBoxParams.dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); + + result = MessageBoxIndirect(&MsgBoxParams); + if (result == 0) + { + iupAttribSetStr(ih, "BUTTONRESPONSE", NULL); + return IUP_ERROR; + } + + if (result == IDNO || result == IDCANCEL) + iupAttribSetStr(ih, "BUTTONRESPONSE", "2"); + else + iupAttribSetStr(ih, "BUTTONRESPONSE", "1"); + + return IUP_NOERROR; +} + +void iupdrvMessageDlgInitClass(Iclass* ic) +{ + ic->DlgPopup = winMessageDlgPopup; +} + +/* +In Windows it will always sound a beep. The beep is different for each dialog type. +*/ diff --git a/iup/src/win/iupwin_open.c b/iup/src/win/iupwin_open.c new file mode 100755 index 0000000..7357cde --- /dev/null +++ b/iup/src/win/iupwin_open.c @@ -0,0 +1,124 @@ +/** \file + * \brief Windows Driver Core + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_globalattrib.h" + +#include "iupwin_drv.h" +#include "iupwin_info.h" +#include "iupwin_handle.h" +#include "iupwin_brush.h" +#include "iupwin_draw.h" + + +HINSTANCE iupwin_hinstance = 0; +int iupwin_comctl32ver6 = 0; + +void* iupdrvGetDisplay(void) +{ + return NULL; +} + +void iupwinShowLastError(void) +{ + int error = GetLastError(); + if (error) + { + LPVOID lpMsgBuf; + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, error, 0, (LPTSTR)&lpMsgBuf, 0, NULL); + MessageBox(NULL, (LPCTSTR)lpMsgBuf, "GetLastError:", MB_OK|MB_ICONERROR); + LocalFree(lpMsgBuf); + } +} + +static void winSetGlobalColor(int index, const char* name) +{ + COLORREF color = GetSysColor(index); + iupGlobalSetDefaultColorAttrib(name, (int)GetRValue(color), + (int)GetGValue(color), + (int)GetBValue(color)); +} + +int iupdrvOpen(int *argc, char ***argv) +{ + (void)argc; /* unused in the Windows driver */ + (void)argv; + + if (iupwinGetSystemMajorVersion() < 5) /* older than Windows 2000 */ + return IUP_ERROR; + + IupSetGlobal("DRIVER", "Win32"); + + { +#ifdef __MINGW32__ + /* MingW fails to create windows if using a console and HINSTANCE is not from the console */ + HWND win = GetConsoleWindow(); + if (win) + iupwin_hinstance = (HINSTANCE)GetWindowLongPtr(win, GWLP_HINSTANCE); + else +#endif + iupwin_hinstance = GetModuleHandle(NULL); + IupSetGlobal("HINSTANCE", (char*)iupwin_hinstance); + } + + CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + + { + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX); + InitCtrls.dwICC = ICC_WIN95_CLASSES; /* trackbar, tooltips, updown, tab, progress */ + InitCommonControlsEx(&InitCtrls); + } + + iupwin_comctl32ver6 = (iupwinGetComCtl32Version() >= 0x060000)? 1: 0; + if (iupwin_comctl32ver6 && !iupwinIsAppThemed()) /* When the user seleted the Windows Classic theme */ + iupwin_comctl32ver6 = 0; + + IupSetGlobal("SYSTEMLANGUAGE", iupwinGetSystemLanguage()); + + /* default colors */ + winSetGlobalColor(COLOR_BTNFACE, "DLGBGCOLOR"); + winSetGlobalColor(COLOR_BTNTEXT, "DLGFGCOLOR"); + winSetGlobalColor(COLOR_WINDOW, "TXTBGCOLOR"); + winSetGlobalColor(COLOR_WINDOWTEXT, "TXTFGCOLOR"); + winSetGlobalColor(COLOR_MENU, "MENUBGCOLOR"); + winSetGlobalColor(COLOR_MENUTEXT, "MENUFGCOLOR"); + + iupwinHandleInit(); + iupwinBrushInit(); + iupwinDrawInit(); + +#ifdef __WATCOMC__ + { + /* this is used to force Watcom to link the winmain.c module. */ + void iupwinMainDummy(void); + iupwinMainDummy(); + } +#endif + + return IUP_NOERROR; +} + +void iupdrvClose(void) +{ + iupwinHandleFinish(); + iupwinBrushFinish(); + + CoUninitialize(); +} diff --git a/iup/src/win/iupwin_progressbar.c b/iup/src/win/iupwin_progressbar.c new file mode 100755 index 0000000..9038d79 --- /dev/null +++ b/iup/src/win/iupwin_progressbar.c @@ -0,0 +1,164 @@ +/** \file + * \brief Progress bar Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_progressbar.h" +#include "iup_drv.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" + + +#ifndef PBS_MARQUEE /* it is defined only when _WIN32_WINNT >= 0x0501 */ +#define PBS_MARQUEE 0x08 +#define PBM_SETMARQUEE (WM_USER+10) +#endif + +#define IUP_PB_MAX 32000 + + +static int winProgressBarSetMarqueeAttrib(Ihandle* ih, const char* value) +{ + /* MARQUEE only works when using XP Styles */ + if (!iupwin_comctl32ver6) + return 0; + + if (iupStrBoolean(value)) + SendMessage(ih->handle, PBM_SETMARQUEE, TRUE, 100); + else + SendMessage(ih->handle, PBM_SETMARQUEE, FALSE, 0); + + return 1; +} + +static int winProgressBarSetValueAttrib(Ihandle* ih, const char* value) +{ + if (!value) + ih->data->value = 0; + else + ih->data->value = atof(value); + + iProgressBarCropValue(ih); + + /* Shows when the marquee style is not set */ + if (!ih->data->marquee) + { + double factor = (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin); + int val = (int)(IUP_PB_MAX * factor); + SendMessage(ih->handle, PBM_SETPOS, (WPARAM)val, 0); + } + + return 0; +} + +static int winProgressBarSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + + /* Only works when using Classic style */ + if (iupwin_comctl32ver6) + return 0; + + if (iupStrToRGB(value, &r, &g, &b)) + { + COLORREF color = RGB(r,g,b); + SendMessage(ih->handle, PBM_SETBKCOLOR, 0, (LPARAM)color); + } + else + SendMessage(ih->handle, PBM_SETBKCOLOR, 0, (LPARAM)CLR_DEFAULT); + return 1; +} + +static int winProgressBarSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + + /* Only works when using Classic style */ + if (iupwin_comctl32ver6) + return 0; + + if (iupStrToRGB(value, &r, &g, &b)) + { + COLORREF color = RGB(r,g,b); + SendMessage(ih->handle, PBM_SETBARCOLOR, 0, (LPARAM)color); + } + else + SendMessage(ih->handle, PBM_SETBARCOLOR, 0, (LPARAM)CLR_DEFAULT); + return 1; +} + +static int winProgressBarMapMethod(Ihandle* ih) +{ + DWORD dwStyle = WS_CHILD; + + if (!ih->parent) + return IUP_ERROR; + + if (iupStrEqualNoCase(iupAttribGetStr(ih, "ORIENTATION"), "VERTICAL")) + { + dwStyle |= PBS_VERTICAL; + + if (ih->currentheight < ih->currentwidth) + { + int tmp = ih->currentheight; + ih->currentheight = ih->currentwidth; + ih->currentwidth = tmp; + } + } + + if (!iupwin_comctl32ver6 && !iupAttribGetBoolean(ih, "DASHED")) + dwStyle |= PBS_SMOOTH; + + if (iupwin_comctl32ver6 && iupAttribGetBoolean(ih, "MARQUEE")) + { + dwStyle |= PBS_MARQUEE; + ih->data->marquee = 1; + } + + if (!iupwinCreateWindowEx(ih, PROGRESS_CLASS, 0, dwStyle)) + return IUP_ERROR; + + /* configure the native range */ + SendMessage(ih->handle, PBM_SETRANGE, 0, MAKELPARAM(0, IUP_PB_MAX)); + + return IUP_NOERROR; +} + +void iupdrvProgressBarInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winProgressBarMapMethod; + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winProgressBarSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + /* Only works when using Classic style */ + if (iupwin_comctl32ver6) + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winProgressBarSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_DEFAULT); + else + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED); + + /* IupProgressBar only */ + iupClassRegisterAttribute(ic, "VALUE", iProgressBarGetValueAttrib, winProgressBarSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ORIENTATION", NULL, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARQUEE", NULL, winProgressBarSetMarqueeAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DASHED", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_tabs.c b/iup/src/win/iupwin_tabs.c new file mode 100755 index 0000000..682f451 --- /dev/null +++ b/iup/src/win/iupwin_tabs.c @@ -0,0 +1,680 @@ +/** \file +* \brief Tabs Control +* +* See Copyright Notice in "iup.h" +*/ + +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0501 +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_tabs.h" +#include "iup_image.h" +#include "iup_array.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" +#include "iupwin_info.h" + + +int iupdrvTabsExtraDecor(Ihandle* ih) +{ + (void)ih; + return 0; +} + +int iupdrvTabsGetLineCountAttrib(Ihandle* ih) +{ + return (int)SendMessage(ih->handle, TCM_GETROWCOUNT, 0, 0); +} + +static HWND winTabsGetPageWindow(Ihandle* ih, int pos) +{ + TCITEM tie; + tie.mask = TCIF_PARAM; + SendMessage(ih->handle, TCM_GETITEM, pos, (LPARAM)&tie); + return (HWND)tie.lParam; +} + +void iupdrvTabsSetCurrentTab(Ihandle* ih, int pos) +{ + int prev_pos = SendMessage(ih->handle, TCM_GETCURSEL, 0, 0); + HWND tab_page = winTabsGetPageWindow(ih, prev_pos); + ShowWindow(tab_page, SW_HIDE); + + SendMessage(ih->handle, TCM_SETCURSEL, pos, 0); + + tab_page = winTabsGetPageWindow(ih, pos); + ShowWindow(tab_page, SW_SHOW); +} + +int iupdrvTabsGetCurrentTab(Ihandle* ih) +{ + return (int)SendMessage(ih->handle, TCM_GETCURSEL, 0, 0); +} + +static int winTabsGetImageIndex(Ihandle* ih, const char* name) +{ + HIMAGELIST image_list; + int count, i, bpp, ret; + Iarray* bmp_array; + HBITMAP *bmp_array_data, hMask=NULL; + HBITMAP bmp = iupImageGetImage(name, ih, 0); + if (!bmp) + return -1; + + /* the array is used to avoi adding the same bitmap twice */ + bmp_array = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY"); + if (!bmp_array) + { + /* create the array if does not exist */ + bmp_array = iupArrayCreate(50, sizeof(HBITMAP)); + iupAttribSetStr(ih, "_IUPWIN_BMPARRAY", (char*)bmp_array); + } + + bmp_array_data = iupArrayGetData(bmp_array); + + image_list = (HIMAGELIST)SendMessage(ih->handle, TCM_GETIMAGELIST, 0, 0); + if (!image_list) + { + int width, height; + UINT flags = ILC_COLOR32|ILC_MASK; + + /* must use this info, since image can be a driver image loaded from resources */ + iupdrvImageGetInfo(bmp, &width, &height, &bpp); + + /* create the image list if does not exist */ + image_list = ImageList_Create(width, height, flags, 0, 50); + SendMessage(ih->handle, TCM_SETIMAGELIST, 0, (LPARAM)image_list); + } + else + iupdrvImageGetInfo(bmp, NULL, NULL, &bpp); + + /* check if that bitmap is already added to the list, + but we can not compare with the actual bitmap at the list since it is a copy */ + count = ImageList_GetImageCount(image_list); + for (i=0; ihandle, TCM_GETITEMCOUNT, 0, 0); + tie.mask = TCIF_PARAM; + + for (pos=0; poshandle, TCM_GETITEM, pos, (LPARAM)&tie); + if (tab_page == (HWND)tie.lParam) + return pos; + } + + return -1; +} + +static void winTabsPlacePageWindows(Ihandle* ih, int w, int h) +{ + TCITEM tie; + int pos, num_tabs; + RECT rect; + + num_tabs = (int)SendMessage(ih->handle, TCM_GETITEMCOUNT, 0, 0); + tie.mask = TCIF_PARAM; + + /* Calculate the display rectangle, assuming the + tab control is the size of the client area. */ + SetRect(&rect, 0, 0, w, h); + SendMessage(ih->handle, TCM_ADJUSTRECT, FALSE, (LPARAM)&rect); + + for (pos=0; poshandle, TCM_GETITEM, pos, (LPARAM)&tie); + + SetWindowPos((HWND)tie.lParam, NULL, + rect.left, rect.top, + rect.right - rect.left, rect.bottom - rect.top, + SWP_NOACTIVATE|SWP_NOZORDER); + } +} + +static int winTabsUsingXPStyles(Ihandle* ih) +{ + return iupwin_comctl32ver6 && ih->data->type == ITABS_TOP; +} + +static void winTabsDrawPageBackground(Ihandle* ih, HDC hDC, RECT* rect) +{ + unsigned char r=0, g=0, b=0; + char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR"); + if (!color) color = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + if (!color) color = iupAttribGet(ih, "BACKGROUND"); + if (!color) color = IupGetGlobal("DLGBGCOLOR"); + iupStrToRGB(color, &r, &g, &b); + SetDCBrushColor(hDC, RGB(r,g,b)); + FillRect(hDC, rect, (HBRUSH)GetStockObject(DC_BRUSH)); +} + +static LRESULT CALLBACK winTabsPageWinProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) +{ + switch (msg) + { + case WM_ERASEBKGND: + { + RECT rect; + HDC hDC = (HDC)wp; + Ihandle* ih = iupwinHandleGet(hWnd); + GetClientRect(ih->handle, &rect); + winTabsDrawPageBackground(ih, hDC, &rect); + + /* return non zero value */ + return 1; + } + case WM_COMMAND: + case WM_CTLCOLORSCROLLBAR: + case WM_CTLCOLORBTN: + case WM_CTLCOLOREDIT: + case WM_CTLCOLORLISTBOX: + case WM_CTLCOLORSTATIC: + case WM_DRAWITEM: + case WM_HSCROLL: + case WM_NOTIFY: + case WM_VSCROLL: + /* Forward the container messages to its parent. */ + return SendMessage(GetParent(hWnd), msg, wp, lp); + } + + return DefWindowProc(hWnd, msg, wp, lp); +} + +static HWND winTabCreatePageWindow(Ihandle* ih) +{ + HWND hWnd; + DWORD dwStyle = WS_CHILD|WS_CLIPSIBLINGS, + dwExStyle = 0; + + if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED")) + dwExStyle |= WS_EX_COMPOSITED; + else + dwStyle |= WS_CLIPCHILDREN; + + hWnd = CreateWindowEx(dwExStyle, "IupTabsPage", NULL, dwStyle, + 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, + ih->handle, NULL, iupwin_hinstance, NULL); + + iupwinHandleAdd(ih, hWnd); + + return hWnd; +} + +/* ------------------------------------------------------------------------- */ +/* winTabs - Sets and Gets accessors */ +/* ------------------------------------------------------------------------- */ + +static int winTabsSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + + if (ih->handle) + SendMessage(ih->handle, TCM_SETPADDING, 0, MAKELPARAM(ih->data->horiz_padding, ih->data->vert_padding)); + + return 0; +} + +static int winTabsSetMultilineAttrib(Ihandle* ih, const char* value) +{ + if (ih->handle) /* allow to set only before mapping */ + return 0; + + if (iupStrBoolean(value)) + ih->data->is_multiline = 1; + else + { + if (ih->data->type == ITABS_BOTTOM || ih->data->type == ITABS_TOP) + ih->data->is_multiline = 0; + else + ih->data->is_multiline = 1; /* always true if left/right */ + } + + return 0; +} + +static char* winTabsGetMultilineAttrib(Ihandle* ih) +{ + if (ih->data->is_multiline) + return "YES"; + else + return "NO"; +} + +static int winTabsSetTabTypeAttrib(Ihandle* ih, const char* value) +{ + if (ih->handle) /* allow to set only before mapping */ + return 0; + + if(iupStrEqualNoCase(value, "BOTTOM")) + { + ih->data->is_multiline = 0; + ih->data->type = ITABS_BOTTOM; + ih->data->orientation = ITABS_HORIZONTAL; + } + else if(iupStrEqualNoCase(value, "LEFT")) + { + ih->data->type = ITABS_LEFT; + ih->data->orientation = ITABS_VERTICAL; + ih->data->is_multiline = 1; /* VERTICAL works only with MULTILINE */ + } + else if(iupStrEqualNoCase(value, "RIGHT")) + { + ih->data->is_multiline = 1; /* VERTICAL works only with MULTILINE */ + ih->data->type = ITABS_RIGHT; + ih->data->orientation = ITABS_VERTICAL; + } + else /* "TOP" */ + { + ih->data->is_multiline = 0; + ih->data->type = ITABS_TOP; + ih->data->orientation = ITABS_HORIZONTAL; + } + + return 0; +} + +static int winTabsSetTabTitleAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int pos; + if (value && iupStrToInt(name_id, &pos)==1) + { + TCITEM tie; + + tie.mask = TCIF_TEXT; + tie.pszText = (char*)value; + tie.cchTextMax = strlen(value); + + SendMessage(ih->handle, TCM_SETITEM, pos, (LPARAM)&tie); + } + return 1; +} + +static int winTabsSetTabImageAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int pos; + if (value && iupStrToInt(name_id, &pos)==1) + { + TCITEM tie; + + tie.mask = TCIF_IMAGE; + tie.iImage = winTabsGetImageIndex(ih, value); + + SendMessage(ih->handle, TCM_SETITEM, pos, (LPARAM)&tie); + } + return 1; +} + +static char* winTabsGetBgColorAttrib(Ihandle* ih) +{ + /* the most important use of this is to provide + the correct background for images */ + if (iupwin_comctl32ver6) + { + COLORREF cr; + if (iupwinDrawGetThemeTabsBgColor(ih->handle, &cr)) + { + char* str = iupStrGetMemory(20); + sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr)); + return str; + } + } + + return IupGetGlobal("DLGBGCOLOR"); +} + + +/* ------------------------------------------------------------------------- */ +/* winTabs - Calls the user callback to change of tab */ +/* ------------------------------------------------------------------------- */ + +static int winTabsCtlColor(Ihandle* ih, HDC hdc, LRESULT *result) +{ + /* works only when NOT winTabsUsingXPStyles */ + unsigned char r, g, b; + char* color = iupBaseNativeParentGetBgColorAttrib(ih); + if (iupStrToRGB(color, &r, &g, &b)) + { + SetDCBrushColor(hdc, RGB(r,g,b)); + *result = (LRESULT)GetStockObject(DC_BRUSH); + return 1; + } + return 0; +} + +static int winTabsWmNotify(Ihandle* ih, NMHDR* msg_info, int *result) +{ + (void)result; + + if (msg_info->code == TCN_SELCHANGING) + { + IFnnn cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB"); + int prev_pos = SendMessage(ih->handle, TCM_GETCURSEL, 0, 0); + iupAttribSetInt(ih, "_IUPTABS_PREV_CHILD_POS", prev_pos); + + if (cb) + { + Ihandle* prev_child = IupGetChild(ih, prev_pos); + iupAttribSetStr(ih, "_IUPTABS_PREV_CHILD", (char*)prev_child); + } + } + + if (msg_info->code == TCN_SELCHANGE) + { + IFnnn cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB"); + int pos = SendMessage(ih->handle, TCM_GETCURSEL, 0, 0); + int prev_pos = iupAttribGetInt(ih, "_IUPTABS_PREV_CHILD_POS"); + HWND tab_page = winTabsGetPageWindow(ih, pos); + ShowWindow(tab_page, SW_SHOW); + tab_page = winTabsGetPageWindow(ih, prev_pos); + ShowWindow(tab_page, SW_HIDE); + + if (cb) + { + Ihandle* child = IupGetChild(ih, pos); + Ihandle* prev_child = (Ihandle*)iupAttribGet(ih, "_IUPTABS_PREV_CHILD"); + iupAttribSetStr(ih, "_IUPTABS_PREV_CHILD", NULL); + + cb(ih, child, prev_child); + } + } + + return 0; /* result not used */ +} + +static int winTabsProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + switch(msg) + { + case WM_SIZE: + { + WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB"); + CallWindowProc(oldProc, ih->handle, msg, wp, lp); + + winTabsPlacePageWindows(ih, LOWORD(lp), HIWORD(lp)); + + *result = 0; + return 1; + } + } + + return iupwinBaseContainerProc(ih, msg, wp, lp, result); +} + +/* ------------------------------------------------------------------------- */ +/* winTabs - Methods and Init Class */ +/* ------------------------------------------------------------------------- */ + +static void winTabsChildAddedMethod(Ihandle* ih, Ihandle* child) +{ + if (IupGetName(child) == NULL) + iupAttribSetHandleName(child); + + if (ih->handle) + { + TCITEM tie; + HWND tab_page; + char *tabtitle, *tabimage; + int pos, old_rowcount; + RECT rect; + + pos = IupGetChildPos(ih, child); + + tab_page = winTabCreatePageWindow(ih); + + if (pos == 0) + ShowWindow(tab_page, SW_SHOW); + + tabtitle = iupAttribGet(child, "TABTITLE"); + if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos); + tabimage = iupAttribGet(child, "TABIMAGE"); + if (!tabimage) tabimage = iupTabsAttribGetStrId(ih, "TABIMAGE", pos); + if (!tabtitle && !tabimage) + tabtitle = " "; + + old_rowcount = (int)SendMessage(ih->handle, TCM_GETROWCOUNT, 0, 0); + + tie.mask = TCIF_PARAM; + + if (tabtitle) + { + tie.mask |= TCIF_TEXT; + tie.pszText = tabtitle; + tie.cchTextMax = strlen(tabtitle); + } + + if (tabimage) + { + tie.mask |= TCIF_IMAGE; + tie.iImage = winTabsGetImageIndex(ih, tabimage); + } + + /* create tabs and label them */ + tie.lParam = (LPARAM)tab_page; + SendMessage(ih->handle, TCM_INSERTITEM, pos, (LPARAM)&tie); + + /* Calculate the display rectangle, assuming the + tab control is the size of the client area. */ + GetClientRect(ih->handle, &rect); + SendMessage(ih->handle, TCM_ADJUSTRECT, FALSE, (LPARAM)&rect); + + SetWindowPos(tab_page, NULL, + rect.left, rect.top, + rect.right - rect.left, rect.bottom - rect.top, + SWP_NOACTIVATE|SWP_NOZORDER); + + iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)tab_page); + + if (ih->data->is_multiline) + { + if (ih->data->type == ITABS_LEFT || ih->data->type == ITABS_RIGHT) + { + int rowcount = (int)SendMessage(ih->handle, TCM_GETROWCOUNT, 0, 0); + if (rowcount != old_rowcount) + { + GetClientRect(ih->handle, &rect); + winTabsPlacePageWindows(ih, rect.right - rect.left, rect.bottom - rect.top); + } + } + + iupdrvDisplayRedraw(ih); + } + } +} + +static void winTabsChildRemovedMethod(Ihandle* ih, Ihandle* child) +{ + if (ih->handle) + { + HWND tab_page = (HWND)iupAttribGet(child, "_IUPTAB_CONTAINER"); + if (tab_page) + { + int pos = winTabsGetPageWindowPos(ih, tab_page); + SendMessage(ih->handle, TCM_DELETEITEM, pos, 0); + DestroyWindow(tab_page); + + if (pos==0) pos++; + iupdrvTabsSetCurrentTab(ih, pos-1); + + iupAttribSetStr(child, "_IUPTAB_CONTAINER", NULL); + } + } +} + +static int winTabsMapMethod(Ihandle* ih) +{ + DWORD dwStyle = WS_CHILD | WS_CLIPSIBLINGS | TCS_HOTTRACK | WS_TABSTOP, + dwExStyle = 0; + + if (!ih->parent) + return IUP_ERROR; + + if (ih->data->type == ITABS_BOTTOM) + dwStyle |= TCS_BOTTOM; + else if (ih->data->type == ITABS_RIGHT) + dwStyle |= TCS_VERTICAL|TCS_RIGHT; + else if (ih->data->type == ITABS_LEFT) + dwStyle |= TCS_VERTICAL; + + if (ih->data->is_multiline) + dwStyle |= TCS_MULTILINE; + + if (iupAttribGetBoolean(IupGetDialog(ih), "COMPOSITED")) + { + dwExStyle |= WS_EX_COMPOSITED; + + if (!ih->data->is_multiline && iupwinIsVista()) + { + /* workaround for composite bug in Vista */ + ih->data->is_multiline = 1; + dwStyle |= TCS_MULTILINE; + } + } + else + dwStyle |= WS_CLIPCHILDREN; + + if (!iupwinCreateWindowEx(ih, WC_TABCONTROL, dwExStyle, dwStyle)) + return IUP_ERROR; + + /* replace the WinProc to handle other messages */ + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winTabsProc); + + /* Process WM_NOTIFY */ + IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winTabsWmNotify); + + /* Process background color */ + IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winTabsCtlColor); + + if (iupwin_comctl32ver6 && ih->data->type != ITABS_TOP) + { + /* XP Styles support only TABTYPE=TOP */ + iupwinDrawRemoveTheme(ih->handle); + } + + /* Change children background */ + if (winTabsUsingXPStyles(ih)) + { + char* color = iupAttribGetInheritNativeParent(ih, "BGCOLOR"); + if (!color) + color = iupAttribGetInheritNativeParent(ih, "BACKGROUND"); + if (!color) + { + COLORREF cr; + if (iupwinDrawGetThemeTabsBgColor(ih->handle, &cr)) + iupAttribSetStrf(ih, "BACKGROUND", "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr)); + } + } + + /* Create pages and tabs */ + if (ih->firstchild) + { + Ihandle* child; + for (child = ih->firstchild; child; child = child->brother) + winTabsChildAddedMethod(ih, child); + } + + return IUP_NOERROR; +} + +static void winTabsUnMapMethod(Ihandle* ih) +{ + Iarray* bmp_array; + + HIMAGELIST image_list = (HIMAGELIST)SendMessage(ih->handle, TCM_GETIMAGELIST, 0, 0); + if (image_list) + ImageList_Destroy(image_list); + + bmp_array = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY"); + if (bmp_array) + iupArrayDestroy(bmp_array); + + iupdrvBaseUnMapMethod(ih); +} + +static void winTabsRegisterClass(void) +{ + WNDCLASS wndclass; + ZeroMemory(&wndclass, sizeof(WNDCLASS)); + + wndclass.hInstance = iupwin_hinstance; + wndclass.lpszClassName = "IupTabsPage"; + wndclass.lpfnWndProc = (WNDPROC)winTabsPageWinProc; + wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); + wndclass.style = CS_PARENTDC; + wndclass.hbrBackground = NULL; /* remove the background to optimize redraw */ + + RegisterClass(&wndclass); +} + +void iupdrvTabsInitClass(Iclass* ic) +{ + if (!iupwinClassExist("IupTabsPage")) + winTabsRegisterClass(); + + /* Driver Dependent Class functions */ + ic->Map = winTabsMapMethod; + ic->UnMap = winTabsUnMapMethod; + ic->ChildAdded = winTabsChildAddedMethod; + ic->ChildRemoved = winTabsChildRemovedMethod; + + /* Driver Dependent Attribute functions */ + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", winTabsGetBgColorAttrib, NULL, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "DLGFGCOLOR", IUPAF_NOT_MAPPED); + + /* IupTabs only */ + iupClassRegisterAttribute(ic, "TABTYPE", iupTabsGetTabTypeAttrib, winTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABORIENTATION", iupTabsGetTabOrientationAttrib, NULL, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* can not be set, depends on TABTYPE in Windows */ + iupClassRegisterAttribute(ic, "MULTILINE", winTabsGetMultilineAttrib, winTabsSetMultilineAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TABTITLE", NULL, winTabsSetTabTitleAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TABIMAGE", NULL, winTabsSetTabImageAttrib, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, winTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); +} diff --git a/iup/src/win/iupwin_text.c b/iup/src/win/iupwin_text.c new file mode 100755 index 0000000..dfe489a --- /dev/null +++ b/iup/src/win/iupwin_text.c @@ -0,0 +1,1993 @@ +/** \file + * \brief Text Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_mask.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_array.h" +#include "iup_text.h" +#include "iup_key.h" +#include "iup_dialog.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" + +/* Cygwin and MingW Win32api does not define these */ + +#ifndef PFN_ARABIC +#define PFN_ARABIC 2 +#define PFN_LCLETTER 3 +#define PFN_UCLETTER 4 +#define PFN_LCROMAN 5 +#define PFN_UCROMAN 6 +#endif + +#ifndef PFNS_PAREN +#define PFNS_PAREN 0x000 +#define PFNS_PARENS 0x100 +#define PFNS_PERIOD 0x200 +#define PFNS_PLAIN 0x300 +#define PFNS_NONUMBER 0x400 +#endif + +#ifndef CFM_BACKCOLOR +#define CFM_BACKCOLOR 0x04000000 +#define CFM_UNDERLINETYPE 0x00800000 +#define CFM_WEIGHT 0x00400000 +#define CFM_DISABLED 0x2000 +#define CFE_DISABLED CFM_DISABLED +#endif + +#ifndef CFU_UNDERLINEDOTTED +#define CFU_UNDERLINEDOTTED 4 +#define CFU_UNDERLINEDOUBLE 3 +#define CFU_UNDERLINE 1 +#define CFU_UNDERLINENONE 0 +#endif + +#ifndef SES_UPPERCASE +#define SES_UPPERCASE 512 +#define SES_LOWERCASE 1024 +#endif +/* End Cygwin/MingW */ + +#ifndef EM_SETCUEBANNER /* defined only if _WIN32_WINNT >= 0x501 */ +#define ECM_FIRST 0x1500 /* Edit control messages */ +#define EM_SETCUEBANNER (ECM_FIRST + 1) +#endif + +#define WM_CARET WM_APP+1 /* Custom IUP message */ + + +void iupdrvTextAddSpin(int *w, int h) +{ + *w += h; +} + +void iupdrvTextAddBorders(int *w, int *h) +{ + int border_size = 2*3; + (*w) += border_size; + (*h) += border_size; +} + +static void winTextParseParagraphFormat(Ihandle* formattag, PARAFORMAT2 *paraformat, int convert2twips) +{ + int val; + char* format; + + ZeroMemory(paraformat, sizeof(PARAFORMAT2)); + paraformat->cbSize = sizeof(PARAFORMAT2); + + format = iupAttribGet(formattag, "NUMBERING"); + if (format) + { + paraformat->dwMask |= PFM_NUMBERING; + + if (iupStrEqualNoCase(format, "BULLET")) + paraformat->wNumbering = PFN_BULLET; + else if (iupStrEqualNoCase(format, "ARABIC")) + paraformat->wNumbering = PFN_ARABIC; + else if (iupStrEqualNoCase(format, "LCLETTER")) + paraformat->wNumbering = PFN_LCLETTER; + else if (iupStrEqualNoCase(format, "UCLETTER")) + paraformat->wNumbering = PFN_UCLETTER; + else if (iupStrEqualNoCase(format, "LCROMAN")) + paraformat->wNumbering = PFN_LCROMAN; + else if (iupStrEqualNoCase(format, "UCROMAN")) + paraformat->wNumbering = PFN_UCROMAN; + else + paraformat->wNumbering = 0; /* "NONE" */ + + format = iupAttribGet(formattag, "NUMBERINGSTYLE"); + if (format) + { + paraformat->dwMask |= PFM_NUMBERINGSTYLE; + + if (iupStrEqualNoCase(format, "RIGHTPARENTESES")) + paraformat->wNumberingStyle = PFNS_PAREN; + else if (iupStrEqualNoCase(format, "PARENTESES")) + paraformat->wNumberingStyle = PFNS_PARENS; + else if (iupStrEqualNoCase(format, "PERIOD")) + paraformat->wNumberingStyle = PFNS_PERIOD; + else if (iupStrEqualNoCase(format, "NONUMBER")) + paraformat->wNumberingStyle = PFNS_NONUMBER; + else + paraformat->wNumberingStyle = PFNS_PLAIN; /* "NONE" */ + } + + format = iupAttribGet(formattag, "NUMBERINGTAB"); + if (format && iupStrToInt(format, &val)) + { + paraformat->dwMask |= PFM_NUMBERINGTAB; + paraformat->wNumberingTab = (WORD)(val*convert2twips); + } + } + + format = iupAttribGet(formattag, "INDENT"); + if (format && iupStrToInt(format, &val)) + { + paraformat->dwMask |= PFM_STARTINDENT|PFM_RIGHTINDENT|PFM_OFFSET; + paraformat->dxStartIndent = val*convert2twips; + + format = iupAttribGet(formattag, "INDENTRIGHT"); + if (format && iupStrToInt(format, &val)) + paraformat->dxRightIndent = val*convert2twips; + else + paraformat->dxRightIndent = paraformat->dxStartIndent; + + format = iupAttribGet(formattag, "INDENTOFFSET"); + if (format && iupStrToInt(format, &val)) + paraformat->dxOffset = val*convert2twips; + else + paraformat->dxOffset = 0; + } + + format = iupAttribGet(formattag, "ALIGNMENT"); + if (format) + { + paraformat->dwMask |= PFM_ALIGNMENT; + + if (iupStrEqualNoCase(format, "JUSTIFY")) + paraformat->wAlignment = PFA_JUSTIFY; + else if (iupStrEqualNoCase(format, "RIGHT")) + paraformat->wAlignment = PFA_RIGHT; + else if (iupStrEqualNoCase(format, "CENTER")) + paraformat->wAlignment = PFA_CENTER; + else + paraformat->wAlignment = PFA_LEFT; /* "LEFT" */ + } + + format = iupAttribGet(formattag, "TABSARRAY"); + if (format) + { + int pos, align, i = 0; + LONG tab; + char* str; + + paraformat->dwMask |= PFM_TABSTOPS; + + while (format) + { + str = iupStrCopyUntil((char**)&format, ' '); + if (!str) break; + pos = atoi(str)*convert2twips; + free(str); + + str = iupStrCopyUntil((char**)&format, ' '); + if (!str) break; + + if (iupStrEqualNoCase(str, "DECIMAL")) + align = 3; + else if (iupStrEqualNoCase(str, "RIGHT")) + align = 2; + else if (iupStrEqualNoCase(str, "CENTER")) + align = 1; + else /* "LEFT" */ + align = 0; + free(str); + + tab = (pos&0xFFF)|(align<<24); + paraformat->rgxTabs[i] = tab; + i++; + if (i == 32) break; + } + paraformat->cTabCount = (SHORT)i; + } + + format = iupAttribGet(formattag, "SPACEBEFORE"); + if (format && iupStrToInt(format, &val)) + { + paraformat->dwMask |= PFM_SPACEBEFORE; + paraformat->dySpaceBefore = val*convert2twips; + } + + format = iupAttribGet(formattag, "SPACEAFTER"); + if (format && iupStrToInt(format, &val)) + { + paraformat->dwMask |= PFM_SPACEAFTER; + paraformat->dySpaceAfter = val*convert2twips; + } + + format = iupAttribGet(formattag, "LINESPACING"); + if (format) + { + paraformat->dwMask |= PFM_LINESPACING; + + if (iupStrEqualNoCase(format, "SINGLE")) + paraformat->bLineSpacingRule = 0; + else if (iupStrEqualNoCase(format, "ONEHALF")) + paraformat->bLineSpacingRule = 1; + else if (iupStrEqualNoCase(format, "DOUBLE")) + paraformat->bLineSpacingRule = 2; + else if (iupStrToInt(format, &val)) + { + paraformat->bLineSpacingRule = 3; + paraformat->dyLineSpacing = val*convert2twips; + } + } +} + +static void winTextParseCharacterFormat(Ihandle* formattag, CHARFORMAT2 *charformat, int pixel2twips) +{ + int val; + char* format; + + ZeroMemory(charformat, sizeof(CHARFORMAT2)); + charformat->cbSize = sizeof(CHARFORMAT2); + + format = iupAttribGet(formattag, "DISABLED"); + if (format) + { + charformat->dwMask |= CFM_DISABLED; + if (iupStrBoolean(format)) + charformat->dwEffects |= CFE_DISABLED; + } + + format = iupAttribGet(formattag, "RISE"); + if (format) + { + if (iupStrEqualNoCase(format, "SUPERSCRIPT")) + { + charformat->dwMask |= CFM_SUPERSCRIPT; + charformat->dwEffects |= CFE_SUPERSCRIPT; + } + else if (iupStrEqualNoCase(format, "SUBSCRIPT")) + { + charformat->dwMask |= CFM_SUBSCRIPT; + charformat->dwEffects |= CFE_SUBSCRIPT; + } + else if (iupStrToInt(format, &val)) + { + charformat->dwMask |= CFM_OFFSET; + charformat->yOffset = val; + } + } + + format = iupAttribGet(formattag, "ITALIC"); + if (format) + { + charformat->dwMask |= CFM_ITALIC; + if (iupStrBoolean(format)) + charformat->dwEffects |= CFE_ITALIC; + } + + format = iupAttribGet(formattag, "STRIKEOUT"); + if (format) + { + charformat->dwMask |= CFM_STRIKEOUT; + if (iupStrBoolean(format)) + charformat->dwEffects |= CFE_STRIKEOUT; + } + + format = iupAttribGet(formattag, "PROTECTED"); + if (format) + { + charformat->dwMask |= CFM_PROTECTED; + if (iupStrBoolean(format)) + charformat->dwEffects |= CFE_PROTECTED; + } + + format = iupAttribGet(formattag, "FONTSIZE"); + if (format && iupStrToInt(format, &val)) + { + /* (1/1440 of an inch, or 1/20 of a printer's point) */ + charformat->dwMask |= CFM_SIZE; + if (val < 0) /* in pixels */ + charformat->yHeight = (-val)*pixel2twips; + else + charformat->yHeight = val*20; + } + + format = iupAttribGet(formattag, "FONTSCALE"); + if (format && charformat->yHeight != 0) + { + float fval = 0; + if (iupStrEqualNoCase(format, "XX-SMALL")) + fval = 0.5787037037037f; + else if (iupStrEqualNoCase(format, "X-SMALL")) + fval = 0.6444444444444f; + else if (iupStrEqualNoCase(format, "SMALL")) + fval = 0.8333333333333f; + else if (iupStrEqualNoCase(format, "MEDIUM")) + fval = 1.0f; + else if (iupStrEqualNoCase(format, "LARGE")) + fval = 1.2f; + else if (iupStrEqualNoCase(format, "X-LARGE")) + fval = 1.4399999999999f; + else if (iupStrEqualNoCase(format, "XX-LARGE")) + fval = 1.728f; + else + iupStrToFloat(format, &fval); + + if (fval > 0) + { + fval = ((float)charformat->yHeight)*fval; + charformat->yHeight = iupROUND(fval); + } + } + + format = iupAttribGet(formattag, "FONTFACE"); + if (format) + { + charformat->dwMask |= CFM_FACE; + strcpy(charformat->szFaceName, format); + } + + format = iupAttribGet(formattag, "FGCOLOR"); + if (format) + { + unsigned char r, g, b; + if (iupStrToRGB(format, &r, &g, &b)) + { + charformat->dwMask |= CFM_COLOR; + charformat->crTextColor = RGB(r, g, b); + } + } + + format = iupAttribGet(formattag, "BGCOLOR"); + if (format) + { + unsigned char r, g, b; + if (iupStrToRGB(format, &r, &g, &b)) + { + charformat->dwMask |= CFM_BACKCOLOR; + charformat->crBackColor = RGB(r, g, b); + } + } + + format = iupAttribGet(formattag, "UNDERLINE"); + if (format) + { + charformat->dwMask |= CFM_UNDERLINETYPE; + + if (iupStrEqualNoCase(format, "SINGLE")) + charformat->bUnderlineType = CFU_UNDERLINE; + else if (iupStrEqualNoCase(format, "DOUBLE")) + charformat->bUnderlineType = CFU_UNDERLINEDOUBLE; + else if (iupStrEqualNoCase(format, "DOTTED")) + charformat->bUnderlineType = CFU_UNDERLINEDOTTED; + else /* "NONE" */ + charformat->bUnderlineType = CFU_UNDERLINENONE; + + if (charformat->bUnderlineType != CFU_UNDERLINENONE) + { + charformat->dwMask |= CFM_UNDERLINE; + charformat->dwEffects |= CFE_UNDERLINE; + } + } + + format = iupAttribGet(formattag, "WEIGHT"); + if (format) + { + charformat->dwMask |= CFM_WEIGHT; + + if (iupStrEqualNoCase(format, "EXTRALIGHT")) + charformat->wWeight = FW_EXTRALIGHT; + else if (iupStrEqualNoCase(format, "LIGHT")) + charformat->wWeight = FW_LIGHT; + else if (iupStrEqualNoCase(format, "SEMIBOLD")) + charformat->wWeight = FW_SEMIBOLD; + else if (iupStrEqualNoCase(format, "BOLD")) + charformat->wWeight = FW_BOLD; + else if (iupStrEqualNoCase(format, "EXTRABOLD")) + charformat->wWeight = FW_EXTRABOLD; + else if (iupStrEqualNoCase(format, "HEAVY")) + charformat->wWeight = FW_HEAVY; + else /* "NORMAL" */ + charformat->wWeight = FW_NORMAL; + + if (charformat->wWeight != FW_NORMAL) + { + charformat->dwMask |= CFM_BOLD; + charformat->dwEffects |= CFE_BOLD; + } + } +} + +static int winTextSetLinColToPosition(Ihandle *ih, int lin, int col) +{ + int linmax, colmax, lineindex; + + lin--; /* IUP starts at 1 */ + col--; + + linmax = SendMessage(ih->handle, EM_GETLINECOUNT, 0, 0L); + if (lin > linmax) + lin = linmax; + + lineindex = SendMessage(ih->handle, EM_LINEINDEX, (WPARAM)lin, 0L); + + colmax = SendMessage(ih->handle, EM_LINELENGTH, (WPARAM)lineindex, 0L); + if (col > colmax) + col = colmax; /* after the last character */ + + return lineindex + col; +} + +static void winTextGetLinColFromPosition(Ihandle* ih, int pos, int* lin, int* col) +{ + /* here "pos" must contains the extra chars if the case */ + int lineindex; + + if (ih->data->has_formatting) + *lin = SendMessage(ih->handle, EM_EXLINEFROMCHAR, (WPARAM)0, (LPARAM)pos); + else + *lin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0L); + + lineindex = SendMessage(ih->handle, EM_LINEINDEX, (WPARAM)(*lin), (LPARAM)0L); + *col = pos - lineindex; /* lineindex is at the first character of the line */ + + (*lin)++; /* IUP starts at 1 */ + (*col)++; +} + +static int winTextRemoveExtraChars(Ihandle* ih, int pos) +{ + /* called only if not single line and not formatting */ + int lin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0L); + pos -= lin; /* remove \r characters from count */ + return pos; +} + +static int winTextAddExtraChars(Ihandle* ih, int pos) +{ + /* called only if not single line and not formatting */ + int lin, clin; + + clin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0L); + + /* pos is smaller than the actual pos (missing the \r count), + so we must calculate the line until the returned value is the same as the expected. */ + do + { + lin = clin; + clin = SendMessage(ih->handle, EM_LINEFROMCHAR, (WPARAM)(pos+lin+1), (LPARAM)0L); /* add one because we can be at the last character */ + } while (clin != lin); /* and it will not change to the next line by 1 */ + + pos += lin; /* add \r characters from count */ + return pos; +} + +static int winTextGetCaretPos(Ihandle* ih) +{ + int pos = 0; + POINT point; + + if (GetFocus() != ih->handle || !GetCaretPos(&point)) + { + /* if does not have the focus, or could not get caret position, + then use the selection start position */ + SendMessage(ih->handle, EM_GETSEL, (WPARAM)&pos, 0); + } + else + { + if (ih->data->has_formatting) + pos = SendMessage(ih->handle, EM_CHARFROMPOS, 0, (LPARAM)&point); + else + { + LRESULT ret; + + /* Workaround for weird behavior because of the return value in GetCaretPos */ + if (ih->data->is_multiline && point.y < 5) + point.y += 5; + + ret = SendMessage(ih->handle, EM_CHARFROMPOS, 0, MAKELPARAM(point.x, point.y)); + pos = LOWORD(ret); + } + } + + return pos; +} + +static int winTextGetCaret(Ihandle* ih, int *lin, int *col) +{ + int pos = winTextGetCaretPos(ih); + + if (ih->data->is_multiline) + { + winTextGetLinColFromPosition(ih, pos, lin, col); + + if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + pos = winTextRemoveExtraChars(ih, pos); + } + else + { + *col = pos; + (*col)++; /* IUP starts at 1 */ + *lin = 1; + } + + return pos; +} + +static void winTextGetSelection(Ihandle* ih, int *start, int *end) +{ + *start = 0; + *end = 0; + + SendMessage(ih->handle, EM_GETSEL, (WPARAM)start, (LPARAM)end); + + if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + { + (*start) = winTextRemoveExtraChars(ih, *start); + (*end) = winTextRemoveExtraChars(ih, *end); + } +} + +void iupdrvTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos) +{ + *pos = winTextSetLinColToPosition(ih, lin, col); + + if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + *pos = winTextRemoveExtraChars(ih, *pos); +} + +void iupdrvTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col) +{ + if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + pos = winTextAddExtraChars(ih, pos); + + winTextGetLinColFromPosition(ih, pos, lin, col); +} + +static int winTextConvertXYToPos(Ihandle* ih, int x, int y) +{ + int pos; + + if (ih->data->has_formatting) + { + POINT point; + point.x = x; + point.y = y; + pos = (int)SendMessage(ih->handle, EM_CHARFROMPOS, 0, (LPARAM)&point); + } + else + { + LRESULT ret = SendMessage(ih->handle, EM_CHARFROMPOS, 0, MAKELPARAM(x, y)); + pos = LOWORD(ret); + } + + if (ih->data->is_multiline) + { + if (!ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + pos = winTextRemoveExtraChars(ih, pos); + } + + return pos; +} + + +/***********************************************************************************************/ + + +static int winTextSetValueAttrib(Ihandle* ih, const char* value) +{ + char* str; + if (!value) value = ""; + str = (char*)value; + if (ih->data->is_multiline) + { + if (ih->data->has_formatting) + str = iupStrToMac(str); + else + str = iupStrToDos(str); + } + iupAttribSetStr(ih, "IUPWIN_IGNORECHANGE", "1"); + SetWindowText(ih->handle, str); + iupAttribSetStr(ih, "IUPWIN_IGNORECHANGE", NULL); + if (str != value) free(str); + return 0; +} + +static char* winTextGetValueAttrib(Ihandle* ih) +{ + int nc = GetWindowTextLength(ih->handle); + if (nc) + { + char* str = iupStrGetMemory(nc+1); + GetWindowText(ih->handle, str, nc+1); /* notice that this function always returns in DOS format */ + if (ih->data->is_multiline) + iupStrToUnix(str); + return str; + } + else + return ""; +} + +static int winTextSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &(ih->data->horiz_padding), &(ih->data->vert_padding), 'x'); + ih->data->vert_padding = 0; + if (ih->handle) + SendMessage(ih->handle, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELPARAM(ih->data->horiz_padding, ih->data->horiz_padding)); + return 0; +} + +static int winTextSetSelectedTextAttrib(Ihandle* ih, const char* value) +{ + if (value) + { + int start = 0, end = 0; + char* str; + + SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return 0; + + str = (char*)value; + if (ih->data->is_multiline) + { + if (ih->data->has_formatting) + str = iupStrToMac(str); + else + str = iupStrToDos(str); + } + SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)str); + if (str != value) free(str); + } + return 0; +} + +static char* winTextGetSelectedTextAttrib(Ihandle* ih) +{ + int nc = GetWindowTextLength(ih->handle); + if (nc) + { + int start = 0, end = 0; + char* str; + + SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return NULL; + + if (ih->data->has_formatting) + { + str = iupStrGetMemory(end-start+1); + SendMessage(ih->handle, EM_GETSELTEXT, 0, (LPARAM)str); + } + else + { + str = iupStrGetMemory(nc+1); + GetWindowText(ih->handle, str, nc+1); /* notice that this function always returns in DOS format */ + /* returns only the selected text */ + str[end] = 0; + str += start; + } + + if (ih->data->is_multiline) + iupStrToUnix(str); + return str; + } + else + return NULL; +} + +static int winTextSetNCAttrib(Ihandle* ih, const char* value) +{ + if (!iupStrToInt(value, &ih->data->nc)) + ih->data->nc = 0; + + if (ih->handle) + { + if (ih->data->has_formatting) + SendMessage(ih->handle, EM_EXLIMITTEXT, 0, ih->data->nc); /* so it can be larger than 64k */ + else + SendMessage(ih->handle, EM_LIMITTEXT, ih->data->nc, 0L); + } + return 0; +} + +static int winTextSetSelectionAttrib(Ihandle* ih, const char* value) +{ + int start=1, end=1; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + SendMessage(ih->handle, EM_SETSEL, (WPARAM)-1, (LPARAM)0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + SendMessage(ih->handle, EM_SETSEL, (WPARAM)0, (LPARAM)-1); + return 0; + } + + if (ih->data->is_multiline) + { + int lin_start=1, col_start=1, lin_end=1, col_end=1; + + if (sscanf(value, "%d,%d:%d,%d", &lin_start, &col_start, &lin_end, &col_end)!=4) return 0; + if (lin_start<1 || col_start<1 || lin_end<1 || col_end<1) return 0; + + start = winTextSetLinColToPosition(ih, lin_start, col_start); + end = winTextSetLinColToPosition(ih, lin_end, col_end); + } + else + { + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<1 || end<1) + return 0; + + start--; /* IUP starts at 1 */ + end--; + } + + SendMessage(ih->handle, EM_SETSEL, (WPARAM)start, (LPARAM)end); + + return 0; +} + +static char* winTextGetSelectionAttrib(Ihandle* ih) +{ + int start = 0, end = 0; + char* str; + + SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return NULL; + + str = iupStrGetMemory(100); + + if (ih->data->is_multiline) + { + int start_col, start_lin, end_col, end_lin; + winTextGetLinColFromPosition(ih, start, &start_lin, &start_col); + winTextGetLinColFromPosition(ih, end, &end_lin, &end_col); + sprintf(str,"%d,%d:%d,%d", start_lin, start_col, end_lin, end_col); + } + else + { + start++; /* IUP starts at 1 */ + end++; + sprintf(str, "%d:%d", start, end); + } + + return str; +} + +static int winTextSetSelectionPosAttrib(Ihandle* ih, const char* value) +{ + int start=0, end=0; + + if (!value || iupStrEqualNoCase(value, "NONE")) + { + SendMessage(ih->handle, EM_SETSEL, (WPARAM)-1, (LPARAM)0); + return 0; + } + + if (iupStrEqualNoCase(value, "ALL")) + { + SendMessage(ih->handle, EM_SETSEL, (WPARAM)0, (LPARAM)-1); + return 0; + } + + if (iupStrToIntInt(value, &start, &end, ':')!=2) + return 0; + + if(start<0 || end<0) + return 0; + + if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + { + start = winTextAddExtraChars(ih, start); + end = winTextAddExtraChars(ih, end); + } + + SendMessage(ih->handle, EM_SETSEL, (WPARAM)start, (LPARAM)end); + + return 0; +} + +static char* winTextGetSelectionPosAttrib(Ihandle* ih) +{ + int start = 0, end = 0; + char* str; + + SendMessage(ih->handle, EM_GETSEL, (WPARAM)&start, (LPARAM)&end); + if (start == end) + return NULL; + + if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + { + start = winTextRemoveExtraChars(ih, start); + end = winTextRemoveExtraChars(ih, end); + } + + str = iupStrGetMemory(100); + + sprintf(str, "%d:%d", start, end); + + return str; +} + +static int winTextSetInsertAttrib(Ihandle* ih, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if (value) + { + char* str = (char*)value; + if (ih->data->is_multiline) + { + if (ih->data->has_formatting) + str = iupStrToMac(str); + else + str = iupStrToDos(str); + } + + SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)str); + + if (str != value) free(str); + } + return 0; +} + +static int winTextSetAppendAttrib(Ihandle* ih, const char* value) +{ + int len; + char* str; + if (!ih->handle) /* do not store the action before map */ + return 0; + if (!value) value = ""; + str = (char*)value; + if (ih->data->is_multiline) + { + if (ih->data->has_formatting) + str = iupStrToMac(str); + else + str = iupStrToDos(str); + } + + len = GetWindowTextLength(ih->handle)+1; + SendMessage(ih->handle, EM_SETSEL, (WPARAM)len, (LPARAM)len); + if (ih->data->is_multiline && ih->data->append_newline) + { + if (ih->data->has_formatting) + SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)"\r"); + else + SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)"\r\n"); + } + SendMessage(ih->handle, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)str); + + if (str != value) free(str); + return 0; +} + +static int winTextSetReadOnlyAttrib(Ihandle* ih, const char* value) +{ + SendMessage(ih->handle, EM_SETREADONLY, (WPARAM)iupStrBoolean(value), 0); + return 0; +} + +static char* winTextGetReadOnlyAttrib(Ihandle* ih) +{ + DWORD style = GetWindowLong(ih->handle, GWL_STYLE); + if (style & ES_READONLY) + return "YES"; + else + return "NO"; +} + +static int winTextSetTabSizeAttrib(Ihandle* ih, const char* value) +{ + int tabsize; + if (!ih->data->is_multiline) + return 0; + + iupStrToInt(value, &tabsize); + tabsize *= 4; + SendMessage(ih->handle, EM_SETTABSTOPS, (WPARAM)1L, (LPARAM)&tabsize); + iupdrvDisplayRedraw(ih); + return 1; +} + +static int winTextSetCaretAttrib(Ihandle* ih, const char* value) +{ + int pos = 1; + + if (!value) + return 0; + + if (ih->data->is_multiline) + { + int lin = 1, col = 1; + iupStrToIntInt(value, &lin, &col, ','); /* be permissive in SetCaret, do not abort if invalid */ + if (lin < 1) lin = 1; + if (col < 1) col = 1; + + pos = winTextSetLinColToPosition(ih, lin, col); + } + else + { + sscanf(value,"%i",&pos); + if (pos < 1) pos = 1; + pos--; /* IUP starts at 1 */ + } + + SendMessage(ih->handle, EM_SETSEL, (WPARAM)pos, (LPARAM)pos); + SendMessage(ih->handle, EM_SCROLLCARET, 0L, 0L); + + return 0; +} + +static char* winTextGetCaretAttrib(Ihandle* ih) +{ + int col, lin; + char* str; + + str = iupStrGetMemory(100); + + winTextGetCaret(ih, &lin, &col); + + if (ih->data->is_multiline) + sprintf(str, "%d,%d", lin, col); + else + sprintf(str, "%d", col); + + return str; +} + +static int winTextSetCaretPosAttrib(Ihandle* ih, const char* value) +{ + int pos = 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); /* be permissive in SetCaret, do not abort if invalid */ + if (pos < 0) pos = 0; + + if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + pos = winTextAddExtraChars(ih, pos); + + SendMessage(ih->handle, EM_SETSEL, (WPARAM)pos, (LPARAM)pos); + SendMessage(ih->handle, EM_SCROLLCARET, 0L, 0L); + + return 0; +} + +static char* winTextGetCaretPosAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(100); + int pos = winTextGetCaretPos(ih); + if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + pos = winTextRemoveExtraChars(ih, pos); + sprintf(str, "%d", pos); + return str; +} + +static int winTextSetScrollToAttrib(Ihandle* ih, const char* value) +{ + int lin = 1, col = 1; + + if (!value) + return 0; + + if (ih->data->is_multiline) + { + iupStrToIntInt(value, &lin, &col, ','); + if (lin < 1) lin = 1; + if (col < 1) col = 1; + } + else + { + sscanf(value,"%i",&col); + if (col < 1) col = 1; + } + + lin--; /* return to Windows referece */ + col--; + + if (ih->data->has_formatting) + SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)0, (LPARAM)lin); + else + SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)col, (LPARAM)lin); + + return 0; +} + +static int winTextSetScrollToPosAttrib(Ihandle* ih, const char* value) +{ + int lin, col, pos = 0; + + if (!value) + return 0; + + sscanf(value,"%i",&pos); + if (pos < 0) pos = 0; + + if (ih->data->is_multiline && !ih->data->has_formatting) /* when formatting or single line text uses only one char per line end */ + pos = winTextAddExtraChars(ih, pos); + + winTextGetLinColFromPosition(ih, pos, &lin, &col); + lin--; /* return to Windows referece */ + col--; + + if (ih->data->has_formatting) + SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)0, (LPARAM)lin); + else + SendMessage(ih->handle, EM_LINESCROLL, (WPARAM)col, (LPARAM)lin); + + return 0; +} + +static int winTextSetFilterAttrib(Ihandle *ih, const char *value) +{ + int style = 0; + + if (iupStrEqualNoCase(value, "LOWERCASE")) + { + if (ih->data->has_formatting) + { + SendMessage(ih->handle, EM_SETEDITSTYLE, SES_LOWERCASE, SES_LOWERCASE); + return 1; + } + style = ES_LOWERCASE; + } + else if (iupStrEqualNoCase(value, "NUMBER")) + style = ES_NUMBER; + else if (iupStrEqualNoCase(value, "UPPERCASE")) + { + if (ih->data->has_formatting) + { + SendMessage(ih->handle, EM_SETEDITSTYLE, SES_UPPERCASE, SES_UPPERCASE); + return 1; + } + style = ES_UPPERCASE; + } + + if (style) + iupwinMergeStyle(ih, ES_LOWERCASE|ES_NUMBER|ES_UPPERCASE, style); + + return 1; +} + +static int winTextSetClipboardAttrib(Ihandle *ih, const char *value) +{ + UINT msg = 0; + + if (iupStrEqualNoCase(value, "COPY")) + msg = WM_COPY; + else if (iupStrEqualNoCase(value, "CUT")) + msg = WM_CUT; + else if (iupStrEqualNoCase(value, "PASTE")) + msg = WM_PASTE; + else if (iupStrEqualNoCase(value, "CLEAR")) + msg = WM_CLEAR; + else if (iupStrEqualNoCase(value, "UNDO")) + msg = WM_UNDO; + else if (ih->data->has_formatting && iupStrEqualNoCase(value, "REDO")) + msg = EM_REDO; + + if (msg) + SendMessage(ih->handle, msg, 0, 0); + + return 0; +} + +static int winTextSetBgColorAttrib(Ihandle *ih, const char *value) +{ + if (ih->data->has_formatting) + { + unsigned char r, g, b; + if (iupStrToRGB(value, &r, &g, &b)) + { + COLORREF color; + color = RGB(r,g,b); + SendMessage(ih->handle, EM_SETBKGNDCOLOR, 0, (LPARAM)color); + } + } + return 1; +} + +static int winTextSetCueBannerAttrib(Ihandle *ih, const char *value) +{ + if (!ih->data->is_multiline && iupwin_comctl32ver6) + { + WCHAR* wstr = iupwinStrChar2Wide(value); + SendMessage(ih->handle, EM_SETCUEBANNER, (WPARAM)FALSE, (LPARAM)wstr); + free(wstr); + return 1; + } + return 0; +} + +static int winTextSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + int new_style; + + if (iupStrEqualNoCase(value, "ARIGHT")) + new_style = ES_RIGHT; + else if (iupStrEqualNoCase(value, "ACENTER")) + new_style = ES_CENTER; + else /* "ALEFT" */ + new_style = ES_LEFT; + + iupwinMergeStyle(ih, ES_LEFT|ES_CENTER|ES_RIGHT, new_style); + + return 1; +} + +static int winTextSetStandardFontAttrib(Ihandle* ih, const char* value) +{ + /* ignore the first call that is done in IupMap, + it is already done before calling iupTextUpdateFormatTags. */ + if (ih->data->has_formatting && iupAttribGet(ih, "_IUPWIN_IGNORE_FONT")) + { + iupAttribSetStr(ih, "_IUPWIN_IGNORE_FONT", NULL); + return 0; + } + return iupdrvSetStandardFontAttrib(ih, value); +} + +void iupdrvTextAddFormatTag(Ihandle* ih, Ihandle* formattag) +{ + int convert2twips, pixel2twips; + char *selection, *units; + PARAFORMAT2 paraformat; + CHARFORMAT2 charformat; + + /* one twip is 1/1440 inch */ + /* twip = (pixel*1440)/(pixel/inch) */ + pixel2twips = 1440/iupwinGetScreenRes(); + + /* default is PIXELS */ + convert2twips = pixel2twips; + units = iupAttribGet(formattag, "UNITS"); + if (units) + { + int val; + if (iupStrEqualNoCase(units, "TWIPS")) + convert2twips = 1; + else if (iupStrToInt(units, &val)) + convert2twips = val; + } + + selection = iupAttribGet(formattag, "SELECTION"); + if (selection) + { + /* In Windows, the format message use the current selection */ + winTextSetSelectionAttrib(ih, selection); + iupAttribSetStr(ih, "SELECTION", NULL); + } + else + { + char* selectionpos = iupAttribGet(formattag, "SELECTIONPOS"); + if (selectionpos) + { + /* In Windows, the format message use the current selection */ + winTextSetSelectionPosAttrib(ih, selectionpos); + iupAttribSetStr(ih, "SELECTIONPOS", NULL); + } + } + + if (iupAttribGet(formattag, "FONTSCALE") && !iupAttribGet(formattag, "FONTSIZE")) + iupAttribSetStr(formattag, "FONTSIZE", iupGetFontSizeAttrib(ih)); + + winTextParseParagraphFormat(formattag, ¶format, convert2twips); + if (paraformat.dwMask != 0) + SendMessage(ih->handle, EM_SETPARAFORMAT, 0, (LPARAM)¶format); + + winTextParseCharacterFormat(formattag, &charformat, pixel2twips); + if (charformat.dwMask != 0) + SendMessage(ih->handle, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&charformat); + + /* reset the selection, if changed here */ + if (selection) + winTextSetSelectionAttrib(ih, NULL); +} + +static int winTextSetRemoveFormattingAttrib(Ihandle* ih, const char* value) +{ + PARAFORMAT2 paraformat; + CHARFORMAT2 charformat; + COLORREF colorref; + int val; + + if (!ih->data->has_formatting) + return 0; + + ZeroMemory(¶format, sizeof(PARAFORMAT2)); + paraformat.cbSize = sizeof(PARAFORMAT2); + paraformat.dwMask = PFM_NUMBERING|PFM_STARTINDENT|PFM_RIGHTINDENT|PFM_OFFSET| + PFM_ALIGNMENT|PFM_SPACEBEFORE|PFM_SPACEAFTER|PFM_LINESPACING; + paraformat.wAlignment = PFA_LEFT; + + ZeroMemory(&charformat, sizeof(CHARFORMAT2)); + charformat.cbSize = sizeof(CHARFORMAT2); + charformat.dwMask = CFM_DISABLED|CFM_OFFSET|CFM_ITALIC|CFM_STRIKEOUT|CFM_PROTECTED| + CFM_UNDERLINETYPE|CFM_UNDERLINE|CFM_WEIGHT|CFM_FACE; + charformat.wWeight = FW_NORMAL; + strcpy(charformat.szFaceName, iupGetFontFaceAttrib(ih)); + + if (iupwinGetColorRef(ih, "FGCOLOR", &colorref)) + { + charformat.dwMask |= CFM_COLOR; + charformat.crTextColor = colorref; + } + + if (iupwinGetColorRef(ih, "BGCOLOR", &colorref)) + { + charformat.dwMask |= CFM_BACKCOLOR; + charformat.crBackColor = colorref; + } + + if (iupStrToInt(iupGetFontSizeAttrib(ih), &val)) + { + /* (1/1440 of an inch, or 1/20 of a printer's point) */ + charformat.dwMask |= CFM_SIZE; + if (val < 0) /* in pixels */ + { + int pixel2twips = 1440/iupwinGetScreenRes(); + charformat.yHeight = (-val)*pixel2twips; + } + else + charformat.yHeight = val*20; + } + + SendMessage(ih->handle, EM_SETPARAFORMAT, 0, (LPARAM)¶format); + SendMessage(ih->handle, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&charformat); + + (void)value; + return 0; +} + +static int winTextSetOverwriteAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->has_formatting) + return 0; + + if (iupAttribGetBoolean(ih, "OVERWRITE")) + { + if (!iupStrBoolean(value)) + SendMessage(ih->handle, WM_KEYDOWN, VK_INSERT, 0); /* toggle from ON to OFF */ + } + else + { + if (iupStrBoolean(value)) + SendMessage(ih->handle, WM_KEYDOWN, VK_INSERT, 0); /* toggle from OFF to ON */ + } + return 1; +} + + +static int winTextSetVisibleAttrib(Ihandle* ih, const char* value) +{ + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + if (hSpin) + ShowWindow(hSpin, iupStrBoolean(value)? SW_SHOWNORMAL: SW_HIDE); + + return iupBaseSetVisibleAttrib(ih, value); +} + +static void winTextCropSpinValue(HWND hSpin, int min, int max) +{ + /* refresh if internally cropped, but text still shows an invalid value */ + int pos = SendMessage(hSpin, UDM_GETPOS32, 0, 0); + if (pos <= min) + SendMessage(hSpin, UDM_SETPOS32, 0, min); + if (pos >= max) + SendMessage(hSpin, UDM_SETPOS32, 0, max); +} + +static int winTextSetSpinMinAttrib(Ihandle* ih, const char* value) +{ + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + if (hSpin) + { + int min; + if (iupStrToInt(value, &min)) + { + int max = iupAttribGetInt(ih, "SPINMAX"); + SendMessage(hSpin, UDM_SETRANGE32, min, max); + + winTextCropSpinValue(hSpin, min, max); + } + } + return 1; +} + +static int winTextSetSpinMaxAttrib(Ihandle* ih, const char* value) +{ + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + if (hSpin) + { + int max; + if (iupStrToInt(value, &max)) + { + int min = iupAttribGetInt(ih, "SPINMIN"); + SendMessage(hSpin, UDM_SETRANGE32, min, max); + + winTextCropSpinValue(hSpin, min, max); + } + } + return 1; +} + +static int winTextSetSpinIncAttrib(Ihandle* ih, const char* value) +{ + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + if (hSpin) + { + int inc; + if (iupStrToInt(value, &inc)) + { + UDACCEL paAccels[3]; + paAccels[0].nInc = inc; + paAccels[0].nSec = 0; + paAccels[1].nInc = inc*5; + paAccels[1].nSec = 2; + paAccels[2].nInc = inc*20; + paAccels[2].nSec = 5; + SendMessage(hSpin, UDM_SETACCEL, 3, (LPARAM)paAccels); + } + } + return 1; +} + +static int winTextSetSpinValueAttrib(Ihandle* ih, const char* value) +{ + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + if (hSpin) + { + int pos; + if (iupStrToInt(value, &pos)) + SendMessage(hSpin, UDM_SETPOS32, 0, pos); + } + return 1; +} + +static char* winTextGetSpinValueAttrib(Ihandle* ih) +{ + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + if (hSpin) + { + int pos = SendMessage(hSpin, UDM_GETPOS32, 0, 0); + char *str = iupStrGetMemory(50); + sprintf(str, "%d", pos); + return str; + } + return NULL; +} + + +/****************************************************************************************/ + + +static int winTextCtlColor(Ihandle* ih, HDC hdc, LRESULT *result) +{ + COLORREF cr; + + if (iupwinGetColorRef(ih, "FGCOLOR", &cr)) + SetTextColor(hdc, cr); + + if (iupwinGetColorRef(ih, "BGCOLOR", &cr)) + { + SetBkColor(hdc, cr); + SetDCBrushColor(hdc, cr); + *result = (LRESULT)GetStockObject(DC_BRUSH); + return 1; + } + return 0; +} + +static void winTextCallCaretCb(Ihandle* ih) +{ + int col, lin, pos; + + IFniii cb = (IFniii)IupGetCallback(ih, "CARET_CB"); + if (!cb) return; + + pos = winTextGetCaret(ih, &lin, &col); + + if (pos != ih->data->last_caret_pos) + { + ih->data->last_caret_pos = pos; + + cb(ih, lin, col, pos); + } +} + +static int winTextCallActionCb(Ihandle* ih, const char* insert_value, int key, int dir) +{ + int start, end, ret = 1; + char *value, *new_value; + + IFnis cb = (IFnis)IupGetCallback(ih, "ACTION"); + if (!cb && !ih->data->mask) + return 1; + + winTextGetSelection(ih, &start, &end); + + value = winTextGetValueAttrib(ih); + + if (value[0]==0) + new_value = iupStrDup(insert_value); + else if (insert_value) + new_value = iupStrInsert(value, insert_value, start, end); + else + { + new_value = value; + iupStrRemove(value, start, end, dir); + } + + if (!new_value) + return 0; /* abort */ + + if (ih->data->nc && (int)strlen(new_value) > ih->data->nc) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (ih->data->mask && iupMaskCheck(ih->data->mask, new_value)==0) + { + if (new_value != value) free(new_value); + return 0; /* abort */ + } + + if (cb) + { + int cb_ret = cb(ih, key, (char*)new_value); + if (cb_ret==IUP_IGNORE) + ret = 0; /* abort processing */ + else if (cb_ret==IUP_CLOSE) + { + IupExitLoop(); + ret = 0; /* abort processing */ + } + else if (cb_ret!=0 && key!=0 && + cb_ret != IUP_DEFAULT && cb_ret != IUP_CONTINUE) + { + WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB"); + CallWindowProc(oldProc, ih->handle, WM_CHAR, cb_ret, 0); /* replace key */ + ret = 0; /* abort processing */ + } + } + + if (new_value != value) free(new_value); + return ret; +} + +static int winTextSpinWmNotify(Ihandle* ih, NMHDR* msg_info, int *result) +{ + if (msg_info->code == UDN_DELTAPOS) + { + NMUPDOWN *updown = (NMUPDOWN*)msg_info; + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + int pos = updown->iPos+updown->iDelta; + int min, max; + SendMessage(hSpin, UDM_GETRANGE32, (WPARAM)&min, (LPARAM)&max); + if (pos>=min && pos<=max) + { + IFni cb = (IFni) IupGetCallback(ih, "SPIN_CB"); + if (cb) + { + int ret = cb(ih, pos); + if (ret == IUP_IGNORE) + { + *result = 1; + return 1; + } + } + } + } + + (void)result; + return 0; /* result not used */ +} + +static int winTextProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + int ret = 0; + + if (msg==WM_KEYDOWN) /* process K_ANY before text callbacks */ + { + ret = iupwinBaseProc(ih, msg, wp, lp, result); + if (ret) + { + *result = 0; + return 1; + } + } + + switch (msg) + { + case WM_CHAR: + { + if ((char)wp == '\b') + { + if (!winTextCallActionCb(ih, NULL, 0, -1)) + ret = 1; + } + else if ((char)wp == '\n' || (char)wp == '\r') + { + if (!ih->data->has_formatting && !(GetKeyState(VK_CONTROL) & 0x8000)) /* when formatting is processed in WM_KEYDOWN */ + { + char insert_value[2]; + insert_value[0] = '\n'; + insert_value[1] = 0; + + if (!winTextCallActionCb(ih, insert_value, wp, 1)) + ret = 1; + } + } + else if (!(GetKeyState(VK_CONTROL) & 0x8000 || + GetKeyState(VK_MENU) & 0x8000 || + GetKeyState(VK_LWIN) & 0x8000 || + GetKeyState(VK_RWIN) & 0x8000)) + { + char insert_value[2]; + insert_value[0] = (char)wp; + insert_value[1] = 0; + + if (!winTextCallActionCb(ih, insert_value, wp, 1)) + ret = 1; + } + + PostMessage(ih->handle, WM_CARET, 0, 0L); + + if (!ih->data->is_multiline && + (wp==VK_RETURN || wp==VK_ESCAPE || wp==VK_TAB)) /* the keys have the same definitions as the chars */ + ret = 1; /* abort default processing to avoid beep */ + + if (ih->data->is_multiline && + (wp=='\n' && (GetKeyState(VK_CONTROL) & 0x8000))) + ret = 1; /* abort default processing to avoid inserting a new line */ + + break; + } + case WM_KEYDOWN: + { + if (wp == VK_DELETE) /* Del does not generates a WM_CHAR */ + { + if (!winTextCallActionCb(ih, NULL, 0, 1)) + ret = 1; + } + else if (wp == VK_INSERT && ih->data->has_formatting) + { + if (iupAttribGetBoolean(ih, "OVERWRITE")) + iupAttribSetStr(ih, "OVERWRITE", "OFF"); /* toggle from ON to OFF */ + else + iupAttribSetStr(ih, "OVERWRITE", "ON"); /* toggle from OFF to ON */ + } + else if (wp == 'A' && GetKeyState(VK_CONTROL) & 0x8000) /* Ctrl+A = Select All */ + { + SendMessage(ih->handle, EM_SETSEL, (WPARAM)0, (LPARAM)-1); + } + else if (wp == VK_RETURN && ih->data->has_formatting && !(GetKeyState(VK_CONTROL) & 0x8000)) + { + char insert_value[2]; + insert_value[0] = '\n'; + insert_value[1] = 0; + + if (!winTextCallActionCb(ih, insert_value, '\n', 1)) + ret = 1; + } + + PostMessage(ih->handle, WM_CARET, 0, 0L); + + if (ret) /* if abort processing, then the result is 0 */ + { + *result = 0; + return 1; + } + else + return 0; /* already processed at the begining of this function */ + } + case WM_KEYUP: + { + PostMessage(ih->handle, WM_CARET, 0, 0L); + break; + } + case WM_CLEAR: + { + if (!winTextCallActionCb(ih, NULL, 0, 1)) + ret = 1; + + PostMessage(ih->handle, WM_CARET, 0, 0L); + break; + } + case WM_CUT: + { + if (!winTextCallActionCb(ih, NULL, 0, 1)) + ret = 1; + + PostMessage(ih->handle, WM_CARET, 0, 0L); + break; + } + case WM_PASTE: + { + if (IupGetCallback(ih,"ACTION") || ih->data->mask) /* test before to avoid alocate clipboard text memory */ + { + char* insert_value = iupwinGetClipboardText(ih); + if (insert_value) + { + if (!winTextCallActionCb(ih, insert_value, 0, 1)) + ret = 1; + free(insert_value); + } + } + + PostMessage(ih->handle, WM_CARET, 0, 0L); + break; + } + case WM_UNDO: + { + IFnis cb = (IFnis)IupGetCallback(ih, "ACTION"); + if (cb) + { + char* value; + WNDPROC oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_OLDPROC_CB"); + CallWindowProc(oldProc, ih->handle, WM_UNDO, 0, 0); + + value = winTextGetValueAttrib(ih); + cb(ih, 0, (char*)value); + + ret = 1; + } + + PostMessage(ih->handle, WM_CARET, 0, 0L); + break; + } + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + { + if (iupwinButtonDown(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + PostMessage(ih->handle, WM_CARET, 0, 0L); + break; + } + case WM_MBUTTONUP: + case WM_RBUTTONUP: + case WM_LBUTTONUP: + { + if (iupwinButtonUp(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + PostMessage(ih->handle, WM_CARET, 0, 0L); + break; + } + case WM_CARET: + { + winTextCallCaretCb(ih); + break; + } + case WM_MOUSEMOVE: + { + iupwinMouseMove(ih, msg, wp, lp); + break; + } + case WM_VSCROLL: + case WM_HSCROLL: + { + if (ih->data->has_formatting) + { + /* fix weird behavior when dialog has COMPOSITE=YES, + scrollbars are not updated when dragging */ + if (LOWORD(wp) == SB_THUMBTRACK) + SendMessage(ih->handle, EM_SHOWSCROLLBAR, msg==WM_VSCROLL? SB_VERT: SB_HORZ, TRUE); + } + break; + } + } + + if (ret) /* if abort processing, then the result is 0 */ + { + *result = 0; + return 1; + } + else + return iupwinBaseProc(ih, msg, wp, lp, result); +} + +static void winTextCreateSpin(Ihandle* ih) +{ + HWND hSpin; + DWORD dwStyle = WS_CHILD|UDS_ARROWKEYS|UDS_HOTTRACK|UDS_NOTHOUSANDS; + int serial = iupDialogGetChildId(ih); + + if (iupStrEqualNoCase(iupAttribGetStr(ih, "SPINALIGN"), "LEFT")) + dwStyle |= UDS_ALIGNLEFT; + else + dwStyle |= UDS_ALIGNRIGHT; + + if (iupAttribGetBoolean(ih, "SPINWRAP")) + dwStyle |= UDS_WRAP; + + if (iupAttribGetBoolean(ih, "SPINAUTO")) + dwStyle |= UDS_SETBUDDYINT; + + hSpin = CreateWindowEx(0, /* extended window style */ + UPDOWN_CLASS, /* window class */ + NULL, /* title */ + dwStyle, /* window style */ + 0, /* x-position */ + 0, /* y-position */ + 10, /* default width to avoid 0 */ + 10, /* default height to avoid 0 */ + GetParent(ih->handle), /* window parent */ + (HMENU)serial, /* child identifier */ + iupwin_hinstance, /* instance of app. */ + NULL); + + if (!hSpin) + return; + + iupwinHandleAdd(ih, hSpin); + + /* Process WM_NOTIFY */ + IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winTextSpinWmNotify); + + SendMessage(hSpin, UDM_SETBUDDY, (WPARAM)ih->handle, 0); + iupAttribSetStr(ih, "_IUPWIN_SPIN", (char*)hSpin); + + /* default values */ + SendMessage(hSpin, UDM_SETRANGE32, 0, 100); + SendMessage(hSpin, UDM_SETPOS32, 0, 0); +} + +static int winTextWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp) +{ + int cmd = HIWORD(wp); + switch (cmd) + { + case EN_CHANGE: + { + if (iupAttribGetStr(ih, "IUPWIN_IGNORECHANGE")) + return 0; + + iupBaseCallValueChangedCb(ih); + break; + } + } + + (void)lp; + return 0; /* not used */ +} + +static void winTextLayoutUpdateMethod(Ihandle* ih) +{ + HWND hSpin = (HWND)iupAttribGet(ih, "_IUPWIN_SPIN"); + if (hSpin) + { + if (iupStrEqualNoCase(iupAttribGetStr(ih, "SPINALIGN"), "LEFT")) + { + SetWindowPos(ih->handle, NULL, ih->x+ih->currentheight-1, ih->y, ih->currentwidth-ih->currentheight, ih->currentheight, + SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER); + + SetWindowPos(hSpin, NULL, ih->x, ih->y, ih->currentheight, ih->currentheight, + SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER); + } + else + { + SetWindowPos(ih->handle, NULL, ih->x, ih->y, ih->currentwidth-ih->currentheight, ih->currentheight, + SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER); + + SetWindowPos(hSpin, NULL, ih->x+ih->currentwidth-ih->currentheight-1, ih->y, ih->currentheight, ih->currentheight, + SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER); + } + } + else + iupdrvBaseLayoutUpdateMethod(ih); +} + +static int winTextMapMethod(Ihandle* ih) +{ + DWORD dwStyle = WS_CHILD, + dwExStyle = 0; + char* winclass = "EDIT", *value; + + if (!ih->parent) + return IUP_ERROR; + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + dwStyle |= WS_TABSTOP; + + if (ih->data->has_formatting) + { + /* enable richedit 3.0 */ + static HMODULE richedit = NULL; + if (!richedit) + richedit = LoadLibrary("Riched20.dll"); + if (!richedit) + return IUP_ERROR; + + winclass = RICHEDIT_CLASS; + } + + if (ih->data->is_multiline) + { + dwStyle |= ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN; + + if (iupAttribGetBoolean(ih, "WORDWRAP")) + { + ih->data->sb &= ~IUP_SB_HORIZ; /* must remove the horizontal scroolbar */ + /* and do not specify ES_AUTOHSCROLL, the control automatically wraps words */ + } + else + dwStyle |= ES_AUTOHSCROLL; + + if (ih->data->sb & IUP_SB_HORIZ) + dwStyle |= WS_HSCROLL; + if (ih->data->sb & IUP_SB_VERT) + dwStyle |= WS_VSCROLL; + + if (ih->data->has_formatting && ih->data->sb != IUP_SB_NONE) + { + if (!iupAttribGetBoolean(ih, "AUTOHIDE")) + dwStyle |= ES_DISABLENOSCROLL; + } + } + else + { + dwStyle |= ES_AUTOHSCROLL|ES_NOHIDESEL; + + if (iupAttribGetBoolean(ih, "PASSWORD")) + dwStyle |= ES_PASSWORD; + } + + value = iupAttribGet(ih, "ALIGNMENT"); + if (value) + { + if (iupStrEqualNoCase(value, "ARIGHT")) + dwStyle |= ES_RIGHT; + else if (iupStrEqualNoCase(value, "ACENTER")) + dwStyle |= ES_CENTER; + else /* default "ALEFT" */ + dwStyle |= ES_LEFT; + } + + if (iupAttribGetBoolean(ih, "BORDER")) + dwExStyle |= WS_EX_CLIENTEDGE; + + if (!iupwinCreateWindowEx(ih, winclass, dwExStyle, dwStyle)) + return IUP_ERROR; + + /* Process ACTION_CB and CARET_CB */ + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winTextProc); + + /* Process background color */ + IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winTextCtlColor); + + /* Process WM_COMMAND */ + IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winTextWmCommand); + + /* set defaults */ + SendMessage(ih->handle, EM_LIMITTEXT, 0, 0L); + { + int tabsize = 8*4; + SendMessage(ih->handle, EM_SETTABSTOPS, (WPARAM)1L, (LPARAM)&tabsize); + } + + if (!ih->data->is_multiline && iupAttribGetBoolean(ih, "SPIN")) + winTextCreateSpin(ih); + + /* configure for DRAG&DROP */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + if (ih->data->has_formatting) + { + SendMessage(ih->handle, EM_SETTEXTMODE, (WPARAM)(TM_RICHTEXT|TM_MULTILEVELUNDO|TM_SINGLECODEPAGE), 0); + SendMessage(ih->handle, EM_SETEVENTMASK, 0, ENM_CHANGE); + } + + if (ih->data->formattags) + { + /* must update FONT before updating the format during map */ + iupUpdateStandardFontAttrib(ih); + iupAttribSetStr(ih, "_IUPWIN_IGNORE_FONT", "1"); + + iupTextUpdateFormatTags(ih); + } + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)winTextConvertXYToPos); + + return IUP_NOERROR; +} + +void iupdrvTextInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winTextMapMethod; + ic->LayoutUpdate = winTextLayoutUpdateMethod; + + /* Driver Dependent Attribute functions */ + + iupClassRegisterAttribute(ic, "STANDARDFONT", NULL, winTextSetStandardFontAttrib, IUPAF_SAMEASSYSTEM, "DEFAULTFONT", IUPAF_NOT_MAPPED); + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, winTextSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "VISIBLE", iupBaseGetVisibleAttrib, winTextSetVisibleAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_NOT_MAPPED); /* usually black */ + + /* IupText only */ + iupClassRegisterAttribute(ic, "PADDING", iupTextGetPaddingAttrib, winTextSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "VALUE", winTextGetValueAttrib, winTextSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTEDTEXT", winTextGetSelectedTextAttrib, winTextSetSelectedTextAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTION", winTextGetSelectionAttrib, winTextSetSelectionAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTIONPOS", winTextGetSelectionPosAttrib, winTextSetSelectionPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARET", winTextGetCaretAttrib, winTextSetCaretAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CARETPOS", winTextGetCaretPosAttrib, winTextSetCaretPosAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INSERT", NULL, winTextSetInsertAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "APPEND", NULL, winTextSetAppendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "READONLY", winTextGetReadOnlyAttrib, winTextSetReadOnlyAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "NC", iupTextGetNCAttrib, winTextSetNCAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CLIPBOARD", NULL, winTextSetClipboardAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTO", NULL, winTextSetScrollToAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SCROLLTOPOS", NULL, winTextSetScrollToPosAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINMIN", NULL, winTextSetSpinMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINMAX", NULL, winTextSetSpinMaxAttrib, IUPAF_SAMEASSYSTEM, "100", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPININC", NULL, winTextSetSpinIncAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPINVALUE", winTextGetSpinValueAttrib, winTextSetSpinValueAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NO_INHERIT); + + /* IupText Windows and GTK only */ + iupClassRegisterAttribute(ic, "ADDFORMATTAG", NULL, iupTextSetAddFormatTagAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ADDFORMATTAG_HANDLE", NULL, iupTextSetAddFormatTagHandleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, winTextSetAlignmentAttrib, IUPAF_SAMEASSYSTEM, "ALEFT", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FORMATTING", iupTextGetFormattingAttrib, iupTextSetFormattingAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "OVERWRITE", NULL, winTextSetOverwriteAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "REMOVEFORMATTING", NULL, winTextSetRemoveFormattingAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABSIZE", NULL, winTextSetTabSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "PASSWORD", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + /* IupText Windows only */ + iupClassRegisterAttribute(ic, "CUEBANNER", NULL, winTextSetCueBannerAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FILTER", NULL, winTextSetFilterAttrib, NULL, NULL, IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_timer.c b/iup/src/win/iupwin_timer.c new file mode 100755 index 0000000..f2bb9c5 --- /dev/null +++ b/iup/src/win/iupwin_timer.c @@ -0,0 +1,88 @@ +/** \file + * \brief Timer for the Windows Driver. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_assert.h" +#include "iup_timer.h" + + +static Itable* wintimer_id_table = NULL; /* table indexed by ID containing Ihandle* address */ + +static void CALLBACK winTimerProc(HWND hwnd, UINT msg, UINT_PTR wid, DWORD time) +{ + Icallback cb; + Ihandle *ih; + + (void)time; + (void)msg; + (void)hwnd; + + ih = (Ihandle*)iupTableGet(wintimer_id_table, (char*)wid); + + if (!iupObjectCheck(ih)) /* control could be destroyed before timer callback */ + return; + + cb = IupGetCallback(ih, "ACTION_CB"); + if(cb) + { + if (cb(ih) == IUP_CLOSE) + IupExitLoop(); + } +} + +void iupdrvTimerRun(Ihandle *ih) +{ + unsigned int time_ms; + + if (ih->serial > 0) /* timer already started */ + return; + + time_ms = iupAttribGetInt(ih, "TIME"); + if (time_ms > 0) + { + ih->serial = SetTimer(NULL, 0, time_ms, (TIMERPROC)winTimerProc); + iupTableSet(wintimer_id_table, (const char*)ih->serial, ih, IUPTABLE_POINTER); + } +} + +void iupdrvTimerStop(Ihandle* ih) +{ + if (ih->serial > 0) + { + KillTimer(NULL, ih->serial); + iupTableRemove(wintimer_id_table, (const char*)ih->serial); + ih->serial = -1; + } +} + +static void winTimerRelease(Iclass* ic) +{ + (void)ic; + + if (wintimer_id_table) + { + iupTableDestroy(wintimer_id_table); + wintimer_id_table = NULL; + } +} + +void iupdrvTimerInitClass(Iclass* ic) +{ + ic->Release = winTimerRelease; + + if (!wintimer_id_table) + wintimer_id_table = iupTableCreate(IUPTABLE_POINTERINDEXED); +} diff --git a/iup/src/win/iupwin_tips.c b/iup/src/win/iupwin_tips.c new file mode 100755 index 0000000..f717ace --- /dev/null +++ b/iup/src/win/iupwin_tips.c @@ -0,0 +1,191 @@ +/** \file + * \brief Windows Driver TIPS management + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include + +#include "iup.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" + + +#ifndef TTM_POPUP /* it is defined only when _WIN32_WINNT >= 0x0501 */ +#define TTM_POPUP (WM_USER + 34) +#endif + +static HWND winTipsCreate(HWND hParent) +{ + RECT rect = {1,1,1,1}; + HWND tips_hwnd = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, (LPSTR) NULL, TTS_ALWAYSTIP, + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + hParent, (HMENU)NULL, iupwin_hinstance, NULL); + SendMessage(tips_hwnd, TTM_SETMAXTIPWIDTH, 0, (LPARAM)(INT)3000); + SendMessage(tips_hwnd, TTM_SETMARGIN, (WPARAM)0, (LPARAM)&rect); + return tips_hwnd; +} + +static int winTipsSendMessage(Ihandle* ih, HWND tips_hwnd, UINT msg) +{ + TOOLINFO ti; + ZeroMemory(&ti, sizeof(TOOLINFO)); + ti.cbSize = sizeof(TOOLINFO); + ti.uFlags = TTF_SUBCLASS; + ti.hinst = iupwin_hinstance; + ti.uId = 0; + ti.hwnd = ih->handle; + ti.lpszText = LPSTR_TEXTCALLBACK; + ti.rect.right = 3000; + ti.rect.bottom = 3000; + + return SendMessage(tips_hwnd, msg, 0, (LPARAM)&ti); +} + +int iupdrvBaseSetTipAttrib(Ihandle* ih, const char* value) +{ + HWND tips_hwnd = (HWND)iupAttribGet(ih, "_IUPWIN_TIPSWIN"); + if (!tips_hwnd) + { + tips_hwnd = winTipsCreate(ih->handle); + iupAttribSetStr(ih, "_IUPWIN_TIPSWIN", (char*)tips_hwnd); + iupwinHandleAdd(ih, tips_hwnd); + } + + if (value) + winTipsSendMessage(ih, tips_hwnd, TTM_ADDTOOL); + else + winTipsSendMessage(ih, tips_hwnd, TTM_DELTOOL); + + return 1; +} + +int iupdrvBaseSetTipVisibleAttrib(Ihandle* ih, const char* value) +{ + HWND tips_hwnd = (HWND)iupAttribGet(ih, "_IUPWIN_TIPSWIN"); + if (!tips_hwnd) + return 0; + + /* must use IupGetAttribute to use inheritance */ + if (!IupGetAttribute(ih, "TIP")) + return 0; + + if (iupStrBoolean(value)) + SendMessage(tips_hwnd, TTM_POPUP, 0, 0); /* XP Only */ + else + SendMessage(tips_hwnd, TTM_POP, 0, 0); + + return 0; +} + +void iupwinTipsGetDispInfo(LPARAM lp) +{ + COLORREF color, tip_color; + NMTTDISPINFO* tips_info; + Ihandle* ih; + HWND tips_hwnd; + char* value; + + if (!lp) return; + + tips_info = (NMTTDISPINFO*)lp; + ih = iupwinHandleGet(tips_info->hdr.hwndFrom); /* hwndFrom is the tooltip window */ + if (!ih) return; + + tips_hwnd = (HWND)iupAttribGet(ih, "_IUPWIN_TIPSWIN"); + if (tips_hwnd != tips_info->hdr.hwndFrom) return; + + tips_info->hinst = NULL; + tips_info->lpszText = IupGetAttribute(ih, "TIP"); /* must use IupGetAttribute to use inheritance */ + + { + HFONT hfont; + value = iupAttribGetStr(ih, "TIPFONT"); + if (value) + { + if (iupStrEqualNoCase(value, "SYSTEM")) + hfont = NULL; + else + hfont = iupwinGetHFont(value); + } + else + hfont = (HFONT)iupwinGetHFontAttrib(ih); + + if (hfont) + { + HFONT tip_hfont = (HFONT)SendMessage(tips_hwnd, WM_GETFONT, 0, 0); + if (tip_hfont != hfont) + SendMessage(tips_hwnd, WM_SETFONT, (WPARAM)hfont, MAKELPARAM(TRUE,0)); + } + } + + iupwinGetColorRef(ih, "TIPBGCOLOR", &color); + tip_color = (COLORREF)SendMessage(tips_hwnd, TTM_GETTIPBKCOLOR, 0, 0); + if (color != tip_color) + SendMessage(tips_hwnd, TTM_SETTIPBKCOLOR, (WPARAM)color, 0); + + iupwinGetColorRef(ih, "TIPFGCOLOR", &color); + tip_color = (COLORREF)SendMessage(tips_hwnd, TTM_GETTIPTEXTCOLOR, 0, 0); + if (color != tip_color) + SendMessage(tips_hwnd, TTM_SETTIPTEXTCOLOR, (WPARAM)color, 0); + + { + int ballon = IupGetInt(ih, "TIPBALLON"); /* must use IupGetInt to use inheritance */ + DWORD style = GetWindowLong(tips_hwnd, GWL_STYLE); + int tip_ballon = style & TTS_BALLOON? 1: 0; + if (tip_ballon != ballon) + { + if (ballon) + style |= TTS_BALLOON; + else + style &= ~TTS_BALLOON; + SetWindowLong(tips_hwnd, GWL_STYLE, style); + } + + if (ballon) + { + char* ballon_title = IupGetAttribute(ih, "TIPBALLONTITLE"); /* must use IupGetAttribute to use inheritance */ + int ballon_icon = IupGetInt(ih, "TIPBALLONTITLEICON"); /* must use IupGetInt to use inheritance */ + SendMessage(tips_hwnd, TTM_SETTITLEA, ballon_icon, (LPARAM)ballon_title); + } + else + SendMessage(tips_hwnd, TTM_SETTITLEA, 0, 0); + } + + { + int delay = IupGetInt(ih, "TIPDELAY"); /* must use IupGetInt to use inheritance */ + int tip_delay = SendMessage(tips_hwnd, TTM_GETDELAYTIME, TTDT_AUTOPOP, 0); + if (delay != tip_delay) + SendMessage(tips_hwnd, TTM_SETDELAYTIME, TTDT_AUTOPOP, (LPARAM)MAKELONG(delay, 0)); + } + + { + TOOLINFO ti; + + ZeroMemory(&ti, sizeof(TOOLINFO)); + ti.cbSize = sizeof(TOOLINFO); + ti.uId = 0; + ti.hwnd = ih->handle; + + value = iupAttribGet(ih, "TIPRECT"); + if (value) + { + int x1, x2, y1, y2; + sscanf(value, "%d %d %d %d", &x1, &y1, &x2, &y2); + ti.rect.left = x1; ti.rect.right = x2; + ti.rect.top = y1; ti.rect.bottom = y2; + } + else + GetClientRect(ih->handle, &ti.rect); + + SendMessage(tips_hwnd, TTM_NEWTOOLRECT, 0, (LPARAM)&ti); + } +} diff --git a/iup/src/win/iupwin_toggle.c b/iup/src/win/iupwin_toggle.c new file mode 100755 index 0000000..fcaa438 --- /dev/null +++ b/iup/src/win/iupwin_toggle.c @@ -0,0 +1,693 @@ +/** \file + * \brief Toggle Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_toggle.h" +#include "iup_drv.h" +#include "iup_image.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" + + +#ifndef CDIS_SHOWKEYBOARDCUES +#define CDIS_SHOWKEYBOARDCUES 0x0200 /* it is defined only when _WIN32_WINNT >= 0x0501 */ +#endif + + +void iupdrvToggleAddCheckBox(int *x, int *y) +{ + (*x) += 16+6; + if ((*y) < 16) (*y) = 16; /* minimum height */ +} + +static int winToggleIsActive(Ihandle* ih) +{ + return iupAttribGetInt(ih, "_IUPWIN_ACTIVE"); +} + +static void winToggleSetBitmap(Ihandle* ih, const char* name, int make_inactive) +{ + if (name) + { + HBITMAP bitmap = iupImageGetImage(name, ih, make_inactive); + SendMessage(ih->handle, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)bitmap); + } + else + SendMessage(ih->handle, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)NULL); /* if not defined */ +} + +static void winToggleUpdateImage(Ihandle* ih, int active, int check) +{ + /* called only when (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6) */ + char* name; + + if (!active) + { + name = iupAttribGet(ih, "IMINACTIVE"); + if (name) + winToggleSetBitmap(ih, name, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + name = iupAttribGet(ih, "IMAGE"); + winToggleSetBitmap(ih, name, 1); /* make_inactive */ + } + } + else + { + /* must restore the normal image */ + if (check) + { + name = iupAttribGet(ih, "IMPRESS"); + if (name) + winToggleSetBitmap(ih, name, 0); + else + { + /* if not defined then automaticaly create one based on IMAGE */ + name = iupAttribGet(ih, "IMAGE"); + winToggleSetBitmap(ih, name, 0); + } + } + else + { + name = iupAttribGet(ih, "IMAGE"); + if (name) + winToggleSetBitmap(ih, name, 0); + } + } +} + +static void winToggleGetAlignment(Ihandle* ih, int *horiz_alignment, int *vert_alignment) +{ + char value1[30]="", value2[30]=""; + + iupStrToStrStr(iupAttribGetStr(ih, "ALIGNMENT"), value1, value2, ':'); + + if (iupStrEqualNoCase(value1, "ARIGHT")) + *horiz_alignment = IUP_ALIGN_ARIGHT; + else if (iupStrEqualNoCase(value1, "ALEFT")) + *horiz_alignment = IUP_ALIGN_ALEFT; + else /* "ACENTER" */ + *horiz_alignment = IUP_ALIGN_ACENTER; + + if (iupStrEqualNoCase(value2, "ABOTTOM")) + *vert_alignment = IUP_ALIGN_ABOTTOM; + else if (iupStrEqualNoCase(value2, "ATOP")) + *vert_alignment = IUP_ALIGN_ATOP; + else /* "ACENTER" */ + *vert_alignment = IUP_ALIGN_ACENTER; +} + +static void winToggleDrawImage(Ihandle* ih, HDC hDC, int rect_width, int rect_height, int border, UINT itemState) +{ + int xpad = ih->data->horiz_padding + border, + ypad = ih->data->vert_padding + border; + int horiz_alignment, vert_alignment; + int x, y, width, height, bpp, shift = 1; + HBITMAP hBitmap, hMask = NULL; + char *name; + int make_inactive = 0; + + if (itemState & ODS_DISABLED) + { + name = iupAttribGet(ih, "IMINACTIVE"); + if (!name) + { + name = iupAttribGet(ih, "IMAGE"); + make_inactive = 1; + } + } + else + { + name = iupAttribGet(ih, "IMPRESS"); + if (itemState & ODS_SELECTED && name) + shift = 0; + else + name = iupAttribGet(ih, "IMAGE"); + } + + hBitmap = iupImageGetImage(name, ih, make_inactive); + if (!hBitmap) + return; + + /* must use this info, since image can be a driver image loaded from resources */ + iupdrvImageGetInfo(hBitmap, &width, &height, &bpp); + + winToggleGetAlignment(ih, &horiz_alignment, &vert_alignment); + if (horiz_alignment == IUP_ALIGN_ARIGHT) + x = rect_width - (width + 2*xpad); + else if (horiz_alignment == IUP_ALIGN_ACENTER) + x = (rect_width - (width + 2*xpad))/2; + else /* ALEFT */ + x = 0; + + if (vert_alignment == IUP_ALIGN_ABOTTOM) + y = rect_height - (height + 2*ypad); + else if (vert_alignment == IUP_ALIGN_ATOP) + y = 0; + else /* ACENTER */ + y = (rect_height - (height + 2*ypad))/2; + + x += xpad; + y += ypad; + + if (itemState & ODS_SELECTED && !iupwin_comctl32ver6 && shift) + { + x++; + y++; + } + + if (bpp == 8) + hMask = iupdrvImageCreateMask(IupGetHandle(name)); + + iupwinDrawBitmap(hDC, hBitmap, hMask, x, y, width, height, bpp); + + if (hMask) + DeleteObject(hMask); +} + +static void winToggleDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem) +{ + int width, height, border = 4, check; + HDC hDC; + iupwinBitmapDC bmpDC; + + width = drawitem->rcItem.right - drawitem->rcItem.left; + height = drawitem->rcItem.bottom - drawitem->rcItem.top; + + hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, width, height); + + iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem); + + check = SendMessage(ih->handle, BM_GETCHECK, 0, 0L); + if (check) + drawitem->itemState |= ODS_SELECTED; + else + drawitem->itemState |= ODS_DEFAULT; /* use default mark for NOT checked */ + + iupwinDrawButtonBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState); + + winToggleDrawImage(ih, hDC, width, height, border, drawitem->itemState); + + if (drawitem->itemState & ODS_FOCUS) + { + border--; + iupdrvDrawFocusRect(ih, hDC, border, border, width-2*border, height-2*border); + } + + iupwinDrawDestroyBitmapDC(&bmpDC); +} + + +/***********************************************************************************************/ + + +static int winToggleSetImageAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (value != iupAttribGet(ih, "IMAGE")) + iupAttribSetStr(ih, "IMAGE", (char*)value); + + if (iupwin_comctl32ver6) + iupdrvDisplayRedraw(ih); + else + { + int check = SendMessage(ih->handle, BM_GETCHECK, 0L, 0L); + winToggleUpdateImage(ih, winToggleIsActive(ih), check); + } + return 1; + } + else + return 0; +} + +static int winToggleSetImInactiveAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (value != iupAttribGet(ih, "IMINACTIVE")) + iupAttribSetStr(ih, "IMINACTIVE", (char*)value); + + if (iupwin_comctl32ver6) + iupdrvDisplayRedraw(ih); + else + { + int check = SendMessage(ih->handle, BM_GETCHECK, 0L, 0L); + winToggleUpdateImage(ih, winToggleIsActive(ih), check); + } + return 1; + } + else + return 0; +} + +static int winToggleSetImPressAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (value != iupAttribGet(ih, "IMPRESS")) + iupAttribSetStr(ih, "IMPRESS", (char*)value); + + if (iupwin_comctl32ver6) + iupdrvDisplayRedraw(ih); + else + { + int check = SendMessage(ih->handle, BM_GETCHECK, 0L, 0L); + winToggleUpdateImage(ih, winToggleIsActive(ih), check); + } + return 1; + } + else + return 0; +} + +static int winToggleSetValueAttrib(Ihandle* ih, const char* value) +{ + Ihandle *radio; + int check; + + if (iupStrEqualNoCase(value,"NOTDEF")) + check = BST_INDETERMINATE; + else if (iupStrBoolean(value)) + check = BST_CHECKED; + else + check = BST_UNCHECKED; + + /* This is necessary because Windows does not handle the radio state + when a toggle is programatically changed. */ + radio = iupRadioFindToggleParent(ih); + if (radio) + { + int oldcheck = (int)SendMessage(ih->handle, BM_GETCHECK, 0, 0L); + + Ihandle* last_tg = (Ihandle*)iupAttribGet(radio, "_IUPWIN_LASTTOGGLE"); + if (check) + { + if (iupObjectCheck(last_tg) && last_tg != ih) + SendMessage(last_tg->handle, BM_SETCHECK, BST_UNCHECKED, 0L); + iupAttribSetStr(radio, "_IUPWIN_LASTTOGGLE", (char*)ih); + } + + if (last_tg != ih && oldcheck != check) + SendMessage(ih->handle, BM_SETCHECK, check, 0L); + } + else + SendMessage(ih->handle, BM_SETCHECK, check, 0L); + + if (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6) + winToggleUpdateImage(ih, winToggleIsActive(ih), check); + + return 0; +} + +static char* winToggleGetValueAttrib(Ihandle* ih) +{ + int check = (int)SendMessage(ih->handle, BM_GETCHECK, 0, 0L); + if (check == BST_INDETERMINATE) + return "NOTDEF"; + else if (check == BST_CHECKED) + return "ON"; + else + return "OFF"; +} + +static int winToggleSetActiveAttrib(Ihandle* ih, const char* value) +{ + /* update the inactive image if necessary */ + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (iupwin_comctl32ver6) + { + iupBaseSetActiveAttrib(ih, value); + iupdrvDisplayRedraw(ih); + return 0; + } + else + { + int active = iupStrBoolean(value); + int check = SendMessage(ih->handle, BM_GETCHECK, 0, 0L); + if (active) + iupAttribSetStr(ih, "_IUPWIN_ACTIVE", "YES"); + else + iupAttribSetStr(ih, "_IUPWIN_ACTIVE", "NO"); + winToggleUpdateImage(ih, active, check); + return 0; + } + } + + return iupBaseSetActiveAttrib(ih, value); +} + +static char* winToggleGetActiveAttrib(Ihandle* ih) +{ + if (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6) + return iupAttribGet(ih, "_IUPWIN_ACTIVE"); + else + return iupBaseGetActiveAttrib(ih); +} + +static int winToggleSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->type == IUP_TOGGLE_TEXT) + { + if (!value) + value = ""; + SetWindowText(ih->handle, value); + } + return 0; +} + +static int winToggleSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + + if (ih->handle && iupwin_comctl32ver6 && ih->data->type == IUP_TOGGLE_IMAGE) + iupdrvDisplayRedraw(ih); + + return 0; +} + +static int winToggleSetBgColorAttrib(Ihandle* ih, const char* value) +{ + (void)value; + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + /* update internal image cache for controls that have the IMAGE attribute */ + iupAttribSetStr(ih, "BGCOLOR", value); + iupImageUpdateParent(ih); + iupdrvDisplayRedraw(ih); + } + return 1; +} + +static char* winToggleGetBgColorAttrib(Ihandle* ih) +{ + /* the most important use of this is to provide + the correct background for images */ + if (iupwin_comctl32ver6 && ih->data->type == IUP_TOGGLE_IMAGE) + { + COLORREF cr; + if (iupwinDrawGetThemeButtonBgColor(ih->handle, &cr)) + { + char* str = iupStrGetMemory(20); + sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr)); + return str; + } + } + + if (ih->data->type == IUP_TOGGLE_TEXT) + return iupBaseNativeParentGetBgColorAttrib(ih); + else + return IupGetGlobal("DLGBGCOLOR"); +} + + +/****************************************************************************************/ + + +static int winToggleCtlColor(Ihandle* ih, HDC hdc, LRESULT *result) +{ + COLORREF cr; + + SetBkMode(hdc, TRANSPARENT); + + if (iupwinGetColorRef(ih, "FGCOLOR", &cr)) + SetTextColor(hdc, cr); + + if (iupwinGetParentBgColor(ih, &cr)) + { + SetDCBrushColor(hdc, cr); + *result = (LRESULT)GetStockObject(DC_BRUSH); + return 1; + } + return 0; +} + +static int winToggleWmNotify(Ihandle* ih, NMHDR* msg_info, int *result) +{ + if (msg_info->code == NM_CUSTOMDRAW) + { + /* called only when iupwin_comctl32ver6 AND (ih->data->type==IUP_TOGGLE_IMAGE) */ + NMCUSTOMDRAW *customdraw = (NMCUSTOMDRAW*)msg_info; + + if (customdraw->dwDrawStage==CDDS_PREERASE) + { + DRAWITEMSTRUCT drawitem; + drawitem.itemState = 0; + + if (customdraw->uItemState & CDIS_DISABLED) + drawitem.itemState |= ODS_DISABLED; + else if (customdraw->uItemState & CDIS_SELECTED) + drawitem.itemState |= ODS_SELECTED; + else if (customdraw->uItemState & CDIS_HOT) + drawitem.itemState |= ODS_HOTLIGHT; + else if (customdraw->uItemState & CDIS_DEFAULT) + drawitem.itemState |= ODS_DEFAULT; + + if (customdraw->uItemState & CDIS_FOCUS && (customdraw->uItemState & CDIS_SHOWKEYBOARDCUES)) + drawitem.itemState |= ODS_FOCUS; + + drawitem.hDC = customdraw->hdc; + drawitem.rcItem = customdraw->rc; + + winToggleDrawItem(ih, (void*)&drawitem); /* Simulate a WM_DRAWITEM */ + + *result = CDRF_SKIPDEFAULT; + return 1; + } + } + + return 0; /* result not used */ +} + +static int winToggleProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + (void)lp; + (void)wp; + + switch (msg) + { + case WM_MOUSEACTIVATE: + if (!winToggleIsActive(ih)) + { + *result = MA_NOACTIVATEANDEAT; + return 1; + } + break; + case WM_LBUTTONDOWN: + case WM_LBUTTONUP: + case WM_ACTIVATE: + case WM_SETFOCUS: + if (!winToggleIsActive(ih)) + { + *result = 0; + return 1; + } + break; + } + + if (msg == WM_LBUTTONDOWN) + winToggleUpdateImage(ih, 1, 1); + else if (msg == WM_LBUTTONUP) + winToggleUpdateImage(ih, 1, 0); + + return iupwinBaseProc(ih, msg, wp, lp, result); +} + +static int winToggleWmCommand(Ihandle* ih, WPARAM wp, LPARAM lp) +{ + (void)lp; + + switch (HIWORD(wp)) + { + case BN_DOUBLECLICKED: + case BN_CLICKED: + { + Ihandle *radio; + IFni cb; + int check = SendMessage(ih->handle, BM_GETCHECK, 0, 0L); + + if (ih->data->type == IUP_TOGGLE_IMAGE && !iupwin_comctl32ver6) + { + int active = winToggleIsActive(ih); + winToggleUpdateImage(ih, active, check); + if (!active) + return 0; + } + + radio = iupRadioFindToggleParent(ih); + if (radio) + { + /* This is necessary because Windows does not send a message + when a toggle is unchecked in a Radio. + Also if the toggle is already checked in a radio, + a click will call the callback again. */ + + Ihandle* last_tg = (Ihandle*)iupAttribGet(radio, "_IUPWIN_LASTTOGGLE"); + if (iupObjectCheck(last_tg) && last_tg != ih) + { + /* uncheck last toggle */ + SendMessage(last_tg->handle, BM_SETCHECK, BST_UNCHECKED, 0L); + + cb = (IFni) IupGetCallback(last_tg, "ACTION"); + if (cb && cb(last_tg, 0) == IUP_CLOSE) + IupExitLoop(); + + iupBaseCallValueChangedCb(last_tg); + } + iupAttribSetStr(radio, "_IUPWIN_LASTTOGGLE", (char*)ih); + + if (last_tg != ih) + { + /* check new toggle */ + SendMessage(ih->handle, BM_SETCHECK, BST_CHECKED, 0L); + + cb = (IFni)IupGetCallback(ih, "ACTION"); + if (cb && cb (ih, 1) == IUP_CLOSE) + IupExitLoop(); + + iupBaseCallValueChangedCb(ih); + } + } + else + { + if (check == BST_INDETERMINATE) + check = -1; + + cb = (IFni)IupGetCallback(ih, "ACTION"); + if (cb && cb (ih, check) == IUP_CLOSE) + IupExitLoop(); + + iupBaseCallValueChangedCb(ih); + } + } + } + + + return 0; /* not used */ +} + +static int winToggleMapMethod(Ihandle* ih) +{ + Ihandle* radio = iupRadioFindToggleParent(ih); + char* value; + DWORD dwStyle = WS_CHILD | + BS_NOTIFY; /* necessary because of the base messages */ + + if (!ih->parent) + return IUP_ERROR; + + if (radio) + ih->data->radio = 1; + + value = iupAttribGet(ih, "IMAGE"); + if (value) + { + ih->data->type = IUP_TOGGLE_IMAGE; + dwStyle |= BS_BITMAP|BS_PUSHLIKE; + } + else + { + ih->data->type = IUP_TOGGLE_TEXT; + dwStyle |= BS_TEXT|BS_MULTILINE; + + if (iupAttribGetBoolean(ih, "RIGHTBUTTON")) + dwStyle |= BS_RIGHTBUTTON; + } + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + dwStyle |= WS_TABSTOP; + + if (radio) + { + dwStyle |= BS_RADIOBUTTON; + + if (!iupAttribGet(radio, "_IUPWIN_LASTTOGGLE")) + { + /* this is the first toggle in the radio, and the last toggle with VALUE=ON */ + iupAttribSetStr(ih, "VALUE","ON"); + } + } + else + { + if (ih->data->type == IUP_TOGGLE_TEXT && iupAttribGetBoolean(ih, "3STATE")) + dwStyle |= BS_AUTO3STATE; + else + dwStyle |= BS_AUTOCHECKBOX; + } + + if (!iupwinCreateWindowEx(ih, "BUTTON", 0, dwStyle)) + return IUP_ERROR; + + /* Process WM_COMMAND */ + IupSetCallback(ih, "_IUPWIN_COMMAND_CB", (Icallback)winToggleWmCommand); + + /* Process background color */ + IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winToggleCtlColor); + + if (ih->data->type == IUP_TOGGLE_IMAGE) + { + if (iupwin_comctl32ver6) + IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winToggleWmNotify); /* Process WM_NOTIFY */ + else + { + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winToggleProc); + iupAttribSetStr(ih, "_IUPWIN_ACTIVE", "YES"); + } + } + + return IUP_NOERROR; +} + +void iupdrvToggleInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winToggleMapMethod; + + /* Driver Dependent Attribute functions */ + + /* Overwrite Visual */ + iupClassRegisterAttribute(ic, "ACTIVE", winToggleGetActiveAttrib, winToggleSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", winToggleGetBgColorAttrib, winToggleSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "DLGBGCOLOR", IUPAF_DEFAULT); + + /* Special */ + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, NULL, "DLGFGCOLOR", NULL, IUPAF_NOT_MAPPED); /* force the new default value */ + iupClassRegisterAttribute(ic, "TITLE", iupdrvBaseGetTitleAttrib, winToggleSetTitleAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupToggle only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", NULL, NULL, IUPAF_SAMEASSYSTEM, "ACENTER:ACENTER", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE", NULL, winToggleSetImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMINACTIVE", NULL, winToggleSetImInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMPRESS", NULL, winToggleSetImPressAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", winToggleGetValueAttrib, winToggleSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PADDING", iupToggleGetPaddingAttrib, winToggleSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + + /* IupToggle Windows only */ + iupClassRegisterAttribute(ic, "RIGHTBUTTON", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); + + /* necessary because it uses an old HBITMAP solution when NOT using styles */ + if (!iupwin_comctl32ver6) /* Used by iupdrvImageCreateImage */ + iupClassRegisterAttribute(ic, "FLAT_ALPHA", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_tree.c b/iup/src/win/iupwin_tree.c new file mode 100755 index 0000000..e6877dc --- /dev/null +++ b/iup/src/win/iupwin_tree.c @@ -0,0 +1,2542 @@ +/** \file + * \brief Tree Control + * + * See Copyright Notice in iup.h + */ + +#undef NOTREEVIEW +#include +#include + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_tree.h" +#include "iup_image.h" +#include "iup_array.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" +#include "iupwin_info.h" + +typedef struct _winTreeItemData +{ + COLORREF color; + unsigned char kind; + void* userdata; + HFONT hFont; + short image; + short image_expanded; +} winTreeItemData; + +#ifndef TVN_ITEMCHANGING /* Vista Only */ +typedef struct tagNMTVITEMCHANGE { + NMHDR hdr; + UINT uChanged; + HTREEITEM hItem; + UINT uStateNew; + UINT uStateOld; + LPARAM lParam; +} NMTVITEMCHANGE; +#define TVN_ITEMCHANGINGA (TVN_FIRST-16) +#define TVN_ITEMCHANGINGW (TVN_FIRST-17) +#endif + +static void winTreeSetFocusNode(Ihandle* ih, HTREEITEM hItem); +typedef int (*winTreeNodeFunc)(Ihandle* ih, HTREEITEM hItem, void* userdata); + +static int winTreeForEach(Ihandle* ih, HTREEITEM hItem, winTreeNodeFunc func, void* userdata) +{ + HTREEITEM hItemChild; + + if (!hItem) + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + + while(hItem != NULL) + { + if (!func(ih, hItem, userdata)) + return 0; + + hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + if (hItemChild) + { + /* Recursively traverse child items */ + if (!winTreeForEach(ih, hItemChild, func, userdata)) + return 0; + } + + /* Go to next sibling item */ + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); + } + + return 1; +} + +/*****************************************************************************/ +/* FINDING ITEMS */ +/*****************************************************************************/ +static HTREEITEM winTreeFindNodeID(Ihandle* ih, HTREEITEM hItem, HTREEITEM hNode) +{ + TVITEM item; + winTreeItemData* itemData; + + while(hItem != NULL) + { + /* ID control to traverse items */ + ih->data->id_control++; + + /* StateID founded! */ + if(hItem == hNode) + return hItem; + + /* Get hItem attributes */ + item.hItem = hItem; + item.mask = TVIF_HANDLE|TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + /* Check whether we have child items */ + if (itemData->kind == ITREE_BRANCH) + { + /* Recursively traverse child items */ + HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + hItemChild = winTreeFindNodeID(ih, hItemChild, hNode); + + /* StateID founded! */ + if(hItemChild) + return hItemChild; + } + /* Go to next sibling item */ + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); + } + + return NULL; +} + +static int winTreeGetNodeId(Ihandle* ih, HTREEITEM hItem) +{ + HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + ih->data->id_control = -1; + if (winTreeFindNodeID(ih, hItemRoot, hItem)) + return ih->data->id_control; + else + return -1; +} + +static HTREEITEM winTreeFindUserDataID(Ihandle* ih, HTREEITEM hItem, void* userdata) +{ + TVITEM item; + winTreeItemData* itemData; + + while(hItem != NULL) + { + /* ID control to traverse items */ + ih->data->id_control++; + + /* Get hItem attributes */ + item.hItem = hItem; + item.mask = TVIF_HANDLE|TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + /* userdata founded! */ + if(itemData->userdata == userdata) + return hItem; + + /* Check whether we have child items */ + if (itemData->kind == ITREE_BRANCH) + { + /* Recursively traverse child items */ + HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + hItemChild = winTreeFindUserDataID(ih, hItemChild, userdata); + + /* userdata founded! */ + if (hItemChild) + return hItemChild; + } + + /* Go to next sibling item */ + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); + } + + return NULL; +} + +static int winTreeGetUserDataId(Ihandle* ih, void* userdata) +{ + HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + ih->data->id_control = -1; + if (winTreeFindUserDataID(ih, hItemRoot, userdata)) + return ih->data->id_control; + else + return -1; +} + +static HTREEITEM winTreeFindNodeFromID(Ihandle* ih, HTREEITEM hItem) +{ + TVITEM item; + winTreeItemData* itemData; + + while(hItem != NULL) + { + /* ID control to traverse items */ + ih->data->id_control--; + + /* StateID founded! */ + if(ih->data->id_control < 0) + return hItem; + + /* Get hItem attributes */ + item.hItem = hItem; + item.mask = TVIF_HANDLE|TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + /* Check whether we have child items */ + if (itemData->kind == ITREE_BRANCH) + { + /* Recursively traverse child items */ + HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + hItemChild = winTreeFindNodeFromID(ih, hItemChild); + + /* StateID founded! */ + if(ih->data->id_control < 0) + return hItemChild; + } + + /* Go to next sibling item */ + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); + } + + return hItem; +} + +static HTREEITEM winTreeFindNodeFromString(Ihandle* ih, const char* name_id) +{ + if (name_id[0]) + { + HTREEITEM hRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + iupStrToInt(name_id, &ih->data->id_control); + return winTreeFindNodeFromID(ih, hRoot); + } + else + return (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CARET, 0); +} + +/* Recursively, find a new brother for the item + that will have its depth changed. Returns the new brother. */ +static HTREEITEM winTreeFindNewBrother(Ihandle* ih, HTREEITEM hBrotherItem) +{ + TVITEM item; + winTreeItemData* itemData; + + while(hBrotherItem != NULL) + { + if(ih->data->id_control < 0) + return hBrotherItem; + + item.hItem = hBrotherItem; + item.mask = TVIF_HANDLE|TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (itemData->kind == ITREE_BRANCH) + { + HTREEITEM hItemChild; + + ih->data->id_control--; + hItemChild = winTreeFindNewBrother(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hBrotherItem)); + + if(ih->data->id_control < 0) + return hItemChild; + } + + hBrotherItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hBrotherItem); + } + + return hBrotherItem; +} + +static HTREEITEM winTreeFindNodePointed(Ihandle* ih) +{ + TVHITTESTINFO info; + DWORD pos = GetMessagePos(); + info.pt.x = LOWORD(pos); + info.pt.y = HIWORD(pos); + + ScreenToClient(ih->handle, &info.pt); + + return (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)(LPTVHITTESTINFO)&info); +} + +int iupwinGetColor(const char* value, COLORREF *color) +{ + unsigned char r, g, b; + if (iupStrToRGB(value, &r, &g, &b)) + { + *color = RGB(r,g,b); + return 1; + } + return 0; +} + +/*****************************************************************************/ +/* ADDING ITEMS */ +/*****************************************************************************/ +void iupdrvTreeAddNode(Ihandle* ih, const char* name_id, int kind, const char* title, int add) +{ + TVITEM item, tviPrevItem; + TVINSERTSTRUCT tvins; + HTREEITEM hPrevItem = winTreeFindNodeFromString(ih, name_id); + int kindPrev; + winTreeItemData* itemData; + + if (!hPrevItem) + return; + + itemData = calloc(1, sizeof(winTreeItemData)); + itemData->image = -1; + itemData->image_expanded = -1; + itemData->kind = (unsigned char)kind; + + item.mask = TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT; + item.pszText = (char*)title; + item.lParam = (LPARAM)itemData; + + iupwinGetColor(iupAttribGetStr(ih, "FGCOLOR"), &itemData->color); + + if (kind == ITREE_BRANCH) + { + item.iSelectedImage = item.iImage = (int)ih->data->def_image_collapsed; + + if (ih->data->add_expanded) + { + item.mask |= TVIF_STATE; + item.state = item.stateMask = TVIS_EXPANDED; + item.iSelectedImage = item.iImage = (int)ih->data->def_image_expanded; + } + } + else + item.iSelectedImage = item.iImage = (int)ih->data->def_image_leaf; + + /* Save the heading level in the node's application-defined data area */ + tvins.item = item; + + /* get the KIND attribute of node selected */ + tviPrevItem.hItem = hPrevItem; + tviPrevItem.mask = TVIF_PARAM|TVIF_CHILDREN; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&tviPrevItem); + kindPrev = ((winTreeItemData*)tviPrevItem.lParam)->kind; + + /* Define the parent and the position to the new node inside + the list, using the KIND attribute of node selected */ + if (kindPrev == ITREE_BRANCH && add) + { + tvins.hParent = hPrevItem; + tvins.hInsertAfter = TVI_FIRST; /* insert the new node after item selected, as first child */ + } + else + { + tvins.hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hPrevItem); + tvins.hInsertAfter = hPrevItem; /* insert the new node after item selected */ + } + + /* Add the node to the tree-view control */ + SendMessage(ih->handle, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvins); + + if (kindPrev == ITREE_BRANCH && tviPrevItem.cChildren==0) + { + /* this is the first child, redraw to update the '+'/'-' buttons */ + iupdrvDisplayRedraw(ih); + } +} + +static void winTreeAddRootNode(Ihandle* ih) +{ + TVITEM item; + TVINSERTSTRUCT tvins; + HTREEITEM hNewItem; + winTreeItemData* itemData; + + itemData = calloc(1, sizeof(winTreeItemData)); + itemData->image = -1; + itemData->image_expanded = -1; + itemData->kind = ITREE_BRANCH; + + item.mask = TVIF_PARAM | TVIF_STATE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + item.state = item.stateMask = TVIS_EXPANDED; + item.iSelectedImage = item.iImage = (int)ih->data->def_image_expanded; + item.lParam = (LPARAM)itemData; + + iupwinGetColor(iupAttribGetStr(ih, "FGCOLOR"), &itemData->color); + + /* Save the heading level in the node's application-defined data area */ + tvins.item = item; + tvins.hInsertAfter = TVI_FIRST; + tvins.hParent = TVI_ROOT; + + /* Add the node to the tree-view control */ + hNewItem = (HTREEITEM)SendMessage(ih->handle, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvins); + + /* MarkStart node */ + iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)hNewItem); + + /* Set the default VALUE */ + winTreeSetFocusNode(ih, hNewItem); +} + +static int winTreeIsItemExpanded(Ihandle* ih, HTREEITEM hItem) +{ + TVITEM item; + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_STATE; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + return (item.state & TVIS_EXPANDED) != 0; +} + +static void winTreeExpandItem(Ihandle* ih, HTREEITEM hItem, int expand) +{ + if (expand == -1) + expand = !winTreeIsItemExpanded(ih, hItem); /* toggle */ + + if (expand) + SendMessage(ih->handle, TVM_EXPAND, TVE_EXPAND, (LPARAM)hItem); + else + SendMessage(ih->handle, TVM_EXPAND, TVE_COLLAPSE, (LPARAM)hItem); +} + +/*****************************************************************************/ +/* EXPANDING AND STORING ITEMS */ +/*****************************************************************************/ +static void winTreeExpandTree(Ihandle* ih, HTREEITEM hItem, int expand) +{ + HTREEITEM hItemChild; + while(hItem != NULL) + { + hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + + /* Check whether we have child items */ + if (hItemChild) + { + winTreeExpandItem(ih, hItem, expand); + + /* Recursively traverse child items */ + winTreeExpandTree(ih, hItemChild, expand); + } + + /* Go to next sibling item */ + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); + } +} + +/*****************************************************************************/ +/* SELECTING ITEMS */ +/*****************************************************************************/ + +static int winTreeIsItemSelected(Ihandle* ih, HTREEITEM hItem) +{ + return ((SendMessage(ih->handle, TVM_GETITEMSTATE, (WPARAM)hItem, TVIS_SELECTED)) & TVIS_SELECTED)!=0; +} + +static void winTreeSelectItem(Ihandle* ih, HTREEITEM hItem, int select) +{ + TV_ITEM item; + item.mask = TVIF_STATE | TVIF_HANDLE; + item.stateMask = TVIS_SELECTED; + item.hItem = hItem; + + if (select == -1) + select = !winTreeIsItemSelected(ih, hItem); + + item.state = select ? TVIS_SELECTED : 0; + + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)&item); +} + +static HTREEITEM winTreeGetFocusNode(Ihandle* ih) +{ + return (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CARET, 0); +} + +/* ------------Comment from wxWidgets-------------------- + Helper function which tricks the standard control into changing the focused + item without changing anything else. */ +static void winTreeSetFocusNode(Ihandle* ih, HTREEITEM hItem) +{ + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + if (hItem != hItemFocus) + { + /* remember the selection state of the item */ + int wasSelected = winTreeIsItemSelected(ih, hItem); + int wasFocusSelected = 0; + + if (iupwinIsVista()) + iupAttribSetStr(ih, "_IUPTREE_ALLOW_CHANGE", (char*)hItem); /* Vista Only */ + else + wasFocusSelected = hItemFocus && winTreeIsItemSelected(ih, hItemFocus); + + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1"); + + if (wasFocusSelected) + { + /* prevent the tree from unselecting the old focus which it would do by default */ + SendMessage(ih->handle, TVM_SELECTITEM, TVGN_CARET, (LPARAM)NULL); /* remove the focus */ + winTreeSelectItem(ih, hItemFocus, 1); /* select again */ + } + + SendMessage(ih->handle, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem); /* set focus, selection, and unselect the previous focus */ + + if (!wasSelected) + winTreeSelectItem(ih, hItem, 0); /* need to clear the selection if was not selected */ + + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL); + iupAttribSetStr(ih, "_IUPTREE_ALLOW_CHANGE", NULL); + } +} + +typedef struct _winTreeRange{ + HTREEITEM hItem1, hItem2; + char inside, clear; +}winTreeRange; + +static int winTreeSelectRangeFunc(Ihandle* ih, HTREEITEM hItem, winTreeRange* range) +{ + int end_range = 0; + + if (range->inside == 0) /* detect the range start */ + { + if (range->hItem1 == hItem) range->inside=1; + else if (range->hItem2 == hItem) range->inside=1; + } + else if (range->inside == 1) /* detect the range end */ + { + if (range->hItem1 == hItem) end_range=1; + else if (range->hItem2 == hItem) end_range=1; + } + + if (range->inside == 1) /* if inside, select */ + winTreeSelectItem(ih, hItem, 1); + else if (range->clear) /* if outside and clear, unselect */ + winTreeSelectItem(ih, hItem, 0); + + if (end_range || (range->inside && range->hItem1==range->hItem2)) + range->inside=-1; /* update after selecting the node */ + + return 1; +} + +static void winTreeSelectRange(Ihandle* ih, HTREEITEM hItemFrom, HTREEITEM hItemTo, int clear) +{ + winTreeRange range; + range.hItem1 = hItemFrom; + range.hItem2 = hItemTo; + range.inside = 0; + range.clear = (char)clear; + winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeSelectRangeFunc, &range); +} + +static void winTreeSelectAll(Ihandle* ih) +{ + HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + winTreeSelectRange(ih, hItemRoot, NULL, 0); +} + +static void winTreeClearSelection(Ihandle* ih, HTREEITEM hItemExcept) +{ + winTreeSelectRange(ih, hItemExcept, hItemExcept, 1); +} + +static int winTreeInvertSelectFunc(Ihandle* ih, HTREEITEM hItem, void* userdata) +{ + winTreeSelectItem(ih, hItem, -1); + (void)userdata; + return 1; +} + +typedef struct _winTreeSelArray{ + Iarray* markedArray; + char is_handle; + int id_control; +}winTreeSelArray; + +static int winTreeSelectedArrayFunc(Ihandle* ih, HTREEITEM hItem, winTreeSelArray* selarray) +{ + selarray->id_control++; + + if (winTreeIsItemSelected(ih, hItem)) + { + if (selarray->is_handle) + { + HTREEITEM* hItemArrayData = (HTREEITEM*)iupArrayInc(selarray->markedArray); + int i = iupArrayCount(selarray->markedArray); + hItemArrayData[i-1] = hItem; + } + else + { + int* intArrayData = (int*)iupArrayInc(selarray->markedArray); + int i = iupArrayCount(selarray->markedArray); + intArrayData[i-1] = selarray->id_control; + } + } + + return 1; +} + +static Iarray* winTreeGetSelectedArray(Ihandle* ih) +{ + Iarray* markedArray = iupArrayCreate(1, sizeof(HTREEITEM)); + winTreeSelArray selarray; + selarray.markedArray = markedArray; + selarray.id_control = -1; + selarray.is_handle = 1; + + winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeSelectedArrayFunc, &selarray); + + return markedArray; +} + +static Iarray* winTreeGetSelectedArrayId(Ihandle* ih) +{ + Iarray* markedArray = iupArrayCreate(1, sizeof(int)); + winTreeSelArray selarray; + selarray.markedArray = markedArray; + selarray.id_control = -1; + selarray.is_handle = 0; + + winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeSelectedArrayFunc, &selarray); + + return markedArray; +} + + +/*****************************************************************************/ +/* COPYING ITEMS (Branches and its children) */ +/*****************************************************************************/ +/* Insert the copied item in a new location. Returns the new item. */ +static HTREEITEM winTreeCopyItem(Ihandle* ih, HTREEITEM hItem, HTREEITEM hParent, HTREEITEM hPosition, int full_copy) +{ + TVITEM item; + TVINSERTSTRUCT tvins; + char* title = iupStrGetMemory(255); + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_STATE | TVIF_PARAM; + item.pszText = title; + item.cchTextMax = 255; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + + if (full_copy) /* during a full copy the userdata reference is not copied */ + { + /* create a new one */ + winTreeItemData* itemDataNew = malloc(sizeof(winTreeItemData)); + memcpy(itemDataNew, (void*)item.lParam, sizeof(winTreeItemData)); + itemDataNew->userdata = NULL; + item.lParam = (LPARAM)itemDataNew; + } + + /* Copy everything including user data reference */ + tvins.item = item; + tvins.hInsertAfter = hPosition; + tvins.hParent = hParent; + + /* Add the node to the tree-view control */ + return (HTREEITEM)SendMessage(ih->handle, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvins); +} + +static void winTreeCopyChildren(Ihandle* ih, HTREEITEM hItemSrc, HTREEITEM hItemDst, int full_copy) +{ + HTREEITEM hChildSrc = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItemSrc); + HTREEITEM hNewItem = TVI_FIRST; + while (hChildSrc != NULL) + { + hNewItem = winTreeCopyItem(ih, hChildSrc, hItemDst, hNewItem, full_copy); /* Use the same order they where enumerated */ + + /* Recursively transfer all the items */ + winTreeCopyChildren(ih, hChildSrc, hNewItem, full_copy); + + /* Go to next sibling item */ + hChildSrc = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hChildSrc); + } +} + +/* Copies all items in a branch to a new location. Returns the new branch node. */ +static HTREEITEM winTreeCopyNode(Ihandle* ih, HTREEITEM hItemSrc, HTREEITEM hItemDst, int full_copy) +{ + HTREEITEM hNewItem, hParent; + TVITEM item; + winTreeItemData* itemDataDst; + + /* Get DST node attributes */ + item.hItem = hItemDst; + item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_STATE; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemDataDst = (winTreeItemData*)item.lParam; + + if (itemDataDst->kind == ITREE_BRANCH && (item.state & TVIS_EXPANDED)) + { + /* copy as first child of expanded branch */ + hParent = hItemDst; + hItemDst = TVI_FIRST; + } + else + { + /* copy as next brother of item or collapsed branch */ + hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItemDst); + } + + hNewItem = winTreeCopyItem(ih, hItemSrc, hParent, hItemDst, full_copy); + + winTreeCopyChildren(ih, hItemSrc, hNewItem, full_copy); + + return hNewItem; +} + +/*****************************************************************************/ +/* MANIPULATING IMAGES */ +/*****************************************************************************/ +static void winTreeUpdateImages(Ihandle* ih, HTREEITEM hItem, int mode) +{ + HTREEITEM hItemChild; + TVITEM item; + winTreeItemData* itemData; + + /* called when one of the default images is changed */ + + while(hItem != NULL) + { + /* Get node attributes */ + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (itemData->kind == ITREE_BRANCH) + { + if (item.state & TVIS_EXPANDED) + { + if (mode == ITREE_UPDATEIMAGE_EXPANDED) + { + item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + item.iSelectedImage = item.iImage = (itemData->image_expanded!=-1)? itemData->image_expanded: (int)ih->data->def_image_expanded; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item); + } + } + else + { + if (mode == ITREE_UPDATEIMAGE_COLLAPSED) + { + item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + item.iSelectedImage = item.iImage = (itemData->image!=-1)? itemData->image: (int)ih->data->def_image_collapsed; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item); + } + } + + /* Recursively traverse child items */ + hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + winTreeUpdateImages(ih, hItemChild, mode); + } + else + { + if (mode == ITREE_UPDATEIMAGE_LEAF) + { + item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + item.iSelectedImage = item.iImage = (itemData->image!=-1)? itemData->image: (int)ih->data->def_image_leaf; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item); + } + } + + /* Go to next sibling node */ + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); + } +} + +static int winTreeGetImageIndex(Ihandle* ih, const char* name) +{ + HIMAGELIST image_list; + int count, i; + Iarray* bmpArray; + HBITMAP *bmpArrayData; + HBITMAP bmp = iupImageGetImage(name, ih, 0); + if (!bmp) + return -1; + + /* the array is used to avoi adding the same bitmap twice */ + bmpArray = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY"); + if (!bmpArray) + { + /* create the array if does not exist */ + bmpArray = iupArrayCreate(50, sizeof(HBITMAP)); + iupAttribSetStr(ih, "_IUPWIN_BMPARRAY", (char*)bmpArray); + } + + bmpArrayData = iupArrayGetData(bmpArray); + + image_list = (HIMAGELIST)SendMessage(ih->handle, TVM_GETIMAGELIST, TVSIL_NORMAL, 0); + if (!image_list) + { + int width, height; + + /* must use this info, since image can be a driver image loaded from resources */ + iupdrvImageGetInfo(bmp, &width, &height, NULL); + + /* create the image list if does not exist */ + image_list = ImageList_Create(width, height, ILC_COLOR32, 0, 50); + SendMessage(ih->handle, TVM_SETIMAGELIST, 0, (LPARAM)image_list); + } + + /* check if that bitmap is already added to the list, + but we can not compare with the actual bitmap at the list since it is a copy */ + count = ImageList_GetImageCount(image_list); + for (i = 0; i < count; i++) + { + if (bmpArrayData[i] == bmp) + return i; + } + + bmpArrayData = iupArrayInc(bmpArray); + bmpArrayData[i] = bmp; + return ImageList_Add(image_list, bmp, NULL); /* the bmp is duplicated at the list */ +} + + +/*****************************************************************************/ +/* CALLBACKS */ +/*****************************************************************************/ + +static int winTreeCallBranchLeafCb(Ihandle* ih, HTREEITEM hItem) +{ + TVITEM item; + winTreeItemData* itemData; + + /* Get Children: branch or leaf */ + item.mask = TVIF_HANDLE|TVIF_PARAM|TVIF_STATE; + item.hItem = hItem; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (itemData->kind == ITREE_BRANCH) + { + if (item.state & TVIS_EXPANDED) + { + IFni cbBranchClose = (IFni)IupGetCallback(ih, "BRANCHCLOSE_CB"); + if (cbBranchClose) + return cbBranchClose(ih, winTreeGetNodeId(ih, hItem)); + } + else + { + IFni cbBranchOpen = (IFni)IupGetCallback(ih, "BRANCHOPEN_CB"); + if (cbBranchOpen) + return cbBranchOpen(ih, winTreeGetNodeId(ih, hItem)); + } + } + else + { + IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB"); + if (cbExecuteLeaf) + return cbExecuteLeaf(ih, winTreeGetNodeId(ih, hItem)); + } + + return IUP_DEFAULT; +} + +static void winTreeCallMultiSelectionCb(Ihandle* ih) +{ + IFnIi cbMulti = (IFnIi)IupGetCallback(ih, "MULTISELECTION_CB"); + if(cbMulti) + { + Iarray* markedArray = winTreeGetSelectedArrayId(ih); + int* id_hitem = (int*)iupArrayGetData(markedArray); + + cbMulti(ih, id_hitem, iupArrayCount(markedArray)); + + iupArrayDestroy(markedArray); + } + else + { + IFnii cbSelec = (IFnii)IupGetCallback(ih, "SELECTION_CB"); + if (cbSelec) + { + Iarray* markedArray = winTreeGetSelectedArrayId(ih); + int* id_hitem = (int*)iupArrayGetData(markedArray); + int i, count = iupArrayCount(markedArray); + + for (i=0; idata->mark_mode == ITREE_MARK_MULTIPLE && IupGetCallback(ih,"MULTISELECTION_CB")) + { + if ((GetKeyState(VK_SHIFT) & 0x8000)) + return; + } + + if (iupAttribGet(ih, "_IUPTREE_IGNORE_SELECTION_CB")) + return; + + cbSelec(ih, winTreeGetNodeId(ih, hItem), status); + } +} + +static int winTreeCallDragDropCb(Ihandle* ih, HTREEITEM hItemDrag, HTREEITEM hItemDrop, int *is_ctrl) +{ + IFniiii cbDragDrop = (IFniiii)IupGetCallback(ih, "DRAGDROP_CB"); + int is_shift = 0; + if ((GetKeyState(VK_SHIFT) & 0x8000)) + is_shift = 1; + if ((GetKeyState(VK_CONTROL) & 0x8000)) + *is_ctrl = 1; + else + *is_ctrl = 0; + + if (cbDragDrop) + { + int drag_id = winTreeGetNodeId(ih, hItemDrag); + int drop_id = winTreeGetNodeId(ih, hItemDrop); + return cbDragDrop(ih, drag_id, drop_id, is_shift, *is_ctrl); + } + + return IUP_CONTINUE; /* allow to move by default if callback not defined */ +} + + +/*****************************************************************************/ +/* GET AND SET ATTRIBUTES */ +/*****************************************************************************/ + + +static int winTreeSetImageBranchExpandedAttrib(Ihandle* ih, const char* value) +{ + ih->data->def_image_expanded = (void*)winTreeGetImageIndex(ih, value); + + /* Update all images, starting at root node */ + winTreeUpdateImages(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0), ITREE_UPDATEIMAGE_EXPANDED); + + return 1; +} + +static int winTreeSetImageBranchCollapsedAttrib(Ihandle* ih, const char* value) +{ + ih->data->def_image_collapsed = (void*)winTreeGetImageIndex(ih, value); + + /* Update all images, starting at root node */ + winTreeUpdateImages(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0), ITREE_UPDATEIMAGE_COLLAPSED); + + return 1; +} + +static int winTreeSetImageLeafAttrib(Ihandle* ih, const char* value) +{ + ih->data->def_image_leaf = (void*)winTreeGetImageIndex(ih, value); + + /* Update all images, starting at root node */ + winTreeUpdateImages(ih, (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0), ITREE_UPDATEIMAGE_LEAF); + + return 1; +} + +static int winTreeSetImageExpandedAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + itemData->image_expanded = (short)winTreeGetImageIndex(ih, value); + + if (itemData->kind == ITREE_BRANCH && item.state & TVIS_EXPANDED) + { + if (itemData->image_expanded == -1) + item.iSelectedImage = item.iImage = (int)ih->data->def_image_expanded; + else + item.iSelectedImage = item.iImage = itemData->image_expanded; + item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item); + } + + return 1; +} + +static int winTreeSetImageAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + itemData->image = (short)winTreeGetImageIndex(ih, value); + + if (itemData->kind == ITREE_BRANCH) + { + if (!(item.state & TVIS_EXPANDED)) + { + if (itemData->image == -1) + item.iSelectedImage = item.iImage = (int)ih->data->def_image_collapsed; + else + item.iSelectedImage = item.iImage = itemData->image; + + item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item); + } + } + else + { + if (itemData->image == -1) + item.iSelectedImage = item.iImage = (int)ih->data->def_image_leaf; + else + item.iSelectedImage = item.iImage = itemData->image; + + item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item); + } + + return 1; +} + +static int winTreeSetTopItemAttrib(Ihandle* ih, const char* value) +{ + HTREEITEM hItem = winTreeFindNodeFromString(ih, value); + if (hItem) + SendMessage(ih->handle, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem); + return 0; +} + +static int winTreeSetSpacingAttrib(Ihandle* ih, const char* value) +{ + if (!iupStrToInt(value, &ih->data->spacing)) + ih->data->spacing = 1; + + if(ih->data->spacing < 1) + ih->data->spacing = 1; + + if (ih->handle) + { + int old_spacing = iupAttribGetInt(ih, "_IUPWIN_OLDSPACING"); + int height = SendMessage(ih->handle, TVM_GETITEMHEIGHT, 0, 0); + height -= 2*old_spacing; + height += 2*ih->data->spacing; + SendMessage(ih->handle, TVM_SETITEMHEIGHT, height, 0); + iupAttribSetInt(ih, "_IUPWIN_OLDSPACING", ih->data->spacing); + return 0; + } + else + return 1; /* store until not mapped, when mapped will be set again */ +} + +static int winTreeSetExpandAllAttrib(Ihandle* ih, const char* value) +{ + HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + HTREEITEM hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItemRoot); /* skip the root node that is always expanded */ + int expand = iupStrBoolean(value); + winTreeExpandTree(ih, hItem, expand); + return 0; +} + +static int winTreeSetBgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (iupStrToRGB(value, &r, &g, &b)) + { + COLORREF cr = RGB(r,g,b); + SendMessage(ih->handle, TVM_SETBKCOLOR, 0, (LPARAM)cr); + + /* update internal image cache */ + iupTreeUpdateImages(ih); + } + return 0; +} + +static char* winTreeGetBgColorAttrib(Ihandle* ih) +{ + COLORREF cr = (COLORREF)SendMessage(ih->handle, TVM_GETBKCOLOR, 0, 0); + if (cr == (COLORREF)-1) + return IupGetGlobal("TXTBGCOLOR"); + else + { + char* str = iupStrGetMemory(20); + sprintf(str, "%d %d %d", (int)GetRValue(cr), (int)GetGValue(cr), (int)GetBValue(cr)); + return str; + } +} + +static void winTreeSetRenameCaretPos(HWND hEdit, const char* value) +{ + int pos = 1; + + if (iupStrToInt(value, &pos)) + { + if (pos < 1) pos = 1; + pos--; /* IUP starts at 1 */ + + SendMessage(hEdit, EM_SETSEL, (WPARAM)pos, (LPARAM)pos); + } +} + +static void winTreeSetRenameSelectionPos(HWND hEdit, const char* value) +{ + int start = 1, end = 1; + + if (iupStrToIntInt(value, &start, &end, ':') != 2) + return; + + if(start < 1 || end < 1) + return; + + start--; /* IUP starts at 1 */ + end--; + + SendMessage(hEdit, EM_SETSEL, (WPARAM)start, (LPARAM)end); +} + +static char* winTreeGetTitle(Ihandle* ih, HTREEITEM hItem) +{ + TVITEM item; + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_TEXT; + item.pszText = iupStrGetMemory(255); + item.cchTextMax = 255; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + return item.pszText; +} + +static char* winTreeGetTitleAttrib(Ihandle* ih, const char* name_id) +{ + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + return winTreeGetTitle(ih, hItem); +} + +static int winTreeSetTitleAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + TVITEM item; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_TEXT; + item.pszText = (char*)value; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&item); + return 0; +} + +static char* winTreeGetFindUserDataAttrib(Ihandle* ih, const char* name_id) +{ + int id; + char* str = (char*)(name_id+1); /* skip ':' */ + void* userdata = NULL; + if (sscanf(str, "%p", &userdata)!=1) + return NULL; + id = winTreeGetUserDataId(ih, userdata); + if (id == -1) + return NULL; + str = iupStrGetMemory(16); + sprintf(str, "%d", id); + return str; +} + +static char* winTreeGetUserDataAttrib(Ihandle* ih, const char* name_id) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + return itemData->userdata; +} + +static int winTreeSetUserDataAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + itemData->userdata = (void*)value; + + return 0; +} + +static char* winTreeGetTitleFontAttrib(Ihandle* ih, const char* name_id) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + return iupwinFindHFont(itemData->hFont); +} + +static int winTreeSetTitleFontAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (value) + itemData->hFont = iupwinGetHFont(value); + else + itemData->hFont = NULL; + + iupdrvDisplayUpdate(ih); + + return 0; +} + +static char* winTreeGetIndentationAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(255); + int indent = (int)SendMessage(ih->handle, TVM_GETINDENT, 0, 0); + sprintf(str, "%d", indent); + return str; +} + +static int winTreeSetIndentationAttrib(Ihandle* ih, const char* value) +{ + int indent; + if (iupStrToInt(value, &indent)) + SendMessage(ih->handle, TVM_SETINDENT, (WPARAM)indent, 0); + return 0; +} + +static char* winTreeGetStateAttrib(Ihandle* ih, const char* name_id) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + item.hItem = hItem; + item.mask = TVIF_HANDLE|TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (itemData->kind == ITREE_BRANCH) + { + if (winTreeIsItemExpanded(ih, hItem)) + return "EXPANDED"; + else + return "COLLAPSED"; + } + + return NULL; +} + +static int winTreeSetStateAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + winTreeExpandItem(ih, hItem, iupStrEqualNoCase(value, "EXPANDED")); + return 0; +} + +static char* winTreeGetDepthAttrib(Ihandle* ih, const char* name_id) +{ + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + int depth = 0; + char* str; + + if (!hItem) + return NULL; + + while((hItemRoot != hItem) && (hItem != NULL)) + { + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem); + depth++; + } + + str = iupStrGetMemory(10); + sprintf(str, "%d", depth); + return str; +} + +static int winTreeSetMoveNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + HTREEITEM hItemDst, hParent, hItemSrc; + + if (!ih->handle) /* do not store the action before map */ + return 0; + hItemSrc = winTreeFindNodeFromString(ih, name_id); + if (!hItemSrc) + return 0; + hItemDst = winTreeFindNodeFromString(ih, value); + if (!hItemDst) + return 0; + + /* If Drag item is an ancestor of Drop item then return */ + hParent = hItemDst; + while(hParent) + { + hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hParent); + if (hParent == hItemSrc) + return 0; + } + + /* Copying the node and its children to the new position */ + winTreeCopyNode(ih, hItemSrc, hItemDst, 0); /* not a full copy, preserve user data */ + + /* do not delete the user data, we copy the references in CopyNode */ + SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItemSrc); + + return 0; +} + +static int winTreeSetCopyNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + HTREEITEM hItemDst, hParent, hItemSrc; + + if (!ih->handle) /* do not store the action before map */ + return 0; + hItemSrc = winTreeFindNodeFromString(ih, name_id); + if (!hItemSrc) + return 0; + hItemDst = winTreeFindNodeFromString(ih, value); + if (!hItemDst) + return 0; + + /* If Drag item is an ancestor of Drop item then return */ + hParent = hItemDst; + while(hParent) + { + hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hParent); + if (hParent == hItemSrc) + return 0; + } + + /* Copying the node and its children to the new position */ + winTreeCopyNode(ih, hItemSrc, hItemDst, 1); + + return 0; +} + +static char* winTreeGetColorAttrib(Ihandle* ih, const char* name_id) +{ + unsigned char r, g, b; + char* str; + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + r = GetRValue(itemData->color); + g = GetGValue(itemData->color); + b = GetBValue(itemData->color); + + str = iupStrGetMemory(12); + sprintf(str, "%d %d %d", r, g, b); + return str; +} + +static int winTreeSetColorAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + unsigned char r, g, b; + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (iupStrToRGB(value, &r, &g, &b)) + { + itemData->color = RGB(r,g,b); + iupdrvDisplayUpdate(ih); + } + + return 0; +} + +static int winTreeSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + + if (iupStrToRGB(value, &r, &g, &b)) + { + COLORREF color = RGB(r,g,b); + SendMessage(ih->handle, TVM_SETTEXTCOLOR, 0, (LPARAM)color); + } + else + SendMessage(ih->handle, TVM_SETTEXTCOLOR, 0, (LPARAM)CLR_DEFAULT); + + return 0; +} + +static char* winTreeGetChildCountAttrib(Ihandle* ih, const char* name_id) +{ + int count; + char* str; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + count = 0; + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + while(hItem != NULL) + { + count++; + + /* Go to next sibling item */ + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); + } + + str = iupStrGetMemory(10); + sprintf(str, "%d", count); + return str; +} + +static char* winTreeGetCountAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(10); + sprintf(str, "%d", (int)SendMessage(ih->handle, TVM_GETCOUNT, 0, 0)); + return str; +} + +static char* winTreeGetKindAttrib(Ihandle* ih, const char* name_id) +{ + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + item.hItem = hItem; + item.mask = TVIF_HANDLE|TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if(itemData->kind == ITREE_BRANCH) + return "BRANCH"; + else + return "LEAF"; +} + +static char* winTreeGetParentAttrib(Ihandle* ih, const char* name_id) +{ + char* str; + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem); + if (!hItem) + return NULL; + + str = iupStrGetMemory(10); + sprintf(str, "%d", winTreeGetNodeId(ih, hItem)); + return str; +} + +static void winTreeDelNodeData(Ihandle* ih, HTREEITEM hItem) +{ + TVITEM item; + HTREEITEM hChildItem; + + item.hItem = hItem; + item.mask = TVIF_HANDLE|TVIF_PARAM; + if (SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item)) + { + winTreeItemData* itemData = (winTreeItemData*)item.lParam; + if (itemData) + { + IFnis cb = (IFnis)IupGetCallback(ih, "NODEREMOVED_CB"); + if (cb) cb(ih, winTreeGetNodeId(ih, hItem), (char*)itemData->userdata); + free(itemData); + item.lParam = (LPARAM)NULL; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item); + } + } + + hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + while (hChildItem) + { + winTreeDelNodeData(ih, hChildItem); + hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hChildItem); + } +} + +static int winTreeSetDelNodeAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + if (!ih->handle) /* do not store the action before map */ + return 0; + if(iupStrEqualNoCase(value, "SELECTED")) /* selected here means the specified one */ + { + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + + /* the root node can't be deleted */ + if(!hItem || hItem == hItemRoot) + return 0; + + /* deleting the specified node (and it's children) */ + winTreeDelNodeData(ih, hItem); + SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItem); + + return 0; + } + else if(iupStrEqualNoCase(value, "CHILDREN")) /* children of the specified one */ + { + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + HTREEITEM hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + + if(!hItem) + return 0; + + /* deleting the selected node's children */ + while (hChildItem) + { + winTreeDelNodeData(ih, hChildItem); + SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hChildItem); + hChildItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); + } + + return 0; + } + else if(iupStrEqualNoCase(value, "MARKED")) + { + int i, count; + Iarray* markedArray; + HTREEITEM* hItemArrayData; + HTREEITEM hItemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + + /* Delete the array of marked nodes */ + markedArray = winTreeGetSelectedArray(ih); + hItemArrayData = (HTREEITEM*)iupArrayGetData(markedArray); + count = iupArrayCount(markedArray); + + for(i = 0; i < count; i++) + { + if (hItemArrayData[i] != hItemRoot) /* the root node can't be deleted */ + { + winTreeDelNodeData(ih, hItemArrayData[i]); + SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItemArrayData[i]); + } + } + + iupArrayDestroy(markedArray); + + return 0; + } + + return 0; +} + +static int winTreeSetRenameAttrib(Ihandle* ih, const char* value) +{ + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + if (ih->data->show_rename) + { + IFni cbShowRename = (IFni)IupGetCallback(ih, "SHOWRENAME_CB"); + if (cbShowRename) + cbShowRename(ih, winTreeGetNodeId(ih, hItemFocus)); + + SetFocus(ih->handle); /* the tree must have focus to activate the edit */ + SendMessage(ih->handle, TVM_EDITLABEL, 0, (LPARAM)hItemFocus); + } + else + { + IFnis cbRenameNode = (IFnis)IupGetCallback(ih, "RENAMENODE_CB"); + if (cbRenameNode) + cbRenameNode(ih, winTreeGetNodeId(ih, hItemFocus), winTreeGetTitle(ih, hItemFocus)); + } + + (void)value; + return 0; +} + +static char* winTreeGetMarkedAttrib(Ihandle* ih, const char* name_id) +{ + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return NULL; + + if (winTreeIsItemSelected(ih, hItem)) + return "YES"; + else + return "NO"; +} + +static int winTreeSetMarkedAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + winTreeSelectItem(ih, hItem, iupStrBoolean(value)); + return 0; +} + +static int winTreeSetMarkStartAttrib(Ihandle* ih, const char* name_id) +{ + HTREEITEM hItem = winTreeFindNodeFromString(ih, name_id); + if (!hItem) + return 0; + + iupAttribSetStr(ih, "_IUPTREE_MARKSTART_NODE", (char*)hItem); + + return 1; +} + +static char* winTreeGetValueAttrib(Ihandle* ih) +{ + char* str; + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + if (!hItemFocus) + return "0"; /* default VALUE is root */ + + str = iupStrGetMemory(16); + sprintf(str, "%d", winTreeGetNodeId(ih, hItemFocus)); + return str; +} + +static int winTreeSetMarkAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->mark_mode==ITREE_MARK_SINGLE) + return 0; + + if(iupStrEqualNoCase(value, "BLOCK")) + { + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + winTreeSelectRange(ih, (HTREEITEM)iupAttribGet(ih, "_IUPTREE_MARKSTART_NODE"), hItemFocus, 0); + } + else if(iupStrEqualNoCase(value, "CLEARALL")) + winTreeClearSelection(ih, NULL); + else if(iupStrEqualNoCase(value, "MARKALL")) + winTreeSelectAll(ih); + else if(iupStrEqualNoCase(value, "INVERTALL")) /* INVERTALL *MUST* appear before INVERT, or else INVERTALL will never be called. */ + winTreeForEach(ih, NULL, (winTreeNodeFunc)winTreeInvertSelectFunc, NULL); + else if(iupStrEqualPartial(value, "INVERT")) /* iupStrEqualPartial allows the use of "INVERTid" form */ + { + HTREEITEM hItem = winTreeFindNodeFromString(ih, &value[strlen("INVERT")]); + if (!hItem) + return 0; + + winTreeSelectItem(ih, hItem, -1); /* toggle */ + } + else + { + HTREEITEM hItem1, hItem2; + + char str1[50], str2[50]; + if (iupStrToStrStr(value, str1, str2, '-')!=2) + return 0; + + hItem1 = winTreeFindNodeFromString(ih, str1); + if (!hItem1) + return 0; + hItem2 = winTreeFindNodeFromString(ih, str2); + if (!hItem2) + return 0; + + winTreeSelectRange(ih, hItem1, hItem2, 0); + } + + return 1; +} + +static int winTreeSetValueAttrib(Ihandle* ih, const char* value) +{ + HTREEITEM hItem = NULL; + HTREEITEM hItemFocus; + + if (winTreeSetMarkAttrib(ih, value)) + return 0; + + hItemFocus = winTreeGetFocusNode(ih); + + if(iupStrEqualNoCase(value, "ROOT")) + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + else if(iupStrEqualNoCase(value, "LAST")) + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_LASTVISIBLE, 0); + else if(iupStrEqualNoCase(value, "PGUP")) + { + int i; + HTREEITEM hItemPrev = hItemFocus; + HTREEITEM hItemNext = hItemFocus; + for(i = 0; i < 10; i++) + { + hItemNext = hItemPrev; + hItemPrev = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItemPrev); + if(hItemPrev == NULL) + { + hItemPrev = hItemNext; + break; + } + } + + hItem = hItemPrev; + } + else if(iupStrEqualNoCase(value, "PGDN")) + { + int i; + HTREEITEM hItemPrev = hItemFocus; + HTREEITEM hItemNext = hItemFocus; + + for(i = 0; i < 10; i++) + { + hItemPrev = hItemNext; + hItemNext = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemNext); + if(hItemNext == NULL) + { + hItemNext = hItemPrev; + break; + } + } + + hItem = hItemNext; + } + else if(iupStrEqualNoCase(value, "NEXT")) + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemFocus); + else if(iupStrEqualNoCase(value, "PREVIOUS")) + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItemFocus); + else + hItem = winTreeFindNodeFromString(ih, value); + + if (hItem) + { + if (ih->data->mark_mode==ITREE_MARK_SINGLE) + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1"); + winTreeSelectItem(ih, hItem, 1); + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL); + } + winTreeSetFocusNode(ih, hItem); + } + + return 0; +} + +void iupdrvTreeUpdateMarkMode(Ihandle *ih) +{ + /* does nothing, must handle single and multiple selection manually in Windows */ + (void)ih; +} + +/*********************************************************************************************************/ + + +static int winTreeEditProc(Ihandle* ih, HWND cbedit, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + switch (msg) + { + case WM_GETDLGCODE: + { + MSG* pMsg = (MSG*)lp; + + if (pMsg && (pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN)) + { + if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN) + { + /* these keys are not processed if the return code is not this */ + *result = DLGC_WANTALLKEYS; + return 1; + } + } + } + } + + (void)wp; + (void)cbedit; + (void)ih; + return 0; +} + +static LRESULT CALLBACK winTreeEditWinProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) +{ + int ret = 0; + LRESULT result = 0; + WNDPROC oldProc; + Ihandle *ih; + + ih = iupwinHandleGet(hwnd); + if (!ih) + return DefWindowProc(hwnd, msg, wp, lp); /* should never happen */ + + /* retrieve the control previous procedure for subclassing */ + oldProc = (WNDPROC)IupGetCallback(ih, "_IUPWIN_EDITOLDPROC_CB"); + + ret = winTreeEditProc(ih, hwnd, msg, wp, lp, &result); + + if (ret) + return result; + else + return CallWindowProc(oldProc, hwnd, msg, wp, lp); +} + +static void winTreeDrag(Ihandle* ih, int x, int y) +{ + HTREEITEM hItemDrop; + + HIMAGELIST dragImageList = (HIMAGELIST)iupAttribGet(ih, "_IUPTREE_DRAGIMAGELIST"); + if (dragImageList) + { + POINT pnt; + pnt.x = x; + pnt.y = y; + GetCursorPos(&pnt); + ClientToScreen(GetDesktopWindow(), &pnt) ; + ImageList_DragMove(pnt.x, pnt.y); + } + + if ((hItemDrop = winTreeFindNodePointed(ih)) != NULL) + { + if(dragImageList) + ImageList_DragShowNolock(FALSE); + + SendMessage(ih->handle, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItemDrop); + + /* store the drop item to be executed */ + iupAttribSetStr(ih, "_IUPTREE_DROPITEM", (char*)hItemDrop); + + if(dragImageList) + ImageList_DragShowNolock(TRUE); + } +} + +static void winTreeDrop(Ihandle* ih) +{ + HTREEITEM hItemDrag = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DRAGITEM"); + HTREEITEM hItemDrop = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DROPITEM"); + HIMAGELIST dragImageList = (HIMAGELIST)iupAttribGet(ih, "_IUPTREE_DRAGIMAGELIST"); + HTREEITEM hParent; + int is_ctrl; + + if (dragImageList) + { + ImageList_DragLeave(ih->handle); + ImageList_EndDrag(); + ImageList_Destroy(dragImageList); + iupAttribSetStr(ih, "_IUPTREE_DRAGIMAGELIST", NULL); + } + + ReleaseCapture(); + ShowCursor(TRUE); + + /* Remove drop target highlighting */ + SendMessage(ih->handle, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)NULL); + + iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", NULL); + iupAttribSetStr(ih, "_IUPTREE_DROPITEM", NULL); + + if (!hItemDrop || hItemDrag == hItemDrop) + return; + + /* If Drag item is an ancestor of Drop item then return */ + hParent = hItemDrop; + while(hParent) + { + hParent = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hParent); + if (hParent == hItemDrag) + return; + } + + if (winTreeCallDragDropCb(ih, hItemDrag, hItemDrop, &is_ctrl) == IUP_CONTINUE) + { + /* Copy the dragged item to the new position. */ + HTREEITEM hItemNew = winTreeCopyNode(ih, hItemDrag, hItemDrop, is_ctrl); + + if (!is_ctrl) + { + /* do not delete the user data, we copy the references in CopyNode */ + SendMessage(ih->handle, TVM_DELETEITEM, 0, (LPARAM)hItemDrag); + } + + SendMessage(ih->handle, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItemNew); /* set focus and selection */ + } +} + +static void winTreeExtendSelect(Ihandle* ih, int x, int y) +{ + HTREEITEM hItemFirstSel; + TVHITTESTINFO info; + HTREEITEM hItem; + info.pt.x = x; + info.pt.y = y; + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)&info); + + if (!(info.flags & TVHT_ONITEM) || !hItem) + return; + + hItemFirstSel = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_FIRSTSELITEM"); + if (hItemFirstSel) + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1"); + winTreeSelectRange(ih, hItemFirstSel, hItem, 1); + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL); + + iupAttribSetStr(ih, "_IUPTREE_LASTSELITEM", (char*)hItem); + winTreeSetFocusNode(ih, hItem); + } +} + +static int winTreeMouseMultiSelect(Ihandle* ih, int x, int y) +{ + TVHITTESTINFO info; + HTREEITEM hItem; + info.pt.x = x; + info.pt.y = y; + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)&info); + + if (!(info.flags & TVHT_ONITEM) || !hItem) + return 0; + + if (GetKeyState(VK_CONTROL) & 0x8000) /* Control key is down */ + { + /* Toggle selection state */ + winTreeSelectItem(ih, hItem, -1); + iupAttribSetStr(ih, "_IUPTREE_FIRSTSELITEM", (char*)hItem); + + winTreeCallSelectionCb(ih, winTreeIsItemSelected(ih, hItem), hItem); + winTreeSetFocusNode(ih, hItem); + + return 1; + } + else if (GetKeyState(VK_SHIFT) & 0x8000) /* Shift key is down */ + { + HTREEITEM hItemFirstSel = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_FIRSTSELITEM"); + if (hItemFirstSel) + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1"); + winTreeSelectRange(ih, hItemFirstSel, hItem, 1); + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL); + + winTreeCallMultiSelectionCb(ih); + winTreeSetFocusNode(ih, hItem); + return 1; + } + } + + /* simple click */ + winTreeClearSelection(ih, hItem); + iupAttribSetStr(ih, "_IUPTREE_FIRSTSELITEM", (char*)hItem); + iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", "1"); + + return 0; +} + +static int winTreeProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + switch (msg) + { + case WM_CTLCOLOREDIT: + { + HWND hEdit = (HWND)iupAttribGet(ih, "_IUPWIN_EDITBOX"); + if (hEdit) + { + winTreeItemData* itemData = (winTreeItemData*)iupAttribGet(ih, "_IUPWIN_EDIT_DATA"); + HDC hDC = (HDC)wp; + COLORREF cr; + + SetTextColor(hDC, itemData->color); + + cr = (COLORREF)SendMessage(ih->handle, TVM_GETBKCOLOR, 0, 0); + SetBkColor(hDC, cr); + SetDCBrushColor(hDC, cr); + *result = (LRESULT)GetStockObject(DC_BRUSH); + return 1; + } + + break; + } + case WM_SETFOCUS: + case WM_KILLFOCUS: + { + /* ------------Comment from wxWidgets-------------------- + the tree control greys out the selected item when it loses focus and + paints it as selected again when it regains it, but it won't do it + for the other items itself - help it */ + if (ih->data->mark_mode == ITREE_MARK_MULTIPLE) + { + HTREEITEM hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0); + RECT rect; + + while(hItemChild != NULL) + { + *(HTREEITEM*)&rect = hItemChild; + if (SendMessage(ih->handle, TVM_GETITEMRECT, TRUE, (LPARAM)&rect)) + InvalidateRect(ih->handle, &rect, FALSE); + + /* Go to next visible item */ + hItemChild = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemChild); + } + } + break; + } + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + { + if (iupwinBaseProc(ih, msg, wp, lp, result)==1) + return 1; + + if (wp == VK_RETURN) + { + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + if (winTreeCallBranchLeafCb(ih, hItemFocus) != IUP_IGNORE) + winTreeExpandItem(ih, hItemFocus, -1); + + *result = 0; + return 1; + } + else if (wp == VK_F2) + { + winTreeSetRenameAttrib(ih, NULL); + *result = 0; + return 1; + } + else if (wp == VK_SPACE) + { + if (GetKeyState(VK_CONTROL) & 0x8000) + { + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + /* Toggle selection state */ + winTreeSelectItem(ih, hItemFocus, -1); + } + } + else if (wp == VK_UP || wp == VK_DOWN) + { + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + if (wp == VK_UP) + hItemFocus = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItemFocus); + else + hItemFocus = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItemFocus); + if (!hItemFocus) + return 0; + + if (GetKeyState(VK_CONTROL) & 0x8000) + { + /* Only move focus */ + winTreeSetFocusNode(ih, hItemFocus); + + *result = 0; + return 1; + } + else if (GetKeyState(VK_SHIFT) & 0x8000) + { + HTREEITEM hItemFirstSel = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_FIRSTSELITEM"); + if (hItemFirstSel) + { + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", "1"); + winTreeSelectRange(ih, hItemFirstSel, hItemFocus, 1); + iupAttribSetStr(ih, "_IUPTREE_IGNORE_SELECTION_CB", NULL); + + winTreeCallMultiSelectionCb(ih); + winTreeSetFocusNode(ih, hItemFocus); + + *result = 0; + return 1; + } + } + + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE) + { + iupAttribSetStr(ih, "_IUPTREE_FIRSTSELITEM", (char*)hItemFocus); + winTreeClearSelection(ih, NULL); + /* normal processing will select the focus item */ + } + } + + return 0; + } + case WM_LBUTTONDOWN: + if (iupwinButtonDown(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE) + { + /* must set focus on left button down or the tree won't show its focus */ + if (iupAttribGetBoolean(ih, "CANFOCUS")) + SetFocus(ih->handle); + + if (winTreeMouseMultiSelect(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp))) + { + *result = 0; /* abort the normal processing if we process multiple selection */ + return 1; + } + } + break; + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + if (iupwinButtonDown(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + break; + case WM_MOUSEMOVE: + if (ih->data->show_dragdrop && (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DRAGITEM") != NULL) + winTreeDrag(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp)); + else if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT")) + winTreeExtendSelect(ih, (int)(short)LOWORD(lp), (int)(short)HIWORD(lp)); + + iupwinMouseMove(ih, msg, wp, lp); + break; + case WM_LBUTTONUP: + case WM_MBUTTONUP: + case WM_RBUTTONUP: + if (iupwinButtonUp(ih, msg, wp, lp)==-1) + { + *result = 0; + return 1; + } + + if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT")) + { + iupAttribSetStr(ih, "_IUPTREE_EXTENDSELECT", NULL); + if (iupAttribGet(ih, "_IUPTREE_LASTSELITEM")) + { + winTreeCallMultiSelectionCb(ih); + iupAttribSetStr(ih, "_IUPTREE_LASTSELITEM", NULL); + } + } + + if (ih->data->show_dragdrop && (HTREEITEM)iupAttribGet(ih, "_IUPTREE_DRAGITEM") != NULL) + winTreeDrop(ih); + + break; + case WM_CHAR: + { + if (wp==VK_TAB) /* the keys have the same definitions as the chars */ + { + *result = 0; + return 1; /* abort default processing to avoid beep */ + } + break; + } + } + + return iupwinBaseProc(ih, msg, wp, lp, result); +} + +static COLORREF winTreeInvertColor(COLORREF color) +{ + return RGB(~GetRValue(color), ~GetGValue(color), ~GetBValue(color)); +} + +static int winTreeWmNotify(Ihandle* ih, NMHDR* msg_info, int *result) +{ + if (msg_info->code == TVN_ITEMCHANGINGA || msg_info->code == TVN_ITEMCHANGINGW) /* Vista Only */ + { + if (ih->data->mark_mode==ITREE_MARK_MULTIPLE) + { + NMTVITEMCHANGE* info = (NMTVITEMCHANGE*)msg_info; + HTREEITEM hItem = (HTREEITEM)iupAttribGet(ih, "_IUPTREE_ALLOW_CHANGE"); + if (hItem && hItem != info->hItem) /* Workaround for Vista SetFocus */ + { + *result = TRUE; /* prevent the change */ + return 1; + } + } + } + else if (msg_info->code == TVN_SELCHANGED) + { + NMTREEVIEW* info = (NMTREEVIEW*)msg_info; + winTreeCallSelectionCb(ih, 0, info->itemOld.hItem); /* node unselected */ + winTreeCallSelectionCb(ih, 1, info->itemNew.hItem); /* node selected */ + } + else if(msg_info->code == TVN_BEGINLABELEDIT) + { + char* value; + HWND hEdit; + NMTVDISPINFO* info = (NMTVDISPINFO*)msg_info; + + if (iupAttribGet(ih, "_IUPTREE_EXTENDSELECT")) + { + *result = TRUE; /* prevent the change */ + return 1; + } + + hEdit = (HWND)SendMessage(ih->handle, TVM_GETEDITCONTROL, 0, 0); + + /* save the edit box. */ + iupwinHandleAdd(ih, hEdit); + iupAttribSetStr(ih, "_IUPWIN_EDITBOX", (char*)hEdit); + + /* subclass the edit box. */ + IupSetCallback(ih, "_IUPWIN_EDITOLDPROC_CB", (Icallback)GetWindowLongPtr(hEdit, GWLP_WNDPROC)); + SetWindowLongPtr(hEdit, GWLP_WNDPROC, (LONG_PTR)winTreeEditWinProc); + + value = iupAttribGetStr(ih, "RENAMECARET"); + if (value) + winTreeSetRenameCaretPos(hEdit, value); + + value = iupAttribGetStr(ih, "RENAMESELECTION"); + if (value) + winTreeSetRenameSelectionPos(hEdit, value); + + { + winTreeItemData* itemData; + TVITEM item; + item.hItem = info->item.hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + iupAttribSetStr(ih, "_IUPWIN_EDIT_DATA", (char*)itemData); + + if (itemData->hFont) + SendMessage(hEdit, WM_SETFONT, (WPARAM)itemData->hFont, MAKELPARAM(TRUE,0)); + } + } + else if(msg_info->code == TVN_ENDLABELEDIT) + { + NMTVDISPINFO* info = (NMTVDISPINFO*)msg_info; + + iupAttribSetStr(ih, "_IUPWIN_EDITBOX", NULL); + + if (info->item.pszText) + { + IFnis cbRename = (IFnis)IupGetCallback(ih, "RENAME_CB"); + if (cbRename) + { + if (cbRename(ih, winTreeGetNodeId(ih, info->item.hItem), info->item.pszText) == IUP_IGNORE) + { + *result = FALSE; + return 1; + } + } + + *result = TRUE; + return 1; + } + } + else if(msg_info->code == TVN_BEGINDRAG) + { + if (ih->data->show_dragdrop) + { + NMTREEVIEW* pNMTreeView = (NMTREEVIEW*)msg_info; + HTREEITEM hItemDrag = pNMTreeView->itemNew.hItem; + HIMAGELIST dragImageList; + + /* store the drag-and-drop item */ + iupAttribSetStr(ih, "_IUPTREE_DRAGITEM", (char*)hItemDrag); + + /* get the image list for dragging */ + dragImageList = (HIMAGELIST)SendMessage(ih->handle, TVM_CREATEDRAGIMAGE, 0, (LPARAM)hItemDrag); + if (dragImageList) + { + POINT pt = pNMTreeView->ptDrag; + ImageList_BeginDrag(dragImageList, 0, 0, 0); + + ClientToScreen(ih->handle, &pt); + ImageList_DragEnter(NULL, pt.x, pt.y); + + iupAttribSetStr(ih, "_IUPTREE_DRAGIMAGELIST", (char*)dragImageList); + } + + ShowCursor(FALSE); + SetCapture(ih->handle); /* drag only inside the tree */ + } + } + else if(msg_info->code == NM_DBLCLK) + { + HTREEITEM hItemFocus = winTreeGetFocusNode(ih); + TVITEM item; + winTreeItemData* itemData; + + /* Get Children: branch or leaf */ + item.mask = TVIF_HANDLE|TVIF_PARAM; + item.hItem = hItemFocus; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (itemData->kind == ITREE_LEAF) + { + IFni cbExecuteLeaf = (IFni)IupGetCallback(ih, "EXECUTELEAF_CB"); + if(cbExecuteLeaf) + cbExecuteLeaf(ih, winTreeGetNodeId(ih, hItemFocus)); + } + } + else if(msg_info->code == TVN_ITEMEXPANDING) + { + /* mouse click by user: click on the "+" sign or double click on the selected node */ + NMTREEVIEW* tree_info = (NMTREEVIEW*)msg_info; + HTREEITEM hItem = tree_info->itemNew.hItem; + + if (winTreeCallBranchLeafCb(ih, hItem) != IUP_IGNORE) + { + TVITEM item; + winTreeItemData* itemData = (winTreeItemData*)tree_info->itemNew.lParam; + + if (tree_info->action == TVE_EXPAND) + item.iSelectedImage = item.iImage = (itemData->image_expanded!=-1)? itemData->image_expanded: (int)ih->data->def_image_expanded; + else + item.iSelectedImage = item.iImage = (itemData->image!=-1)? itemData->image: (int)ih->data->def_image_collapsed; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + SendMessage(ih->handle, TVM_SETITEM, 0, (LPARAM)(LPTVITEM)&item); + } + else + { + *result = TRUE; /* prevent the change */ + return 1; + } + } + else if(msg_info->code == NM_RCLICK) + { + HTREEITEM hItem = winTreeFindNodePointed(ih); + IFni cbRightClick = (IFni)IupGetCallback(ih, "RIGHTCLICK_CB"); + if (cbRightClick) + cbRightClick(ih, winTreeGetNodeId(ih, hItem)); + } + else if (msg_info->code == NM_CUSTOMDRAW) + { + NMTVCUSTOMDRAW *customdraw = (NMTVCUSTOMDRAW*)msg_info; + + if (customdraw->nmcd.dwDrawStage == CDDS_PREPAINT) + { + *result = CDRF_NOTIFYPOSTPAINT|CDRF_NOTIFYITEMDRAW; + return 1; + } + + if (customdraw->nmcd.dwDrawStage == CDDS_ITEMPREPAINT) + { + TVITEM item; + winTreeItemData* itemData; + HTREEITEM hItem = (HTREEITEM)customdraw->nmcd.dwItemSpec; + + item.hItem = hItem; + item.mask = TVIF_HANDLE | TVIF_PARAM; + SendMessage(ih->handle, TVM_GETITEM, 0, (LPARAM)(LPTVITEM)&item); + itemData = (winTreeItemData*)item.lParam; + + if (winTreeIsItemSelected(ih, hItem)) + customdraw->clrText = winTreeInvertColor(itemData->color); + else + customdraw->clrText = itemData->color; + + *result = CDRF_NOTIFYSUBITEMDRAW|CDRF_NOTIFYPOSTPAINT; + + if (itemData->hFont) + { + SelectObject(customdraw->nmcd.hdc, itemData->hFont); + *result |= CDRF_NEWFONT; + } + + return 1; + } + } + + return 0; /* allow the default processsing */ +} + +static int winTreeConvertXYToPos(Ihandle* ih, int x, int y) +{ + TVHITTESTINFO info; + HTREEITEM hItem; + info.pt.x = x; + info.pt.y = y; + hItem = (HTREEITEM)SendMessage(ih->handle, TVM_HITTEST, 0, (LPARAM)&info); + if (hItem) + return winTreeGetNodeId(ih, hItem); + return -1; +} + + +/*******************************************************************************************/ + +static void winTreeUnMapMethod(Ihandle* ih) +{ + Iarray* bmp_array; + HIMAGELIST image_list; + + HTREEITEM itemRoot = (HTREEITEM)SendMessage(ih->handle, TVM_GETNEXTITEM, TVGN_ROOT, 0); + winTreeDelNodeData(ih, itemRoot); + + image_list = (HIMAGELIST)SendMessage(ih->handle, TVM_GETIMAGELIST, TVSIL_NORMAL, 0); + if (image_list) + ImageList_Destroy(image_list); + + bmp_array = (Iarray*)iupAttribGet(ih, "_IUPWIN_BMPARRAY"); + if (bmp_array) + iupArrayDestroy(bmp_array); + + iupdrvBaseUnMapMethod(ih); +} + +static int winTreeMapMethod(Ihandle* ih) +{ + DWORD dwStyle = WS_CHILD | WS_BORDER | TVS_SHOWSELALWAYS; + + /* can be set only on the Tree View creation */ + + if (!ih->data->show_dragdrop) + dwStyle |= TVS_DISABLEDRAGDROP; + + if (ih->data->show_rename) + dwStyle |= TVS_EDITLABELS; + + if (!iupAttribGetBoolean(ih, "HIDELINES")) + dwStyle |= TVS_HASLINES; + + if (!iupAttribGetBoolean(ih, "HIDEBUTTONS")) + dwStyle |= TVS_HASBUTTONS; + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + dwStyle |= WS_TABSTOP; + + if (!ih->parent) + return IUP_ERROR; + + if (!iupwinCreateWindowEx(ih, WC_TREEVIEW, 0, dwStyle)) + return IUP_ERROR; + + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winTreeProc); + IupSetCallback(ih, "_IUPWIN_NOTIFY_CB", (Icallback)winTreeWmNotify); + + /* Force background update before setting the images */ + { + char* value = iupAttribGet(ih, "BGCOLOR"); + if (value) + { + winTreeSetBgColorAttrib(ih, value); + iupAttribSetStr(ih, "BGCOLOR", NULL); + } + else if (iupwinGetSystemMajorVersion()<6) /* force background in XP because of the editbox background */ + winTreeSetBgColorAttrib(ih, IupGetGlobal("TXTBGCOLOR")); + } + + /* Initialize the default images */ + ih->data->def_image_leaf = (void*)winTreeGetImageIndex(ih, "IMGLEAF"); + ih->data->def_image_collapsed = (void*)winTreeGetImageIndex(ih, "IMGCOLLAPSED"); + ih->data->def_image_expanded = (void*)winTreeGetImageIndex(ih, "IMGEXPANDED"); + + /* Add the Root Node */ + winTreeAddRootNode(ih); + + /* configure for DRAG&DROP of files */ + if (IupGetCallback(ih, "DROPFILES_CB")) + iupAttribSetStr(ih, "DRAGDROP", "YES"); + + IupSetCallback(ih, "_IUP_XY2POS_CB", (Icallback)winTreeConvertXYToPos); + + return IUP_NOERROR; +} + +void iupdrvTreeInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winTreeMapMethod; + ic->UnMap = winTreeUnMapMethod; + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", winTreeGetBgColorAttrib, winTreeSetBgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTBGCOLOR", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, winTreeSetFgColorAttrib, IUPAF_SAMEASSYSTEM, "TXTFGCOLOR", IUPAF_DEFAULT); + + /* IupTree Attributes - GENERAL */ + iupClassRegisterAttribute(ic, "EXPANDALL", NULL, winTreeSetExpandAllAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "INDENTATION", winTreeGetIndentationAttrib, winTreeSetIndentationAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "COUNT", winTreeGetCountAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DRAGDROP", NULL, iupwinSetDragDropAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SPACING", iupTreeGetSpacingAttrib, winTreeSetSpacingAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "TOPITEM", NULL, winTreeSetTopItemAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + /* IupTree Attributes - IMAGES */ + iupClassRegisterAttributeId(ic, "IMAGE", NULL, winTreeSetImageAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "IMAGEEXPANDED", NULL, winTreeSetImageExpandedAttrib, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "IMAGELEAF", NULL, winTreeSetImageLeafAttrib, IUPAF_SAMEASSYSTEM, "IMGLEAF", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEBRANCHCOLLAPSED", NULL, winTreeSetImageBranchCollapsedAttrib, IUPAF_SAMEASSYSTEM, "IMGCOLLAPSED", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGEBRANCHEXPANDED", NULL, winTreeSetImageBranchExpandedAttrib, IUPAF_SAMEASSYSTEM, "IMGEXPANDED", IUPAF_NO_INHERIT); + + /* IupTree Attributes - NODES */ + iupClassRegisterAttributeId(ic, "STATE", winTreeGetStateAttrib, winTreeSetStateAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "DEPTH", winTreeGetDepthAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "KIND", winTreeGetKindAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "PARENT", winTreeGetParentAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "NAME", winTreeGetTitleAttrib, winTreeSetTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TITLE", winTreeGetTitleAttrib, winTreeSetTitleAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "CHILDCOUNT", winTreeGetChildCountAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "USERDATA", winTreeGetUserDataAttrib, winTreeSetUserDataAttrib, IUPAF_NO_STRING|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "COLOR", winTreeGetColorAttrib, winTreeSetColorAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "TITLEFONT", winTreeGetTitleFontAttrib, winTreeSetTitleFontAttrib, IUPAF_NO_INHERIT); + + /* IupTree Attributes - MARKS */ + iupClassRegisterAttributeId(ic, "MARKED", winTreeGetMarkedAttrib, winTreeSetMarkedAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "MARK", NULL, winTreeSetMarkAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "STARTING", NULL, winTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute (ic, "MARKSTART", NULL, winTreeSetMarkStartAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute (ic, "VALUE", winTreeGetValueAttrib, winTreeSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + + /* IupTree Attributes - ACTION */ + iupClassRegisterAttributeId(ic, "DELNODE", NULL, winTreeSetDelNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RENAME", NULL, winTreeSetRenameAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "MOVENODE", NULL, winTreeSetMoveNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "COPYNODE", NULL, winTreeSetCopyNodeAttrib, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "FINDUSERDATA", winTreeGetFindUserDataAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); +} diff --git a/iup/src/win/iupwin_val.c b/iup/src/win/iupwin_val.c new file mode 100755 index 0000000..706c612 --- /dev/null +++ b/iup/src/win/iupwin_val.c @@ -0,0 +1,315 @@ +/** \file + * \brief Valuator Control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_val.h" +#include "iup_drv.h" + +#include "iupwin_drv.h" +#include "iupwin_handle.h" +#include "iupwin_draw.h" + + +#ifndef SHRT_MAX +#define SHRT_MAX 32767 +#endif + +void iupdrvValGetMinSize(Ihandle* ih, int *w, int *h) +{ + int ticks_size = 0; + if (iupAttribGetInt(ih, "SHOWTICKS")) + { + char* tickspos = iupAttribGetStr(ih, "TICKSPOS"); + if(iupStrEqualNoCase(tickspos, "BOTH")) + ticks_size = 2*8; + else + ticks_size = 8; + } + + if (ih->data->type == IVAL_HORIZONTAL) + { + *w = 35; + *h = 30+ticks_size; + } + else + { + *w = 30+ticks_size; + *h = 35; + } +} + +static int winValSetStepAttrib(Ihandle* ih, const char* value) +{ + int linesize; + ih->data->step = atof(value); + linesize = (int)(ih->data->step*SHRT_MAX); + SendMessage(ih->handle, TBM_SETLINESIZE, 0, linesize); + return 0; /* do not store value in hash table */ +} + +static int winValSetPageStepAttrib(Ihandle* ih, const char* value) +{ + int pagesize; + ih->data->pagestep = atof(value); + pagesize = (int)(ih->data->pagestep*SHRT_MAX); + SendMessage(ih->handle, TBM_SETPAGESIZE, 0, pagesize); + return 0; /* do not store value in hash table */ +} + +static int winValSetShowTicksAttrib(Ihandle* ih, const char* value) +{ + int tick_freq, show_ticks; + + if (!ih->data->show_ticks) /* can only set if already not zero */ + return 0; + + show_ticks = atoi(value); + if (show_ticks<2) show_ticks=2; + ih->data->show_ticks = show_ticks; + + /* Defines the interval frequency for tick marks */ + tick_freq = SHRT_MAX/(show_ticks-1); + SendMessage(ih->handle, TBM_SETTICFREQ, tick_freq, 0); + return 0; +} + +static int winValSetValueAttrib(Ihandle* ih, const char* value) +{ + int ival; + + ih->data->val = atof(value); + iupValCropValue(ih); + + ival = (int)(((ih->data->val-ih->data->vmin)/(ih->data->vmax - ih->data->vmin))*SHRT_MAX); + if (ih->data->inverted) + ival = SHRT_MAX-ival; + + SendMessage(ih->handle, TBM_SETPOS, TRUE, ival); + return 0; /* do not store value in hash table */ +} + + +/*********************************************************************************************/ + + +static int winValCtlColor(Ihandle* ih, HDC hdc, LRESULT *result) +{ + COLORREF cr; + if (iupwinGetParentBgColor(ih, &cr)) + { + SetDCBrushColor(hdc, cr); + *result = (LRESULT)GetStockObject(DC_BRUSH); + return 1; + } + return 0; +} + +static int winValCustomScroll(Ihandle* ih, int msg) +{ + double old_val = ih->data->val; + int ival; + IFn cb; + + ival = (int)SendMessage(ih->handle, TBM_GETPOS, 0, 0); + if (ih->data->inverted) + ival = SHRT_MAX-ival; + + ih->data->val = (((double)ival/(double)SHRT_MAX)*(ih->data->vmax - ih->data->vmin)) + ih->data->vmin; + iupValCropValue(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + { + if (ih->data->val == old_val) + return 0; + + cb(ih); + } + else + { + IFnd cb_old = NULL; + switch (msg) + { + case TB_BOTTOM: + case TB_TOP: + case TB_LINEDOWN: + case TB_LINEUP: + case TB_PAGEDOWN: + case TB_PAGEUP: + { + cb_old = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB"); + break; + } + case TB_THUMBPOSITION: + { + cb_old = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB"); + break; + } + case TB_THUMBTRACK: + { + cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB"); + break; + } + } + if (cb_old) + cb_old(ih, ih->data->val); + } + + return 0; /* not used */ +} + +static void winValIncPageValue(Ihandle *ih, int dir) +{ + int pagesize, ival; + pagesize = (int)(ih->data->pagestep*SHRT_MAX); + + ival = (int)SendMessage(ih->handle, TBM_GETPOS, 0, 0); + ival += dir*pagesize; + if (ival < 0) ival = 0; + if (ival > SHRT_MAX) ival = SHRT_MAX; + SendMessage(ih->handle, TBM_SETPOS, TRUE, ival); + + winValCustomScroll(ih, 0); +} + +static int winValProc(Ihandle* ih, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result) +{ + (void)lp; + + switch (msg) + { + case WM_ERASEBKGND: + { + RECT rect; + HDC hDC = (HDC)wp; + GetClientRect(ih->handle, &rect); + iupwinDrawParentBackground(ih, hDC, &rect); + /* return non zero value */ + *result = 1; + return 1; + } + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + { + if (iupwinBaseProc(ih, msg, wp, lp, result)==1) + return 1; + + if (GetKeyState(VK_CONTROL) & 0x8000) /* handle Ctrl+Arrows */ + { + if (wp == VK_UP || wp == VK_LEFT) + { + winValIncPageValue(ih, -1); + *result = 0; + return 1; + } + if (wp == VK_RIGHT || wp == VK_DOWN) + { + winValIncPageValue(ih, 1); + *result = 0; + return 1; + } + } + return 0; + } + } + + return iupwinBaseProc(ih, msg, wp, lp, result); +} + + +/*********************************************************************************************/ + + +static int winValMapMethod(Ihandle* ih) +{ + DWORD dwStyle = WS_CHILD | TBS_AUTOTICKS; + int show_ticks; + + if (!ih->parent) + return IUP_ERROR; + + /* Track bar Orientation */ + if (ih->data->type == IVAL_HORIZONTAL) + dwStyle |= TBS_HORZ; + else + dwStyle |= TBS_VERT; + + if (iupAttribGetBoolean(ih, "CANFOCUS")) + dwStyle |= WS_TABSTOP; + + /* Track bar Ticks */ + show_ticks = iupAttribGetInt(ih, "SHOWTICKS"); + if (!show_ticks) + { + dwStyle |= TBS_NOTICKS; /* No show_ticks */ + } + else + { + char* tickspos; + + if (show_ticks<2) show_ticks=2; + ih->data->show_ticks = show_ticks; /* non zero value, can be changed later, but not to zero */ + + /* Defines the position of tick marks */ + tickspos = iupAttribGetStr(ih, "TICKSPOS"); + if(iupStrEqualNoCase(tickspos, "BOTH")) + dwStyle |= TBS_BOTH; + else if(iupStrEqualNoCase(tickspos, "REVERSE")) + dwStyle |= TBS_BOTTOM; /* same as TBS_RIGHT */ + else /* NORMAL */ + dwStyle |= TBS_TOP; /* same as TBS_LEFT */ + } + + if (!iupwinCreateWindowEx(ih, TRACKBAR_CLASS, 0, dwStyle)) + return IUP_ERROR; + + /* Process Keyboard */ + IupSetCallback(ih, "_IUPWIN_CTRLPROC_CB", (Icallback)winValProc); + + /* Process Val Scroll commands */ + IupSetCallback(ih, "_IUPWIN_CUSTOMSCROLL_CB", (Icallback)winValCustomScroll); + + /* Process background color */ + IupSetCallback(ih, "_IUPWIN_CTLCOLOR_CB", (Icallback)winValCtlColor); + + /* configure the native range */ + SendMessage(ih->handle, TBM_SETRANGEMIN, FALSE, 0); + SendMessage(ih->handle, TBM_SETRANGEMAX, FALSE, SHRT_MAX); + + if (ih->data->inverted) + SendMessage(ih->handle, TBM_SETPOS, FALSE, SHRT_MAX); /* default initial position is at MIN */ + + return IUP_NOERROR; +} + +void iupdrvValInitClass(Iclass* ic) +{ + /* Driver Dependent Class functions */ + ic->Map = winValMapMethod; + + /* IupVal only */ + iupClassRegisterAttribute(ic, "VALUE", iupValGetValueAttrib, winValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWTICKS", iupValGetShowTicksAttrib, winValSetShowTicksAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "PAGESTEP", iupValGetPageStepAttrib, winValSetPageStepAttrib, "0.1", NULL, IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "STEP", iupValGetStepAttrib, winValSetStepAttrib, "0.01", NULL, IUPAF_NO_INHERIT); /* force new default value */ + + iupClassRegisterAttribute(ic, "TICKSPOS", NULL, NULL, "NORMAL", NULL, IUPAF_NOT_MAPPED); +} diff --git a/iup/src/win/iupwindows_help.c b/iup/src/win/iupwindows_help.c new file mode 100755 index 0000000..f3a06b6 --- /dev/null +++ b/iup/src/win/iupwindows_help.c @@ -0,0 +1,32 @@ +/** \file + * \brief Windows Driver IupHelp + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include + +#include "iup.h" + +int IupHelp(const char* url) +{ + int err = (int)ShellExecute(GetDesktopWindow(), "open", url, NULL, NULL, SW_SHOWNORMAL); + if (err <= 32) + { + switch (err) + { + case ERROR_FILE_NOT_FOUND: + case ERROR_PATH_NOT_FOUND: + return -2; /* File not found */ + break; + default: + return -1; /* Generic error */ + break; + } + } + return 1; +} diff --git a/iup/src/win/iupwindows_info.c b/iup/src/win/iupwindows_info.c new file mode 100755 index 0000000..982c980 --- /dev/null +++ b/iup/src/win/iupwindows_info.c @@ -0,0 +1,212 @@ +/** \file + * \brief Windows System Information + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +/* This module should depend only on IUP core headers + and Windows system headers. */ + +#include + +#include "iup_str.h" +#include "iup_drvinfo.h" + + +int iupdrvMakeDirectory(const char* name) +{ + if (CreateDirectory(name, NULL)) + return 1; + else + return 0; +} + +int iupdrvIsFile(const char* name) +{ + DWORD attrib = GetFileAttributes(name); + if (attrib == INVALID_FILE_ATTRIBUTES) + return 0; + if (attrib & FILE_ATTRIBUTE_DIRECTORY) + return 0; + return 1; +} + +int iupdrvIsDirectory(const char* name) +{ + DWORD attrib = GetFileAttributes(name); + if (attrib == INVALID_FILE_ATTRIBUTES) + return 0; + if (attrib & FILE_ATTRIBUTE_DIRECTORY) + return 1; + return 0; +} + +char* iupdrvGetCurrentDirectory(void) +{ + char* cur_dir; + int len = GetCurrentDirectory(0, NULL); + if (len == 0) return NULL; + + cur_dir = malloc(len+2); + GetCurrentDirectory(len+1, cur_dir); + cur_dir[len] = '\\'; + cur_dir[len+1] = 0; + return cur_dir; +} + +int iupdrvSetCurrentDirectory(const char* dir) +{ + return SetCurrentDirectory(dir); +} + +int iupdrvGetWindowDecor(void* wnd, int *border, int *caption) +{ + WINDOWINFO wi; + wi.cbSize = sizeof(WINDOWINFO); + GetWindowInfo((HWND)wnd, &wi); + + *border = wi.cxWindowBorders; + + if (wi.rcClient.bottom == wi.rcClient.top) + *caption = wi.rcClient.bottom - wi.cyWindowBorders; + else + { + /* caption = window height - top border - client height */ + *caption = (wi.rcWindow.bottom-wi.rcWindow.top) - 2*wi.cyWindowBorders - (wi.rcClient.bottom-wi.rcClient.top); + } + + return 1; +} + +void iupdrvGetScreenSize(int *width, int *height) +{ + RECT area; + SystemParametersInfo(SPI_GETWORKAREA, 0, &area, 0); + *width = (int)(area.right - area.left); + *height = (int)(area.bottom - area.top); +} + +void iupdrvGetFullSize(int *width, int *height) +{ + RECT rect; + GetWindowRect(GetDesktopWindow(), &rect); + *width = rect.right - rect.left; + *height = rect.bottom - rect.top; +} + +int iupdrvGetScreenDepth(void) +{ + int bpp; + HDC hDCDisplay = GetDC(NULL); + bpp = GetDeviceCaps(hDCDisplay, BITSPIXEL); + ReleaseDC(NULL, hDCDisplay); + return bpp; +} + +void iupdrvGetCursorPos(int *x, int *y) +{ + POINT CursorPoint; + GetCursorPos(&CursorPoint); + *x = (int)CursorPoint.x; + *y = (int)CursorPoint.y; +} + +void iupdrvGetKeyState(char* key) +{ + if (GetAsyncKeyState(VK_SHIFT) & 0x8000) + key[0] = 'S'; + else + key[0] = ' '; + if (GetAsyncKeyState(VK_CONTROL) & 0x8000) + key[1] = 'C'; + else + key[1] = ' '; + if (GetAsyncKeyState(VK_MENU) & 0x8000) + key[2] = 'A'; + else + key[2] = ' '; + if ((GetAsyncKeyState(VK_LWIN) & 0x8000) || (GetAsyncKeyState(VK_RWIN) & 0x8000)) + key[3] = 'Y'; + else + key[3] = ' '; + + key[4] = 0; +} + +char *iupdrvGetSystemName(void) +{ + OSVERSIONINFO osvi; + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + + if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) + { + if (osvi.dwMajorVersion <= 4) + return "WinNT"; + + if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0) + return "Win2K"; + + if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion > 0) + return "WinXP"; + + if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0) + return "Vista"; + + if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0) + return "Win7"; + } + + return "Windows"; +} + +char *iupdrvGetSystemVersion(void) +{ + char *str = iupStrGetMemory(256); + OSVERSIONINFOEX osvi; + SYSTEM_INFO si; + + ZeroMemory(&si, sizeof(SYSTEM_INFO)); + GetSystemInfo(&si); + + ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + GetVersionEx((OSVERSIONINFO*)&osvi); + + sprintf(str, "%d.%d.%d", (int)osvi.dwMajorVersion, (int)osvi.dwMinorVersion, (int)osvi.dwBuildNumber); + + /* Display service pack (if any). */ + if (osvi.szCSDVersion && osvi.szCSDVersion[0]!=0) + { + strcat(str, " "); + strcat(str, osvi.szCSDVersion); + } + + if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64) + strcat(str, " (IA64)"); + else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) + strcat(str, " (x64)"); + else + strcat(str, " (x86)"); + + return str; +} + +char *iupdrvGetComputerName(void) +{ + DWORD size = MAX_COMPUTERNAME_LENGTH + 1; + char* str = iupStrGetMemory(size); + GetComputerName((LPTSTR)str, &size); + return str; +} + +char *iupdrvGetUserName(void) +{ + DWORD size = 256; + char* str = iupStrGetMemory(size); + GetUserName((LPTSTR)str, &size); + return (char*)str; +} diff --git a/iup/src/win/iupwindows_main.c b/iup/src/win/iupwindows_main.c new file mode 100755 index 0000000..ea7e2ae --- /dev/null +++ b/iup/src/win/iupwindows_main.c @@ -0,0 +1,66 @@ +/** \file + * \brief Windows Driver WinMain + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include /* declaration of __argc and __argv */ + +#include "iup.h" + + +#ifdef __WATCOMC__ /* force Watcom to link this module, called from IupOpen */ +void iupwinMainDummy(void) +{ + return; +} +#else +extern int main(int, char **); +#endif + +/* save this handle in DllMain only, use to load resources from the DLL. */ +HINSTANCE iupwin_dll_hinstance = 0; + +#ifdef IUP_DLL +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + (void)fdwReason; + (void)lpvReserved; + + iupwin_dll_hinstance = hinstDLL; + + return TRUE; +} +#else +/* this module is always linked in the makefile, + But it must not define WinMain if building the DLL */ +int PASCAL WinMain (HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int ncmdshow) +{ + (void)hinst; /* NOT used */ + (void)hprev; + (void)cmdline; + (void)ncmdshow; + + /* WinMain is NOT called for Console applications */ + +#ifdef __WATCOMC__ + { + extern int _argc; + extern char** _argv; + return IupMain(_argc, _argv); + } +#else + { + /* this seems to work for all the compilers we tested, except Watcom compilers */ + /* These are declared in , except for Cygwin. */ +#ifdef __GNUC__ + extern int __argc; + extern char** __argv; +#endif + return main(__argc, __argv); + } +#endif +} +#endif diff --git a/iup/srccd/Makefile b/iup/srccd/Makefile new file mode 100755 index 0000000..43a3f09 --- /dev/null +++ b/iup/srccd/Makefile @@ -0,0 +1,6 @@ + +.PHONY: do_all iupcd +do_all: iupcd + +iupcd: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak diff --git a/iup/srccd/config.mak b/iup/srccd/config.mak new file mode 100755 index 0000000..3e5a9fe --- /dev/null +++ b/iup/srccd/config.mak @@ -0,0 +1,14 @@ +PROJNAME = iup +LIBNAME = iupcd +OPT = YES + +DEFINES = CD_NO_OLD_INTERFACE +SRC = iup_cd.c +DEF_FILE = iupcd.def + +USE_CD=YES +# Can not use USE_IUP because Tecmake will include "iupcd" in linker + +INCLUDES = ../include +LIBS = iup +LDIR = ../lib/$(TEC_UNAME) diff --git a/iup/srccd/iup_cd.c b/iup/srccd/iup_cd.c new file mode 100755 index 0000000..5998775 --- /dev/null +++ b/iup/srccd/iup_cd.c @@ -0,0 +1,70 @@ +/** \file + * \brief IUP Driver + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" + +#include +#include +#include +#include + + +static void (*cdcreatecanvasNATIVE)(cdCanvas* canvas, void* data) = NULL; + +static void cdcreatecanvasIUP(cdCanvas* canvas, Ihandle *ih_canvas) +{ +#ifndef WIN32 + char str[50] = ""; +#endif + char* data; + + if (IupGetInt(ih_canvas, "CD_GDK")) + data = IupGetAttribute(ih_canvas, "DRAWABLE"); /* new IUP 3 attribute, works for GTK only */ + else + { +#ifdef WIN32 + data = IupGetAttribute(ih_canvas, "HWND"); /* new IUP 3 attribute, works for Windows and GTK */ + if (!data) + data = IupGetAttribute(ih_canvas, "WID"); /* OLD IUP 2 attribute */ + if (!data) + return; +#else + void *dpy = IupGetAttribute(ih_canvas, "XDISPLAY"); /* works for Motif and GTK */ + unsigned long wnd = (unsigned long)IupGetAttribute(ih_canvas, "XWINDOW"); + if (!wnd || !dpy) + return; + data = str; +#ifdef SunOS_OLD + sprintf(str, "%d %lu", (int)dpy, wnd); +#else + sprintf(str, "%p %lu", dpy, wnd); +#endif +#endif + } + + /* Inicializa driver NativeWindow */ + cdcreatecanvasNATIVE(canvas, data); + + IupSetAttribute(ih_canvas, "_CD_CANVAS", (char*)canvas); +} + +static cdContext cdIupContext; + +cdContext* cdContextIup(void) +{ + /* call cdContextNativeWindow every time, because of ContextPlus */ + cdContext* ctx = cdContextNativeWindow(); + + cdcreatecanvasNATIVE = ctx->cxCreateCanvas; + + cdIupContext = *ctx; + cdIupContext.cxCreateCanvas = cdcreatecanvasIUP; + + return &cdIupContext; +} diff --git a/iup/srccd/iupcd.def b/iup/srccd/iupcd.def new file mode 100755 index 0000000..67a21f9 --- /dev/null +++ b/iup/srccd/iupcd.def @@ -0,0 +1,2 @@ +EXPORTS + cdContextIup diff --git a/iup/srccd/iupcd.dep b/iup/srccd/iupcd.dep new file mode 100644 index 0000000..4612393 --- /dev/null +++ b/iup/srccd/iupcd.dep @@ -0,0 +1,3 @@ +$(OBJDIR)/iup_cd.o: iup_cd.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../../cd/include/cd.h ../../cd/include/cd_private.h \ + ../../cd/include/cdiup.h ../../cd/include/cdnative.h diff --git a/iup/srccd/make_uname b/iup/srccd/make_uname new file mode 100755 index 0000000..cc4b881 --- /dev/null +++ b/iup/srccd/make_uname @@ -0,0 +1,3 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/srccd/make_uname.bat b/iup/srccd/make_uname.bat new file mode 100755 index 0000000..f0a0722 --- /dev/null +++ b/iup/srccd/make_uname.bat @@ -0,0 +1,4 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 diff --git a/iup/srcconsole/Makefile b/iup/srcconsole/Makefile new file mode 100755 index 0000000..876ca8d --- /dev/null +++ b/iup/srcconsole/Makefile @@ -0,0 +1,12 @@ + +.PHONY: do_all iuplua5 iuplua5gtk iuplua3 +do_all: iuplua5 + +iuplua5: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak + +iuplua5gtk: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak USE_GTK=Yes + +iuplua3: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iuplua3 diff --git a/iup/srcconsole/config.mak b/iup/srcconsole/config.mak new file mode 100755 index 0000000..612a3ab --- /dev/null +++ b/iup/srcconsole/config.mak @@ -0,0 +1,138 @@ +PROJNAME = iup +APPNAME = iuplua51 +APPTYPE = console + +LOHDIR = loh +SRCLUA = console5.lua +SRC = iup_lua51.c + + +# Disable strip +STRIP = +# Optimize +OPT = YES + +# IM and IupPPlot uses C++ +LINKER = $(CPPC) + +USE_MOTIF = Yes + +ifdef USE_GTK + APPNAME = iuplua51gtk +endif + +ifdef USE_MOTIF + APPNAME = iuplua51mot +endif + +DBG = Yes + +ifdef DBG + # Statically link everything only when debugging + IUP := .. + USE_IUPLUA = Yes + USE_IUP3 = Yes + USE_STATIC = Yes + USE_LUA51 = Yes + + DEFINES = USE_STATIC + + USE_CDLUA = Yes + USE_IUPCONTROLS = Yes + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS += iuplua_pplot$(LIBLUASUFX) iup_pplot + else + IUPLIB = $(IUP)/lib/$(TEC_UNAME) + SLIB += $(IUPLIB)/libiuplua_pplot$(LIBLUASUFX).a $(IUPLIB)/libiup_pplot.a + endif + + ifndef IUPLUA_NO_IM + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS += cdluaim$(LIBLUASUFX) + else + CDLIB = $(CD)/lib/$(TEC_UNAME) + SLIB += $(CDLIB)/libcdluaim$(LIBLUASUFX).a + endif + endif + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + USE_GDIPLUS=Yes + else + # USE_XRENDER=Yes + endif + + USE_IMLUA = Yes + + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS += imlua_process$(LIBLUASUFX) iupluaim$(LIBLUASUFX) im_process iupim + else + IUPLIB = $(IUP)/lib/$(TEC_UNAME) + IMLIB = $(IM)/lib/$(TEC_UNAME) + SLIB += $(IMLIB)/libimlua_process$(LIBLUASUFX).a $(IUPLIB)/libiupluaim$(LIBLUASUFX).a $(IMLIB)/libim_process.a $(IUPLIB)/libiupim.a + endif + + + IUPLUA_IMGLIB = Yes + ifdef IUPLUA_IMGLIB + DEFINES += IUPLUA_IMGLIB + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS += iupluaimglib$(LIBLUASUFX) iupimglib + else + IUPLIB = $(IUP)/lib/$(TEC_UNAME) + SLIB += $(IUPLIB)/libiupluaimglib$(LIBLUASUFX).a $(IUPLIB)/libiupimglib.a + endif + endif +else + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + # Dinamically link in Windows, when not debugging + # Must call "tecmake dll8" + USE_LUA51 = Yes + USE_DLL = Yes + GEN_MANIFEST = No + else + # In UNIX Lua is always statically linked, late binding is used. + USE_STATIC = Yes + USE_LUA51 = Yes + endif +endif + + +ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + SLIB += setargv.obj + SRC += iuplua5.rc +endif + +ifneq ($(findstring cygw, $(TEC_UNAME)), ) + LDFLAGS = -s + LIBS += readline history +endif + +ifneq ($(findstring Linux, $(TEC_UNAME)), ) + LIBS += dl + #To allow late binding + LFLAGS = -Wl,-E + LIBS += readline history curses ncurses +endif + +ifneq ($(findstring BSD, $(TEC_UNAME)), ) + #To allow late binding + LFLAGS = -Wl,-E + LIBS += readline history curses ncurses +endif + +ifneq ($(findstring SunOS, $(TEC_UNAME)), ) + LIBS += dl +endif + +ifneq ($(findstring AIX, $(TEC_UNAME)), ) + FLAGS += -mminimal-toc + OPTFLAGS = -mminimal-toc -ansi -pedantic + LFLAGS = -Xlinker "-bbigtoc" +endif + +ifeq ($(TEC_UNAME), vc8) + ifdef DBG + #debug info not working for vc8 linker + define DBG + endef + endif +endif diff --git a/iup/srcconsole/console3.lua b/iup/srcconsole/console3.lua new file mode 100755 index 0000000..2e35abd --- /dev/null +++ b/iup/srcconsole/console3.lua @@ -0,0 +1,181 @@ +-- Utilities + +-- Dummy require +function require() +end + +function printvars() + local n,v = nextvar(nil) + print("--printvars Start--") + while n ~= nil do + print(tostring(n).."="..tostring(v)) + n,v = nextvar(n) + end + print("--printvars End--") +end + +function printtable(t) + local n,v = next(t, nil) + print("--printtable Start--") + while n ~= nil do + print(tostring(n).."="..tostring(v)) + n,v = next(t, n) + end + print("--printtable End--") +end + +function print_version_info() + print(_VERSION .. " " .. iup._LUA_COPYRIGHT) + if (im) then print(im._VERSION .. " " .. im._COPYRIGHT) end + if (cd and cd._VERSION) then print(cd._VERSION .. " " .. cd._COPYRIGHT) end + print(iup._VERSION .. " " .. iup._COPYRIGHT) + print("") + print("IUP Info") + print(" System: " .. iup.GetGlobal("SYSTEM")) + print(" System Version: " .. iup.GetGlobal("SYSTEMVERSION")) + local mot = iup.GetGlobal("MOTIFVERSION") + if (mot) then print(" Motif Version: ", mot) end + print(" Screen Size: " .. iup.GetGlobal("SCREENSIZE")) + print(" Screen Depth: " .. iup.GetGlobal("SCREENDEPTH")) + if (iup.GL_VENDOR) then print(" OpenGL Vendor: " .. iup.GL_VENDOR) end + if (iup.GL_RENDERER) then print(" OpenGL Renderer: " .. iup.GL_RENDERER) end + if (iup.GL_VERSION) then print(" OpenGL Version: " .. iup.GL_VERSION) end +end + +-- IUPLUA Full Application + +lastfile = nil -- Last file open + +mulCommands = iupmultiline{expand=IUP_YES, size="200x120", font="COURIER_NORMAL_10"} +poslabel = iuplabel{title="0:0", size="50x"} +filelabel = iuplabel{title="", size="50x", expand="HORIZONTAL"} + +mulCommands.caretcb = function(self, lin, col) + poslabel.title = lin..":"..col +end + +butExecute = iupbutton{size="50x15", title = "Execute", action="dostring(mulCommands.value)"} +butClearCommands = iupbutton{size="50x15", title = "Clear", action = "mulCommands.value = '' filelabel.title = '' lastfile = nil"} +butLoadFile = iupbutton{size="50x15", title = "Load..."} +butSaveasFile = iupbutton{size="50x15", title = "Save As..."} +butSaveFile = iupbutton{size="50x15", title = "Save"} + +function butSaveFile:action() + if (lastfile == nil) then + butSaveasFile:action() + else + novoarq = openfile (lastfile, "w+") + if (novoarq ~= nil) then + write (novoarq,mulCommands.value) + closefile (novoarq) + else + error ("Cannot Save file "..filename) + end + end +end + +function butSaveasFile:action() + local filedlg = iupfiledlg{dialogtype = "SAVE", title = "Save File", filter = "*.wlua", filterinfo = "Lua files",allownew=yes} + IupPopup(filedlg,IUP_LEFT, IUP_LEFT) + local status = filedlg.status + lastfile = filedlg.value + filelabel.title = lastfile + IupDestroy(filedlg) + if status ~= "-1" then + if (lastfile == nil) then + error ("Cannot Save file "..lastfile) + end + local novoarq = openfile (lastfile, "w+") + if (novoarq ~= nil) then + write (novoarq,mulCommands.value) + closefile (novoarq) + else + error ("Cannot Save file") + end + end +end + +function butLoadFile:action() + local filedlg = iupfiledlg{dialogtype="OPEN", title="Load File", filter="*.wlua", filterinfo="Lua Files", allownew="NO"} + filedlg:popup(IUP_CENTER, IUP_CENTER) + local status = filedlg.status + local newfile = filedlg.value + IupDestroy(filedlg) + if (status == "-1") or (status == "1") then + if (status == "1") then + error ("Cannot load file "..newfile) + end + else + local fp = openfile (newfile, "r") + if (fp == nil) then + error ("Cannot load file "..newfile) + else + mulCommands.value = read (fp,"*a") + closefile (fp) + lastfile = newfile + filelabel.title = lastfile + end + end +end + +vbxConsole = iupvbox +{ + iupframe{iuphbox{iupvbox{butLoadFile, butSaveFile, butSaveasFile, butClearCommands, butExecute; margin="0x0", gap="10"}, iupvbox{filelabel, mulCommands, poslabel; alignment="ARIGHT"}; alignment="ATOP"}; title="Commands"} + ;alignment="ACENTER", margin="5x5", gap="5" +} + +-- Main Menu Definition. + +mnuMain = iupmenu +{ + iupsubmenu + { + iupmenu + { + iupitem{title="Exit", action="return IUP_CLOSE"} + }; title="File" + }, + iupsubmenu{iupmenu + { + iup.item{title="Print Version Info...", action=print_version_info}, + iupitem{title="About...", action="dlgAbout:popup(IUP_CENTER, IUP_CENTER)"} + };title="Help"} +} + +-- Main Dialog Definition. + +dlgMain = iupdialog{vbxConsole; title="Complete IupLua3 Interpreter", menu=mnuMain, close_cb = "return IUP_CLOSE"} + +-- About Dialog Definition. + +dlgAbout = iupdialog +{ + iupvbox + { + iuplabel{title="Complete IupLua3 Interpreter"}, + iupfill{size="5"}, + iupfill{size="5"}, + iupframe + { + iupvbox + { + iuplabel{title="Tecgraf/PUC-Rio"}, + iuplabel{title="Mark/Ovídio/Scuri"}, + iuplabel{title="iup@tecgraf.puc-rio.br"} + } + }, + iupfill{size="5"}, + iupbutton{title="OK", action="return IUP_CLOSE", size="50X20"} + ;margin="10x10", alignment="ACENTER" + } + ;maxbox=IUP_NO, minbox=IUP_NO, resize=IUP_NO, title="About" +} + +-- Displays the Main Dialog + +dlgMain:show() + +IupMainLoop() + +IupDestroy(dlgMain) +IupDestroy(dlgAbout) diff --git a/iup/srcconsole/console5.lua b/iup/srcconsole/console5.lua new file mode 100755 index 0000000..20f74b2 --- /dev/null +++ b/iup/srcconsole/console5.lua @@ -0,0 +1,204 @@ +require"iuplua" + +iup.console = {} + +-- Utilities + +function iup.console.printtable(t) + local n,v = next(t, nil) + print("--printtable Start--") + while n do + print(tostring(n).."="..tostring(v)) + n,v = next(t, n) + end + print("--printtable End--") +end + +function iup.console.print_version_info() + if (im) then print("IM " .. im._VERSION .. " " .. im._COPYRIGHT) end + + if (cd) then print("CD " .. cd._VERSION .. " " .. cd._COPYRIGHT) end + + print("IUP " .. iup._VERSION .. " " .. iup._COPYRIGHT) + print("") + print("IUP Info") + print(" System: " .. iup.GetGlobal("SYSTEM")) + print(" System Version: " .. iup.GetGlobal("SYSTEMVERSION")) + + local mot = iup.GetGlobal("MOTIFVERSION") + if (mot) then print(" Motif Version: ", mot) end + + print(" Screen Size: " .. iup.GetGlobal("SCREENSIZE")) + print(" Screen Depth: " .. iup.GetGlobal("SCREENDEPTH")) + + if (iup.GL_VENDOR) then print(" OpenGL Vendor: " .. iup.GL_VENDOR) end + if (iup.GL_RENDERER) then print(" OpenGL Renderer: " .. iup.GL_RENDERER) end + if (iup.GL_VERSION) then print(" OpenGL Version: " .. iup.GL_VERSION) end +end + +-- Console Dialog + +iup.console.lastfilename = nil -- Last file open +iup.console.mlCode = iup.multiline{expand="YES", size="200x120", font="COURIER_NORMAL_10"} +iup.console.lblPosition = iup.label{title="0:0", size="50x"} +iup.console.lblFileName = iup.label{title="", size="50x", expand="HORIZONTAL"} + +function iup.console.mlCode:caret_cb(lin, col) + iup.console.lblPosition.title = lin..":"..col +end + +iup.console.butExecute = iup.button{size="50x15", title="Execute", + action="iup.dostring(iup.console.mlCode.value)"} +iup.console.butClearCommands = iup.button{size="50x15", title="Clear", + action="iup.console.mlCode.value='' iup.console.lblFileName.title = '' iup.console.lastfilename = nil"} +iup.console.butLoadFile = iup.button{size="50x15", title="Load..."} +iup.console.butSaveasFile = iup.button{size="50x15", title="Save As..."} +iup.console.butSaveFile = iup.button{size="50x15", title="Save"} + +function iup.console.butSaveFile:action() + if (iup.console.lastfilename == nil) then + iup.console.butSaveasFile:action() + else + newfile = io.open(iup.console.lastfilename, "w+") + if (newfile) then + newfile:write(iup.console.mlCode.value) + newfile:close() + else + error ("Cannot Save file "..filename) + end + end +end + +function iup.console.butSaveasFile:action() + local fd = iup.filedlg{dialogtype="SAVE", title="Save File", + filter="*.*", filterinfo="All files",allownew=yes} + fd:popup(iup.LEFT, iup.LEFT) + local status = fd.status + iup.console.lastfilename = fd.value + iup.console.lblFileName.title = iup.console.lastfilename + fd:destroy() + if status ~= "-1" then + if (iup.console.lastfilename == nil) then + error ("Cannot Save file "..filename) + end + local newfile=io.open(iup.console.lastfilename, "w+") + if (newfile) then + newfile:write(iup.console.mlCode.value) + newfile:close(newfile) + else + error ("Cannot Save file") + end + end +end + +function iup.console.LoadFile(filename) + local newfile = io.open (filename, "r") + if (newfile == nil) then + error ("Cannot load file "..filename) + else + iup.console.mlCode.value=newfile:read("*a") + newfile:close (newfile) + iup.console.lastfilename = filename + iup.console.lblFileName.title = iup.console.lastfilename + end +end + +function iup.console.butLoadFile:action() + local fd=iup.filedlg{dialogtype="OPEN", title="Load File", + filter="*.*", filterinfo="All Files", allownew="NO"} + fd:popup(iup.CENTER, iup.CENTER) + local status = fd.status + local filename = fd.value + fd:destroy() + + if (status == "-1") or (status == "1") then + if (status == "1") then + error ("Cannot load file "..filename) + end + else + iup.console.LoadFile(filename) + end +end + +iup.console.vbxConsole = iup.vbox +{ + iup.frame{iup.hbox{iup.vbox{iup.console.butLoadFile, + iup.console.butSaveFile, + iup.console.butSaveasFile, + iup.console.butClearCommands, + iup.console.butExecute; + margin="0x0", gap="10"}, + iup.vbox{iup.console.lblFileName, + iup.console.mlCode, + iup.console.lblPosition; + alignment = "ARIGHT"}; + alignment="ATOP"}; title="Commands"} + ;alignment="ACENTER", margin="5x5", gap="5" +} + +-- Main Menu Definition. + +iup.console.mnuMain = iup.menu +{ + iup.submenu + { + iup.menu + { + iup.item{title="Exit", action="return iup.CLOSE"} + }; title="File" + }, + iup.submenu{iup.menu + { + iup.item{title="Print Version Info...", action=iup.console.print_version_info}, + iup.item{title="About...", action="iup.console.dlgAbout:popup(iup.CENTER, iup.CENTER)"} + };title="Help"} +} + +-- Main Dialog Definition. + +iup.console.dlgMain = iup.dialog{iup.console.vbxConsole; + title="IupLua Console", + menu=iup.console.mnuMain, + dragdrop = "YES", + defaultenter=iup.console.butExecute, + close_cb = "return iup.CLOSE"} + +function iup.console.dlgMain:dropfiles_cb(filename, num, x, y) + if (num == 0) then + iup.console.LoadFile(filename) + end +end + +-- About Dialog Definition. + +iup.console.dlgAbout = iup.dialog +{ + iup.vbox + { + iup.label{title="IupLua Console"}, + iup.fill{size="5"}, + iup.fill{size="5"}, + iup.frame + { + iup.vbox + { + iup.label{title="Tecgraf/PUC-Rio"}, + iup.label{title="iup@tecgraf.puc-rio.br"} + } + }, + iup.fill{size="5"}, + iup.button{title="OK", action="return iup.CLOSE", size="50X20"} + ;margin="10x10", alignment="ACENTER" + } + ;maxbox="NO", minbox="NO", resize="NO", title="About" +} + +-- Displays the Main Dialog + +iup.console.dlgMain:show() +iup.SetFocus(iup.console.mlCode) + +iup.MainLoop() + +iup.console.dlgMain:destroy() +iup.console.dlgAbout:destroy() diff --git a/iup/srcconsole/copy_all_so b/iup/srcconsole/copy_all_so new file mode 100755 index 0000000..52f1fea --- /dev/null +++ b/iup/srcconsole/copy_all_so @@ -0,0 +1,11 @@ +#!/bin/tcsh + +foreach plat ( Linux24 Linux24g3 Linux24g3_64 Linux26 Linux26_64 Linux26g4 Linux26g4_64 Linux26_ia64 SunOS57 SunOS510 SunOS510x86 AIX43 IRIX65 IRIX6465 ) + echo $plat + cp -f ../lib/$plat/*.so ../bin/$plat + cp -f ../../cd/lib/$plat/*.so ../bin/$plat + cp -f ../../im/lib/$plat/*.so ../bin/$plat + cp -f ../../luagl/lib/$plat/*.so ../bin/$plat + cp -f ../../lfs/lib/$plat/*.so ../bin/$plat + rm -f ../bin/$plat/*3.so +end diff --git a/iup/srcconsole/copy_dll.bat b/iup/srcconsole/copy_dll.bat new file mode 100755 index 0000000..5830805 --- /dev/null +++ b/iup/srcconsole/copy_dll.bat @@ -0,0 +1,10 @@ +@echo off +copy /y ..\lib\dll8\*.dll ..\bin\Win32 +copy /y ..\..\cd\lib\dll8\*.dll ..\bin\Win32 +copy /y ..\..\im\lib\dll8\*.dll ..\bin\Win32 +copy /y ..\..\lua5.1\lib\dll8\*.dll ..\bin\Win32 +copy /y ..\..\luagl\lib\dll8\*.dll ..\bin\Win32 +copy /y ..\..\lfs\lib\dll8\*.dll ..\bin\Win32 +mkdir ..\bin\Win32\Microsoft.VC80.CRT +copy /y ..\..\lua5.1\bin\Win32\Microsoft.VC80.CRT ..\bin\Win32\Microsoft.VC80.CRT\ +del ..\bin\Win32\*3.dll diff --git a/iup/srcconsole/copy_dll_64.bat b/iup/srcconsole/copy_dll_64.bat new file mode 100755 index 0000000..159117f --- /dev/null +++ b/iup/srcconsole/copy_dll_64.bat @@ -0,0 +1,10 @@ +@echo off +copy /y ..\lib\dll8_64\*.dll ..\bin\Win64 +copy /y ..\..\cd\lib\dll8_64\*.dll ..\bin\Win64 +copy /y ..\..\im\lib\dll8_64\*.dll ..\bin\Win64 +copy /y ..\..\lua5.1\lib\dll8_64\*.dll ..\bin\Win64 +copy /y ..\..\luagl\lib\dll8_64\*.dll ..\bin\Win64 +copy /y ..\..\lfs\lib\dll8_64\*.dll ..\bin\Win64 +mkdir ..\bin\Win64\Microsoft.VC80.CRT +copy /y ..\..\lua5.1\bin\Win64\Microsoft.VC80.CRT ..\bin\Win64\Microsoft.VC80.CRT\ +del ..\bin\Win64\*3.dll diff --git a/iup/srcconsole/copy_so b/iup/srcconsole/copy_so new file mode 100755 index 0000000..2535766 --- /dev/null +++ b/iup/srcconsole/copy_so @@ -0,0 +1,4 @@ +cp -f ../lib/${TEC_UNAME}/*.so ../bin/$TEC_UNAME +cp -f ../../cd/lib/${TEC_UNAME}/*.so ../bin/$TEC_UNAME +cp -f ../../im/lib/${TEC_UNAME}/*.so ../bin/$TEC_UNAME +rm -f ../bin/${TEC_UNAME}/*3.so diff --git a/iup/srcconsole/iup_lua3.c b/iup/srcconsole/iup_lua3.c new file mode 100755 index 0000000..aef041b --- /dev/null +++ b/iup/srcconsole/iup_lua3.c @@ -0,0 +1,128 @@ +/** \file + * \brief Creates a Lua executable linked to all standard IUP libraries + * If user does not provide arguments environment variable + * "console3.lua" will be searched. And if fails + * internal Lua code will be executed to provide a basic interface + * for the user. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "lua.h" +#include "lualib.h" +#include "luadebug.h" + +#include "iup.h" +#include "iupkey.h" +#include "iuplua.h" + +#ifndef IUPLUA_NO_GL +#include "iupgl.h" +#include "iupluagl.h" +#endif + +#ifndef IUPLUA_NO_CD +#include "iupcontrols.h" +#include "iupluacontrols.h" +#include "iup_pplot.h" +#include "iuplua_pplot.h" +#include +#include +#include +#endif + +#ifndef IUPLUA_NO_IM +#include "iupluaim.h" +#include +#endif + +int main ( int argc, char **argv ) +{ + IupOpen(&argc, &argv); +#ifndef IUPLUA_NO_GL + IupGLCanvasOpen(); +#endif +#ifndef IUPLUA_NO_CD + IupControlsOpen(); + IupPPlotOpen(); +#endif + + lua_open(); + + lua_setdebug(1); + + lua_iolibopen( ); + lua_strlibopen( ); + lua_mathlibopen( ); + + iuplua_open( ); + iupkey_open( ); +#ifndef IUPLUA_NO_GL + iupgllua_open(); +#endif +#ifndef IUPLUA_NO_CD + iupcontrolslua_open(); + iup_pplotlua_open(); + cdlua_open(); + cdluaiup_open(); +#endif +#ifndef IUPLUA_NO_IM + iupimlua_open(); + imlua_open(); +#endif + + if (argc <= 1) + { + if(!iuplua_dofile("console3.lua")) + { +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/console3_be64.loh" +#else +#include "loh/console3_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/console3_le64w.loh" +#else +#include "loh/console3_le64.loh" +#endif +#else +#include "loh/console3.loh" +#endif +#endif + } + } + else + { + int ok = 1, + i = 1; + + /* Running all .lua given as arguments */ + while(ok & (i < argc)) + { + ok = iuplua_dofile(argv[i]); + i++; + } + + if(!ok) + { + return EXIT_FAILURE; + } + } + +#ifndef IUPLUA_NO_CD + cdlua_close(); + IupControlsClose(); +#endif + IupClose(); + + lua_close(); + + return EXIT_SUCCESS; +} diff --git a/iup/srcconsole/iup_lua51.c b/iup/srcconsole/iup_lua51.c new file mode 100755 index 0000000..ed73ac0 --- /dev/null +++ b/iup/srcconsole/iup_lua51.c @@ -0,0 +1,493 @@ +/* +** Lua stand-alone interpreter +** See Copyright Notice in lua.h +*/ + + +#include +#include +#include +#include + +#define lua_c + +#include "lua.h" + +#include "lauxlib.h" +#include "lualib.h" + + + +/******************* IUP *********************/ +#ifdef USE_STATIC +#include "iup.h" +#include "iuplua.h" + +#ifndef IUPLUA_NO_GL +#include "iupgl.h" +#include "iupluagl.h" +/* #include "luagl.h" */ +#endif + +#ifndef IUPLUA_NO_CD +#include "iupcontrols.h" +#include "iupluacontrols.h" +#include "iup_pplot.h" +#include "iuplua_pplot.h" +#include +#include +#include +#include +#endif + +#ifndef IUPLUA_NO_IM +#include "iupluaim.h" +#include +#include +#include +#endif + +#ifndef IUPLUA_NO_IM +#ifndef IUPLUA_NO_CD +#include +#endif +#endif +#endif +/******************* IUP *********************/ + + +static lua_State *globalL = NULL; + +static const char *progname = LUA_PROGNAME; + + + +static void lstop (lua_State *L, lua_Debug *ar) { + (void)ar; /* unused arg. */ + lua_sethook(L, NULL, 0, 0); + luaL_error(L, "interrupted!"); +} + + +static void laction (int i) { + signal(i, SIG_DFL); /* if another SIGINT happens before lstop, + terminate process (default action) */ + lua_sethook(globalL, lstop, LUA_MASKCALL | LUA_MASKRET | LUA_MASKCOUNT, 1); +} + + +static void print_usage (void) { + fprintf(stderr, + "usage: %s [options] [script [args]].\n" + "Available options are:\n" + " -e stat execute string " LUA_QL("stat") "\n" + " -l name require library " LUA_QL("name") "\n" + " -i enter interactive mode after executing " LUA_QL("script") "\n" + " -v show version information\n" + " -- stop handling options\n" + " - execute stdin and stop handling options\n" + , + progname); + fflush(stderr); +} + + +static void l_message (const char *pname, const char *msg) { + if (pname) fprintf(stderr, "%s: ", pname); + fprintf(stderr, "%s\n", msg); + fflush(stderr); +} + + +static int report (lua_State *L, int status) { + if (status && !lua_isnil(L, -1)) { + const char *msg = lua_tostring(L, -1); + if (msg == NULL) msg = "(error object is not a string)"; + l_message(progname, msg); + lua_pop(L, 1); + } + return status; +} + + +static int traceback (lua_State *L) { + if (!lua_isstring(L, 1)) /* 'message' not a string? */ + return 1; /* keep it intact */ + lua_getfield(L, LUA_GLOBALSINDEX, "debug"); + if (!lua_istable(L, -1)) { + lua_pop(L, 1); + return 1; + } + lua_getfield(L, -1, "traceback"); + if (!lua_isfunction(L, -1)) { + lua_pop(L, 2); + return 1; + } + lua_pushvalue(L, 1); /* pass error message */ + lua_pushinteger(L, 2); /* skip this function and traceback */ + lua_call(L, 2, 1); /* call debug.traceback */ + return 1; +} + + +static int docall (lua_State *L, int narg, int clear) { + int status; + int base = lua_gettop(L) - narg; /* function index */ + lua_pushcfunction(L, traceback); /* push traceback function */ + lua_insert(L, base); /* put it under chunk and args */ + signal(SIGINT, laction); + status = lua_pcall(L, narg, (clear ? 0 : LUA_MULTRET), base); + signal(SIGINT, SIG_DFL); + lua_remove(L, base); /* remove traceback function */ + /* force a complete garbage collection in case of errors */ + if (status != 0) lua_gc(L, LUA_GCCOLLECT, 0); + return status; +} + + +static void print_version (void) { + l_message(NULL, LUA_RELEASE " " LUA_COPYRIGHT); +} + + +static int getargs (lua_State *L, char **argv, int n) { + int narg; + int i; + int argc = 0; + while (argv[argc]) argc++; /* count total number of arguments */ + narg = argc - (n + 1); /* number of arguments to the script */ + luaL_checkstack(L, narg + 3, "too many arguments to script"); + for (i=n+1; i < argc; i++) + lua_pushstring(L, argv[i]); + lua_createtable(L, narg, n + 1); + for (i=0; i < argc; i++) { + lua_pushstring(L, argv[i]); + lua_rawseti(L, -2, i - n); + } + return narg; +} + + +static int dofile (lua_State *L, const char *name) { + int status = luaL_loadfile(L, name) || docall(L, 0, 1); + return report(L, status); +} + + +static int dostring (lua_State *L, const char *s, const char *name) { + int status = luaL_loadbuffer(L, s, strlen(s), name) || docall(L, 0, 1); + return report(L, status); +} + + +static int dolibrary (lua_State *L, const char *name) { + lua_getglobal(L, "require"); + lua_pushstring(L, name); + return report(L, docall(L, 1, 1)); +} + + +static const char *get_prompt (lua_State *L, int firstline) { + const char *p; + lua_getfield(L, LUA_GLOBALSINDEX, firstline ? "_PROMPT" : "_PROMPT2"); + p = lua_tostring(L, -1); + if (p == NULL) p = (firstline ? LUA_PROMPT : LUA_PROMPT2); + lua_pop(L, 1); /* remove global */ + return p; +} + + +static int incomplete (lua_State *L, int status) { + if (status == LUA_ERRSYNTAX) { + size_t lmsg; + const char *msg = lua_tolstring(L, -1, &lmsg); + const char *tp = msg + lmsg - (sizeof(LUA_QL("")) - 1); + if (strstr(msg, LUA_QL("")) == tp) { + lua_pop(L, 1); + return 1; + } + } + return 0; /* else... */ +} + + +static int pushline (lua_State *L, int firstline) { + char buffer[LUA_MAXINPUT]; + char *b = buffer; + size_t l; + const char *prmt = get_prompt(L, firstline); + if (lua_readline(L, b, prmt) == 0) + return 0; /* no input */ + l = strlen(b); + if (l > 0 && b[l-1] == '\n') /* line ends with newline? */ + b[l-1] = '\0'; /* remove it */ + if (firstline && b[0] == '=') /* first line starts with `=' ? */ + lua_pushfstring(L, "return %s", b+1); /* change it to `return' */ + else + lua_pushstring(L, b); + lua_freeline(L, b); + return 1; +} + + +static int loadline (lua_State *L) { + int status; + lua_settop(L, 0); + if (!pushline(L, 1)) + return -1; /* no input */ + for (;;) { /* repeat until gets a complete line */ + status = luaL_loadbuffer(L, lua_tostring(L, 1), lua_strlen(L, 1), "=stdin"); + if (!incomplete(L, status)) break; /* cannot try to add lines? */ + if (!pushline(L, 0)) /* no more input? */ + return -1; + lua_pushliteral(L, "\n"); /* add a new line... */ + lua_insert(L, -2); /* ...between the two lines */ + lua_concat(L, 3); /* join them */ + } + lua_saveline(L, 1); + lua_remove(L, 1); /* remove line */ + return status; +} + + +static void dotty (lua_State *L) { + int status; + const char *oldprogname = progname; + progname = NULL; + while ((status = loadline(L)) != -1) { + if (status == 0) status = docall(L, 0, 0); + report(L, status); + if (status == 0 && lua_gettop(L) > 0) { /* any result to print? */ + lua_getglobal(L, "print"); + lua_insert(L, 1); + if (lua_pcall(L, lua_gettop(L)-1, 0, 0) != 0) + l_message(progname, lua_pushfstring(L, + "error calling " LUA_QL("print") " (%s)", + lua_tostring(L, -1))); + } + } + lua_settop(L, 0); /* clear stack */ + fputs("\n", stdout); + fflush(stdout); + progname = oldprogname; +} + +static int handle_script (lua_State *L, char **argv, int n) { + int status; + const char *fname; + int narg = getargs(L, argv, n); /* collect arguments */ + lua_setglobal(L, "arg"); + fname = argv[n]; + if (strcmp(fname, "-") == 0 && strcmp(argv[n-1], "--") != 0) + fname = NULL; /* stdin */ + status = luaL_loadfile(L, fname); + lua_insert(L, -(narg+1)); + if (status == 0) + status = docall(L, narg, 0); + else + lua_pop(L, narg); + return report(L, status); +} + + +/* check that argument has no extra characters at the end */ +#define notail(x) {if ((x)[2] != '\0') return -1;} + + +static int collectargs (char **argv, int *pi, int *pv, int *pe) { + int i; + for (i = 1; argv[i] != NULL; i++) { + if (argv[i][0] != '-') /* not an option? */ + return i; + switch (argv[i][1]) { /* option */ + case '-': + notail(argv[i]); + return (argv[i+1] != NULL ? i+1 : 0); + case '\0': + return i; + case 'i': + notail(argv[i]); + *pi = 1; /* go through */ + case 'v': + notail(argv[i]); + *pv = 1; + break; + case 'e': + *pe = 1; /* go through */ + case 'l': + if (argv[i][2] == '\0') { + i++; + if (argv[i] == NULL) return -1; + } + break; + default: return -1; /* invalid option */ + } + } + return 0; +} + + +static int runargs (lua_State *L, char **argv, int n) { + int i; + for (i = 1; i < n; i++) { + if (argv[i] == NULL) continue; + lua_assert(argv[i][0] == '-'); + switch (argv[i][1]) { /* option */ + case 'e': { + const char *chunk = argv[i] + 2; + if (*chunk == '\0') chunk = argv[++i]; + lua_assert(chunk != NULL); + if (dostring(L, chunk, "=(command line)") != 0) + return 1; + break; + } + case 'l': { + const char *filename = argv[i] + 2; + if (*filename == '\0') filename = argv[++i]; + lua_assert(filename != NULL); + if (dolibrary(L, filename)) + return 1; /* stop if file fails */ + break; + } + default: break; + } + } + return 0; +} + +static int handle_luainit (lua_State *L) { + const char *init = getenv(LUA_INIT); + if (init == NULL) return 0; /* status OK */ + else if (init[0] == '@') + return dofile(L, init+1); + else + return dostring(L, init, "=" LUA_INIT); +} + + +struct Smain { + int argc; + char **argv; + int status; +}; + + +/******************* IUP *********************/ +#ifdef USE_STATIC +#ifdef IUPLUA_IMGLIB +int luaopen_iupluaimglib(lua_State* L); +#endif +#endif + +static void iuplua_openlibs (lua_State *L) { + lua_pushliteral(L, LUA_COPYRIGHT); + lua_setglobal(L, "_COPYRIGHT"); /* set global _COPYRIGHT */ + +#ifdef USE_STATIC + /* iuplua initialization */ + iuplua_open(L); + iupkey_open(L); +#ifdef IUPLUA_IMGLIB + luaopen_iupluaimglib(L); +#endif + +#ifndef IUPLUA_NO_CD + iupcontrolslua_open(L); + iup_pplotlua_open(L); + cdlua_open(L); + cdluaiup_open(L); +#endif +#ifndef IUPLUA_NO_IM + iupimlua_open(L); + imlua_open(L); + imlua_open_process(L); +#endif +#ifndef IUPLUA_NO_IM +#ifndef IUPLUA_NO_CD + cdluaim_open(L); +#endif +#endif +#endif +} + +static void iuplua_input (lua_State *L) { +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/console5_be64.loh" +#else +#include "loh/console5_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/console5_le64w.loh" +#else +#include "loh/console5_le64.loh" +#endif +#else +#include "loh/console5.loh" +#endif +#endif +} +/******************* IUP *********************/ + + +static int pmain (lua_State *L) { + struct Smain *s = (struct Smain *)lua_touserdata(L, 1); + char **argv = s->argv; + int script; + int has_i = 0, has_v = 0, has_e = 0; + globalL = L; + if (argv[0] && argv[0][0]) progname = argv[0]; + lua_gc(L, LUA_GCSTOP, 0); /* stop collector during initialization */ + luaL_openlibs(L); /* open libraries */ + lua_gc(L, LUA_GCRESTART, 0); +/******************* IUP *********************/ + iuplua_openlibs(L); +/******************* IUP *********************/ + + s->status = handle_luainit(L); + if (s->status != 0) return 0; + script = collectargs(argv, &has_i, &has_v, &has_e); + if (script < 0) { /* invalid args? */ + print_usage(); + s->status = 1; + return 0; + } + if (has_v) print_version(); + s->status = runargs(L, argv, (script > 0) ? script : s->argc); + if (s->status != 0) return 0; + if (script) + s->status = handle_script(L, argv, script); + if (s->status != 0) return 0; + if (has_i) + dotty(L); + else if (script == 0 && !has_e && !has_v) { + if (lua_stdin_is_tty()) { + print_version(); +/******************* IUP *********************/ +/* dotty(L); */ + iuplua_input(L); +/******************* IUP *********************/ + } + else dofile(L, NULL); /* executes stdin as a file */ + } + return 0; +} + + +int main (int argc, char **argv) { + int status; + struct Smain s; + lua_State *L = lua_open(); /* create state */ + if (L == NULL) { + l_message(argv[0], "cannot create state: not enough memory"); + return EXIT_FAILURE; + } + s.argc = argc; + s.argv = argv; + status = lua_cpcall(L, &pmain, &s); + report(L, status); + lua_close(L); + return (status || s.status) ? EXIT_FAILURE : EXIT_SUCCESS; +} diff --git a/iup/srcconsole/iuplua3.bat b/iup/srcconsole/iuplua3.bat new file mode 100644 index 0000000..e58a12b --- /dev/null +++ b/iup/srcconsole/iuplua3.bat @@ -0,0 +1,3 @@ +@echo off +REM Script generated automatically by tecmake v3.20 +..\bin\Win64\iuplua3.exe %* diff --git a/iup/srcconsole/iuplua3.mak b/iup/srcconsole/iuplua3.mak new file mode 100755 index 0000000..e892496 --- /dev/null +++ b/iup/srcconsole/iuplua3.mak @@ -0,0 +1,90 @@ +PROJNAME = iup +APPNAME = iuplua3 +APPTYPE = console +OPT = YES + +IUP := .. + +# IM is a C++ library with a C API +LINKER = $(CPPC) + +SRC = iup_lua3.c +SRCLUA = console3.lua +LOHDIR = loh + +USE_LUA = Yes +USE_IUPLUA = Yes +USE_IUP3 = Yes + +USE_STATIC = Yes + +ifdef BUILD_64 + ifneq ($(findstring SunOS, $(TEC_UNAME)), ) + LINKER = cc + IUPLUA_NO_IM = Yes + endif + ifneq ($(findstring AIX, $(TEC_UNAME)), ) + LINKER = cc + IUPLUA_NO_IM = Yes + endif +endif + +ifeq "$(TEC_UNAME)" "SunOS510x86" + IUPLUA_NO_GL = Yes +endif + +#IUPLUA_NO_GL = Yes +ifndef IUPLUA_NO_GL + USE_OPENGL = Yes +else + DEFINES = IUPLUA_NO_GL +endif + +#IUPLUA_NO_CD = Yes +ifndef IUPLUA_NO_CD + USE_CD = Yes + USE_CDLUA = Yes + USE_IUPCONTROLS = Yes + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS += iup_pplot iuplua_pplot3 + else + IUPLIB = $(IUP)/lib/$(TEC_UNAME) + SLIB += $(IUPLIB)/libiuplua_pplot3.a $(IUPLIB)/libiup_pplot.a + endif +else + DEFINES += IUPLUA_NO_CD +endif + +#IUPLUA_NO_IM = Yes +ifndef IUPLUA_NO_IM + USE_IM = Yes + USE_IMLUA = Yes + + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS += iupim iupluaim3 + else + IUPLIB = $(IUP)/lib/$(TEC_UNAME) + SLIB += $(IUPLIB)/libiupluaim3.a $(IUPLIB)/libiupim.a + endif +else + DEFINES += IUPLUA_NO_IM +endif + +ifneq ($(findstring AIX, $(TEC_UNAME)), ) + FLAGS += -mminimal-toc + OPTFLAGS = -mminimal-toc -ansi -pedantic + LFLAGS = -Xlinker "-bbigtoc" +endif + +ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + SRC += iuplua3.rc +endif + +ifeq ($(TEC_UNAME), vc8) + ifdef DBG + #debug info not working for vc8 linker + define DBG + endef + endif +endif + diff --git a/iup/srcconsole/iuplua3.rc b/iup/srcconsole/iuplua3.rc new file mode 100755 index 0000000..e741199 --- /dev/null +++ b/iup/srcconsole/iuplua3.rc @@ -0,0 +1,45 @@ +0 ICON "lua.ico" +TECGRAF_ICON ICON "..\\etc\\tecgraf.ico" + +1 VERSIONINFO + FILEVERSION 3,0,0,0 + PRODUCTVERSION 3,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0" + VALUE "CompanyName", "Tecgraf/PUC-Rio\0" + VALUE "FileDescription", "Lua Windows Standalone Interpreter with IUP\0" + VALUE "FileVersion", "3.0.0\0" + VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0" + VALUE "OriginalFilename", "iuplua51.exe\0" + VALUE "ProductName", "IUP for Windows\0" + VALUE "ProductVersion", "3.0.0\0" + END + END +END + +CURSOR_PEN CURSOR "..\\etc\\pen.cur" + +/* To avoid the inclusion of */ +#define WS_CHILD 0x40000000L +#define WS_VISIBLE 0x10000000L +#define WS_CLIPSIBLINGS 0x04000000L +#define DS_3DLOOK 0x0004L +#define DS_CONTROL 0x0400L +#define SS_OWNERDRAW 0x0000000DL +#define WS_EX_STATICEDGE 0x00020000L + +#define IUP_PREVIEWCANVAS 3000 + +iupPreviewDlg DIALOG DISCARDABLE 0, 0, 195, 95 +STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE +END + +/* The following line enable Windows XP Visual Styles */ +1 24 "..\\etc\\iup.manifest" diff --git a/iup/srcconsole/iuplua5.rc b/iup/srcconsole/iuplua5.rc new file mode 100755 index 0000000..bc02e07 --- /dev/null +++ b/iup/srcconsole/iuplua5.rc @@ -0,0 +1,59 @@ +0 ICON "lua.ico" +TECGRAF_ICON ICON "..\\etc\\tecgraf.ico" + +1 VERSIONINFO + FILEVERSION 3,0,0,0 + PRODUCTVERSION 3,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "www.tecgraf.puc-rio.br/iup\0" + VALUE "CompanyName", "Tecgraf/PUC-Rio\0" + VALUE "FileDescription", "Lua Windows Standalone Interpreter with IUP\0" + VALUE "FileVersion", "3.0.0\0" + VALUE "LegalCopyright", "Copyright © 1994-2009 Tecgraf, PUC-Rio.\0" + VALUE "OriginalFilename", "iuplua51.exe\0" + VALUE "ProductName", "IUP for Windows\0" + VALUE "ProductVersion", "3.0.0\0" + END + END +END + +CURSOR_PEN CURSOR "..\\etc\\pen.cur" + +/* To avoid the inclusion of */ +#define WS_CHILD 0x40000000L +#define WS_VISIBLE 0x10000000L +#define WS_CLIPSIBLINGS 0x04000000L +#define DS_3DLOOK 0x0004L +#define DS_CONTROL 0x0400L +#define SS_OWNERDRAW 0x0000000DL +#define WS_EX_STATICEDGE 0x00020000L + +#define IUP_PREVIEWCANVAS 3000 + +iupPreviewDlg DIALOG DISCARDABLE 0, 0, 195, 95 +STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE +END + +/* The following line enable Windows XP Visual Styles */ +#ifdef MSVC8 +#ifdef TEC_64 +1 24 "wlua_dll8_x64.manifest" +#else +1 24 "wlua_dll8_x86.manifest" +#endif +#elif MSVC9 +#ifdef TEC_64 +1 24 "wlua_dll9_x64.manifest" +#else +1 24 "wlua_dll9_x86.manifest" +#endif +#else +1 24 "..\\etc\\iup.manifest" +#endif diff --git a/iup/srcconsole/iuplua51 b/iup/srcconsole/iuplua51 new file mode 100755 index 0000000..a4f9a27 --- /dev/null +++ b/iup/srcconsole/iuplua51 @@ -0,0 +1,6 @@ +#!/bin/csh +# Script generated automatically by tecmake v3.19 +# Remove the comment bellow to set the LD_LIBRARY_PATH if needed. +#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH +if ( -r app.env ) source app.env +exec ../bin/$TEC_UNAME/iuplua51 $* diff --git a/iup/srcconsole/iuplua51.bat b/iup/srcconsole/iuplua51.bat new file mode 100644 index 0000000..85331fe --- /dev/null +++ b/iup/srcconsole/iuplua51.bat @@ -0,0 +1,3 @@ +@echo off +REM Script generated automatically by tecmake v3.20 +..\bin\Win64\iuplua51.exe %* diff --git a/iup/srcconsole/iuplua51.dep b/iup/srcconsole/iuplua51.dep new file mode 100644 index 0000000..994ed5e --- /dev/null +++ b/iup/srcconsole/iuplua51.dep @@ -0,0 +1,4 @@ +$(OBJDIR)/iup_lua51.o: iup_lua51.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../../lua5.1/include/lualib.h \ + loh/console5_le64.loh diff --git a/iup/srcconsole/iuplua51mot b/iup/srcconsole/iuplua51mot new file mode 100755 index 0000000..3b9a955 --- /dev/null +++ b/iup/srcconsole/iuplua51mot @@ -0,0 +1,6 @@ +#!/bin/csh +# Script generated automatically by tecmake v3.19 +# Remove the comment bellow to set the LD_LIBRARY_PATH if needed. +#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH +if ( -r app.env ) source app.env +exec ../bin/$TEC_UNAME/iuplua51mot $* diff --git a/iup/srcconsole/iuplua51mot.dep b/iup/srcconsole/iuplua51mot.dep new file mode 100644 index 0000000..b174381 --- /dev/null +++ b/iup/srcconsole/iuplua51mot.dep @@ -0,0 +1,12 @@ +$(OBJDIR)/iup_lua51.o: iup_lua51.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../../lua5.1/include/lualib.h \ + ../include/iup.h ../include/iupkey.h ../include/iupdef.h \ + ../include/iuplua.h ../include/iupgl.h ../include/iupluagl.h \ + ../include/iupcontrols.h ../include/iupluacontrols.h \ + ../include/iup_pplot.h ../include/iuplua_pplot.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdgdiplus.h \ + ../../cd/include/cdlua.h ../../cd/include/cdluaiup.h \ + ../include/iupluaim.h ../../im/include/im.h ../../im/include/old_im.h \ + ../../im/include/im_image.h ../../im/include/imlua.h \ + ../../cd/include/cdluaim.h loh/console5_le64.loh diff --git a/iup/srcconsole/loh/console3.loh b/iup/srcconsole/loh/console3.loh new file mode 100755 index 0000000..5cfd348 --- /dev/null +++ b/iup/srcconsole/loh/console3.loh @@ -0,0 +1,254 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/console3.lo"); +*/ +/* ../obj/iuplua3/console3.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111, +108,101, 51, 46,108,117, 97, 0, 0, 0, 2,170, 17, 0, 11, 1, 25, 0, 11, 3, + 25, 2, 11, 5, 25, 4, 11, 7, 25, 6, 4, 0, 25, 8, 15, 10, 22, 3, 11, 11, + 15, 12, 11, 13, 11, 14, 11, 15, 11, 16, 30, 2, 2, 1, 1, 25, 9, 15, 18, 22, + 2, 11, 19, 11, 20, 11, 13, 11, 21, 30, 1, 2, 1, 1, 25, 17, 15, 18, 22, 3, + 11, 19, 11, 23, 11, 13, 11, 21, 11, 11, 11, 24, 30, 2, 2, 1, 1, 25, 22, 15, + 9, 11, 25, 11, 26, 26, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, 31, 11, 32, + 11, 33, 30, 2, 2, 1, 1, 25, 27, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, + 35, 11, 32, 11, 36, 30, 2, 2, 1, 1, 25, 34, 15, 28, 22, 2, 11, 13, 11, 29, + 11, 30, 11, 38, 30, 1, 2, 1, 1, 25, 37, 15, 28, 22, 2, 11, 13, 11, 29, 11, + 30, 11, 40, 30, 1, 2, 1, 1, 25, 39, 15, 28, 22, 2, 11, 13, 11, 29, 11, 30, + 11, 42, 30, 1, 2, 1, 1, 25, 41, 15, 41, 11, 32, 11, 43, 26, 15, 44, 11, 45, + 11, 46, 26, 15, 37, 11, 45, 11, 47, 26, 15, 49, 22, 4, 15, 50, 22, 2, 15, 51, + 22, 3, 15, 49, 22, 7, 15, 37, 15, 41, 15, 44, 15, 34, 15, 27, 29, 0, 5, 11, + 52, 11, 53, 11, 54, 11, 55, 30, 1, 2, 1, 1, 15, 49, 22, 4, 15, 56, 15, 57, + 15, 58, 29, 0, 3, 11, 59, 11, 60, 30, 0, 2, 1, 1, 29, 0, 2, 11, 59, 11, + 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 62, 11, 63, 30, 0, 2, 1, 1, 29, 0, + 1, 11, 59, 11, 64, 11, 52, 11, 65, 11, 54, 11, 66, 30, 2, 2, 1, 1, 25, 48, + 15, 68, 22, 2, 15, 69, 22, 2, 15, 68, 22, 1, 15, 70, 22, 2, 11, 62, 11, 71, + 11, 45, 11, 72, 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 62, + 11, 73, 30, 0, 2, 1, 1, 15, 69, 22, 2, 15, 68, 22, 2, 15, 74, 18, 75, 22, + 2, 11, 62, 11, 76, 11, 45, 15, 6, 30, 1, 2, 1, 1, 15, 70, 22, 2, 11, 62, + 11, 77, 11, 45, 11, 78, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1, + 11, 62, 11, 79, 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 67, 15, 81, 22, + 4, 15, 48, 29, 0, 1, 11, 62, 11, 82, 11, 83, 15, 67, 11, 84, 11, 72, 30, 2, + 2, 1, 1, 25, 80, 15, 81, 22, 5, 15, 49, 22, 8, 15, 18, 22, 1, 11, 62, 11, + 82, 30, 0, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, + 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, 50, 22, 1, 15, 49, 22, 3, + 15, 18, 22, 1, 11, 62, 11, 87, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, + 88, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, 89, 30, 0, 2, 1, 1, 29, + 0, 3, 2, 1, 1, 29, 0, 1, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, + 0, 2, 1, 1, 15, 28, 22, 3, 11, 62, 11, 90, 11, 45, 11, 72, 11, 13, 11, 91, + 30, 2, 2, 1, 1, 29, 0, 6, 11, 52, 11, 92, 11, 59, 11, 64, 30, 1, 2, 1, + 1, 29, 0, 1, 11, 93, 15, 94, 11, 95, 15, 94, 11, 96, 15, 94, 11, 62, 11, 97, + 30, 3, 2, 1, 1, 25, 85, 15, 80, 20, 98, 2, 0, 1, 15, 99, 2, 0, 0, 15, +100, 15, 80, 2, 0, 1, 15,100, 15, 85, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0,101, 2, 0, 0, 0, 8,114,101,113,117,105,114,101, 0, 4, 0, 0, 0, 4, + 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10,112,114, +105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111, +110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 6, 0, 15, 2, 4, + 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, 15, 5, 13, 0, 2, + 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, 1, 15, 2, 13, 0, + 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, 3, 11, 7, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, + 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,114, 0, 2, 0, 0, + 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,112,114,105,110,116, +118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111, +115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 18, 45, + 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, 45, 0, 2, 0, 0, + 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0, 0, 17, 0, 0, + 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 71, + 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, 2, 0, 1, 50, 36, + 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, 2, 2, 1, 1, 42, + 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, 1, 13, 1, 4, 0, + 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, + 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,118, 0, + 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,112,114,105,110,116, + 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 83, +116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,112,114,105,110,116, +116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, 0, 19,112,114,105, +110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, 0, 4, 0, 0, 0, + 27, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, + 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, 4, 42, 2, 0, 1, + 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, 18, 6, 42, 2, 0, + 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, 18, 1, 11, 2, 42, + 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, 2, 42, 15, 3, 18, + 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, 9, 2, 0, 1, 15, + 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 13, + 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 11, 11, 16, 2, + 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, 15, 0, 11, 18, 15, + 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 20, 15, 3, 18, 11, + 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, 15, 0, 11, 23, 15, + 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, 11, 25, 15, 3, 18, + 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, 15, 3, 18, 26, 42, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 0, 6,112,114,105, +110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, + 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 15, 95, 76, + 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 3,105,109, + 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, + 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 9, 73, 85, 80, 32, + 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,116,101,109, 58, 32, + 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, 0, 2, 0, 0, 0, + 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, 83,121,115,116,101, +109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, 0, 14, 83, 89, 83, + 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 4,109,111,116, 0, + 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, + 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, + 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58, + 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 2, 0, + 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0, + 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 2, 0, 0, + 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, 0, 18, 32, 32, 79, +112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 2, 0, 0, 0, 12, + 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, 0, 20, 32, 32, 79, +112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 2, 0, 0, + 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 19, 32, 32, + 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, + 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 12,109,117,108, 67, +111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,116, +105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 5,115,105,122,101, + 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, 0, 0, 0, 5,102, +111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, + 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108, + 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, 2, 0, 0, 0, 4, + 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, + 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, + 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, 0, 0, 0, 53, 0, + 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, + 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4, +108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, 0, 0, 9,112,111, +115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,101, 99,117,116,101, + 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, + 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105, +111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,103, 40,109,117,108, + 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, 0, 2, 0, 0, 0, + 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,100,115, 0, 2, 0, + 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,117,108, 67,111,109, +109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, 39, 32, 32,102,105, +108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, 32, +108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, 2, 0, 0, 0, 12, + 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, 0, 8, 76,111, 97, +100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70, +105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, + 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 2, 0, 0, + 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 63, 0, 0, 0, 14, 64, 99,111,110, +115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, 1, 15, 0, 4, 0, + 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, 0, 11, 5, 2, 1, + 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, 7, 18, 8, 2, 0, + 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, 12, 42, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, 97,115,116,102,105, +108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108, +101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,110, +111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, + 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, + 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, + 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105, +108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, + 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, + 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, + 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111, +110, 0, 4, 0, 0, 0, 77, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, + 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11, + 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, 30, 4, 2, 1, 1, + 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 25, + 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, 13, 2, 11, 19, 31, + 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, 42, 2, 0, 1, 15, + 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, 15, 25, 13, 3, 15, + 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, 15, 20, 11, 28, 2, + 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 8,102,105, +108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100,108, +103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 2, 0, + 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, + 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, 0, 0, 0, 7,102, +105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, 0, 2, 0, 0, + 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, 0, 10, 76,117, + 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,111,119,110,101, +119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, 9, 73,117,112, 80, +111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2, + 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 9,108, 97,115,116, +102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, + 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, 73,117,112, 68, +101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 6, +101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97, +118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,111,118,111, 97,114, +113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, + 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 12, +109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 10, 99,108,111, +115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83, + 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 98, 0, 0, 0, 14, 64, 99, +111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,153, 13, 1, 15, 1, + 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, + 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, 2, 0, 3, 13, 1, + 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, 11, 18, 32, 46, 5, + 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, 20, 11, 21, 13, 3, + 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, 13, 4, 4, 0, 32, + 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, 25, 11, 16, 15, 26, + 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, 13, 3, 25, 29, 15, + 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0, + 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105, +108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112, +101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,108,101, 0, 2, 0, + 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, + 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, + 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108, +111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 6,112, +111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, + 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 8,110,101, +119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, + 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, + 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, + 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, 32,102,105,108,101, + 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,111,112,101,110,102, +105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, 12,109,117,108, 67, +111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, 97,100, 0, 2, 0, + 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,108,101, + 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 10, +102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,118, 98,120, 67,111, +110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 2, + 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, 0, 0, 8,105,117, +112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,105,110, 0, 2, 0, + 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, + 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, + 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, + 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, 97,108,105,103,110, +109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, + 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 8, 65, 67, 69, + 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, 0, 0, 0, 2, 53, + 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, 0, 0, 0, 8,105, +117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101, +110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 2, 0, 0, 0, + 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, + 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,108,101, 0, 2, 0, + 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0, 0, + 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, + 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 2, 0, + 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,117,112, 40, 73, 85, + 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, + 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, 0, 8,100,108,103, + 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, + 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,117,112, 76,117, 97, + 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, 0, 0, 0, 5,109, +101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, 0, 8,105,117,112, +102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, 97,102, 47, 80, 85, + 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, 47, 79,118,237,100, +105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,117,112, 64,116,101, + 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 2, 0, 0, + 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, 0, 2, 0, 0, 0, + 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, 98,111,120, 0, 2, + 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, 7,109,105,110, 98, +111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 6, + 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 2, 0, 0, 0, + 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, 0, 0, 11, 73,117, +112, 68,101,115,116,114,111,121, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3.lo"); +} diff --git a/iup/srcconsole/loh/console3_be32.loh b/iup/srcconsole/loh/console3_be32.loh new file mode 100755 index 0000000..8cae3eb --- /dev/null +++ b/iup/srcconsole/loh/console3_be32.loh @@ -0,0 +1,254 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/console3_be32.lo"); +*/ +/* ../obj/iuplua3/console3_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111, +108,101, 51, 46,108,117, 97, 0, 0, 0, 2,170, 17, 0, 11, 1, 25, 0, 11, 3, + 25, 2, 11, 5, 25, 4, 11, 7, 25, 6, 4, 0, 25, 8, 15, 10, 22, 3, 11, 11, + 15, 12, 11, 13, 11, 14, 11, 15, 11, 16, 30, 2, 2, 1, 1, 25, 9, 15, 18, 22, + 2, 11, 19, 11, 20, 11, 13, 11, 21, 30, 1, 2, 1, 1, 25, 17, 15, 18, 22, 3, + 11, 19, 11, 23, 11, 13, 11, 21, 11, 11, 11, 24, 30, 2, 2, 1, 1, 25, 22, 15, + 9, 11, 25, 11, 26, 26, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, 31, 11, 32, + 11, 33, 30, 2, 2, 1, 1, 25, 27, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, + 35, 11, 32, 11, 36, 30, 2, 2, 1, 1, 25, 34, 15, 28, 22, 2, 11, 13, 11, 29, + 11, 30, 11, 38, 30, 1, 2, 1, 1, 25, 37, 15, 28, 22, 2, 11, 13, 11, 29, 11, + 30, 11, 40, 30, 1, 2, 1, 1, 25, 39, 15, 28, 22, 2, 11, 13, 11, 29, 11, 30, + 11, 42, 30, 1, 2, 1, 1, 25, 41, 15, 41, 11, 32, 11, 43, 26, 15, 44, 11, 45, + 11, 46, 26, 15, 37, 11, 45, 11, 47, 26, 15, 49, 22, 4, 15, 50, 22, 2, 15, 51, + 22, 3, 15, 49, 22, 7, 15, 37, 15, 41, 15, 44, 15, 34, 15, 27, 29, 0, 5, 11, + 52, 11, 53, 11, 54, 11, 55, 30, 1, 2, 1, 1, 15, 49, 22, 4, 15, 56, 15, 57, + 15, 58, 29, 0, 3, 11, 59, 11, 60, 30, 0, 2, 1, 1, 29, 0, 2, 11, 59, 11, + 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 62, 11, 63, 30, 0, 2, 1, 1, 29, 0, + 1, 11, 59, 11, 64, 11, 52, 11, 65, 11, 54, 11, 66, 30, 2, 2, 1, 1, 25, 48, + 15, 68, 22, 2, 15, 69, 22, 2, 15, 68, 22, 1, 15, 70, 22, 2, 11, 62, 11, 71, + 11, 45, 11, 72, 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 62, + 11, 73, 30, 0, 2, 1, 1, 15, 69, 22, 2, 15, 68, 22, 2, 15, 74, 18, 75, 22, + 2, 11, 62, 11, 76, 11, 45, 15, 6, 30, 1, 2, 1, 1, 15, 70, 22, 2, 11, 62, + 11, 77, 11, 45, 11, 78, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1, + 11, 62, 11, 79, 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 67, 15, 81, 22, + 4, 15, 48, 29, 0, 1, 11, 62, 11, 82, 11, 83, 15, 67, 11, 84, 11, 72, 30, 2, + 2, 1, 1, 25, 80, 15, 81, 22, 5, 15, 49, 22, 8, 15, 18, 22, 1, 11, 62, 11, + 82, 30, 0, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, + 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, 50, 22, 1, 15, 49, 22, 3, + 15, 18, 22, 1, 11, 62, 11, 87, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, + 88, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, 89, 30, 0, 2, 1, 1, 29, + 0, 3, 2, 1, 1, 29, 0, 1, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, + 0, 2, 1, 1, 15, 28, 22, 3, 11, 62, 11, 90, 11, 45, 11, 72, 11, 13, 11, 91, + 30, 2, 2, 1, 1, 29, 0, 6, 11, 52, 11, 92, 11, 59, 11, 64, 30, 1, 2, 1, + 1, 29, 0, 1, 11, 93, 15, 94, 11, 95, 15, 94, 11, 96, 15, 94, 11, 62, 11, 97, + 30, 3, 2, 1, 1, 25, 85, 15, 80, 20, 98, 2, 0, 1, 15, 99, 2, 0, 0, 15, +100, 15, 80, 2, 0, 1, 15,100, 15, 85, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0,101, 2, 0, 0, 0, 8,114,101,113,117,105,114,101, 0, 4, 0, 0, 0, 4, + 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10,112,114, +105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111, +110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 6, 0, 15, 2, 4, + 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, 15, 5, 13, 0, 2, + 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, 1, 15, 2, 13, 0, + 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, 3, 11, 7, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, + 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,114, 0, 2, 0, 0, + 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,112,114,105,110,116, +118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111, +115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 18, 45, + 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, 45, 0, 2, 0, 0, + 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0, 0, 17, 0, 0, + 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 71, + 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, 2, 0, 1, 50, 36, + 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, 2, 2, 1, 1, 42, + 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, 1, 13, 1, 4, 0, + 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, + 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,118, 0, + 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,112,114,105,110,116, + 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 83, +116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,112,114,105,110,116, +116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, 0, 19,112,114,105, +110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, 0, 4, 0, 0, 0, + 27, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, + 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, 4, 42, 2, 0, 1, + 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, 18, 6, 42, 2, 0, + 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, 18, 1, 11, 2, 42, + 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, 2, 42, 15, 3, 18, + 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, 9, 2, 0, 1, 15, + 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 13, + 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 11, 11, 16, 2, + 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, 15, 0, 11, 18, 15, + 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 20, 15, 3, 18, 11, + 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, 15, 0, 11, 23, 15, + 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, 11, 25, 15, 3, 18, + 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, 15, 3, 18, 26, 42, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 0, 6,112,114,105, +110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, + 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 15, 95, 76, + 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 3,105,109, + 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, + 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 9, 73, 85, 80, 32, + 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,116,101,109, 58, 32, + 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, 0, 2, 0, 0, 0, + 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, 83,121,115,116,101, +109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, 0, 14, 83, 89, 83, + 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 4,109,111,116, 0, + 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, + 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, + 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58, + 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 2, 0, + 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0, + 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 2, 0, 0, + 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, 0, 18, 32, 32, 79, +112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 2, 0, 0, 0, 12, + 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, 0, 20, 32, 32, 79, +112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 2, 0, 0, + 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 19, 32, 32, + 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, + 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 12,109,117,108, 67, +111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,116, +105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 5,115,105,122,101, + 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, 0, 0, 0, 5,102, +111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, + 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108, + 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, 2, 0, 0, 0, 4, + 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, + 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, + 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, 0, 0, 0, 53, 0, + 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, + 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4, +108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, 0, 0, 9,112,111, +115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,101, 99,117,116,101, + 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, + 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105, +111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,103, 40,109,117,108, + 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, 0, 2, 0, 0, 0, + 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,100,115, 0, 2, 0, + 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,117,108, 67,111,109, +109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, 39, 32, 32,102,105, +108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, 32, +108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, 2, 0, 0, 0, 12, + 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, 0, 8, 76,111, 97, +100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70, +105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, + 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 2, 0, 0, + 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 63, 0, 0, 0, 14, 64, 99,111,110, +115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, 1, 15, 0, 4, 0, + 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, 0, 11, 5, 2, 1, + 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, 7, 18, 8, 2, 0, + 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, 12, 42, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, 97,115,116,102,105, +108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108, +101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,110, +111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, + 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, + 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, + 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105, +108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, + 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, + 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, + 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111, +110, 0, 4, 0, 0, 0, 77, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, + 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11, + 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, 30, 4, 2, 1, 1, + 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 25, + 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, 13, 2, 11, 19, 31, + 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, 42, 2, 0, 1, 15, + 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, 15, 25, 13, 3, 15, + 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, 15, 20, 11, 28, 2, + 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 8,102,105, +108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100,108, +103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 2, 0, + 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, + 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, 0, 0, 0, 7,102, +105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, 0, 2, 0, 0, + 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, 0, 10, 76,117, + 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,111,119,110,101, +119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, 9, 73,117,112, 80, +111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2, + 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 9,108, 97,115,116, +102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, + 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, 73,117,112, 68, +101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 6, +101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97, +118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,111,118,111, 97,114, +113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, + 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 12, +109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 10, 99,108,111, +115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83, + 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 98, 0, 0, 0, 14, 64, 99, +111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,153, 13, 1, 15, 1, + 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, + 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, 2, 0, 3, 13, 1, + 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, 11, 18, 32, 46, 5, + 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, 20, 11, 21, 13, 3, + 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, 13, 4, 4, 0, 32, + 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, 25, 11, 16, 15, 26, + 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, 13, 3, 25, 29, 15, + 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0, + 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105, +108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112, +101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,108,101, 0, 2, 0, + 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, + 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, + 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108, +111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 6,112, +111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, + 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 8,110,101, +119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, + 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, + 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, + 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, 32,102,105,108,101, + 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,111,112,101,110,102, +105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, 12,109,117,108, 67, +111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, 97,100, 0, 2, 0, + 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,108,101, + 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 10, +102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,118, 98,120, 67,111, +110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 2, + 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, 0, 0, 8,105,117, +112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,105,110, 0, 2, 0, + 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, + 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, + 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, + 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, 97,108,105,103,110, +109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, + 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 8, 65, 67, 69, + 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, 0, 0, 0, 2, 53, + 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, 0, 0, 0, 8,105, +117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101, +110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 2, 0, 0, 0, + 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, + 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,108,101, 0, 2, 0, + 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0, 0, + 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, + 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 2, 0, + 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,117,112, 40, 73, 85, + 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, + 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, 0, 8,100,108,103, + 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, + 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,117,112, 76,117, 97, + 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, 0, 0, 0, 5,109, +101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, 0, 8,105,117,112, +102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, 97,102, 47, 80, 85, + 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, 47, 79,118,237,100, +105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,117,112, 64,116,101, + 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 2, 0, 0, + 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, 0, 2, 0, 0, 0, + 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, 98,111,120, 0, 2, + 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, 7,109,105,110, 98, +111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 6, + 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 2, 0, 0, 0, + 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, 0, 0, 11, 73,117, +112, 68,101,115,116,114,111,121, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_be32.lo"); +} diff --git a/iup/srcconsole/loh/console3_be64.loh b/iup/srcconsole/loh/console3_be64.loh new file mode 100755 index 0000000..879d789 --- /dev/null +++ b/iup/srcconsole/loh/console3_be64.loh @@ -0,0 +1,254 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/console3_be64.lo"); +*/ +/* ../obj/iuplua3/console3_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111, +108,101, 51, 46,108,117, 97, 0, 0, 0, 2,170, 17, 0, 11, 1, 25, 0, 11, 3, + 25, 2, 11, 5, 25, 4, 11, 7, 25, 6, 4, 0, 25, 8, 15, 10, 22, 3, 11, 11, + 15, 12, 11, 13, 11, 14, 11, 15, 11, 16, 30, 2, 2, 1, 1, 25, 9, 15, 18, 22, + 2, 11, 19, 11, 20, 11, 13, 11, 21, 30, 1, 2, 1, 1, 25, 17, 15, 18, 22, 3, + 11, 19, 11, 23, 11, 13, 11, 21, 11, 11, 11, 24, 30, 2, 2, 1, 1, 25, 22, 15, + 9, 11, 25, 11, 26, 26, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, 31, 11, 32, + 11, 33, 30, 2, 2, 1, 1, 25, 27, 15, 28, 22, 3, 11, 13, 11, 29, 11, 30, 11, + 35, 11, 32, 11, 36, 30, 2, 2, 1, 1, 25, 34, 15, 28, 22, 2, 11, 13, 11, 29, + 11, 30, 11, 38, 30, 1, 2, 1, 1, 25, 37, 15, 28, 22, 2, 11, 13, 11, 29, 11, + 30, 11, 40, 30, 1, 2, 1, 1, 25, 39, 15, 28, 22, 2, 11, 13, 11, 29, 11, 30, + 11, 42, 30, 1, 2, 1, 1, 25, 41, 15, 41, 11, 32, 11, 43, 26, 15, 44, 11, 45, + 11, 46, 26, 15, 37, 11, 45, 11, 47, 26, 15, 49, 22, 4, 15, 50, 22, 2, 15, 51, + 22, 3, 15, 49, 22, 7, 15, 37, 15, 41, 15, 44, 15, 34, 15, 27, 29, 0, 5, 11, + 52, 11, 53, 11, 54, 11, 55, 30, 1, 2, 1, 1, 15, 49, 22, 4, 15, 56, 15, 57, + 15, 58, 29, 0, 3, 11, 59, 11, 60, 30, 0, 2, 1, 1, 29, 0, 2, 11, 59, 11, + 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 62, 11, 63, 30, 0, 2, 1, 1, 29, 0, + 1, 11, 59, 11, 64, 11, 52, 11, 65, 11, 54, 11, 66, 30, 2, 2, 1, 1, 25, 48, + 15, 68, 22, 2, 15, 69, 22, 2, 15, 68, 22, 1, 15, 70, 22, 2, 11, 62, 11, 71, + 11, 45, 11, 72, 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 62, + 11, 73, 30, 0, 2, 1, 1, 15, 69, 22, 2, 15, 68, 22, 2, 15, 74, 18, 75, 22, + 2, 11, 62, 11, 76, 11, 45, 15, 6, 30, 1, 2, 1, 1, 15, 70, 22, 2, 11, 62, + 11, 77, 11, 45, 11, 78, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1, + 11, 62, 11, 79, 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 67, 15, 81, 22, + 4, 15, 48, 29, 0, 1, 11, 62, 11, 82, 11, 83, 15, 67, 11, 84, 11, 72, 30, 2, + 2, 1, 1, 25, 80, 15, 81, 22, 5, 15, 49, 22, 8, 15, 18, 22, 1, 11, 62, 11, + 82, 30, 0, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, + 86, 22, 1, 11, 13, 11, 66, 30, 0, 2, 1, 1, 15, 50, 22, 1, 15, 49, 22, 3, + 15, 18, 22, 1, 11, 62, 11, 87, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, + 88, 30, 0, 2, 1, 1, 15, 18, 22, 1, 11, 62, 11, 89, 30, 0, 2, 1, 1, 29, + 0, 3, 2, 1, 1, 29, 0, 1, 2, 1, 1, 15, 86, 22, 1, 11, 13, 11, 66, 30, + 0, 2, 1, 1, 15, 28, 22, 3, 11, 62, 11, 90, 11, 45, 11, 72, 11, 13, 11, 91, + 30, 2, 2, 1, 1, 29, 0, 6, 11, 52, 11, 92, 11, 59, 11, 64, 30, 1, 2, 1, + 1, 29, 0, 1, 11, 93, 15, 94, 11, 95, 15, 94, 11, 96, 15, 94, 11, 62, 11, 97, + 30, 3, 2, 1, 1, 25, 85, 15, 80, 20, 98, 2, 0, 1, 15, 99, 2, 0, 0, 15, +100, 15, 80, 2, 0, 1, 15,100, 15, 85, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0,101, 2, 0, 0, 0, 8,114,101,113,117,105,114,101, 0, 4, 0, 0, 0, 4, + 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10,112,114, +105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111, +110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 6, 0, 15, 2, 4, + 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, 15, 5, 13, 0, 2, + 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, 1, 15, 2, 13, 0, + 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, 3, 11, 7, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, + 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97,114, 0, 2, 0, 0, + 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45,112,114,105,110,116, +118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111, +115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 18, 45, + 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, 45, 0, 2, 0, 0, + 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0, 0, 17, 0, 0, + 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 71, + 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, 2, 0, 1, 50, 36, + 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, 2, 2, 1, 1, 42, + 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, 1, 13, 1, 4, 0, + 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, + 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,118, 0, + 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,112,114,105,110,116, + 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 83, +116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45,112,114,105,110,116, +116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, 0, 19,112,114,105, +110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, 0, 4, 0, 0, 0, + 27, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, + 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, 4, 42, 2, 0, 1, + 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, 18, 6, 42, 2, 0, + 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, 18, 1, 11, 2, 42, + 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, 2, 42, 15, 3, 18, + 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, 9, 2, 0, 1, 15, + 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 13, + 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 11, 11, 16, 2, + 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, 15, 0, 11, 18, 15, + 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, 20, 15, 3, 18, 11, + 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, 15, 0, 11, 23, 15, + 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, 11, 25, 15, 3, 18, + 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, 15, 3, 18, 26, 42, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, 0, 6,112,114,105, +110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, + 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 15, 95, 76, + 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 3,105,109, + 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, 0, + 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 9, 73, 85, 80, 32, + 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115,116,101,109, 58, 32, + 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, 0, 2, 0, 0, 0, + 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, 83,121,115,116,101, +109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, 0, 14, 83, 89, 83, + 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 4,109,111,116, 0, + 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, + 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, + 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58, + 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 2, 0, + 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0, + 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 2, 0, 0, + 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, 0, 18, 32, 32, 79, +112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 2, 0, 0, 0, 12, + 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, 0, 20, 32, 32, 79, +112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 2, 0, 0, + 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, 19, 32, 32, + 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, + 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 12,109,117,108, 67, +111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108,116, +105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 5,115,105,122,101, + 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, 0, 0, 0, 5,102, +111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, + 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108, + 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, 2, 0, 0, 0, 4, + 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, + 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, + 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, 0, 0, 0, 53, 0, + 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, + 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4, +108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, 0, 0, 9,112,111, +115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120,101, 99,117,116,101, + 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, + 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105, +111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110,103, 40,109,117,108, + 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, 0, 2, 0, 0, 0, + 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110,100,115, 0, 2, 0, + 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109,117,108, 67,111,109, +109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, 39, 32, 32,102,105, +108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, 32, +108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, 2, 0, 0, 0, 12, + 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, 0, 8, 76,111, 97, +100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70, +105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, + 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 2, 0, 0, + 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 63, 0, 0, 0, 14, 64, 99,111,110, +115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, 1, 15, 0, 4, 0, + 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, 0, 11, 5, 2, 1, + 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, 7, 18, 8, 2, 0, + 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, 12, 42, 2, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, 97,115,116,102,105, +108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108, +101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,110, +111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, + 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, + 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, + 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105, +108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, + 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, + 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, + 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111, +110, 0, 4, 0, 0, 0, 77, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, + 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11, + 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, 30, 4, 2, 1, 1, + 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 25, + 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, 13, 2, 11, 19, 31, + 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, 42, 2, 0, 1, 15, + 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, 15, 25, 13, 3, 15, + 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, 15, 20, 11, 28, 2, + 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 8,102,105, +108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100,108, +103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 2, 0, + 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, + 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, 0, 0, 0, 7,102, +105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, 0, 2, 0, 0, + 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, 0, 10, 76,117, + 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108,111,119,110,101, +119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, 9, 73,117,112, 80, +111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2, + 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 9,108, 97,115,116, +102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, + 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, 73,117,112, 68, +101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 6, +101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97, +118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110,111,118,111, 97,114, +113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, + 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 12, +109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 10, 99,108,111, +115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83, + 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 98, 0, 0, 0, 14, 64, 99, +111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,153, 13, 1, 15, 1, + 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, + 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, 2, 0, 3, 13, 1, + 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, 11, 18, 32, 46, 5, + 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, 20, 11, 21, 13, 3, + 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, 13, 4, 4, 0, 32, + 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, 25, 11, 16, 15, 26, + 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, 13, 3, 25, 29, 15, + 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0, + 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105, +108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121,112, +101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105,108,101, 0, 2, 0, + 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, 97, + 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, 0, + 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108,108, +111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 6,112, +111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, + 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, 8,110,101, +119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, + 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, + 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, + 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, 32,102,105,108,101, + 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9,111,112,101,110,102, +105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, 12,109,117,108, 67, +111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, 97,100, 0, 2, 0, + 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,108,101, + 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 10, +102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11,118, 98,120, 67,111, +110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 2, + 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, 0, 0, 8,105,117, +112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103,105,110, 0, 2, 0, + 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, + 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, + 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, + 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, 97,108,105,103,110, +109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, + 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, + 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 8, 65, 67, 69, + 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, 0, 0, 0, 2, 53, + 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, 0, 0, 0, 8,105, +117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101, +110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 2, 0, 0, 0, + 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, + 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105,108,101, 0, 2, 0, + 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0, 0, + 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, + 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 2, 0, + 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112,117,112, 40, 73, 85, + 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, + 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, 0, 8,100,108,103, + 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, + 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73,117,112, 76,117, 97, + 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, 0, 0, 0, 5,109, +101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, 0, 8,105,117,112, +102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, 97,102, 47, 80, 85, + 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, 47, 79,118,237,100, +105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105,117,112, 64,116,101, + 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 2, 0, 0, + 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, 0, 2, 0, 0, 0, + 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, 98,111,120, 0, 2, + 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, 7,109,105,110, 98, +111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 6, + 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 2, 0, 0, 0, + 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, 0, 0, 11, 73,117, +112, 68,101,115,116,114,111,121, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_be64.lo"); +} diff --git a/iup/srcconsole/loh/console3_le64.loh b/iup/srcconsole/loh/console3_le64.loh new file mode 100755 index 0000000..7d64917 --- /dev/null +++ b/iup/srcconsole/loh/console3_le64.loh @@ -0,0 +1,251 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/console3_le64.lo"); +*/ +/* ../obj/iuplua3/console3_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111, +108,101, 51, 46,108,117, 97, 0, 0, 0, 2,166, 17, 0, 11, 1, 25, 0, 11, 3, + 25, 2, 11, 5, 25, 4, 4, 0, 25, 6, 15, 8, 22, 3, 11, 9, 15, 10, 11, 11, + 11, 12, 11, 13, 11, 14, 30, 2, 2, 1, 1, 25, 7, 15, 16, 22, 2, 11, 17, 11, + 18, 11, 11, 11, 19, 30, 1, 2, 1, 1, 25, 15, 15, 16, 22, 3, 11, 17, 11, 21, + 11, 11, 11, 19, 11, 9, 11, 22, 30, 2, 2, 1, 1, 25, 20, 15, 7, 11, 23, 11, + 24, 26, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 29, 11, 30, 11, 31, 30, 2, + 2, 1, 1, 25, 25, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 33, 11, 30, 11, + 34, 30, 2, 2, 1, 1, 25, 32, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 36, + 30, 1, 2, 1, 1, 25, 35, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 38, 30, + 1, 2, 1, 1, 25, 37, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 40, 30, 1, + 2, 1, 1, 25, 39, 15, 39, 11, 30, 11, 41, 26, 15, 42, 11, 43, 11, 44, 26, 15, + 35, 11, 43, 11, 45, 26, 15, 47, 22, 4, 15, 48, 22, 2, 15, 49, 22, 3, 15, 47, + 22, 7, 15, 35, 15, 39, 15, 42, 15, 32, 15, 25, 29, 0, 5, 11, 50, 11, 51, 11, + 52, 11, 53, 30, 1, 2, 1, 1, 15, 47, 22, 4, 15, 54, 15, 55, 15, 56, 29, 0, + 3, 11, 57, 11, 58, 30, 0, 2, 1, 1, 29, 0, 2, 11, 57, 11, 59, 30, 0, 2, + 1, 1, 29, 0, 1, 11, 60, 11, 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 57, 11, + 62, 11, 50, 11, 63, 11, 52, 11, 64, 30, 2, 2, 1, 1, 25, 46, 15, 66, 22, 2, + 15, 67, 22, 2, 15, 66, 22, 1, 15, 68, 22, 2, 11, 60, 11, 69, 11, 43, 11, 70, + 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 60, 11, 71, 30, 0, + 2, 1, 1, 15, 67, 22, 2, 15, 66, 22, 2, 15, 72, 18, 73, 22, 2, 11, 60, 11, + 74, 11, 43, 15, 4, 30, 1, 2, 1, 1, 15, 68, 22, 2, 11, 60, 11, 75, 11, 43, + 11, 76, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1, 11, 60, 11, 77, + 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 65, 15, 79, 22, 4, 15, 46, 29, + 0, 1, 11, 60, 11, 80, 11, 81, 15, 65, 11, 82, 11, 70, 30, 2, 2, 1, 1, 25, + 78, 15, 79, 22, 5, 15, 47, 22, 8, 15, 16, 22, 1, 11, 60, 11, 80, 30, 0, 2, + 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1, 15, 84, 22, 1, 11, + 11, 11, 64, 30, 0, 2, 1, 1, 15, 48, 22, 1, 15, 47, 22, 3, 15, 16, 22, 1, + 11, 60, 11, 85, 30, 0, 2, 1, 1, 15, 16, 22, 1, 11, 60, 11, 86, 30, 0, 2, + 1, 1, 15, 16, 22, 1, 11, 60, 11, 87, 30, 0, 2, 1, 1, 29, 0, 3, 2, 1, + 1, 29, 0, 1, 2, 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1, + 15, 26, 22, 3, 11, 60, 11, 88, 11, 43, 11, 70, 11, 11, 11, 89, 30, 2, 2, 1, + 1, 29, 0, 6, 11, 50, 11, 90, 11, 57, 11, 62, 30, 1, 2, 1, 1, 29, 0, 1, + 11, 91, 15, 92, 11, 93, 15, 92, 11, 94, 15, 92, 11, 60, 11, 95, 30, 3, 2, 1, + 1, 25, 83, 15, 78, 20, 96, 2, 0, 1, 15, 97, 2, 0, 0, 15, 98, 15, 78, 2, + 0, 1, 15, 98, 15, 83, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 99, 2, 0, + 0, 0, 10,112,114,105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 3, 0, 0, + 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, + 6, 0, 15, 2, 4, 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, + 15, 5, 13, 0, 2, 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, + 1, 15, 2, 13, 0, 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, + 3, 11, 7, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2, +110, 0, 2, 0, 0, 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97, +114, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45, +112,114,105,110,116,118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, + 0, 0, 9,116,111,115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, + 0, 0, 0, 18, 45, 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, + 45, 0, 2, 0, 0, 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, + 0, 0, 13, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, + 0, 0, 0, 0, 71, 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, + 2, 0, 1, 50, 36, 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, + 2, 2, 1, 1, 42, 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, + 1, 13, 1, 4, 0, 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, + 0, 0, 2,118, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6, +112,114,105,110,116, 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, + 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115, +116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45, +112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, + 0, 19,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, + 0, 4, 0, 0, 0, 23, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46, +108,117, 97, 0, 0, 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, + 4, 42, 2, 0, 1, 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, + 18, 6, 42, 2, 0, 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, + 18, 1, 11, 2, 42, 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, + 2, 42, 15, 3, 18, 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, + 9, 2, 0, 1, 15, 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, + 1, 15, 0, 11, 13, 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, + 18, 11, 11, 16, 2, 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, + 15, 0, 11, 18, 15, 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, + 20, 15, 3, 18, 11, 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, + 15, 0, 11, 23, 15, 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, + 11, 25, 15, 3, 18, 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, + 15, 3, 18, 26, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, + 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, + 78, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 15, 95, 76, 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, + 0, 0, 3,105,109, 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, + 84, 0, 2, 0, 0, 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 32, 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115, +116,101,109, 58, 32, 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, + 0, 2, 0, 0, 0, 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, + 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, + 0, 14, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, + 4,109,111,116, 0, 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, + 79, 78, 0, 2, 0, 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115, +105,111,110, 58, 32, 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, + 83,105,122,101, 58, 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, + 90, 69, 0, 2, 0, 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112, +116,104, 58, 32, 0, 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, + 72, 0, 2, 0, 0, 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, + 0, 18, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, + 2, 0, 0, 0, 12, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, + 0, 20, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, + 32, 0, 2, 0, 0, 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, + 0, 0, 19, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, + 32, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, + 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117, +112,109,117,108,116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97, +110,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, + 5,115,105,122,101, 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, + 0, 0, 0, 5,102,111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, + 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115, +108, 97, 98,101,108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, + 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, + 2, 0, 0, 0, 4, 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, + 98,101,108, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, + 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, + 0, 0, 0, 49, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, + 97, 0, 0, 0, 0, 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 4,108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, + 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120, +101, 99,117,116,101, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, + 0, 2, 0, 0, 0, 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, + 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110, +103, 40,109,117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, + 0, 2, 0, 0, 0, 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110, +100,115, 0, 2, 0, 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109, +117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, + 39, 32, 32,102,105,108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, + 32, 39, 39, 32, 32,108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, + 2, 0, 0, 0, 12, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, + 0, 8, 76,111, 97,100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97, +118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65, +115, 46, 46, 46, 0, 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108, +101, 0, 2, 0, 0, 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 59, 0, 0, 0, + 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, + 1, 15, 0, 4, 0, 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, + 0, 11, 5, 2, 1, 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, + 7, 18, 8, 2, 0, 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, + 12, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, + 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, + 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, + 0, 0, 0, 8,110,111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101, +110,102,105,108,101, 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119, +114,105,116,101, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100, +115, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108, +111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, + 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, + 32, 0, 2, 0, 0, 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, + 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, + 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 73, 0, 0, 0, 14, 64, 99,111,110, +115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, + 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, + 30, 4, 2, 1, 1, 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, + 13, 1, 18, 16, 25, 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, + 13, 2, 11, 19, 31, 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, + 42, 2, 0, 1, 15, 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, + 15, 25, 13, 3, 15, 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, + 15, 20, 11, 28, 2, 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, + 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102, +105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121, +112,101, 0, 2, 0, 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, + 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, + 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, + 0, 0, 10, 76,117, 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108, +108,111,119,110,101,119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, + 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, + 69, 70, 84, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, + 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, + 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, + 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, + 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110, +111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110, +111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, + 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, + 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, + 0, 10, 99,108,111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110, +110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 94, 0, + 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, +153, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, + 8, 11, 9, 11, 10, 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, + 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, + 11, 18, 32, 46, 5, 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, + 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, + 13, 4, 4, 0, 32, 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, + 25, 11, 16, 15, 26, 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, + 13, 3, 25, 29, 15, 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 2, 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11, +105,117,112,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108, +111,103,116,121,112,101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, + 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105, +108,101, 0, 2, 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, + 42, 46,108,117, 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102, +111, 0, 2, 0, 0, 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, + 0, 9, 97,108,108,111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, + 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, + 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, + 0, 0, 8,110,101,119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117, +101, 0, 2, 0, 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, + 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114, +114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, + 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9, +111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, + 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, + 97,100, 0, 2, 0, 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115, +101,102,105,108,101, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, + 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, +118, 98,120, 67,111,110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, + 98,111,120, 0, 2, 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, + 0, 0, 8,105,117,112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103, +105,110, 0, 2, 0, 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, + 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, + 98,101,108, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, + 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, + 97,108,105,103,110,109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, + 84, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, + 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, + 0, 0, 0, 2, 53, 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, + 0, 0, 0, 8,105,117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112, +115,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, + 0, 2, 0, 0, 0, 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117, +114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105, +108,101, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101, +109, 0, 2, 0, 0, 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, + 32, 73,110,102,111, 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, + 46, 46, 0, 2, 0, 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112, +117,112, 40, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, + 69, 78, 84, 69, 82, 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, + 0, 8,100,108,103, 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, + 97,108,111,103, 0, 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73, +117,112, 76,117, 97, 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, + 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, + 99, 98, 0, 2, 0, 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, + 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, + 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, + 47, 79,118,237,100,105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105, +117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98, +114, 0, 2, 0, 0, 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, + 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, + 98,111,120, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, + 7,109,105,110, 98,111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, + 2, 0, 0, 0, 6, 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, + 0, 2, 0, 0, 0, 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, + 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_le64.lo"); +} diff --git a/iup/srcconsole/loh/console3_le64w.loh b/iup/srcconsole/loh/console3_le64w.loh new file mode 100755 index 0000000..57e9b6d --- /dev/null +++ b/iup/srcconsole/loh/console3_le64w.loh @@ -0,0 +1,251 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/console3_le64w.lo"); +*/ +/* ../obj/iuplua3/console3_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,110,115,111, +108,101, 51, 46,108,117, 97, 0, 0, 0, 2,166, 17, 0, 11, 1, 25, 0, 11, 3, + 25, 2, 11, 5, 25, 4, 4, 0, 25, 6, 15, 8, 22, 3, 11, 9, 15, 10, 11, 11, + 11, 12, 11, 13, 11, 14, 30, 2, 2, 1, 1, 25, 7, 15, 16, 22, 2, 11, 17, 11, + 18, 11, 11, 11, 19, 30, 1, 2, 1, 1, 25, 15, 15, 16, 22, 3, 11, 17, 11, 21, + 11, 11, 11, 19, 11, 9, 11, 22, 30, 2, 2, 1, 1, 25, 20, 15, 7, 11, 23, 11, + 24, 26, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 29, 11, 30, 11, 31, 30, 2, + 2, 1, 1, 25, 25, 15, 26, 22, 3, 11, 11, 11, 27, 11, 28, 11, 33, 11, 30, 11, + 34, 30, 2, 2, 1, 1, 25, 32, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 36, + 30, 1, 2, 1, 1, 25, 35, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 38, 30, + 1, 2, 1, 1, 25, 37, 15, 26, 22, 2, 11, 11, 11, 27, 11, 28, 11, 40, 30, 1, + 2, 1, 1, 25, 39, 15, 39, 11, 30, 11, 41, 26, 15, 42, 11, 43, 11, 44, 26, 15, + 35, 11, 43, 11, 45, 26, 15, 47, 22, 4, 15, 48, 22, 2, 15, 49, 22, 3, 15, 47, + 22, 7, 15, 35, 15, 39, 15, 42, 15, 32, 15, 25, 29, 0, 5, 11, 50, 11, 51, 11, + 52, 11, 53, 30, 1, 2, 1, 1, 15, 47, 22, 4, 15, 54, 15, 55, 15, 56, 29, 0, + 3, 11, 57, 11, 58, 30, 0, 2, 1, 1, 29, 0, 2, 11, 57, 11, 59, 30, 0, 2, + 1, 1, 29, 0, 1, 11, 60, 11, 61, 30, 0, 2, 1, 1, 29, 0, 1, 11, 57, 11, + 62, 11, 50, 11, 63, 11, 52, 11, 64, 30, 2, 2, 1, 1, 25, 46, 15, 66, 22, 2, + 15, 67, 22, 2, 15, 66, 22, 1, 15, 68, 22, 2, 11, 60, 11, 69, 11, 43, 11, 70, + 30, 1, 2, 1, 1, 29, 0, 1, 2, 1, 1, 29, 0, 1, 11, 60, 11, 71, 30, 0, + 2, 1, 1, 15, 67, 22, 2, 15, 66, 22, 2, 15, 72, 18, 73, 22, 2, 11, 60, 11, + 74, 11, 43, 15, 4, 30, 1, 2, 1, 1, 15, 68, 22, 2, 11, 60, 11, 75, 11, 43, + 11, 76, 30, 1, 2, 1, 1, 29, 0, 2, 2, 1, 1, 29, 0, 1, 11, 60, 11, 77, + 30, 0, 2, 1, 1, 29, 0, 2, 2, 1, 1, 25, 65, 15, 79, 22, 4, 15, 46, 29, + 0, 1, 11, 60, 11, 80, 11, 81, 15, 65, 11, 82, 11, 70, 30, 2, 2, 1, 1, 25, + 78, 15, 79, 22, 5, 15, 47, 22, 8, 15, 16, 22, 1, 11, 60, 11, 80, 30, 0, 2, + 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1, 15, 84, 22, 1, 11, + 11, 11, 64, 30, 0, 2, 1, 1, 15, 48, 22, 1, 15, 47, 22, 3, 15, 16, 22, 1, + 11, 60, 11, 85, 30, 0, 2, 1, 1, 15, 16, 22, 1, 11, 60, 11, 86, 30, 0, 2, + 1, 1, 15, 16, 22, 1, 11, 60, 11, 87, 30, 0, 2, 1, 1, 29, 0, 3, 2, 1, + 1, 29, 0, 1, 2, 1, 1, 15, 84, 22, 1, 11, 11, 11, 64, 30, 0, 2, 1, 1, + 15, 26, 22, 3, 11, 60, 11, 88, 11, 43, 11, 70, 11, 11, 11, 89, 30, 2, 2, 1, + 1, 29, 0, 6, 11, 50, 11, 90, 11, 57, 11, 62, 30, 1, 2, 1, 1, 29, 0, 1, + 11, 91, 15, 92, 11, 93, 15, 92, 11, 94, 15, 92, 11, 60, 11, 95, 30, 3, 2, 1, + 1, 25, 83, 15, 78, 20, 96, 2, 0, 1, 15, 97, 2, 0, 0, 15, 98, 15, 78, 2, + 0, 1, 15, 98, 15, 83, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 99, 2, 0, + 0, 0, 10,112,114,105,110,116,118, 97,114,115, 0, 4, 0, 0, 0, 3, 0, 0, + 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, + 6, 0, 15, 2, 4, 0, 2, 2, 1, 15, 3, 11, 4, 2, 0, 1, 50, 34, 15, 3, + 15, 5, 13, 0, 2, 1, 1, 11, 6, 42, 15, 5, 13, 1, 2, 1, 1, 42, 2, 0, + 1, 15, 2, 13, 0, 2, 2, 1, 23, 1, 23, 0, 13, 0, 4, 0, 31, 54, 41, 15, + 3, 11, 7, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 2, +110, 0, 2, 0, 0, 0, 2,118, 0, 2, 0, 0, 0, 8,110,101,120,116,118, 97, +114, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 20, 45, 45, +112,114,105,110,116,118, 97,114,115, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, + 0, 0, 9,116,111,115,116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, + 0, 0, 0, 18, 45, 45,112,114,105,110,116,118, 97,114,115, 32, 69,110,100, 45, + 45, 0, 2, 0, 0, 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, + 0, 0, 13, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, + 0, 0, 0, 0, 71, 7, 1, 15, 3, 13, 0, 4, 0, 2, 2, 2, 15, 4, 11, 5, + 2, 0, 1, 50, 36, 15, 4, 15, 6, 13, 1, 2, 1, 1, 11, 7, 42, 15, 6, 13, + 2, 2, 1, 1, 42, 2, 0, 1, 15, 3, 13, 0, 13, 1, 2, 2, 2, 23, 2, 23, + 1, 13, 1, 4, 0, 31, 54, 43, 15, 4, 11, 8, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, + 0, 0, 2,118, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6, +112,114,105,110,116, 0, 2, 0, 0, 0, 21, 45, 45,112,114,105,110,116,116, 97, + 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 2, 0, 0, 0, 9,116,111,115, +116,114,105,110,103, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 19, 45, 45, +112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, 2, 0, 0, + 0, 19,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, + 0, 4, 0, 0, 0, 23, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46, +108,117, 97, 0, 0, 0, 0,241, 5, 0, 15, 0, 15, 1, 11, 2, 42, 15, 3, 18, + 4, 42, 2, 0, 1, 15, 5, 52, 17, 15, 0, 15, 5, 18, 1, 11, 2, 42, 15, 5, + 18, 6, 42, 2, 0, 1, 15, 7, 48, 4, 15, 7, 18, 1, 52, 17, 15, 0, 15, 7, + 18, 1, 11, 2, 42, 15, 7, 18, 6, 42, 2, 0, 1, 15, 0, 15, 3, 18, 1, 11, + 2, 42, 15, 3, 18, 6, 42, 2, 0, 1, 15, 0, 11, 8, 2, 0, 1, 15, 0, 11, + 9, 2, 0, 1, 15, 0, 11, 10, 15, 3, 18, 11, 11, 12, 2, 1, 1, 42, 2, 0, + 1, 15, 0, 11, 13, 15, 3, 18, 11, 11, 14, 2, 1, 1, 42, 2, 0, 1, 15, 3, + 18, 11, 11, 16, 2, 1, 1, 13, 0, 52, 9, 15, 0, 11, 17, 13, 0, 2, 0, 2, + 15, 0, 11, 18, 15, 3, 18, 11, 11, 19, 2, 1, 1, 42, 2, 0, 1, 15, 0, 11, + 20, 15, 3, 18, 11, 11, 21, 2, 1, 1, 42, 2, 0, 1, 15, 3, 18, 22, 52, 12, + 15, 0, 11, 23, 15, 3, 18, 22, 42, 2, 0, 1, 15, 3, 18, 24, 52, 12, 15, 0, + 11, 25, 15, 3, 18, 24, 42, 2, 0, 1, 15, 3, 18, 26, 52, 12, 15, 0, 11, 27, + 15, 3, 18, 26, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 2, 0, 0, + 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, + 78, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 15, 95, 76, 85, 65, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 2, 0, + 0, 0, 3,105,109, 0, 2, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, + 84, 0, 2, 0, 0, 0, 3, 99,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 32, 73,110,102,111, 0, 2, 0, 0, 0, 11, 32, 32, 83,121,115, +116,101,109, 58, 32, 0, 2, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, 97,108, + 0, 2, 0, 0, 0, 7, 83, 89, 83, 84, 69, 77, 0, 2, 0, 0, 0, 19, 32, 32, + 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 2, 0, 0, + 0, 14, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0, + 4,109,111,116, 0, 2, 0, 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, + 79, 78, 0, 2, 0, 0, 0, 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115, +105,111,110, 58, 32, 0, 2, 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, + 83,105,122,101, 58, 32, 0, 2, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, + 90, 69, 0, 2, 0, 0, 0, 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112, +116,104, 58, 32, 0, 2, 0, 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, + 72, 0, 2, 0, 0, 0, 10, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 2, 0, 0, + 0, 18, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, + 2, 0, 0, 0, 12, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 2, 0, 0, + 0, 20, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, + 32, 0, 2, 0, 0, 0, 11, 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, + 0, 0, 19, 32, 32, 79,112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, + 32, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, + 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 13,105,117, +112,109,117,108,116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97, +110,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, + 5,115,105,122,101, 0, 2, 0, 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 2, + 0, 0, 0, 5,102,111,110,116, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, + 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 9,112,111,115, +108, 97, 98,101,108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, + 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 4, 48, 58, 48, 0, + 2, 0, 0, 0, 4, 53, 48,120, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, + 98,101,108, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, + 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 8, 99, 97,114,101,116, 99, 98, 0, 4, + 0, 0, 0, 49, 0, 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, + 97, 0, 0, 0, 0, 16, 7, 3, 15, 3, 11, 4, 13, 1, 11, 5, 42, 13, 2, 42, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 4,108,105,110, 0, 2, 0, 0, 0, 4, 99,111,108, 0, 2, 0, + 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 11, 98,117,116, 69,120, +101, 99,117,116,101, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, + 0, 2, 0, 0, 0, 6, 53, 48,120, 49, 53, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 8, 69,120,101, 99,117,116,101, 0, 2, 0, 0, 0, + 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 28,100,111,115,116,114,105,110, +103, 40,109,117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 41, + 0, 2, 0, 0, 0, 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97,110, +100,115, 0, 2, 0, 0, 0, 6, 67,108,101, 97,114, 0, 2, 0, 0, 0, 61,109, +117,108, 67,111,109,109, 97,110,100,115, 46,118, 97,108,117,101, 32, 61, 32, 39, + 39, 32, 32,102,105,108,101,108, 97, 98,101,108, 46,116,105,116,108,101, 32, 61, + 32, 39, 39, 32, 32,108, 97,115,116,102,105,108,101, 32, 61, 32,110,105,108, 0, + 2, 0, 0, 0, 12, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 2, 0, 0, + 0, 8, 76,111, 97,100, 46, 46, 46, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97, +118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 11, 83, 97,118,101, 32, 65, +115, 46, 46, 46, 0, 2, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108, +101, 0, 2, 0, 0, 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 59, 0, 0, 0, + 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, 67, 4, + 1, 15, 0, 4, 0, 32, 52, 9, 15, 1, 20, 2, 2, 0, 1, 50, 48, 15, 4, 15, + 0, 11, 5, 2, 1, 2, 25, 3, 15, 3, 4, 0, 31, 52, 20, 15, 6, 15, 3, 15, + 7, 18, 8, 2, 0, 2, 15, 9, 15, 3, 2, 0, 1, 50, 10, 15, 10, 11, 11, 15, + 12, 42, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 9,108, + 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, + 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, + 0, 0, 0, 8,110,111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101, +110,102,105,108,101, 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119, +114,105,116,101, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100, +115, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 10, 99,108, +111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, + 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, + 32, 0, 2, 0, 0, 0, 9,102,105,108,101,110, 97,109,101, 0, 2, 0, 0, 0, + 14, 98,117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 2, 0, 0, 0, 7, + 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 73, 0, 0, 0, 14, 64, 99,111,110, +115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0,136, 13, 1, 15, 1, 22, 5, + 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 15, 11, + 30, 4, 2, 1, 1, 15, 12, 13, 1, 15, 13, 15, 13, 2, 0, 3, 13, 1, 18, 14, + 13, 1, 18, 16, 25, 15, 15, 17, 11, 4, 15, 15, 26, 15, 18, 13, 1, 2, 0, 1, + 13, 2, 11, 19, 31, 52, 62, 15, 15, 4, 0, 32, 52, 10, 15, 20, 11, 21, 15, 15, + 42, 2, 0, 1, 15, 23, 15, 15, 11, 24, 2, 1, 2, 13, 3, 4, 0, 31, 52, 20, + 15, 25, 13, 3, 15, 26, 18, 16, 2, 0, 2, 15, 27, 13, 3, 2, 0, 1, 50, 7, + 15, 20, 11, 28, 2, 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, + 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102, +105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108,111,103,116,121, +112,101, 0, 2, 0, 0, 0, 5, 83, 65, 86, 69, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 10, 83, 97,118,101, 32, 70,105,108,101, 0, 2, + 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, 42, 46,108,117, + 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, 0, 2, 0, + 0, 0, 10, 76,117, 97, 32,102,105,108,101,115, 0, 2, 0, 0, 0, 9, 97,108, +108,111,119,110,101,119, 0, 2, 0, 0, 0, 4,121,101,115, 0, 2, 0, 0, 0, + 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 76, + 69, 70, 84, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, 0, 0, + 9,108, 97,115,116,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, + 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, + 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 3, 45, 49, 0, + 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110, +111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 8,110, +111,118,111, 97,114,113, 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, + 0, 2, 0, 0, 0, 3,119, 43, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, + 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, + 0, 10, 99,108,111,115,101,102,105,108,101, 0, 2, 0, 0, 0, 17, 67, 97,110, +110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 0, 4, 0, 0, 0, 94, 0, + 0, 0, 14, 64, 99,111,110,115,111,108,101, 51, 46,108,117, 97, 0, 0, 0, 0, +153, 13, 1, 15, 1, 22, 5, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, + 8, 11, 9, 11, 10, 11, 11, 30, 4, 2, 1, 1, 13, 1, 20, 12, 15, 13, 15, 13, + 2, 0, 3, 13, 1, 18, 14, 13, 1, 18, 16, 15, 17, 13, 1, 2, 0, 1, 13, 2, + 11, 18, 32, 46, 5, 13, 2, 11, 19, 32, 52, 19, 13, 2, 11, 19, 32, 52, 10, 15, + 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 62, 15, 23, 13, 3, 11, 24, 2, 1, 2, + 13, 4, 4, 0, 32, 52, 12, 15, 20, 11, 21, 13, 3, 42, 2, 0, 1, 50, 32, 15, + 25, 11, 16, 15, 26, 13, 4, 11, 27, 2, 1, 2, 26, 15, 28, 13, 4, 2, 0, 1, + 13, 3, 25, 29, 15, 30, 11, 4, 15, 29, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 2, 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11, +105,117,112,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 11,100,105, 97,108, +111,103,116,121,112,101, 0, 2, 0, 0, 0, 5, 79, 80, 69, 78, 0, 2, 0, 0, + 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 10, 76,111, 97,100, 32, 70,105, +108,101, 0, 2, 0, 0, 0, 7,102,105,108,116,101,114, 0, 2, 0, 0, 0, 6, + 42, 46,108,117, 97, 0, 2, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102, +111, 0, 2, 0, 0, 0, 10, 76,117, 97, 32, 70,105,108,101,115, 0, 2, 0, 0, + 0, 9, 97,108,108,111,119,110,101,119, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, + 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, + 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 2, 0, + 0, 0, 8,110,101,119,102,105,108,101, 0, 2, 0, 0, 0, 6,118, 97,108,117, +101, 0, 2, 0, 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, + 0, 0, 3, 45, 49, 0, 2, 0, 0, 0, 2, 49, 0, 2, 0, 0, 0, 6,101,114, +114,111,114, 0, 2, 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108,111, 97,100, + 32,102,105,108,101, 32, 0, 2, 0, 0, 0, 3,102,112, 0, 2, 0, 0, 0, 9, +111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, + 12,109,117,108, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, 0, 5,114,101, + 97,100, 0, 2, 0, 0, 0, 3, 42, 97, 0, 2, 0, 0, 0, 10, 99,108,111,115, +101,102,105,108,101, 0, 2, 0, 0, 0, 9,108, 97,115,116,102,105,108,101, 0, + 2, 0, 0, 0, 10,102,105,108,101,108, 97, 98,101,108, 0, 2, 0, 0, 0, 11, +118, 98,120, 67,111,110,115,111,108,101, 0, 2, 0, 0, 0, 8,105,117,112,118, + 98,111,120, 0, 2, 0, 0, 0, 9,105,117,112,102,114, 97,109,101, 0, 2, 0, + 0, 0, 8,105,117,112,104, 98,111,120, 0, 2, 0, 0, 0, 7,109, 97,114,103, +105,110, 0, 2, 0, 0, 0, 4, 48,120, 48, 0, 2, 0, 0, 0, 4,103, 97,112, + 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 10,102,105,108,101,108, 97, + 98,101,108, 0, 2, 0, 0, 0, 12,109,117,108, 67,111,109,109, 97,110,100,115, + 0, 2, 0, 0, 0, 9,112,111,115,108, 97, 98,101,108, 0, 2, 0, 0, 0, 10, + 97,108,105,103,110,109,101,110,116, 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, + 84, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 2, 0, 0, + 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 4, 53,120, 53, 0, 2, + 0, 0, 0, 2, 53, 0, 2, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, 2, + 0, 0, 0, 8,105,117,112,109,101,110,117, 0, 2, 0, 0, 0, 11,105,117,112, +115,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, + 0, 2, 0, 0, 0, 5, 69,120,105,116, 0, 2, 0, 0, 0, 17,114,101,116,117, +114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 5, 70,105, +108,101, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,105,116,101, +109, 0, 2, 0, 0, 0, 22, 80,114,105,110,116, 32, 86,101,114,115,105,111,110, + 32, 73,110,102,111, 46, 46, 46, 0, 2, 0, 0, 0, 9, 65, 98,111,117,116, 46, + 46, 46, 0, 2, 0, 0, 0, 39,100,108,103, 65, 98,111,117,116, 58,112,111,112, +117,112, 40, 73, 85, 80, 95, 67, 69, 78, 84, 69, 82, 44, 32, 73, 85, 80, 95, 67, + 69, 78, 84, 69, 82, 41, 0, 2, 0, 0, 0, 5, 72,101,108,112, 0, 2, 0, 0, + 0, 8,100,108,103, 77, 97,105,110, 0, 2, 0, 0, 0, 10,105,117,112,100,105, + 97,108,111,103, 0, 2, 0, 0, 0, 29, 67,111,109,112,108,101,116,101, 32, 73, +117,112, 76,117, 97, 51, 32, 73,110,116,101,114,112,114,101,116,101,114, 0, 2, + 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, + 99, 98, 0, 2, 0, 0, 0, 9,100,108,103, 65, 98,111,117,116, 0, 2, 0, 0, + 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, 0, 16, 84,101, 99,103,114, + 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 2, 0, 0, 0, 18, 77, 97,114,107, + 47, 79,118,237,100,105,111, 47, 83, 99,117,114,105, 0, 2, 0, 0, 0, 23,105, +117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98, +114, 0, 2, 0, 0, 0, 3, 79, 75, 0, 2, 0, 0, 0, 6, 53, 48, 88, 50, 48, + 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, 0, 0, 7,109, 97,120, + 98,111,120, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, 2, 0, 0, 0, + 7,109,105,110, 98,111,120, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, + 2, 0, 0, 0, 6, 65, 98,111,117,116, 0, 2, 0, 0, 0, 5,115,104,111,119, + 0, 2, 0, 0, 0, 12, 73,117,112, 77, 97,105,110, 76,111,111,112, 0, 2, 0, + 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/console3_le64w.lo"); +} diff --git a/iup/srcconsole/loh/console5.loh b/iup/srcconsole/loh/console5.loh new file mode 100755 index 0000000..9bec168 --- /dev/null +++ b/iup/srcconsole/loh/console5.loh @@ -0,0 +1,475 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/console5.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/console5.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64, 99,111,110, +115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64, 0, 1, 5,128, + 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192, 64, 0,100, 0, + 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64, 0, 0, 9, 64, +128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192, 66,133,137, 64, + 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192, 68,137,137, 0, + 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0, 69,134,137,192, + 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192, 64, 0, 6, 0, + 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, 71,137,137,128, +199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, 72,137,137, 64, +200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192, 72,137, 92,128, + 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128, +198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128, 0, 1, 9, 64, + 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128, + 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64, 0,147, 5,128, + 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64,128,142, 5,128, + 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64,128,142, 5,128, + 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128, 0, 0, 6,192, + 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128, 0, 0,198,192, +202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65, 0, 1,197,129, + 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194,192, 4, 70,130, +200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130, 0, 0,198,194, +192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195, 71, 6, 69,131, + 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2,204,151, 34, 66, +128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66,128, 1,133,130, + 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194,192, 5,198, 2, +194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130,204,152, 98, 66, +128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129, 0, 1, 9, 1, + 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128,205,150,137,192, +205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128, 0, 0,198,128, +206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1, 0, 0,197,129, + 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66,207,142,220, 1, + 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65,128, 0,220,128, + 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129, 0, 0,134, 65, + 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130, 0, 0, 73,194, + 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130,130,142, 28,130, + 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2, 80,137,137, 66, +208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129, 80,137, 98, 65, +128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64, 0,156, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64,129, 0,197,128, + 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129, 0, 0, 6,193, + 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129, 0, 0, 6,193, + 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64,128, 0, 92,128, + 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192, 80, 0,100,192, + 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0, +209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129, 0, 3, 69,129, + 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129, 0, 1,133,129, + 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129, 0, 1,197,129, + 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129, 0, 1, 5,130, + 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130, 74, 5,202, 2, +128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3, 83,137, 28,131, + 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67, 83,137, 92, 3, + 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130, 0, 1, 69,130, + 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130, 0, 1,133,130, + 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66,207,142,201,194, + 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65, 0, 3,220,128, + 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64, 85,137,162, 64, +128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192, 64, 0, 6,192, + 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 85, 0, 69,128, + 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128, 0, 0, 6, 0, + 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192, 80, 0, 11, 64, + 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128, 82, 0, 11, 64, + 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8, 0, 0, 0,114, +101,113,117,105,114,101, 0, 4, 7, 0, 0, 0,105,117,112,108,117, 97, 0, 4, + 4, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101, + 0, 4, 11, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 19, 0, + 0, 0,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, + 0, 4, 13, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0, + 4, 7, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0,109,117,108, +116,105,108,105,110,101, 0, 4, 7, 0, 0, 0,101,120,112, 97,110,100, 0, 4, + 4, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0, 0,115,105,122,101, 0, 4, 8, + 0, 0, 0, 50, 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0,102,111,110,116, + 0, 4, 18, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 48, 0, 4, 12, 0, 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, + 0, 4, 6, 0, 0, 0,108, 97, 98,101,108, 0, 4, 6, 0, 0, 0,116,105,116, +108,101, 0, 4, 4, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 53, 48,120, + 0, 4, 12, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 1, + 0, 0, 0, 0, 4, 11, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, + 4, 9, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 98, +117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 98,117,116,116,111, +110, 0, 4, 6, 0, 0, 0, 53, 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 69,120, +101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39, + 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40,105,117,112, 46, + 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101, + 41, 0, 4, 17, 0, 0, 0, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97, +110,100,115, 0, 4, 6, 0, 0, 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0, +105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, + 97,108,117,101, 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, + 46,108, 98,108, 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, + 32, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115, +116,102,105,108,101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0, + 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 76,111, + 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 98,117,116, 83, 97,118,101, 97,115, + 70,105,108,101, 0, 4, 11, 0, 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46, + 0, 4, 12, 0, 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5, + 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 76,111, 97,100, 70,105,108, +101, 0, 4, 11, 0, 0, 0,118, 98,120, 67,111,110,115,111,108,101, 0, 4, 5, + 0, 0, 0,118, 98,111,120, 0, 4, 6, 0, 0, 0,102,114, 97,109,101, 0, 4, + 5, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0,109, 97,114,103,105,110, + 0, 4, 4, 0, 0, 0, 48,120, 48, 0, 4, 4, 0, 0, 0,103, 97,112, 0, 4, + 3, 0, 0, 0, 49, 48, 0, 4, 10, 0, 0, 0, 97,108,105,103,110,109,101,110, +116, 0, 4, 7, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5, 0, 0, 0, 65, + 84, 79, 80, 0, 4, 9, 0, 0, 0, 67,111,109,109, 97,110,100,115, 0, 4, 8, + 0, 0, 0, 65, 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 53,120, 53, 0, + 4, 2, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0,109,110,117, 77, 97,105,110, 0, + 4, 5, 0, 0, 0,109,101,110,117, 0, 4, 8, 0, 0, 0,115,117, 98,109,101, +110,117, 0, 4, 5, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 69,120, +105,116, 0, 4, 17, 0, 0, 0,114,101,116,117,114,110, 32,105,117,112, 46, 67, + 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0, + 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, + 46, 0, 4, 9, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0, + 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103, 65, 98,111,117, +116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84, 69, 82, 44, 32, +105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0, 0, 72,101,108, +112, 0, 4, 8, 0, 0, 0,100,108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0, +100,105, 97,108,111,103, 0, 4, 15, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67, +111,110,115,111,108,101, 0, 4, 9, 0, 0, 0,100,114, 97,103,100,114,111,112, + 0, 4, 13, 0, 0, 0,100,101,102, 97,117,108,116,101,110,116,101,114, 0, 4, + 9, 0, 0, 0, 99,108,111,115,101, 95, 99, 98, 0, 4, 13, 0, 0, 0,100,114, +111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0,100,108,103, 65, + 98,111,117,116, 0, 4, 5, 0, 0, 0,102,105,108,108, 0, 4, 16, 0, 0, 0, + 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 4, 23, 0, 0, + 0,105,117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, + 46, 98,114, 0, 4, 3, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 53, 48, 88, + 50, 48, 0, 4, 6, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7, 0, 0, 0,109, + 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0,109, +105,110, 98,111,120, 0, 4, 7, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6, + 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0,115,104,111,119, 0, 4, + 9, 0, 0, 0, 83,101,116, 70,111, 99,117,115, 0, 4, 9, 0, 0, 0, 77, 97, +105,110, 76,111,111,112, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, 0, 1, 0, 8, + 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1, 92,192,128, 1, +197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 90, 0, 0, 0, 22, 0, 4,128, +197, 64, 0, 0, 5,193, 0, 0, 64, 1,128, 0, 28,129, 0, 1, 65, 1, 1, 0, +133,193, 0, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2,220, 64, 0, 1, +197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1,128, 0, 0, 2, + 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1, 65, 1, 0,220, 64, 0, 1, + 30, 0,128, 0, 6, 0, 0, 0, 4, 5, 0, 0, 0,110,101,120,116, 0, 4, 6, + 0, 0, 0,112,114,105,110,116, 0, 4, 21, 0, 0, 0, 45, 45,112,114,105,110, +116,116, 97, 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 9, 0, 0, 0, +116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 61, 0, 4, 19, 0, 0, + 0, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, + 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, + 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, + 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,116, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 2, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0, + 2, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112, 0, 0, 0, 5, 0, + 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65,128, 0, 0,133, 0, + 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6, 65, 65, 2, 85, 0, +129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, + 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193, 0, 1, 0, 5,129, + 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65, 0, + 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5, 65, 2, 0, 6, 65, + 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,128, 2, 0, 28, 64, + 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65, 0, + 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156,128, 0, 1, 85,128, +128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133, 64, 2, 0,134, 64, + 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64, + 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26, 0, 0, 0, 22,192, + 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92, 64,128, 1, 69, 64, + 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1, 1, 5, 0,220,128, + 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129, 64, 5, 0,197, 64, + 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64, + 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22, 64, 1,128, 69, 64, + 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149,192, 0, 1, 92, 64, + 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22, 64, 1,128, 69, 64, + 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149,192, 0, 1, 92, 64, + 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22, 64, 1,128, 69, 64, + 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149,192, 0, 1, 92, 64, + 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0,105,109, 0, 4, 6, + 0, 0, 0,112,114,105,110,116, 0, 4, 4, 0, 0, 0, 73, 77, 32, 0, 4, 9, + 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 32, 32, 0, + 4, 11, 0, 0, 0, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 4, 3, 0, 0, + 0, 99,100, 0, 4, 4, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 73, 85, + 80, 32, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, 1, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 73, 85, 80, 32, 73,110,102,111, 0, 4, 11, 0, 0, 0, 32, 32, 83, +121,115,116,101,109, 58, 32, 0, 4, 10, 0, 0, 0, 71,101,116, 71,108,111, 98, + 97,108, 0, 4, 7, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0, 4, 19, 0, 0, 0, + 32, 32, 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4, + 14, 0, 0, 0, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13, + 0, 0, 0, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0, + 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4, + 16, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58, 32, 0, + 4, 11, 0, 0, 0, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 4, 17, 0, 0, + 0, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12, + 0, 0, 0, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0, + 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 32, 32, 79,112,101, +110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12, 0, 0, 0, 71, 76, + 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 20, 0, 0, 0, 32, 32, 79,112,101, +110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0, + 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 32, 32, 79,112, +101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0,112, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22, + 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, + 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, + 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, + 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,109, +111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, + 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 9, 0, 0, 0,197, 0, 0, 0,198, + 64,192, 1,198,128,192, 1, 0, 1,128, 0, 65, 1, 1, 0,128, 1, 0, 1, 21, +129, 1, 2,201, 0,129,129, 30, 0,128, 0, 5, 0, 0, 0, 4, 4, 0, 0, 0, +105,117,112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0, + 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0,116, +105,116,108,101, 0, 4, 2, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, + 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 3, 0, 0, 0, + 5, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, + 0,108,105,110, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 99,111,108, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, + 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, + 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0, 0, 0, 70, 64,192, + 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128, 6,128, 69,192, 1, + 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128, 64, 1,193, 64, 2, + 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 90, 0, 0, 0, 22,128, 2, +128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64,192, 1,198,192,194, + 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64,195, 0, 92, 64, 0, + 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0, 4, 0,149,192, 0, + 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4, 0, 0, 0,105,117, +112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, +108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 98, +117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 97, 99, +116,105,111,110, 0, 4, 8, 0, 0, 0,110,101,119,102,105,108,101, 0, 4, 3, + 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0, + 0,119, 43, 0, 4, 6, 0, 0, 0,119,114,105,116,101, 0, 4, 7, 0, 0, 0, +109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 6, + 0, 0, 0, 99,108,111,115,101, 0, 4, 6, 0, 0, 0,101,114,114,111,114, 0, + 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108, +101, 32, 0, 4, 9, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, + 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, + 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, + 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, + 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, + 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, + 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 67, 0, 0, + 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 70, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1, + 0, 7, 65, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, + 64,129,137, 64, 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192, + 0,133, 92,128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, + 0, 0, 70, 65,195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192, +195, 1, 6, 65,196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128, +196, 1, 5, 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192, +196, 0,220, 64, 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192, +195, 1,198, 0,196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193, + 5, 0, 69, 1, 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128, +198, 1, 5, 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128, +128, 1,218, 0, 0, 0, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193, + 67, 3,134, 65, 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1, +128, 1, 28, 65,128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65, + 0, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, + 8, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, 0, 0,100,105, 97, +108,111,103,116,121,112,101, 0, 4, 5, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6, + 0, 0, 0,116,105,116,108,101, 0, 4, 10, 0, 0, 0, 83, 97,118,101, 32, 70, +105,108,101, 0, 4, 7, 0, 0, 0,102,105,108,116,101,114, 0, 4, 4, 0, 0, + 0, 42, 46, 42, 0, 4, 11, 0, 0, 0,102,105,108,116,101,114,105,110,102,111, + 0, 4, 10, 0, 0, 0, 65,108,108, 32,102,105,108,101,115, 0, 4, 9, 0, 0, + 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0,121,101,115, 0, 4, + 6, 0, 0, 0,112,111,112,117,112, 0, 4, 5, 0, 0, 0, 76, 69, 70, 84, 0, + 4, 7, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 99,111,110, +115,111,108,101, 0, 4, 13, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97, +109,101, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 12, 0, 0, 0,108, + 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 8, 0, 0, 0,100,101,115,116, +114,111,121, 0, 4, 3, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0, 0, 0,101,114, +114,111,114, 0, 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, + 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0,102,105,108,101,110, 97,109,101, + 0, 4, 3, 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0,111,112,101,110, 0, 4, + 3, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0,119,114,105,116,101, 0, 4, 7, + 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0, 99,108,111,115,101, + 0, 4, 17, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105, +108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, + 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 74, + 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, + 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, + 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 78, + 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, + 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 81, + 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 82, + 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, + 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87, + 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 89, + 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,115, +101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0,102,100, 0, 10, + 0, 0, 0, 64, 0, 0, 0, 7, 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0, + 0, 0, 64, 0, 0, 0, 8, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0, + 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0,104, 0, + 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,128, 0, + 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64, 1,128,133, 0, + 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64, 0, 1, 22,192, + 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128,194, 0, 65,193, + 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1,128, 0,156, 64, +128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128, 1, 0,134,192, + 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64,195, 1,137,192, +128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0,105,111, 0, 4, 5, + 0, 0, 0,111,112,101,110, 0, 4, 2, 0, 0, 0,114, 0, 0, 4, 6, 0, 0, + 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32,108, +111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, + 8, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 7, 0, 0, 0,109,108, 67, +111,100,101, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0, +114,101, 97,100, 0, 4, 3, 0, 0, 0, 42, 97, 0, 4, 6, 0, 0, 0, 99,108, +111,115,101, 0, 4, 13, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97,109, +101, 0, 4, 12, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, + 6, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 95, 0, + 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, + 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, + 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, + 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0, + 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, + 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, + 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0, 0, 9, 0, + 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 33, 0, 0, 0, 8, + 0, 0, 0,110,101,119,102,105,108,101, 0, 5, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37, + 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, + 64, 65,130,137,192, 65,131,137, 64, 66,132,137,192, 66,133, 92,128, 0, 1,139, + 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156, + 64, 0, 2,134,128,195, 0,198,192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87, + 64, 68, 1, 22, 64, 0,128, 23,128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22, +128, 2,128, 5,193, 4, 0, 65, 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28, + 65, 0, 1, 22, 0, 1,128, 5, 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64, + 1,128, 1, 28, 65, 0, 1, 30, 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0, +105,117,112, 0, 4, 8, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, + 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, 0, 0, 79, 80, + 69, 78, 0, 4, 6, 0, 0, 0,116,105,116,108,101, 0, 4, 10, 0, 0, 0, 76, +111, 97,100, 32, 70,105,108,101, 0, 4, 7, 0, 0, 0,102,105,108,116,101,114, + 0, 4, 4, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0,102,105,108,116,101, +114,105,110,102,111, 0, 4, 10, 0, 0, 0, 65,108,108, 32, 70,105,108,101,115, + 0, 4, 9, 0, 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3, 0, 0, 0, + 78, 79, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, 0, 67, + 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6, + 0, 0, 0,118, 97,108,117,101, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111, +121, 0, 4, 3, 0, 0, 0, 45, 49, 0, 4, 2, 0, 0, 0, 49, 0, 4, 6, 0, + 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 67, 97,110,110,111,116, 32, +108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 99,111,110,115, +111,108,101, 0, 4, 9, 0, 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, + 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, + 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,107, 0, + 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, + 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0,112, 0, + 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,115, 0, + 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, + 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, + 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 36, 0, 0, 0, 3, 0, 0, 0,102, +100, 0, 9, 0, 0, 0, 36, 0, 0, 0, 7, 0, 0, 0,115,116, 97,116,117,115, + 0, 16, 0, 0, 0, 36, 0, 0, 0, 9, 0, 0, 0,102,105,108,101,110, 97,109, +101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, + 0, 0,170, 0, 0, 0, 0, 5, 0, 7, 8, 0, 0, 0, 23, 0, 64, 1, 22, 0, + 1,128, 69, 65, 0, 0, 70,129,192, 2, 70,193,192, 2,128, 1,128, 0, 92, 65, + 0, 1, 30, 0,128, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 4, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 99,111,110,115,111,108,101, + 0, 4, 9, 0, 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 8, + 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, + 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, 0, 0, 5, + 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, +102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, + 0,110,117,109, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, + 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, + 0, 15, 0, 0, 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, + 0, 17, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, + 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, + 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, + 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, + 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, + 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, + 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, + 0, 46, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, + 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, + 0, 51, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, + 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, + 0, 53, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, + 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, + 0, 58, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 58, 0, 0, + 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 72, 0, 0, + 0, 94, 0, 0, 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,106, 0, 0, + 0,106, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,123, 0, 0, + 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, + 0,127, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, + 0,129, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,130, 0, 0, + 0,130, 0, 0, 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, + 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,132, 0, 0, + 0,132, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,134, 0, 0, + 0,134, 0, 0, 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, + 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,136, 0, 0, + 0,136, 0, 0, 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,141, 0, 0, + 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,143, 0, 0, + 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, + 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, + 0,147, 0, 0, 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,149, 0, 0, + 0,144, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, + 0,150, 0, 0, 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, + 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, + 0,152, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, + 0,153, 0, 0, 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,154, 0, 0, + 0,154, 0, 0, 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,155, 0, 0, + 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, + 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 0, + 0,161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,163, 0, 0, + 0,163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,164, 0, 0, + 0,159, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,166, 0, 0, + 0,170, 0, 0, 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, + 0,174, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,176, 0, 0, + 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, + 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, + 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, + 0,181, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,183, 0, 0, + 0,183, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, + 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, + 0,186, 0, 0, 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,182, 0, 0, + 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, + 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, + 0,190, 0, 0, 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,192, 0, 0, + 0,177, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, + 0,194, 0, 0, 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,198, 0, 0, + 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,199, 0, 0, + 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,201, 0, 0, + 0,201, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, + 0,203, 0, 0, 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, + 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srcconsole/loh/console5_be32.loh b/iup/srcconsole/loh/console5_be32.loh new file mode 100755 index 0000000..493cae4 --- /dev/null +++ b/iup/srcconsole/loh/console5_be32.loh @@ -0,0 +1,475 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/console5_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/console5_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64, 99,111,110, +115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 15, 0, 0, 1, 90, 0, 0, 0, 5, 0, 0, 64, 65, 1, 0, 64, 28, 0, 0, +128, 5, 0, 0, 0, 74,129,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0, + 0,100,130, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0, 64,100,130,128, + 64, 9, 0, 0,128, 5, 0, 64,192, 6,131, 65,192, 9, 0, 0,128, 5, 0, 64, +192, 6, 0, 0,128, 69, 0,194, 64, 70, 0, 0,192,138,133, 66,192,137,134, 67, + 64,137,135, 67,192,137, 1, 0,128, 92,132, 0, 64, 9, 0, 0,128, 5, 0, 64, +192, 6, 0, 0,128, 69, 0,196, 64, 70, 0, 0,128,138,137, 68,192,137,134, 69, + 0,137, 1, 0,128, 92,136, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0, +128, 69, 0,196, 64, 70, 0, 0,192,138,137, 69,128,137,134, 69, 0,137,133, 69, +192,137, 1, 0,128, 92,138,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 66, + 0, 6, 0, 0,128,100,140, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0, +128, 69, 0,198,128, 70, 0, 0,192,138,134, 70,192,137,137, 71, 0,137,142,199, +128,137, 1, 0,128, 92,140,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0, +128, 69, 0,198,128, 70, 0, 0,192,138,134, 70,192,137,137, 72, 0,137,142,200, + 64,137, 1, 0,128, 92,143,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0, +128, 69, 0,198,128, 70, 0, 0,128,138,134, 70,192,137,137, 72,192,137, 1, 0, +128, 92,145, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,198, +128, 70, 0, 0,128,138,134, 70,192,137,137, 73, 64,137, 1, 0,128, 92,146, 0, + 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,198,128, 70, 0, 0, +128,138,134, 70,192,137,137, 73,192,137, 1, 0,128, 92,147, 0, 64, 9, 0, 0, +128, 5, 0, 64,192, 6, 0, 73,128, 6, 0, 0,192,100,142,128, 64, 9, 0, 0, +128, 5, 0, 64,192, 6, 0, 73, 0, 6, 0, 1, 0,100,142,128, 64, 9, 0, 0, +128, 5, 0, 64,192, 6, 0, 1, 64,100,148, 0, 64, 9, 0, 0,128, 5, 0, 64, +192, 6, 0, 72,128, 6, 0, 1,128,100,142,128, 64, 9, 0, 0,128, 5, 0, 64, +192, 6, 0, 0,128, 69, 0,202,128, 70, 0,128,192,138, 0, 0,128,197, 1,202, +192,198, 0,128, 65, 10, 0, 0,129, 69, 2,203, 1, 70, 1, 0, 65,138, 0, 0, +129,197, 3,202,129,198, 2,128,130, 10, 0, 0,130, 69, 4,192,194, 70, 4,200, +130, 70, 0, 0,130,133, 5, 64,194,134, 5, 73,130,134, 0, 0,130,197, 5,192, +194,198, 5,201, 2,198, 0, 0,131, 5, 6, 64,195, 6, 6, 71,195, 6, 0, 0, +131, 69, 6,192,195, 70, 6,198, 67, 70,150,203,130, 9,151,204, 2, 9, 2,128, + 66, 34, 1, 0,129,220, 0, 0,130, 5, 4, 74,130, 6, 1,128, 66, 74, 0, 0, +130,133, 5, 64,194,134, 5, 69, 66,134, 0, 0,130,197, 5,192,194,198, 5,194, + 2,198, 0, 0,131, 5, 6, 64,195, 6, 6, 68, 3, 6,152,204,130, 73, 1,128, + 66, 98, 1, 0,130, 28,152,204,193,137, 1, 0, 65,162, 1, 0,129, 92,137, 77, + 1, 9, 0,128, 65, 34, 1, 0,128,220,152,205, 64,137,150,205,128,137,151,205, +192,137, 0,128, 64,162, 1, 0,128, 92,148,128, 64, 9, 0, 0,128, 5, 0, 64, +192, 6, 0, 0,128, 69, 0,206, 64, 70, 0,128, 0,138, 0, 0,128,197, 1,206, +128,198, 0,128, 65, 10, 0, 0,129, 69, 2,206, 65, 70, 0, 0, 1,138, 0, 0, +129,197, 3,206,193,198, 0, 0,130, 10,137, 79, 2, 9,142,207, 66, 9, 1, 0, + 1,220, 0, 0, 65,162, 1, 0,129, 92,137, 79,129, 9, 0,128, 65, 34, 1, 0, +128,220, 0, 0,129, 5, 2, 78,129, 6, 0,128, 65, 74, 0, 0,129,133, 3, 78, + 65,134, 0,128, 1,202, 0, 0,130, 5, 4, 78,194, 6, 0, 0,130, 74,137, 79, +194, 73, 0, 0,130,133, 5, 64,194,134, 5, 65, 66,134,142,130,130, 73, 1, 0, +130, 28, 0, 0,130, 69, 4,206,194, 70, 0, 0,130,138,137, 80, 2,137,142,208, + 66,137, 1, 0, 2, 92, 0, 0, 65,226, 1, 0,129,156,137, 80,129, 73, 0,128, + 65, 98, 1, 0, 1, 28, 0, 0, 64,162, 1, 0,128, 92,156, 0, 64, 9, 0, 0, +128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,209, 0, 70, 0,129, 64,138, 0, 0, +128,197, 1,192,192,198, 1,202, 64,198,137, 81, 64,137, 0, 0,129, 5, 2, 64, +193, 6, 2, 78, 1, 6,156,129, 0,137,163, 66,192,137, 0, 0,129, 5, 2, 64, +193, 6, 2, 70, 65, 6,163,129, 0,137,164, 79, 64,137, 0,128, 64,162, 1, 0, +128, 92,161,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 80,192, 6, 0, 1, +192,100,164,128, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 0,128, 69, 0,209, + 0, 70, 0,129, 0,138, 0, 0,128,197, 1,202,128,198, 3, 0,129, 10, 0, 0, +129, 69, 2,196, 65, 70, 0, 0, 65,138,137, 81, 65,137, 1, 0,129, 92, 0, 0, +129,133, 3, 82,193,134, 0, 0, 65,202,134, 77,193,201, 1, 0,129,156, 0, 0, +129,197, 3,210,193,198, 0, 0, 66, 10,134, 77,194, 9, 1, 0,129,220, 0, 0, +130, 5, 4, 74,194, 6, 0, 0, 2, 74, 0, 0,130,133, 5, 74,130,134, 0,128, + 2,202, 0, 0,131, 5, 6, 68, 67, 6, 0, 0, 67, 74,137, 83, 3, 73, 1, 0, +131, 28, 0, 0,131, 69, 6,196, 67, 70, 0, 0, 67,138,137, 83, 67,137, 1, 0, + 3, 92, 0, 0, 66,226, 1, 0, 2,156, 0, 0, 66, 98, 1, 0,130, 28, 0, 0, +130, 69, 4,210,194, 70, 0, 0, 66,138,134, 77,194,137, 1, 0,130, 92, 0, 0, +130,133, 5, 70,130,134, 0, 0,194,202,137, 83,130,201,142,207, 66,201,134, 83, +194,201, 1, 0,130,156,150,212, 1, 9,152,205, 65, 9, 3, 0, 65, 34, 1, 0, +128,220,168,212,128,137,169,212,128,137,170, 84,128,137,137, 85, 64,137, 0,128, + 64,162, 1, 0,128, 92,165, 0, 64, 9, 0, 0,128, 5, 0, 64,192, 6, 0, 80, +192, 6, 0, 85,128, 11, 1, 0, 64, 28, 0, 0,128, 5, 0, 85,192, 6, 0, 0, +128, 69, 0,192,192, 70, 0,194, 0, 70, 1, 0, 64, 28, 0, 0,128, 5, 0, 86, + 0, 6, 0,128, 64, 28, 0, 0,128, 5, 0, 64,192, 6, 0, 80,192, 6, 0, 86, + 64, 11, 1, 0, 64, 28, 0, 0,128, 5, 0, 64,192, 6, 0, 82,128, 6, 0, 86, + 64, 11, 1, 0, 64, 28, 0,128, 0, 30, 0, 0, 0, 90, 4, 0, 0, 0, 8,114, +101,113,117,105,114,101, 0, 4, 0, 0, 0, 7,105,117,112,108,117, 97, 0, 4, + 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101, + 0, 4, 0, 0, 0, 11,112,114,105,110,116,116, 97, 98,108,101, 0, 4, 0, 0, + 0, 19,112,114,105,110,116, 95,118,101,114,115,105,111,110, 95,105,110,102,111, + 0, 4, 0, 0, 0, 13,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0, + 4, 0, 0, 0, 7,109,108, 67,111,100,101, 0, 4, 0, 0, 0, 10,109,117,108, +116,105,108,105,110,101, 0, 4, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 4, + 0, 0, 0, 4, 89, 69, 83, 0, 4, 0, 0, 0, 5,115,105,122,101, 0, 4, 0, + 0, 0, 8, 50, 48, 48,120, 49, 50, 48, 0, 4, 0, 0, 0, 5,102,111,110,116, + 0, 4, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 48, 0, 4, 0, 0, 0, 12,108, 98,108, 80,111,115,105,116,105,111,110, + 0, 4, 0, 0, 0, 6,108, 97, 98,101,108, 0, 4, 0, 0, 0, 6,116,105,116, +108,101, 0, 4, 0, 0, 0, 4, 48, 58, 48, 0, 4, 0, 0, 0, 4, 53, 48,120, + 0, 4, 0, 0, 0, 12,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 0, + 0, 0, 1, 0, 4, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, + 4, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, 98, 0, 4, 0, 0, 0, 11, 98, +117,116, 69,120,101, 99,117,116,101, 0, 4, 0, 0, 0, 7, 98,117,116,116,111, +110, 0, 4, 0, 0, 0, 6, 53, 48,120, 49, 53, 0, 4, 0, 0, 0, 8, 69,120, +101, 99,117,116,101, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, + 0, 0, 39,105,117,112, 46,100,111,115,116,114,105,110,103, 40,105,117,112, 46, + 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101, + 41, 0, 4, 0, 0, 0, 17, 98,117,116, 67,108,101, 97,114, 67,111,109,109, 97, +110,100,115, 0, 4, 0, 0, 0, 6, 67,108,101, 97,114, 0, 4, 0, 0, 0, 96, +105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, + 97,108,117,101, 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, + 46,108, 98,108, 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, + 32, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115, +116,102,105,108,101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 0, 0, 0, + 12, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 0, 0, 0, 8, 76,111, + 97,100, 46, 46, 46, 0, 4, 0, 0, 0, 14, 98,117,116, 83, 97,118,101, 97,115, + 70,105,108,101, 0, 4, 0, 0, 0, 11, 83, 97,118,101, 32, 65,115, 46, 46, 46, + 0, 4, 0, 0, 0, 12, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 0, + 0, 0, 5, 83, 97,118,101, 0, 4, 0, 0, 0, 9, 76,111, 97,100, 70,105,108, +101, 0, 4, 0, 0, 0, 11,118, 98,120, 67,111,110,115,111,108,101, 0, 4, 0, + 0, 0, 5,118, 98,111,120, 0, 4, 0, 0, 0, 6,102,114, 97,109,101, 0, 4, + 0, 0, 0, 5,104, 98,111,120, 0, 4, 0, 0, 0, 7,109, 97,114,103,105,110, + 0, 4, 0, 0, 0, 4, 48,120, 48, 0, 4, 0, 0, 0, 4,103, 97,112, 0, 4, + 0, 0, 0, 3, 49, 48, 0, 4, 0, 0, 0, 10, 97,108,105,103,110,109,101,110, +116, 0, 4, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 4, 0, 0, 0, 5, 65, + 84, 79, 80, 0, 4, 0, 0, 0, 9, 67,111,109,109, 97,110,100,115, 0, 4, 0, + 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 4, 53,120, 53, 0, + 4, 0, 0, 0, 2, 53, 0, 4, 0, 0, 0, 8,109,110,117, 77, 97,105,110, 0, + 4, 0, 0, 0, 5,109,101,110,117, 0, 4, 0, 0, 0, 8,115,117, 98,109,101, +110,117, 0, 4, 0, 0, 0, 5,105,116,101,109, 0, 4, 0, 0, 0, 5, 69,120, +105,116, 0, 4, 0, 0, 0, 17,114,101,116,117,114,110, 32,105,117,112, 46, 67, + 76, 79, 83, 69, 0, 4, 0, 0, 0, 5, 70,105,108,101, 0, 4, 0, 0, 0, 22, + 80,114,105,110,116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, + 46, 0, 4, 0, 0, 0, 9, 65, 98,111,117,116, 46, 46, 46, 0, 4, 0, 0, 0, + 51,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103, 65, 98,111,117, +116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84, 69, 82, 44, 32, +105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 0, 0, 0, 5, 72,101,108, +112, 0, 4, 0, 0, 0, 8,100,108,103, 77, 97,105,110, 0, 4, 0, 0, 0, 7, +100,105, 97,108,111,103, 0, 4, 0, 0, 0, 15, 73,117,112, 76,117, 97, 32, 67, +111,110,115,111,108,101, 0, 4, 0, 0, 0, 9,100,114, 97,103,100,114,111,112, + 0, 4, 0, 0, 0, 13,100,101,102, 97,117,108,116,101,110,116,101,114, 0, 4, + 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 13,100,114, +111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 0, 0, 0, 9,100,108,103, 65, + 98,111,117,116, 0, 4, 0, 0, 0, 5,102,105,108,108, 0, 4, 0, 0, 0, 16, + 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 0, 4, 0, 0, 0, + 23,105,117,112, 64,116,101, 99,103,114, 97,102, 46,112,117, 99, 45,114,105,111, + 46, 98,114, 0, 4, 0, 0, 0, 3, 79, 75, 0, 4, 0, 0, 0, 6, 53, 48, 88, + 50, 48, 0, 4, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 4, 0, 0, 0, 7,109, + 97,120, 98,111,120, 0, 4, 0, 0, 0, 3, 78, 79, 0, 4, 0, 0, 0, 7,109, +105,110, 98,111,120, 0, 4, 0, 0, 0, 7,114,101,115,105,122,101, 0, 4, 0, + 0, 0, 6, 65, 98,111,117,116, 0, 4, 0, 0, 0, 5,115,104,111,119, 0, 4, + 0, 0, 0, 9, 83,101,116, 70,111, 99,117,115, 0, 4, 0, 0, 0, 9, 77, 97, +105,110, 76,111,111,112, 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 1, 0, 8, + 0, 0, 0, 30, 0, 0, 0, 69, 0, 0, 0,128, 1,128, 0,195, 1,128,192, 92, + 0, 0, 64,197, 0, 0,129, 1, 1, 0, 64,220, 0, 0, 0, 90,128, 4, 0, 22, + 0, 0, 64,197, 0, 0,193, 5, 0,128, 1, 64, 1, 0,129, 28, 0, 1, 1, 65, + 0, 0,193,133, 1, 0, 1,192, 1, 0,129,156, 2, 1,129, 21, 1, 0, 64,220, + 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1,128,192,220, 2, 0, 0,128, + 1,128, 0, 64,127,251, 0, 22, 0, 0, 64,197, 0, 1, 65, 1, 1, 0, 64,220, + 0,128, 0, 30, 0, 0, 0, 6, 4, 0, 0, 0, 5,110,101,120,116, 0, 4, 0, + 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 21, 45, 45,112,114,105,110, +116,116, 97, 98,108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 0, 0, 0, 9, +116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 2, 61, 0, 4, 0, 0, 0, + 19, 45, 45,112,114,105,110,116,116, 97, 98,108,101, 32, 69,110,100, 45, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, + 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 10, + 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, + 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, + 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, + 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 14, + 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 2,116, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 2,110, 0, 0, 0, 0, 4, 0, 0, 0, 29, + 0, 0, 0, 2,118, 0, 0, 0, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 5, 0, 0, 0,112, 0, 0, + 0, 5, 0, 0, 0, 26,128, 2, 0, 22, 0, 0, 64, 5, 0, 0,128, 65, 0, 0, + 0,133, 1, 64,192,134, 0, 1, 0,193, 0, 0, 1, 5, 2, 65, 65, 6, 0,129, + 0, 85, 1, 0, 64, 28, 0, 1,128, 5, 0, 0, 0, 26,128, 2, 0, 22, 0, 0, + 64, 5, 0, 1,192, 65, 0, 1,128,133, 1, 64,192,134, 0, 1, 0,193, 0, 1, +129, 5, 2, 65, 65, 6, 0,129, 0, 85, 1, 0, 64, 28, 0, 0, 64, 5, 0, 2, + 0, 65, 0, 2, 64,133, 1, 64,192,134, 0, 1, 0,193, 0, 2, 65, 5, 2, 65, + 65, 6, 0,129, 0, 85, 1, 0, 64, 28, 0, 0, 64, 5, 0, 2,128, 65, 1, 0, + 64, 28, 0, 0, 64, 5, 0, 2,192, 65, 1, 0, 64, 28, 0, 0, 64, 5, 0, 3, + 0, 65, 0, 2, 64,133, 1, 67, 64,134, 0, 3,128,193, 1, 0,128,156, 0,128, +128, 85, 1, 0, 64, 28, 0, 0, 64, 5, 0, 3,192, 65, 0, 2, 64,133, 1, 67, + 64,134, 0, 4, 0,193, 1, 0,128,156, 0,128,128, 85, 1, 0, 64, 28, 0, 2, + 64, 5, 0, 67, 64, 6, 0, 4, 64, 65, 1, 0,128, 28, 0, 0, 0, 26,128, 0, +192, 22, 0, 0, 64, 69, 0, 4,128,129, 0, 0, 0,192, 1,128, 64, 92, 0, 0, + 64, 69, 0, 4,192,129, 0, 2, 64,197, 1,195, 64,198, 0, 5, 1, 1, 1, 0, +128,220, 1, 0,192,149, 1, 0, 64, 92, 0, 0, 64, 69, 0, 5, 64,129, 0, 2, + 64,197, 1,195, 64,198, 0, 5,129, 1, 1, 0,128,220, 1, 0,192,149, 1, 0, + 64, 92, 0, 2, 64, 69, 0,197,192, 70, 0, 0, 0, 90,128, 1, 64, 22, 0, 0, + 64, 69, 0, 6, 0,129, 0, 2, 64,197, 1,197,192,198, 1, 0,192,149, 1, 0, + 64, 92, 0, 2, 64, 69, 0,198, 64, 70, 0, 0, 0, 90,128, 1, 64, 22, 0, 0, + 64, 69, 0, 6,128,129, 0, 2, 64,197, 1,198, 64,198, 1, 0,192,149, 1, 0, + 64, 92, 0, 2, 64, 69, 0,198,192, 70, 0, 0, 0, 90,128, 1, 64, 22, 0, 0, + 64, 69, 0, 7, 0,129, 0, 2, 64,197, 1,198,192,198, 1, 0,192,149, 1, 0, + 64, 92, 0,128, 0, 30, 0, 0, 0, 29, 4, 0, 0, 0, 3,105,109, 0, 4, 0, + 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 4, 73, 77, 32, 0, 4, 0, + 0, 0, 9, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0, 0, 0, 3, 32, 32, 0, + 4, 0, 0, 0, 11, 95, 67, 79, 80, 89, 82, 73, 71, 72, 84, 0, 4, 0, 0, 0, + 3, 99,100, 0, 4, 0, 0, 0, 4, 67, 68, 32, 0, 4, 0, 0, 0, 5, 73, 85, + 80, 32, 0, 4, 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 1, 0, 4, 0, + 0, 0, 9, 73, 85, 80, 32, 73,110,102,111, 0, 4, 0, 0, 0, 11, 32, 32, 83, +121,115,116,101,109, 58, 32, 0, 4, 0, 0, 0, 10, 71,101,116, 71,108,111, 98, + 97,108, 0, 4, 0, 0, 0, 7, 83, 89, 83, 84, 69, 77, 0, 4, 0, 0, 0, 19, + 32, 32, 83,121,115,116,101,109, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4, + 0, 0, 0, 14, 83, 89, 83, 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0, + 0, 0, 13, 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0, 0, 0, + 18, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4, + 0, 0, 0, 16, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122,101, 58, 32, 0, + 4, 0, 0, 0, 11, 83, 67, 82, 69, 69, 78, 83, 73, 90, 69, 0, 4, 0, 0, 0, + 17, 32, 32, 83, 99,114,101,101,110, 32, 68,101,112,116,104, 58, 32, 0, 4, 0, + 0, 0, 12, 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 0, 0, 0, 10, + 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 0, 0, 0, 18, 32, 32, 79,112,101, +110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 0, 0, 0, 12, 71, 76, + 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 0, 0, 0, 20, 32, 32, 79,112,101, +110, 71, 76, 32, 82,101,110,100,101,114,101,114, 58, 32, 0, 4, 0, 0, 0, 11, + 71, 76, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 0, 0, 0, 19, 32, 32, 79,112, +101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0, 0, + 0, 0,112, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, + 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, + 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, + 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, + 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, + 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, + 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, + 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, + 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, + 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, + 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4,109, +111,116, 0, 0, 0, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 0, 48, 0, 3, 0, 7, 0, 0, 0, 9, 0, 0, 0,197, 1, +192, 64,198, 1,192,128,198, 0,128, 1, 0, 0, 1, 1, 65, 1, 0, 1,128, 2, + 1,129, 21,129,129, 0,201, 0,128, 0, 30, 0, 0, 0, 5, 4, 0, 0, 0, 4, +105,117,112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101, 0, 4, 0, 0, + 0, 12,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 0, 0, 0, 6,116, +105,116,108,101, 0, 4, 0, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, + 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 3, + 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 4,108,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 99,111,108, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 58, 0, 0, 0, 70, 0, 1, 0, 4, 0, 0, 0, 39, 0, 0, 0, 69, 0,192, 64, + 70, 0,192,128, 70, 0,192,192, 23,128, 1, 64, 22, 0, 0, 0, 69, 0,192, 64, + 70, 0,193, 0, 70, 0,193, 64, 75, 1, 0, 64, 92,128, 6,128, 22, 0, 1,192, + 69, 0,194, 0, 70, 0, 0, 0,133, 1, 64, 64,134, 1, 64,128,134, 0, 2, 64, +193, 1,128,128, 92, 0, 1,128, 71, 0, 1,128, 69, 0, 0, 0, 90,128, 2,128, + 22, 0, 1,128, 69, 0,194,128, 75, 0, 0, 0,197, 1,192, 64,198, 1,194,192, +198, 1,195, 0,198, 1,128, 64, 92, 0, 1,128, 69, 0,195, 64, 75, 1, 0, 64, + 92,128, 1, 0, 22, 0, 3,128, 69, 0, 3,192,129, 0, 4, 0,197, 1, 0,192, +149, 1, 0, 64, 92, 0,128, 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 4,105,117, +112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101, 0, 4, 0, 0, 0, 13, +108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 0, 0, 0, 14, 98, +117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 0, 0, 0, 7, 97, 99, +116,105,111,110, 0, 4, 0, 0, 0, 8,110,101,119,102,105,108,101, 0, 4, 0, + 0, 0, 3,105,111, 0, 4, 0, 0, 0, 5,111,112,101,110, 0, 4, 0, 0, 0, + 3,119, 43, 0, 4, 0, 0, 0, 6,119,114,105,116,101, 0, 4, 0, 0, 0, 7, +109,108, 67,111,100,101, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0, 4, 0, + 0, 0, 6, 99,108,111,115,101, 0, 4, 0, 0, 0, 6,101,114,114,111,114, 0, + 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108, +101, 32, 0, 4, 0, 0, 0, 9,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, + 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, + 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, + 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, + 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, + 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, + 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, + 70, 0, 0, 0, 1, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 1, + 0, 7, 0, 0, 0, 65, 0, 0, 0, 69, 0,192, 64, 70, 0, 1, 64,138,129, 64, +192,137,130, 65, 64,137,131, 65,192,137,132, 66, 64,137, 0, 2,192,197,133, 0, +192,137, 1, 0,128, 92, 0,195, 0,139, 0, 0, 1, 5, 2, 67, 65, 6, 0, 0, + 1, 69, 2,195, 65, 70, 2, 0, 64,156, 0,195,128,134, 0, 0, 0,197, 1,195, +192,198, 0,196, 65, 6,136, 1, 0,201, 0, 0, 0,197, 1,195,192,198, 1,196, +128,198, 0, 0, 1, 5, 2, 67,193, 6, 2, 68, 1, 6,130, 1, 0,201, 0,196, +192,203, 1, 0, 64,220, 1, 69, 0, 87,128, 7,192, 22, 0, 0, 0,197, 1,195, +192,198, 1,196, 0,198, 1,197, 64, 23,128, 1, 0, 22, 0, 5,128,197, 0, 5, +193, 1, 0, 6, 1, 69, 2, 1, 65, 21, 1, 0, 64,220, 0, 6, 64,197, 1,198, +128,198, 0, 0, 1, 5, 2, 67,193, 6, 2, 68, 1, 6, 0, 6,193, 65, 1,128, +128,220, 0, 0, 0,218,128, 2, 64, 22, 1,199, 1, 11, 0, 0, 1,133, 3, 67, +193,134, 3, 71, 65,134, 3, 68, 65,134, 1,128, 65, 28, 1,199,129, 11, 1,128, + 1,128, 1,128, 65, 28,128, 0,128, 22, 0, 5,129, 5, 0, 7,193, 65, 1, 0, + 65, 28, 0,128, 0, 30, 0, 0, 0, 32, 4, 0, 0, 0, 4,105,117,112, 0, 4, + 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 4, 0, 0, 0, 11,100,105, 97, +108,111,103,116,121,112,101, 0, 4, 0, 0, 0, 5, 83, 65, 86, 69, 0, 4, 0, + 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 0, 10, 83, 97,118,101, 32, 70, +105,108,101, 0, 4, 0, 0, 0, 7,102,105,108,116,101,114, 0, 4, 0, 0, 0, + 4, 42, 46, 42, 0, 4, 0, 0, 0, 11,102,105,108,116,101,114,105,110,102,111, + 0, 4, 0, 0, 0, 10, 65,108,108, 32,102,105,108,101,115, 0, 4, 0, 0, 0, + 9, 97,108,108,111,119,110,101,119, 0, 4, 0, 0, 0, 4,121,101,115, 0, 4, + 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0, 0, 0, 5, 76, 69, 70, 84, 0, + 4, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 4, 0, 0, 0, 8, 99,111,110, +115,111,108,101, 0, 4, 0, 0, 0, 13,108, 97,115,116,102,105,108,101,110, 97, +109,101, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0, 4, 0, 0, 0, 12,108, + 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 0, 0, 0, 8,100,101,115,116, +114,111,121, 0, 4, 0, 0, 0, 3, 45, 49, 0, 0, 4, 0, 0, 0, 6,101,114, +114,111,114, 0, 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, 83, 97,118,101, + 32,102,105,108,101, 32, 0, 4, 0, 0, 0, 9,102,105,108,101,110, 97,109,101, + 0, 4, 0, 0, 0, 3,105,111, 0, 4, 0, 0, 0, 5,111,112,101,110, 0, 4, + 0, 0, 0, 3,119, 43, 0, 4, 0, 0, 0, 6,119,114,105,116,101, 0, 4, 0, + 0, 0, 7,109,108, 67,111,100,101, 0, 4, 0, 0, 0, 6, 99,108,111,115,101, + 0, 4, 0, 0, 0, 17, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105, +108,101, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0, + 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, + 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0, + 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, + 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0, + 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, + 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, + 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, + 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, + 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, + 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, + 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, + 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0, + 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5,115, +101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3,102,100, 0, 0, + 0, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 0, 0, + 0, 17, 0, 0, 0, 64, 0, 0, 0, 8,110,101,119,102,105,108,101, 0, 0, 0, + 0, 49, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, + 0,104, 0, 1, 0, 6, 0, 0, 0, 34, 0, 0, 0, 69, 0,192, 64, 70, 0, 0, + 0,128, 0, 0,128,193, 1,128,128, 92, 0,192,192, 23,128, 1, 64, 22, 0, 1, + 0,133, 0, 1, 64,193, 0, 0, 1, 0, 1,129, 0,213, 1, 0, 64,156,128, 4, +192, 22, 0, 1,128,133, 1, 65,192,134, 1, 66, 0,134, 0,194,128,203, 0, 2, +193, 65, 1,128,128,220,132,128,192,137, 0,195, 0,139, 0,128, 1, 0, 1,128, + 64,156, 0, 1,128,133, 1, 65,192,134,134,128, 0,137, 0, 1,128,133, 1, 65, +192,134, 1, 67,128,134, 0, 1,128,197, 1,193,192,198, 1,195, 64,198,135,128, +192,137, 0,128, 0, 30, 0, 0, 0, 16, 4, 0, 0, 0, 3,105,111, 0, 4, 0, + 0, 0, 5,111,112,101,110, 0, 4, 0, 0, 0, 2,114, 0, 0, 4, 0, 0, 0, + 6,101,114,114,111,114, 0, 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32,108, +111, 97,100, 32,102,105,108,101, 32, 0, 4, 0, 0, 0, 4,105,117,112, 0, 4, + 0, 0, 0, 8, 99,111,110,115,111,108,101, 0, 4, 0, 0, 0, 7,109,108, 67, +111,100,101, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0, 4, 0, 0, 0, 5, +114,101, 97,100, 0, 4, 0, 0, 0, 3, 42, 97, 0, 4, 0, 0, 0, 6, 99,108, +111,115,101, 0, 4, 0, 0, 0, 13,108, 97,115,116,102,105,108,101,110, 97,109, +101, 0, 4, 0, 0, 0, 12,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, + 0, 0, 0, 6,116,105,116,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, + 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, + 0, 96, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, + 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, + 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, + 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, + 0,101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, + 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0, + 0, 9,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 8,110,101,119,102,105,108,101, 0, 0, 0, 0, 5, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0,121, 0, 1, 0, 7, 0, + 0, 0, 37, 0, 0, 0, 69, 0,192, 64, 70, 0, 1, 64,138,129, 64,192,137,130, + 65, 64,137,131, 65,192,137,132, 66, 64,137,133, 66,192,137, 1, 0,128, 92, 0, +195, 0,139, 0, 0, 1, 5, 2, 67, 65, 6, 0, 0, 1, 69, 2,195, 65, 70, 2, + 0, 64,156, 0,195,128,134, 0,195,192,198, 0,196, 1, 11, 1, 0, 65, 28, 1, + 68, 64, 87,128, 0, 64, 22, 1, 68,128, 23,128, 1,192, 22, 1, 68,128, 23,128, + 2,128, 22, 0, 4,193, 5, 0, 5, 1, 65, 1,128, 1,128, 2,129,129, 85, 1, + 0, 65, 28,128, 1, 0, 22, 0, 0, 1, 5, 2, 69, 65, 6, 2, 69,129, 6, 1, +128, 1, 64, 1, 0, 65, 28, 0,128, 0, 30, 0, 0, 0, 23, 4, 0, 0, 0, 4, +105,117,112, 0, 4, 0, 0, 0, 8,102,105,108,101,100,108,103, 0, 4, 0, 0, + 0, 11,100,105, 97,108,111,103,116,121,112,101, 0, 4, 0, 0, 0, 5, 79, 80, + 69, 78, 0, 4, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 0, 10, 76, +111, 97,100, 32, 70,105,108,101, 0, 4, 0, 0, 0, 7,102,105,108,116,101,114, + 0, 4, 0, 0, 0, 4, 42, 46, 42, 0, 4, 0, 0, 0, 11,102,105,108,116,101, +114,105,110,102,111, 0, 4, 0, 0, 0, 10, 65,108,108, 32, 70,105,108,101,115, + 0, 4, 0, 0, 0, 9, 97,108,108,111,119,110,101,119, 0, 4, 0, 0, 0, 3, + 78, 79, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0, 0, 0, 7, 67, + 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 7,115,116, 97,116,117,115, 0, 4, 0, + 0, 0, 6,118, 97,108,117,101, 0, 4, 0, 0, 0, 8,100,101,115,116,114,111, +121, 0, 4, 0, 0, 0, 3, 45, 49, 0, 4, 0, 0, 0, 2, 49, 0, 4, 0, 0, + 0, 6,101,114,114,111,114, 0, 4, 0, 0, 0, 18, 67, 97,110,110,111,116, 32, +108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 0, 0, 0, 8, 99,111,110,115, +111,108,101, 0, 4, 0, 0, 0, 9, 76,111, 97,100, 70,105,108,101, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0, + 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0, 0, + 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, + 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0, 0, + 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, + 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0, + 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0, 0, + 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0, 0, + 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 3,102, +100, 0, 0, 0, 0, 9, 0, 0, 0, 36, 0, 0, 0, 7,115,116, 97,116,117,115, + 0, 0, 0, 0, 16, 0, 0, 0, 36, 0, 0, 0, 9,102,105,108,101,110, 97,109, +101, 0, 0, 0, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,166, 0, 0, 0,170, 0, 5, 0, 7, 0, 0, 0, 8, 1, 64, 0, 23,128, 1, + 0, 22, 0, 0, 65, 69, 2,192,129, 70, 2,192,193, 70, 0,128, 1,128, 1, 0, + 65, 92, 0,128, 0, 30, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 8, 99,111,110,115,111,108,101, + 0, 4, 0, 0, 0, 9, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, + 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, + 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, +102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 4,110,117,109, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2,120, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 1, 90, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, + 7, 0, 0, 0, 15, 0, 0, 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 37, 0, 0, 0, 17, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, + 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, + 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, + 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, + 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, + 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, + 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, + 46, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, + 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, + 50, 0, 0, 0, 51, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, + 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, + 52, 0, 0, 0, 53, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, + 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, + 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, + 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, + 55, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, + 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, + 56, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, + 58, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, + 72, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0, +106, 0, 0, 0,106, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0, +123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0, +125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0, +125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0, +125, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0, +127, 0, 0, 0,127, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, +128, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0, +130, 0, 0, 0,130, 0, 0, 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0, +131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0, +132, 0, 0, 0,132, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0, +134, 0, 0, 0,134, 0, 0, 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0, +125, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0, +136, 0, 0, 0,136, 0, 0, 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0, +141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0, +143, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0, +145, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0, +147, 0, 0, 0,147, 0, 0, 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0, +149, 0, 0, 0,144, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0, +150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0, +152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0, +152, 0, 0, 0,152, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0, +153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0, +154, 0, 0, 0,154, 0, 0, 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0, +155, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0, +159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0, +161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0, +163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0, +164, 0, 0, 0,159, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0, +166, 0, 0, 0,170, 0, 0, 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0, +174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0, +176, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0, +178, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0, +179, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0, +180, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0, +183, 0, 0, 0,183, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0, +185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0, +186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0, +182, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0, +189, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0, +190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0, +192, 0, 0, 0,177, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0, +193, 0, 0, 0,194, 0, 0, 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0, +198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0, +199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0, +201, 0, 0, 0,201, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0, +203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, +204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srcconsole/loh/console5_be64.loh b/iup/srcconsole/loh/console5_be64.loh new file mode 100755 index 0000000..4e08445 --- /dev/null +++ b/iup/srcconsole/loh/console5_be64.loh @@ -0,0 +1,524 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/console5_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/console5_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,110,115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64, + 0, 1, 5,128, 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192, + 64, 0,100, 0, 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64, + 0, 0, 9, 64,128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192, + 66,133,137, 64, 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192, + 68,137,137, 0, 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0, + 69,134,137,192, 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192, + 64, 0, 6, 0, 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, + 71,137,137,128,199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, + 72,137,137, 64,200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192, + 72,137, 92,128, 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128, + 0, 1, 9, 64, 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128, +198, 0,138,128, 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64, + 0,147, 5,128, 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64, +128,142, 5,128, 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64, +128,142, 5,128, 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128, + 0, 0, 6,192, 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128, + 0, 0,198,192,202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65, + 0, 1,197,129, 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194, +192, 4, 70,130,200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130, + 0, 0,198,194,192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195, + 71, 6, 69,131, 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2, +204,151, 34, 66,128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66, +128, 1,133,130, 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194, +192, 5,198, 2,194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130, +204,152, 98, 66,128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129, + 0, 1, 9, 1, 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128, +205,150,137,192,205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128, + 0, 0,198,128,206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1, + 0, 0,197,129, 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66, +207,142,220, 1, 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65, +128, 0,220,128, 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129, + 0, 0,134, 65, 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130, + 0, 0, 73,194, 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130, +130,142, 28,130, 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2, + 80,137,137, 66,208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129, + 80,137, 98, 65,128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64, + 0,156, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64, +129, 0,197,128, 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129, + 0, 0, 6,193, 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129, + 0, 0, 6,193, 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64, +128, 0, 92,128, 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192, + 80, 0,100,192, 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70, 0,209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129, + 0, 3, 69,129, 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129, + 0, 1,133,129, 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129, + 0, 1,197,129, 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129, + 0, 1, 5,130, 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130, + 74, 5,202, 2,128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3, + 83,137, 28,131, 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67, + 83,137, 92, 3, 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130, + 0, 1, 69,130, 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130, + 0, 1,133,130, 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66, +207,142,201,194, 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65, + 0, 3,220,128, 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64, + 85,137,162, 64,128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192, + 64, 0, 6,192, 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, + 85, 0, 69,128, 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128, + 0, 0, 6, 0, 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192, + 80, 0, 11, 64, 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128, + 82, 0, 11, 64, 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8, + 0, 0, 0, 0, 0, 0, 0,114,101,113,117,105,114,101, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101, + 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, 95,118,101,114,115, +105,111,110, 95,105,110,102,111, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97, +115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108, +116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,101,120,112, 97, +110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 50, + 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,111,110,116, + 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, + 82, 77, 65, 76, 95, 49, 48, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, + 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,108, 97, + 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 53, 48,120, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108, +101, 78, 97,109,101, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0, 98,117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, + 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 69,120,101, 99,117,116, +101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40, +105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, + 97,108,117,101, 41, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 98,117,116, 67,108, +101, 97,114, 67,111,109,109, 97,110,100,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0, 0, 0, 0, 0,105,117,112, 46, + 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101, + 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 98,108, + 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, + 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,116,102,105,108, +101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 76,111, 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98, +117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97, +100, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,118, 98,120, 67,111, +110,115,111,108,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,102,114, 97,109,101, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97, +114,103,105,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 48,120, 48, 0, 4, 4, + 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, + 49, 48, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,108,105,103,110,109,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 65, 84, 79, 80, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 67,111,109,109, 97,110,100,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, + 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 53,120, 53, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +109,110,117, 77, 97,105,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,109,101,110, +117, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 69,120,105,116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0,114,101,116,117, +114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0, 0, 0, 0, 0, 80,114,105,110, +116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, 46, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103, + 65, 98,111,117,116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84, + 69, 82, 44, 32,105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0, 72,101,108,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100, +108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, +111,103, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67, +111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,114, 97,103, +100,114,111,112, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115, +101, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105, +108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,108,103, 65, + 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,105,108,108, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0, 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45, + 82,105,111, 0, 4, 23, 0, 0, 0, 0, 0, 0, 0,105,117,112, 64,116,101, 99, +103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 4, 3, 0, 0, + 0, 0, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, 48, 88, + 50, 48, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,109, 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 0, + 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,105,110, 98,111, +120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0,115,104,111,119, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 70, +111, 99,117,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 97,105,110, 76,111, +111,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, + 0, 1, 0, 8, 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1, + 92,192,128, 1,197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 90, 0, 0, 0, + 22, 0, 4,128,197, 64, 0, 0, 5,193, 0, 0, 64, 1,128, 0, 28,129, 0, 1, + 65, 1, 1, 0,133,193, 0, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2, +220, 64, 0, 1,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1, +128, 0, 0, 2, 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1, 65, 1, 0, +220, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,101,120,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, + 0, 4, 21, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98, +108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 4, 19, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,108, +101, 32, 69,110,100, 45, 45, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, + 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, + 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 29, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112, 0, + 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65,128, + 0, 0,133, 0, 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6, 65, + 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22, 0, + 2,128, 5, 64, 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193, 0, + 1, 0, 5,129, 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, + 0, 0, 65, 0, 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5, 65, + 2, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,128, + 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5, 64, + 0, 0, 65, 0, 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156,128, + 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133, 64, + 2, 0,134, 64, 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28, 64, + 0, 1, 5, 64, 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26, 0, + 0, 0, 22,192, 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92, 64, +128, 1, 69, 64, 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1, 1, + 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129, 64, + 5, 0,197, 64, 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149,192, + 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22, 64, + 1,128, 69, 64, 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149,192, + 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22, 64, + 1,128, 69, 64, 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149,192, + 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22, 64, + 1,128, 69, 64, 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149,192, + 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0, 0, + 0, 0, 0,105,109, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, + 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 73, 77, 32, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 67, 79, 80, 89, 82, 73, + 71, 72, 84, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 99,100, 0, 4, 4, 0, 0, + 0, 0, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73, 85, + 80, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 32, 73, +110,102,111, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101, +109, 58, 32, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 71,108,111, 98, + 97,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0, 4, + 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,109, 32, 86,101,114, +115,105,111,110, 58, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, + 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 77, + 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122, +101, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 83, 67, 82, 69, 69, 78, 83, + 73, 90, 69, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101, +110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 83, + 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, + 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 32, + 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 20, + 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100, +101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 71, 76, 95, 86, + 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112, +101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0,112, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22, + 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, + 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, + 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, + 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0,109,111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 9, + 0, 0, 0,197, 0, 0, 0,198, 64,192, 1,198,128,192, 1, 0, 1,128, 0, 65, + 1, 1, 0,128, 1, 0, 1, 21,129, 1, 2,201, 0,129,129, 30, 0,128, 0, 5, + 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, + 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,116,105,116,108,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, + 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, + 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,108,105,110, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 99,111,108, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 58, 0, 0, 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0, 0, + 0, 70, 64,192, 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0, 0, + 0, 70, 64,192, 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128, 6, +128, 69,192, 1, 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128, 64, + 1,193, 64, 2, 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 90, 0, 0, + 0, 22,128, 2,128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64,192, + 1,198,192,194, 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64,195, + 0, 92, 64, 0, 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0, 4, + 0,149,192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99, +111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116, +102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98, +117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 97, 99,116,105,111,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,101, +119,102,105,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,111, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, + 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,114,105,116,101, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108,111,115,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, + 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101, +110, 97,109,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, + 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, + 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, + 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, + 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, + 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, + 0, 65, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, + 0, 67, 0, 0, 0, 70, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1, 0, 7, 65, 0, + 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, + 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192, 0,133, 92,128, + 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65, +195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192,195, 1, 6, 65, +196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128,196, 1, 5, 1, + 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192,196, 0,220, 64, + 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192,195, 1,198, 0, +196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193, 5, 0, 69, 1, + 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128,198, 1, 5, 1, + 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128,128, 1,218, 0, + 0, 0, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193, 67, 3,134, 65, + 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1,128, 1, 28, 65, +128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65, 0, 1, 30, 0, +128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, +105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 97,118,101, 32, 70, +105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114, 0, + 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 65,108,108, 32,102,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,121, +101,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 76, 69, 70, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110, +115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116,102,105, +108,101,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117, +101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97, +109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110, +110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +119,114,105,116,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100, +101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 17, 0, + 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105, +108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, + 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 74, + 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, + 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, + 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 78, + 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, + 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 81, + 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 82, + 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, + 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87, + 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 89, + 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0,102,100, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0, 0, 0, 64, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0,104, 0, + 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,128, 0, + 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64, 1,128,133, 0, + 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64, 0, 1, 22,192, + 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128,194, 0, 65,193, + 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1,128, 0,156, 64, +128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128, 1, 0,134,192, + 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64,195, 1,137,192, +128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105, +111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,114, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114, +111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108, +111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +114,101, 97,100, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 42, 97, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, + 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 95, 0, + 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, + 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, + 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, + 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0, + 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, + 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, + 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 5, + 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, + 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37, 0, 0, 0, 69, 0, 0, 0, 70, + 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, 65,130,137,192, 65,131,137, + 64, 66,132,137,192, 66,133, 92,128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, + 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156, 64, 0, 2,134,128,195, 0,198, +192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87, 64, 68, 1, 22, 64, 0,128, 23, +128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22,128, 2,128, 5,193, 4, 0, 65, + 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28, 65, 0, 1, 22, 0, 1,128, 5, + 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64, 1,128, 1, 28, 65, 0, 1, 30, + 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 32, + 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114, + 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0, + 0, 0, 0, 65,108,108, 32, 70,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, + 78, 79, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, + 97,108,117,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111, +121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0, 49, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108,111, 97,100, + 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115, +111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 70,105,108, +101, 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, + 0, 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0, + 0, 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, + 0, 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0, + 0, 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, + 0, 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, + 0, 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0, + 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 36, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,102,100, 0, 9, 0, 0, 0, 36, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 16, 0, 0, + 0, 36, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109, +101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,166, 0, 0, 0,170, 0, 0, 0, 0, 5, 0, 7, 8, 0, 0, 0, 23, 0, + 64, 1, 22, 0, 1,128, 69, 65, 0, 0, 70,129,192, 2, 70,193,192, 2,128, 1, +128, 0, 92, 65, 0, 1, 30, 0,128, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, + 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 8, 0, 0, 0,167, + 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, + 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0,110,117,109, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, + 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, + 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 17, 0, 0, + 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, + 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, + 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, + 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, + 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, + 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, + 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, + 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, + 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, + 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, + 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, + 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, + 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 58, 0, 0, + 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 58, 0, 0, 0, 72, 0, 0, + 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 72, 0, 0, 0, 94, 0, 0, + 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,106, 0, 0, 0,106, 0, 0, + 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,123, 0, 0, 0,123, 0, 0, + 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,127, 0, 0, + 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,129, 0, 0, + 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, + 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, + 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,132, 0, 0, 0,132, 0, 0, + 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,134, 0, 0, 0,134, 0, 0, + 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,135, 0, 0, + 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,136, 0, 0, 0,136, 0, 0, + 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,141, 0, 0, 0,141, 0, 0, + 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,143, 0, 0, 0,143, 0, 0, + 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,147, 0, 0, + 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, + 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,149, 0, 0, 0,144, 0, 0, + 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, + 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, + 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, + 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, + 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,154, 0, 0, 0,154, 0, 0, + 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,155, 0, 0, 0,159, 0, 0, + 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, + 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 0, 0,161, 0, 0, + 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, + 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,164, 0, 0, 0,159, 0, 0, + 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,170, 0, 0, + 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, + 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,178, 0, 0, + 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,179, 0, 0, + 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0, + 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,181, 0, 0, + 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,183, 0, 0, 0,183, 0, 0, + 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, + 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, + 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,182, 0, 0, 0,189, 0, 0, + 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,190, 0, 0, + 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, + 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,192, 0, 0, 0,177, 0, 0, + 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, + 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, + 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, + 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,201, 0, 0, 0,201, 0, 0, + 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, + 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, + 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srcconsole/loh/console5_le64.loh b/iup/srcconsole/loh/console5_le64.loh new file mode 100755 index 0000000..083405d --- /dev/null +++ b/iup/srcconsole/loh/console5_le64.loh @@ -0,0 +1,524 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/console5_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/console5_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,110,115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64, + 0, 1, 5,128, 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192, + 64, 0,100, 0, 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64, + 0, 0, 9, 64,128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192, + 66,133,137, 64, 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192, + 68,137,137, 0, 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0, + 69,134,137,192, 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192, + 64, 0, 6, 0, 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, + 71,137,137,128,199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, + 72,137,137, 64,200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192, + 72,137, 92,128, 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128, + 0, 1, 9, 64, 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128, +198, 0,138,128, 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64, + 0,147, 5,128, 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64, +128,142, 5,128, 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64, +128,142, 5,128, 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128, + 0, 0, 6,192, 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128, + 0, 0,198,192,202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65, + 0, 1,197,129, 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194, +192, 4, 70,130,200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130, + 0, 0,198,194,192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195, + 71, 6, 69,131, 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2, +204,151, 34, 66,128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66, +128, 1,133,130, 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194, +192, 5,198, 2,194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130, +204,152, 98, 66,128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129, + 0, 1, 9, 1, 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128, +205,150,137,192,205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128, + 0, 0,198,128,206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1, + 0, 0,197,129, 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66, +207,142,220, 1, 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65, +128, 0,220,128, 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129, + 0, 0,134, 65, 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130, + 0, 0, 73,194, 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130, +130,142, 28,130, 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2, + 80,137,137, 66,208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129, + 80,137, 98, 65,128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64, + 0,156, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64, +129, 0,197,128, 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129, + 0, 0, 6,193, 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129, + 0, 0, 6,193, 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64, +128, 0, 92,128, 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192, + 80, 0,100,192, 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70, 0,209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129, + 0, 3, 69,129, 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129, + 0, 1,133,129, 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129, + 0, 1,197,129, 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129, + 0, 1, 5,130, 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130, + 74, 5,202, 2,128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3, + 83,137, 28,131, 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67, + 83,137, 92, 3, 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130, + 0, 1, 69,130, 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130, + 0, 1,133,130, 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66, +207,142,201,194, 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65, + 0, 3,220,128, 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64, + 85,137,162, 64,128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192, + 64, 0, 6,192, 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, + 85, 0, 69,128, 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128, + 0, 0, 6, 0, 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192, + 80, 0, 11, 64, 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128, + 82, 0, 11, 64, 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8, + 0, 0, 0, 0, 0, 0, 0,114,101,113,117,105,114,101, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101, + 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, 95,118,101,114,115, +105,111,110, 95,105,110,102,111, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97, +115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108, +116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,101,120,112, 97, +110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 50, + 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,111,110,116, + 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, + 82, 77, 65, 76, 95, 49, 48, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, + 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,108, 97, + 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 53, 48,120, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108, +101, 78, 97,109,101, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0, 98,117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, + 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 69,120,101, 99,117,116, +101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40, +105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, + 97,108,117,101, 41, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 98,117,116, 67,108, +101, 97,114, 67,111,109,109, 97,110,100,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0, 0, 0, 0, 0,105,117,112, 46, + 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101, + 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 98,108, + 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, + 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,116,102,105,108, +101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 76,111, 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98, +117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97, +100, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,118, 98,120, 67,111, +110,115,111,108,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,102,114, 97,109,101, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97, +114,103,105,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 48,120, 48, 0, 4, 4, + 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, + 49, 48, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,108,105,103,110,109,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 65, 84, 79, 80, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 67,111,109,109, 97,110,100,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, + 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 53,120, 53, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +109,110,117, 77, 97,105,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,109,101,110, +117, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 69,120,105,116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0,114,101,116,117, +114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0, 0, 0, 0, 0, 80,114,105,110, +116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, 46, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103, + 65, 98,111,117,116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84, + 69, 82, 44, 32,105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0, 72,101,108,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100, +108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, +111,103, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67, +111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,114, 97,103, +100,114,111,112, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115, +101, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105, +108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,108,103, 65, + 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,105,108,108, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0, 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45, + 82,105,111, 0, 4, 23, 0, 0, 0, 0, 0, 0, 0,105,117,112, 64,116,101, 99, +103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 4, 3, 0, 0, + 0, 0, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, 48, 88, + 50, 48, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,109, 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 0, + 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,105,110, 98,111, +120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0,115,104,111,119, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 70, +111, 99,117,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 97,105,110, 76,111, +111,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, + 0, 1, 0, 8, 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1, + 92,192,128, 1,197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 90, 0, 0, 0, + 22, 0, 4,128,197, 64, 0, 0, 5,193, 0, 0, 64, 1,128, 0, 28,129, 0, 1, + 65, 1, 1, 0,133,193, 0, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2, +220, 64, 0, 1,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1, +128, 0, 0, 2, 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1, 65, 1, 0, +220, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,101,120,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, + 0, 4, 21, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98, +108,101, 32, 83,116, 97,114,116, 45, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 4, 19, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98,108, +101, 32, 69,110,100, 45, 45, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, + 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, + 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 29, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112, 0, + 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65,128, + 0, 0,133, 0, 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6, 65, + 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22, 0, + 2,128, 5, 64, 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193, 0, + 1, 0, 5,129, 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, + 0, 0, 65, 0, 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5, 65, + 2, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,128, + 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5, 64, + 0, 0, 65, 0, 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156,128, + 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133, 64, + 2, 0,134, 64, 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28, 64, + 0, 1, 5, 64, 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26, 0, + 0, 0, 22,192, 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92, 64, +128, 1, 69, 64, 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1, 1, + 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129, 64, + 5, 0,197, 64, 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149,192, + 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22, 64, + 1,128, 69, 64, 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149,192, + 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22, 64, + 1,128, 69, 64, 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149,192, + 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22, 64, + 1,128, 69, 64, 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149,192, + 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0, 0, + 0, 0, 0,105,109, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, + 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 73, 77, 32, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 67, 79, 80, 89, 82, 73, + 71, 72, 84, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 99,100, 0, 4, 4, 0, 0, + 0, 0, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73, 85, + 80, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 32, 73, +110,102,111, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101, +109, 58, 32, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 71,108,111, 98, + 97,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0, 4, + 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,109, 32, 86,101,114, +115,105,111,110, 58, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, + 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 77, + 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105,122, +101, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 83, 67, 82, 69, 69, 78, 83, + 73, 90, 69, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101, +110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 83, + 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, + 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 32, + 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, 20, + 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110,100, +101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 71, 76, 95, 86, + 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112, +101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0,112, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22, + 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, + 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, + 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, + 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0,109,111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 9, + 0, 0, 0,197, 0, 0, 0,198, 64,192, 1,198,128,192, 1, 0, 1,128, 0, 65, + 1, 1, 0,128, 1, 0, 1, 21,129, 1, 2,201, 0,129,129, 30, 0,128, 0, 5, + 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, + 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,116,105,116,108,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, + 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, + 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,108,105,110, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 99,111,108, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 58, 0, 0, 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0, 0, + 0, 70, 64,192, 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0, 0, + 0, 70, 64,192, 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128, 6, +128, 69,192, 1, 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128, 64, + 1,193, 64, 2, 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 90, 0, 0, + 0, 22,128, 2,128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64,192, + 1,198,192,194, 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64,195, + 0, 92, 64, 0, 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0, 4, + 0,149,192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99, +111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116, +102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98, +117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 97, 99,116,105,111,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,101, +119,102,105,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,111, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, + 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,114,105,116,101, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108,111,115,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, + 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101, +110, 97,109,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, + 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, + 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, + 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, + 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, + 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, + 0, 64, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, + 0, 65, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, + 0, 67, 0, 0, 0, 70, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1, 0, 7, 65, 0, + 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, + 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192, 0,133, 92,128, + 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65, +195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192,195, 1, 6, 65, +196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128,196, 1, 5, 1, + 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192,196, 0,220, 64, + 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192,195, 1,198, 0, +196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193, 5, 0, 69, 1, + 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128,198, 1, 5, 1, + 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128,128, 1,218, 0, + 0, 0, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193, 67, 3,134, 65, + 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1,128, 1, 28, 65, +128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65, 0, 1, 30, 0, +128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, +105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 97,118,101, 32, 70, +105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114, 0, + 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 65,108,108, 32,102,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,121, +101,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 76, 69, 70, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110, +115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115,116,102,105, +108,101,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117, +101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97, +109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110, +110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +119,114,105,116,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100, +101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 17, 0, + 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105, +108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, + 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 74, + 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, + 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, + 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 78, + 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, + 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 81, + 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 82, + 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, + 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87, + 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 89, + 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0,102,100, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0, 0, 0, 64, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0,104, 0, + 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,128, 0, + 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64, 1,128,133, 0, + 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64, 0, 1, 22,192, + 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128,194, 0, 65,193, + 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1,128, 0,156, 64, +128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128, 1, 0,134,192, + 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64,195, 1,137,192, +128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105, +111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,114, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114, +111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108, +111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +114,101, 97,100, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 42, 97, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, + 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 95, 0, + 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, + 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, + 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, + 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0, + 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, + 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, + 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 5, + 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, + 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37, 0, 0, 0, 69, 0, 0, 0, 70, + 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, 65,130,137,192, 65,131,137, + 64, 66,132,137,192, 66,133, 92,128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, + 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156, 64, 0, 2,134,128,195, 0,198, +192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87, 64, 68, 1, 22, 64, 0,128, 23, +128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22,128, 2,128, 5,193, 4, 0, 65, + 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28, 65, 0, 1, 22, 0, 1,128, 5, + 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64, 1,128, 1, 28, 65, 0, 1, 30, + 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 32, + 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114, + 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 42, 46, 42, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, 0, 0, 0, + 0, 0, 0, 65,108,108, 32, 70,105,108,101,115, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, + 78, 79, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, + 97,108,117,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111, +121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0, 49, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32,108,111, 97,100, + 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115, +111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 70,105,108, +101, 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, + 0, 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0,108, 0, 0, 0,108, 0, + 0, 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, + 0, 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0, 0,111, 0, 0, 0,112, 0, + 0, 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, + 0, 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, + 0, 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0,119, 0, 0, 0,119, 0, + 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,121, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 36, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,102,100, 0, 9, 0, 0, 0, 36, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 16, 0, 0, + 0, 36, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109, +101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,166, 0, 0, 0,170, 0, 0, 0, 0, 5, 0, 7, 8, 0, 0, 0, 23, 0, + 64, 1, 22, 0, 1,128, 69, 65, 0, 0, 70,129,192, 2, 70,193,192, 2,128, 1, +128, 0, 92, 65, 0, 1, 30, 0,128, 0, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, + 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 8, 0, 0, 0,167, + 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, + 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0,110,117,109, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 7, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, + 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, + 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 17, 0, 0, + 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, + 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, + 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, + 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, + 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, + 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, + 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, + 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, + 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, + 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, + 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, + 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, + 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 58, 0, 0, + 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 58, 0, 0, 0, 72, 0, 0, + 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 72, 0, 0, 0, 94, 0, 0, + 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0,106, 0, 0, 0,106, 0, 0, + 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0,123, 0, 0, 0,123, 0, 0, + 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,127, 0, 0, + 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,129, 0, 0, + 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, + 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, + 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0,132, 0, 0, 0,132, 0, 0, + 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,134, 0, 0, 0,134, 0, 0, + 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,135, 0, 0, + 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0,136, 0, 0, 0,136, 0, 0, + 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0,141, 0, 0, 0,141, 0, 0, + 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,143, 0, 0, 0,143, 0, 0, + 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,147, 0, 0, + 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, + 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0,149, 0, 0, 0,144, 0, 0, + 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, + 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, + 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, + 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, + 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0,154, 0, 0, 0,154, 0, 0, + 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0,155, 0, 0, 0,159, 0, 0, + 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, + 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 0, 0,161, 0, 0, + 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, + 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,164, 0, 0, 0,159, 0, 0, + 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0,170, 0, 0, + 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, + 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0,178, 0, 0, + 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,179, 0, 0, + 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0, + 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,181, 0, 0, + 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0,183, 0, 0, 0,183, 0, 0, + 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, + 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, + 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0,182, 0, 0, 0,189, 0, 0, + 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,190, 0, 0, + 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, + 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,192, 0, 0, 0,177, 0, 0, + 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, + 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, + 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, + 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,201, 0, 0, 0,201, 0, 0, + 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, + 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, + 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srcconsole/loh/console5_le64w.loh b/iup/srcconsole/loh/console5_le64w.loh new file mode 100755 index 0000000..ff23f43 --- /dev/null +++ b/iup/srcconsole/loh/console5_le64w.loh @@ -0,0 +1,525 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/console5_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/console5_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,110,115,111,108,101, 53, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 15, 90, 1, 0, 0, 5, 0, 0, 0, 65, 64, 0, 0, 28, 64, + 0, 1, 5,128, 0, 0, 74, 0, 0, 0, 9, 64,128,129, 5,128, 0, 0, 6,192, + 64, 0,100, 0, 0, 0, 9, 64, 0,130, 5,128, 0, 0, 6,192, 64, 0,100, 64, + 0, 0, 9, 64,128,130, 5,128, 0, 0, 6,192, 64, 0, 9,192, 65,131, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,194, 0,138,192, 0, 0,137,192, + 66,133,137, 64, 67,134,137,192, 67,135, 92,128, 0, 1, 9, 64, 0,132, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,128, 0, 0,137,192, + 68,137,137, 0, 69,134, 92,128, 0, 1, 9, 64, 0,136, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70, 64,196, 0,138,192, 0, 0,137,128, 69,137,137, 0, + 69,134,137,192, 69,133, 92,128, 0, 1, 9, 64,128,138, 5,128, 0, 0, 6,192, + 64, 0, 6, 0, 66, 0,100,128, 0, 0, 9, 64, 0,140, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, + 71,137,137,128,199,142, 92,128, 0, 1, 9, 64,128,140, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,192, 0, 0,137,192, 70,134,137, 0, + 72,137,137, 64,200,142, 92,128, 0, 1, 9, 64,128,143, 5,128, 0, 0, 6,192, + 64, 0, 69,128, 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137,192, + 72,137, 92,128, 0, 1, 9, 64, 0,145, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70,128,198, 0,138,128, 0, 0,137,192, 70,134,137, 64, 73,137, 92,128, + 0, 1, 9, 64, 0,146, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128, +198, 0,138,128, 0, 0,137,192, 70,134,137,192, 73,137, 92,128, 0, 1, 9, 64, + 0,147, 5,128, 0, 0, 6,192, 64, 0, 6,128, 73, 0,100,192, 0, 0, 9, 64, +128,142, 5,128, 0, 0, 6,192, 64, 0, 6, 0, 73, 0,100, 0, 1, 0, 9, 64, +128,142, 5,128, 0, 0, 6,192, 64, 0,100, 64, 1, 0, 9, 64, 0,148, 5,128, + 0, 0, 6,192, 64, 0, 6,128, 72, 0,100,128, 1, 0, 9, 64,128,142, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70,128,202, 0,138,192,128, 0,197,128, + 0, 0,198,192,202, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 1,203, 2,138, 65, + 0, 1,197,129, 0, 0,198,129,202, 3, 10,130,128, 2, 69,130, 0, 0, 70,194, +192, 4, 70,130,200, 4,133,130, 0, 0,134,194, 64, 5,134,130, 73, 5,197,130, + 0, 0,198,194,192, 5,198, 2,201, 5, 5,131, 0, 0, 6,195, 64, 6, 6,195, + 71, 6, 69,131, 0, 0, 70,195,192, 6, 70, 67,198, 6, 9,130,203,150, 9, 2, +204,151, 34, 66,128, 2,220,129, 0, 1, 5,130, 0, 0, 6,130, 74, 4, 74, 66, +128, 1,133,130, 0, 0,134,194, 64, 5,134, 66, 69, 5,197,130, 0, 0,198,194, +192, 5,198, 2,194, 5, 5,131, 0, 0, 6,195, 64, 6, 6, 3, 68, 6, 73,130, +204,152, 98, 66,128, 1, 28,130, 0, 1,137,193,204,152,162, 65, 0, 1, 92,129, + 0, 1, 9, 1, 77,137, 34, 65,128, 0,220,128, 0, 1,137, 64,205,152,137,128, +205,150,137,192,205,151,162, 64,128, 0, 92,128, 0, 1, 9, 64,128,148, 5,128, + 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 64,206, 0,138, 0,128, 0,197,128, + 0, 0,198,128,206, 1, 10, 65,128, 0, 69,129, 0, 0, 70, 65,206, 2,138, 1, + 0, 0,197,129, 0, 0,198,193,206, 3, 10,130, 0, 0, 9, 2, 79,137, 9, 66, +207,142,220, 1, 0, 1,162, 65, 0, 0, 92,129, 0, 1, 9,129, 79,137, 34, 65, +128, 0,220,128, 0, 1, 5,129, 0, 0, 6,129, 78, 2, 74, 65,128, 0,133,129, + 0, 0,134, 65, 78, 3,202, 1,128, 0, 5,130, 0, 0, 6,194, 78, 4, 74,130, + 0, 0, 73,194, 79,137,133,130, 0, 0,134,194, 64, 5,134, 66, 65, 5, 73,130, +130,142, 28,130, 0, 1, 69,130, 0, 0, 70,194,206, 4,138,130, 0, 0,137, 2, + 80,137,137, 66,208,142, 92, 2, 0, 1,226, 65, 0, 0,156,129, 0, 1, 73,129, + 80,137, 98, 65,128, 0, 28, 1, 0, 1,162, 64, 0, 0, 92,128, 0, 1, 9, 64, + 0,156, 5,128, 0, 0, 6,192, 64, 0, 69,128, 0, 0, 70, 0,209, 0,138, 64, +129, 0,197,128, 0, 0,198,192,192, 1,198, 64,202, 1,137, 64, 81,137, 5,129, + 0, 0, 6,193, 64, 2, 6, 1, 78, 2,137, 0,129,156,137,192, 66,163, 5,129, + 0, 0, 6,193, 64, 2, 6, 65, 70, 2,137, 0,129,163,137, 64, 79,164,162, 64, +128, 0, 92,128, 0, 1, 9, 64,128,161, 5,128, 0, 0, 6,192, 64, 0, 6,192, + 80, 0,100,192, 1, 0, 9, 64,128,164, 5,128, 0, 0, 6,192, 64, 0, 69,128, + 0, 0, 70, 0,209, 0,138, 0,129, 0,197,128, 0, 0,198,128,202, 1, 10,129, + 0, 3, 69,129, 0, 0, 70, 65,196, 2,138, 65, 0, 0,137, 65, 81,137, 92,129, + 0, 1,133,129, 0, 0,134,193, 82, 3,202, 65, 0, 0,201,193, 77,134,156,129, + 0, 1,197,129, 0, 0,198,193,210, 3, 10, 66, 0, 0, 9,194, 77,134,220,129, + 0, 1, 5,130, 0, 0, 6,194, 74, 4, 74, 2, 0, 0,133,130, 0, 0,134,130, + 74, 5,202, 2,128, 0, 5,131, 0, 0, 6, 67, 68, 6, 74, 67, 0, 0, 73, 3, + 83,137, 28,131, 0, 1, 69,131, 0, 0, 70, 67,196, 6,138, 67, 0, 0,137, 67, + 83,137, 92, 3, 0, 1,226, 66, 0, 0,156, 2, 0, 1, 98, 66, 0, 0, 28,130, + 0, 1, 69,130, 0, 0, 70,194,210, 4,138, 66, 0, 0,137,194, 77,134, 92,130, + 0, 1,133,130, 0, 0,134,130, 70, 5,202,194, 0, 0,201,130, 83,137,201, 66, +207,142,201,194, 83,134,156,130, 0, 1, 9, 1,212,150, 9, 65,205,152, 34, 65, + 0, 3,220,128, 0, 1,137,128,212,168,137,128,212,169,137,128, 84,170,137, 64, + 85,137,162, 64,128, 0, 92,128, 0, 1, 9, 64, 0,165, 5,128, 0, 0, 6,192, + 64, 0, 6,192, 80, 0, 11,128, 85, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, + 85, 0, 69,128, 0, 0, 70,192,192, 0, 70, 0,194, 0, 28, 64, 0, 1, 5,128, + 0, 0, 6, 0, 86, 0, 28, 64,128, 0, 5,128, 0, 0, 6,192, 64, 0, 6,192, + 80, 0, 11, 64, 86, 0, 28, 64, 0, 1, 5,128, 0, 0, 6,192, 64, 0, 6,128, + 82, 0, 11, 64, 86, 0, 28, 64, 0, 1, 30, 0,128, 0, 90, 0, 0, 0, 4, 8, + 0, 0, 0, 0, 0, 0, 0,114,101,113,117,105,114,101, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116,116, 97, 98,108,101, + 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, 95,118,101,114,115, +105,111,110, 95,105,110,102,111, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97, +115,116,102,105,108,101,110, 97,109,101, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,109,108, 67,111,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108, +116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,101,120,112, 97, +110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, 83, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 50, + 48, 48,120, 49, 50, 48, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,111,110,116, + 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, + 82, 77, 65, 76, 95, 49, 48, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, + 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,108, 97, + 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0, 48, 58, 48, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 53, 48,120, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108, +101, 78, 97,109,101, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0, 98,117,116, 69,120,101, 99,117,116,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, + 48,120, 49, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 69,120,101, 99,117,116, +101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 39, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 46,100,111,115,116,114,105,110,103, 40, +105,117,112, 46, 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, + 97,108,117,101, 41, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 98,117,116, 67,108, +101, 97,114, 67,111,109,109, 97,110,100,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0, 67,108,101, 97,114, 0, 4, 96, 0, 0, 0, 0, 0, 0, 0,105,117,112, 46, + 99,111,110,115,111,108,101, 46,109,108, 67,111,100,101, 46,118, 97,108,117,101, + 61, 39, 39, 32, 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 98,108, + 70,105,108,101, 78, 97,109,101, 46,116,105,116,108,101, 32, 61, 32, 39, 39, 32, + 32,105,117,112, 46, 99,111,110,115,111,108,101, 46,108, 97,115,116,102,105,108, +101,110, 97,109,101, 32, 61, 32,110,105,108, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0, 98,117,116, 76,111, 97,100, 70,105,108,101, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 76,111, 97,100, 46, 46, 46, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98, +117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0, 83, 97,118,101, 32, 65,115, 46, 46, 46, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0, 98,117,116, 83, 97,118,101, 70,105,108,101, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0, 83, 97,118,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97, +100, 70,105,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,118, 98,120, 67,111, +110,115,111,108,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,102,114, 97,109,101, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97, +114,103,105,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 48,120, 48, 0, 4, 4, + 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, + 49, 48, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97,108,105,103,110,109,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65, 82, 73, 71, 72, 84, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 65, 84, 79, 80, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 67,111,109,109, 97,110,100,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, + 67, 69, 78, 84, 69, 82, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 53,120, 53, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +109,110,117, 77, 97,105,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,109,101,110, +117, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 69,120,105,116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0,114,101,116,117, +114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 70,105,108,101, 0, 4, 22, 0, 0, 0, 0, 0, 0, 0, 80,114,105,110, +116, 32, 86,101,114,115,105,111,110, 32, 73,110,102,111, 46, 46, 46, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 46, 46, 46, 0, 4, 51, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 46, 99,111,110,115,111,108,101, 46,100,108,103, + 65, 98,111,117,116, 58,112,111,112,117,112, 40,105,117,112, 46, 67, 69, 78, 84, + 69, 82, 44, 32,105,117,112, 46, 67, 69, 78, 84, 69, 82, 41, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0, 72,101,108,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100, +108,103, 77, 97,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, +111,103, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,117,112, 76,117, 97, 32, 67, +111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,114, 97,103, +100,114,111,112, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115, +101, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105, +108,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,100,108,103, 65, + 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,102,105,108,108, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0, 84,101, 99,103,114, 97,102, 47, 80, 85, 67, 45, + 82,105,111, 0, 4, 23, 0, 0, 0, 0, 0, 0, 0,105,117,112, 64,116,101, 99, +103,114, 97,102, 46,112,117, 99, 45,114,105,111, 46, 98,114, 0, 4, 3, 0, 0, + 0, 0, 0, 0, 0, 79, 75, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 53, 48, 88, + 50, 48, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,109, 97,120, 98,111,120, 0, 4, 3, 0, 0, 0, 0, + 0, 0, 0, 78, 79, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,105,110, 98,111, +120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,105,122,101, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0, 65, 98,111,117,116, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0,115,104,111,119, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 70, +111, 99,117,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 97,105,110, 76,111, +111,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, + 0, 1, 0, 8, 30, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0,195, 0,128, 1, + 92,192,128, 1,197, 64, 0, 0, 1,129, 0, 0,220, 64, 0, 1, 87,192,192, 0, + 22, 0, 4,128,197, 64, 0, 0, 5, 1, 1, 0, 64, 1,128, 0, 28,129, 0, 1, + 65, 65, 1, 0,133, 1, 1, 0,192, 1, 0, 1,156,129, 0, 1, 21,129, 1, 2, +220, 64, 0, 1,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,220,192,128, 1, +128, 0, 0, 2, 64, 0,128, 1, 22, 0,251,127,197, 64, 0, 0, 1,129, 1, 0, +220, 64, 0, 1, 30, 0,128, 0, 7, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,101,120,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110,116, + 0, 4, 21, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98, +108,101, 32, 83,116, 97,114,116, 45, 45, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,116,111,115,116,114,105,110,103, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 61, + 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 45, 45,112,114,105,110,116,116, 97, 98, +108,101, 32, 69,110,100, 45, 45, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, + 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, + 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, + 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 29, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0,118, 0, 4, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 5,112, + 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 22, 0, 2,128, 5, 64, 0, 0, 65, +128, 0, 0,133, 0, 0, 0,134,192, 64, 1,193, 0, 1, 0, 5, 1, 0, 0, 6, + 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5,128, 1, 0, 26, 0, 0, 0, 22, + 0, 2,128, 5, 64, 0, 0, 65,192, 1, 0,133,128, 1, 0,134,192, 64, 1,193, + 0, 1, 0, 5,129, 1, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, + 64, 0, 0, 65, 0, 2, 0,133, 64, 2, 0,134,192, 64, 1,193, 0, 1, 0, 5, + 65, 2, 0, 6, 65, 65, 2, 85, 0,129, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65, +128, 2, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 2, 0, 28, 64, 0, 1, 5, + 64, 0, 0, 65, 0, 3, 0,133, 64, 2, 0,134, 64, 67, 1,193,128, 3, 0,156, +128, 0, 1, 85,128,128, 0, 28, 64, 0, 1, 5, 64, 0, 0, 65,192, 3, 0,133, + 64, 2, 0,134, 64, 67, 1,193, 0, 4, 0,156,128, 0, 1, 85,128,128, 0, 28, + 64, 0, 1, 5, 64, 2, 0, 6, 64, 67, 0, 65, 64, 4, 0, 28,128, 0, 1, 26, + 0, 0, 0, 22,192, 0,128, 69, 64, 0, 0,129,128, 4, 0,192, 0, 0, 0, 92, + 64,128, 1, 69, 64, 0, 0,129,192, 4, 0,197, 64, 2, 0,198, 64,195, 1, 1, + 1, 5, 0,220,128, 0, 1,149,192, 0, 1, 92, 64, 0, 1, 69, 64, 0, 0,129, + 64, 5, 0,197, 64, 2, 0,198, 64,195, 1, 1,129, 5, 0,220,128, 0, 1,149, +192, 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,197, 0, 90, 0, 0, 0, 22, + 64, 1,128, 69, 64, 0, 0,129, 0, 6, 0,197, 64, 2, 0,198,192,197, 1,149, +192, 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70, 64,198, 0, 90, 0, 0, 0, 22, + 64, 1,128, 69, 64, 0, 0,129,128, 6, 0,197, 64, 2, 0,198, 64,198, 1,149, +192, 0, 1, 92, 64, 0, 1, 69, 64, 2, 0, 70,192,198, 0, 90, 0, 0, 0, 22, + 64, 1,128, 69, 64, 0, 0,129, 0, 7, 0,197, 64, 2, 0,198,192,198, 1,149, +192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 29, 0, 0, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 0,105,109, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,114,105,110, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 73, 77, 32, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0, 32, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 67, 79, 80, 89, 82, + 73, 71, 72, 84, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 99,100, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 67, 68, 32, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73, + 85, 80, 32, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 32, + 73,110,102,111, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116, +101,109, 58, 32, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 71,108,111, + 98, 97,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, 84, 69, 77, 0, + 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83,121,115,116,101,109, 32, 86,101, +114,115,105,111,110, 58, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 83, 89, 83, + 84, 69, 77, 86, 69, 82, 83, 73, 79, 78, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, + 77, 79, 84, 73, 70, 86, 69, 82, 83, 73, 79, 78, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0, 32, 32, 77,111,116,105,102, 32, 86,101,114,115,105,111,110, 58, 32, 0, + 4, 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101,101,110, 32, 83,105, +122,101, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 83, 67, 82, 69, 69, 78, + 83, 73, 90, 69, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 32, 32, 83, 99,114,101, +101,110, 32, 68,101,112,116,104, 58, 32, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 82, 69, 69, 78, 68, 69, 80, 84, 72, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0, 71, 76, 95, 86, 69, 78, 68, 79, 82, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, + 32, 32, 79,112,101,110, 71, 76, 32, 86,101,110,100,111,114, 58, 32, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0, 71, 76, 95, 82, 69, 78, 68, 69, 82, 69, 82, 0, 4, + 20, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79,112,101,110, 71, 76, 32, 82,101,110, +100,101,114,101,114, 58, 32, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 71, 76, 95, + 86, 69, 82, 83, 73, 79, 78, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 32, 32, 79, +112,101,110, 71, 76, 32, 86,101,114,115,105,111,110, 58, 32, 0, 0, 0, 0, 0, +112, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, + 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, + 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, + 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 26, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, + 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, + 29, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, + 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, + 32, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, + 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, + 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0,109,111,116, 0, 59, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, + 9, 0, 0, 0,197, 0, 0, 0,198, 64,192, 1,198,128,192, 1, 0, 1,128, 0, + 65, 1, 1, 0,128, 1, 0, 1, 21,129, 1, 2,201, 0,129,129, 30, 0,128, 0, + 5, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,108, 98,108, 80,111,115,105,116,105,111,110, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,116,105,116,108,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, + 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, + 0, 48, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108, +102, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,108,105, +110, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 99,111, +108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, 0, 1, 0, 4, 39, 0, 0, 0, 69, 0, + 0, 0, 70, 64,192, 0, 70,128,192, 0, 23,192,192, 0, 22, 64, 1,128, 69, 0, + 0, 0, 70, 64,192, 0, 70, 0,193, 0, 75, 64,193, 0, 92, 64, 0, 1, 22,128, + 6,128, 69,192, 1, 0, 70, 0,194, 0,133, 0, 0, 0,134, 64, 64, 1,134,128, + 64, 1,193, 64, 2, 0, 92,128,128, 1, 71,128, 1, 0, 69,128, 1, 0, 87,192, +192, 0, 22,128, 2,128, 69,128, 1, 0, 75,128,194, 0,197, 0, 0, 0,198, 64, +192, 1,198,192,194, 1,198, 0,195, 1, 92, 64,128, 1, 69,128, 1, 0, 75, 64, +195, 0, 92, 64, 0, 1, 22, 0, 1,128, 69,128, 3, 0,129,192, 3, 0,197, 0, + 4, 0,149,192, 0, 1, 92, 64, 0, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 4, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, + 99,111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97,115, +116,102,105,108,101,110, 97,109,101, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 98,117,116, 83, 97,118,101, 97,115, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110, +101,119,102,105,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,105,111, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,119, 43, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,114,105,116,101, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108,111,115,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, + 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118, +101, 32,102,105,108,101, 32, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108, +101,110, 97,109,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 59, 0, + 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 60, 0, + 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 62, 0, + 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, + 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, + 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, + 0, 0, 65, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, + 0, 0, 67, 0, 0, 0, 70, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, 0, 1, 0, 7, 65, + 0, 0, 0, 69, 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, + 64, 65,130,137,192, 65,131,137, 64, 66,132,197,192, 2, 0,137,192, 0,133, 92, +128, 0, 1,139, 0,195, 0, 5, 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, + 65,195, 2,156, 64, 0, 2,134,128,195, 0,197, 0, 0, 0,198,192,195, 1, 6, + 65,196, 0,201, 0, 1,136,197, 0, 0, 0,198,192,195, 1,198,128,196, 1, 5, + 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2,201, 0, 1,130,203,192,196, 0,220, + 64, 0, 1, 87, 0, 69, 1, 22,192, 7,128,197, 0, 0, 0,198,192,195, 1,198, + 0,196, 1, 23, 64,197, 1, 22, 0, 1,128,197,128, 5, 0, 1,193, 5, 0, 69, + 1, 6, 0, 21, 65, 1, 2,220, 64, 0, 1,197, 64, 6, 0,198,128,198, 1, 5, + 1, 0, 0, 6,193, 67, 2, 6, 1, 68, 2, 65,193, 6, 0,220,128,128, 1, 87, + 64,197, 1, 22, 64, 2,128, 11, 1,199, 1,133, 1, 0, 0,134,193, 67, 3,134, + 65, 71, 3,134, 65, 68, 3, 28, 65,128, 1, 11,129,199, 1,128, 1,128, 1, 28, + 65,128, 1, 22,128, 0,128, 5,129, 5, 0, 65,193, 7, 0, 28, 65, 0, 1, 30, + 0,128, 0, 32, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0, 83, 65, 86, 69, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 97,118,101, 32, + 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 42, 46,119,108,117, 97, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,102,105,108,116,101,114,105,110,102,111, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0, 76,117, 97, 32,102,105,108,101,115, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 4, 0, 0, 0, 0, + 0, 0, 0,121,101,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117, +112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76, 69, 70, 84, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0, 99,111,110,115,111,108,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,108, 97, +115,116,102,105,108,101,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +118, 97,108,117,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105, +108,101, 78, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116, +114,111,121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, 0, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0, 67, 97,110,110,111,116, 32, 83, 97,118,101, 32,102,105,108,101, 32, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 4, 3, 0, + 0, 0, 0, 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112, +101,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,119, 43, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,119,114,105,116,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, +108, 67,111,100,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, + 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110,111,116, 32, 83, 97,118, +101, 32,102,105,108,101, 0, 0, 0, 0, 0, 65, 0, 0, 0, 73, 0, 0, 0, 73, + 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, + 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 75, + 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, + 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 78, + 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, 0, 0, 0, 78, + 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, + 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 81, + 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, + 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, + 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, + 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 89, + 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 92, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 64, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0,102,100, 0, 10, 0, 0, 0, 64, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 17, 0, 0, 0, 64, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105,108,101, 0, 49, 0, + 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, + 0, 0,104, 0, 0, 0, 0, 1, 0, 6, 34, 0, 0, 0, 69, 0, 0, 0, 70, 64, +192, 0,128, 0, 0, 0,193,128, 0, 0, 92,128,128, 1, 23,192,192, 0, 22, 64, + 1,128,133, 0, 1, 0,193, 64, 1, 0, 0, 1, 0, 0,213, 0,129, 1,156, 64, + 0, 1, 22,192, 4,128,133,128, 1, 0,134,192, 65, 1,134, 0, 66, 1,203,128, +194, 0, 65,193, 2, 0,220,128,128, 1,137,192,128,132,139, 0,195, 0, 0, 1, +128, 0,156, 64,128, 1,133,128, 1, 0,134,192, 65, 1,137, 0,128,134,133,128, + 1, 0,134,192, 65, 1,134,128, 67, 1,197,128, 1, 0,198,192,193, 1,198, 64, +195, 1,137,192,128,135, 30, 0,128, 0, 16, 0, 0, 0, 4, 3, 0, 0, 0, 0, + 0, 0, 0,105,111, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110, +111,116, 32,108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 4, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115, +111,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109,108, 67,111,100,101, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,114,101, 97,100, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 42, 97, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0,108, 97,115,116,102,105,108,101,110, 97,109,101, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,108, 98,108, 70,105,108,101, 78, 97,109,101, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 34, 0, + 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, + 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, + 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 99, 0, + 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, 99, 0, + 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, + 0, 0,101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, + 0, 0,102, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0, 2, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, 0, + 0, 0, 0, 33, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,110,101,119,102,105, +108,101, 0, 5, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0, 0, 1, 0, 7, 37, 0, 0, 0, 69, + 0, 0, 0, 70, 64,192, 0,138, 64, 1, 0,137,192, 64,129,137, 64, 65,130,137, +192, 65,131,137, 64, 66,132,137,192, 66,133, 92,128, 0, 1,139, 0,195, 0, 5, + 1, 0, 0, 6, 65, 67, 2, 69, 1, 0, 0, 70, 65,195, 2,156, 64, 0, 2,134, +128,195, 0,198,192,195, 0, 11, 1,196, 0, 28, 65, 0, 1, 87, 64, 68, 1, 22, + 64, 0,128, 23,128, 68, 1, 22,192, 1,128, 23,128, 68, 1, 22,128, 2,128, 5, +193, 4, 0, 65, 1, 5, 0,128, 1,128, 1, 85,129,129, 2, 28, 65, 0, 1, 22, + 0, 1,128, 5, 1, 0, 0, 6, 65, 69, 2, 6,129, 69, 2, 64, 1,128, 1, 28, + 65, 0, 1, 30, 0,128, 0, 23, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103,116,121,112,101, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,116,105,116,108,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76, +111, 97,100, 32, 70,105,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,105, +108,116,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 42, 46,119,108,117, 97, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,105,108,116,101,114,105,110,102,111, + 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 76,117, 97, 32, 70,105,108,101,115, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 97,108,108,111,119,110,101,119, 0, 4, 3, + 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, +111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,117,115, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,100,101,115,116,114,111,121, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 45, 49, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0,101,114,114,111,114, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 67, 97,110,110, +111,116, 32,108,111, 97,100, 32,102,105,108,101, 32, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0, 99,111,110,115,111,108,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, + 76,111, 97,100, 70,105,108,101, 0, 0, 0, 0, 0, 37, 0, 0, 0,107, 0, 0, + 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,107, 0, 0, 0,108, 0, 0, + 0,108, 0, 0, 0,108, 0, 0, 0,107, 0, 0, 0,109, 0, 0, 0,109, 0, 0, + 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,109, 0, 0, 0,110, 0, 0, + 0,111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,114, 0, 0, 0,114, 0, 0, + 0,114, 0, 0, 0,114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,116, 0, 0, + 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,116, 0, 0, 0,117, 0, 0, + 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, 0,119, 0, 0, + 0,121, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108, +102, 0, 0, 0, 0, 0, 36, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,102,100, + 0, 9, 0, 0, 0, 36, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,115,116, 97, +116,117,115, 0, 16, 0, 0, 0, 36, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, +102,105,108,101,110, 97,109,101, 0, 17, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0, 0, 5, 0, + 7, 8, 0, 0, 0, 23, 0, 64, 1, 22, 0, 1,128, 69, 65, 0, 0, 70,129,192, + 2, 70,193,192, 2,128, 1,128, 0, 92, 65, 0, 1, 30, 0,128, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,111,110,115,111,108,101, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 76,111, 97,100, 70,105,108,101, 0, 0, 0, + 0, 0, 8, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,168, 0, + 0, 0,168, 0, 0, 0,168, 0, 0, 0,168, 0, 0, 0,170, 0, 0, 0, 5, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,115,101,108,102, 0, 0, 0, 0, 0, 7, + 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,110, 97,109,101, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,110,117,109, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, + 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, + 7, 0, 0, 0, 15, 0, 0, 0, 7, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 37, 0, 0, 0, 17, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, + 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, + 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, + 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, + 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, + 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, + 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, + 46, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 50, 0, 0, 0, + 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, + 50, 0, 0, 0, 51, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, + 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, + 52, 0, 0, 0, 53, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, + 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, + 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, + 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, + 55, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, + 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, + 56, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 70, 0, 0, 0, + 58, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 92, 0, 0, 0, + 72, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0,104, 0, 0, 0, 94, 0, 0, 0, +106, 0, 0, 0,106, 0, 0, 0,106, 0, 0, 0,121, 0, 0, 0,106, 0, 0, 0, +123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0, +125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0, +125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0, +125, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0, +127, 0, 0, 0,127, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, +128, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0, +130, 0, 0, 0,130, 0, 0, 0,125, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0, +131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0, +132, 0, 0, 0,132, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0, +134, 0, 0, 0,134, 0, 0, 0,131, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0, +125, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,125, 0, 0, 0,136, 0, 0, 0, +136, 0, 0, 0,136, 0, 0, 0,137, 0, 0, 0,124, 0, 0, 0,137, 0, 0, 0, +141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0,141, 0, 0, 0, +143, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0, +145, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0,147, 0, 0, 0, +147, 0, 0, 0,147, 0, 0, 0,148, 0, 0, 0,146, 0, 0, 0,148, 0, 0, 0, +149, 0, 0, 0,144, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0, +150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0, +152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0, +152, 0, 0, 0,152, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0, +153, 0, 0, 0,153, 0, 0, 0,153, 0, 0, 0,154, 0, 0, 0,151, 0, 0, 0, +154, 0, 0, 0,154, 0, 0, 0,150, 0, 0, 0,155, 0, 0, 0,142, 0, 0, 0, +155, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0, +159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,159, 0, 0, 0,160, 0, 0, 0, +161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,161, 0, 0, 0,162, 0, 0, 0, +163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0, +164, 0, 0, 0,159, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,166, 0, 0, 0, +166, 0, 0, 0,170, 0, 0, 0,166, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0, +174, 0, 0, 0,174, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,176, 0, 0, 0, +176, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0,178, 0, 0, 0, +178, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0, +179, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0,180, 0, 0, 0, +180, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,181, 0, 0, 0,183, 0, 0, 0, +183, 0, 0, 0,183, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0, +185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0, +186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,184, 0, 0, 0,188, 0, 0, 0, +182, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0,189, 0, 0, 0, +189, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0, +190, 0, 0, 0,190, 0, 0, 0,190, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0, +192, 0, 0, 0,177, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0, +193, 0, 0, 0,194, 0, 0, 0,175, 0, 0, 0,194, 0, 0, 0,198, 0, 0, 0, +198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,198, 0, 0, 0,199, 0, 0, 0, +199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0,199, 0, 0, 0, +201, 0, 0, 0,201, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0, +203, 0, 0, 0,203, 0, 0, 0,203, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, +204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/console5_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srcconsole/lua.ico b/iup/srcconsole/lua.ico new file mode 100755 index 0000000..56dc4fe Binary files /dev/null and b/iup/srcconsole/lua.ico differ diff --git a/iup/srcconsole/make_uname b/iup/srcconsole/make_uname new file mode 100755 index 0000000..6263490 --- /dev/null +++ b/iup/srcconsole/make_uname @@ -0,0 +1,6 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake relink $1 $2 $3 $4 $5 $6 $7 $8 +#tecmake USE_GTK=Yes relink $1 $2 $3 $4 $5 $6 $7 $8 +#tecmake USE_MOTIF=Yes relink $1 $2 $3 $4 $5 $6 $7 $8 +#tecmake MF=iuplua3 relink $1 $2 $3 $4 $5 $6 $7 $8 diff --git a/iup/srcconsole/make_uname.bat b/iup/srcconsole/make_uname.bat new file mode 100755 index 0000000..a5b1d9a --- /dev/null +++ b/iup/srcconsole/make_uname.bat @@ -0,0 +1,30 @@ +@echo off + +if "%1"=="" goto iupexe32 +if "%1"=="vc8" goto iupexe32 +if "%1"=="vc8_64" goto iupexe64 +if "%1"=="all" goto iupexe +goto end + +:iupexe32 +call tecmake dll8 relink %2 %3 %4 %5 %6 %7 +REM call tecmake dll8 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7 +REM call tecmake vc8 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7 +goto end + +:iupexe64 +call tecmake dll8_64 relink %2 %3 %4 %5 %6 %7 +REM call tecmake dll8_64 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7 +REM call tecmake vc8_64 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7 +goto end + +:iupexe +call tecmake dll8 relink %2 %3 %4 %5 %6 %7 +REM call tecmake dll8 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7 +REM call tecmake vc8 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7 +call tecmake dll8_64 relink %2 %3 %4 %5 %6 %7 +REM call tecmake dll8_64 USE_GTK=Yes relink %2 %3 %4 %5 %6 %7 +REM call tecmake vc8_64 "MF=iuplua3" relink %2 %3 %4 %5 %6 %7 +goto end + +:end diff --git a/iup/srcconsole/wlua_dll8_x64.manifest b/iup/srcconsole/wlua_dll8_x64.manifest new file mode 100755 index 0000000..9525d5a --- /dev/null +++ b/iup/srcconsole/wlua_dll8_x64.manifest @@ -0,0 +1,33 @@ + + + +Lua Console + + + + + + + + + + + diff --git a/iup/srcconsole/wlua_dll8_x86.manifest b/iup/srcconsole/wlua_dll8_x86.manifest new file mode 100755 index 0000000..70966e7 --- /dev/null +++ b/iup/srcconsole/wlua_dll8_x86.manifest @@ -0,0 +1,33 @@ + + + +Lua Console + + + + + + + + + + + diff --git a/iup/srcconsole/wlua_dll9_x64.manifest b/iup/srcconsole/wlua_dll9_x64.manifest new file mode 100755 index 0000000..f454d48 --- /dev/null +++ b/iup/srcconsole/wlua_dll9_x64.manifest @@ -0,0 +1,33 @@ + + + +Lua Console + + + + + + + + + + + diff --git a/iup/srcconsole/wlua_dll9_x86.manifest b/iup/srcconsole/wlua_dll9_x86.manifest new file mode 100755 index 0000000..3a59548 --- /dev/null +++ b/iup/srcconsole/wlua_dll9_x86.manifest @@ -0,0 +1,33 @@ + + + +Lua Console + + + + + + + + + + + diff --git a/iup/srccontrols/Makefile b/iup/srccontrols/Makefile new file mode 100755 index 0000000..d02bbc3 --- /dev/null +++ b/iup/srccontrols/Makefile @@ -0,0 +1,6 @@ + +.PHONY: do_all iupcontrols +do_all: iupcontrols + +iupcontrols: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak diff --git a/iup/srccontrols/color/iup_colorbrowser.c b/iup/srccontrols/color/iup_colorbrowser.c new file mode 100755 index 0000000..82b4a88 --- /dev/null +++ b/iup/srccontrols/color/iup_colorbrowser.c @@ -0,0 +1,849 @@ +/** \file +* \brief ColorBrowser Control. +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_cdutil.h" + +#include "iup_colorhsi.h" + + +#ifndef min +#define min(a, b) ( (a < b) ? (a) : (b) ) +#endif + +#define ICB_DEG2RAD 0.01745329252f /* degrees to radians (rad = ICB_DEG2RAD * deg) */ +#define ICB_DEFAULTSIZE 181 /* default size */ +#define ICB_SPACE 4 /* size of the spacing */ +#define ICB_HUEWIDTH 18 /* width of the hue ring */ +#define ICB_MARKSIZE 6 /* size of the cursor mark */ +enum {ICB_INSIDE_NONE, ICB_INSIDE_HUE, ICB_INSIDE_SI}; + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + /* mouse interaction state */ + int h_down, + si_down; + + /* cursor positioning */ + int h_x, h_y, + si_x, si_y; + + /* HSI-XY coordinate convertion */ + int xc, yc, /* center */ + R, /* maximum radius available inside the size of the control */ + Ix, /* x coordinate where S is 0 */ + Iy1, /* y coordinate where I is 0 */ + Iy2, /* y coordinate where I is 1 */ + SxMax; /* x coordinate where S is 1 and I = 0.5 */ + + /* visual appearance control */ + int w, h; + int has_focus; + long bgcolor; + + /* attributes */ + float hue, /* 0<=H<=359 */ + saturation, /* 0<=S<=1 */ + intensity; /* 0<=I<=1 */ + unsigned char red, green, blue; /* 0<=x<=255 */ + + cdCanvas *cddbuffer; + cdCanvas *cdcanvas; +}; + + +static float iColorBrowserSXmax(Ihandle* ih, int y) +{ + if (y == ih->data->yc) + return (float)(ih->data->SxMax - ih->data->Ix); + else if (y < ih->data->yc) + { + float D2 = (ih->data->Iy2 - ih->data->Iy1)/2.0f; + return ((float)(ih->data->SxMax - ih->data->Ix)*(y-ih->data->yc + D2))/D2; + } + else + { + float D2 = (ih->data->Iy2 - ih->data->Iy1)/2.0f; + return -((float)(ih->data->SxMax - ih->data->Ix)*(y-ih->data->yc - D2))/D2; + } +} + +static float iColorBrowserCalcIntensity(Ihandle* ih, int y) +{ + return (float)(y - ih->data->Iy1)/(float)(ih->data->Iy2 - ih->data->Iy1); +} + +static float iColorBrowserCalcSaturation(Ihandle* ih, int x, float sx_max) +{ + if (sx_max == 0) + return 0; + else + return (float)(x - ih->data->Ix)/sx_max; +} + +/* Rotate points of 60 degrees */ +static void iColorBrowserRotatePoints(float *x1, float *y1, float *x2, float *y2, int xc, int yc) +{ + float xt, yt; + float nxt, nyt; + static const float s60 = 0.8660254f; + static const float c60 = 0.5f; + + xt = *x1 - xc; + yt = *y1 - yc; + nxt = xt * c60 - yt * s60; + nyt = xt * s60 + yt * c60; + *x1 = nxt + xc; + *y1 = nyt + yc; + + xt = *x2 - xc; + yt = *y2 - yc; + nxt = xt * c60 - yt * s60; + nyt = xt * s60 + yt * c60; + *x2 = nxt + xc; + *y2 = nyt + yc; +} + +static void iColorBrowserRenderImageHue(Ihandle* ih) +{ + int x, y, active = 1; + unsigned char *red, *green, *blue; + unsigned char bg_red, bg_green, bg_blue; + if (!ih->data->cddbuffer) + return; + + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + + if (!iupdrvIsActive(ih)) + active = 0; + + if (ih->data->has_focus) + cdDrawFocusRect(ih->data->cddbuffer, 0, 0, ih->data->w-1, ih->data->h-1); + + red = cdRedImage(ih->data->cddbuffer); + green = cdGreenImage(ih->data->cddbuffer); + blue = cdBlueImage(ih->data->cddbuffer); + + cdDecodeColor(ih->data->bgcolor, &bg_red, &bg_green, &bg_blue); + + for (y = 0; y < ih->data->h; y++) + { + float sx_max = iColorBrowserSXmax(ih, y); + + for (x = 0; x < ih->data->w; x++) + { + int xl, yl; + float radius, diff1, diff2; + + if (y > ih->data->Iy1 && + y < ih->data->Iy2 && + x > ih->data->Ix && + x < ih->data->Ix+(int)sx_max) + continue; + + xl = x - ih->data->xc; + yl = y - ih->data->yc; + radius = sqrtf(xl*xl + yl*yl); + + diff1 = radius - (ih->data->R-ICB_SPACE-ICB_HUEWIDTH); + diff2 = (ih->data->R-ICB_SPACE) - radius; + + if (diff1>0 && diff2>0) + { + float h, s, i; + int offset = y*ih->data->w + x; + unsigned char* r = red + offset; + unsigned char* g = green + offset; + unsigned char* b = blue + offset; + + h = atan2f(yl, xl); + h = (float)(h * CD_RAD2DEG); + s = 1.0f; /* maximum saturation */ + i = 0.5f; /* choose I where S is maximum */ + + iupColorHSI2RGB(h, s, i, r, g, b); + + if (diff1<1 || diff2<1) /* anti-aliasing */ + { + float diff = (float)(diff1<1? diff1: diff2); + *r = (unsigned char)((*r)*diff + bg_red*(1.0f-diff)); + *g = (unsigned char)((*g)*diff + bg_green*(1.0f-diff)); + *b = (unsigned char)((*b)*diff + bg_blue*(1.0f-diff)); + } + + if (!active) + { + *r = cdIupLIGTHER(*r); + *g = cdIupLIGTHER(*g); + *b = cdIupLIGTHER(*b); + } + } + } + } + + if (active) + { + float x1, x2, y1, y2; + unsigned char shade_lr, shade_lg, shade_lb, + shade_dr, shade_dg, shade_db; + shade_dr = (unsigned char)((2 * bg_red) / 3); + shade_dg = (unsigned char)((2 * bg_green) / 3); + shade_db = (unsigned char)((2 * bg_blue) / 3); + shade_lr = (unsigned char)((255 + bg_red) / 2); + shade_lg = (unsigned char)((255 + bg_green) / 2); + shade_lb = (unsigned char)((255 + bg_blue) / 2); + cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_dr, shade_dg, shade_db)); + x1 = (float)(ih->data->xc-ih->data->R+ICB_SPACE); y1 = (float)ih->data->yc; x2 = (float)(x1+ICB_HUEWIDTH/2); y2 = (float)ih->data->yc; + cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2); + iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc); + cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_lr, shade_lg, shade_lb)); + cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2); + iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc); + cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_dr, shade_dg, shade_db)); + cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2); + iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc); + cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_lr, shade_lg, shade_lb)); + cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2); + iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc); + cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(shade_dr, shade_dg, shade_db)); + cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2); + iColorBrowserRotatePoints(&x1, &y1, &x2, &y2, ih->data->xc, ih->data->yc); + cdCanvasLine(ih->data->cddbuffer, (int) x1, (int) y1, (int) x2, (int) y2); + } +} + +static void iColorBrowserRenderImageSI(Ihandle* ih) +{ + int x, y, active = 1; + unsigned char *red, *green, *blue; + unsigned char bg_red, bg_green, bg_blue; + float angle, cos_angle, sin_angle; + if (!ih->data->cddbuffer) + return; + + if (!iupdrvIsActive(ih)) + active = 0; + + red = cdRedImage(ih->data->cddbuffer); + green = cdGreenImage(ih->data->cddbuffer); + blue = cdBlueImage(ih->data->cddbuffer); + + cdDecodeColor(ih->data->bgcolor, &bg_red, &bg_green, &bg_blue); + + angle = ih->data->hue * ICB_DEG2RAD; + cos_angle = cosf(angle); + sin_angle = sinf(angle); + + for (y = 0; y < ih->data->h; y++) + { + float sx_max, i; + + if (y < ih->data->Iy1) + continue; + else if (y > ih->data->Iy2) + continue; + + sx_max = iColorBrowserSXmax(ih, y); + i = iColorBrowserCalcIntensity(ih, y); + + for (x = 0; x < ih->data->w; x++) + { + if (x < ih->data->Ix) + continue; + else if (x > ih->data->Ix+(int)sx_max) + continue; + + { + int offset = y*ih->data->w + x; + unsigned char* r = red + offset; + unsigned char* g = green + offset; + unsigned char* b = blue + offset; + float s, diff; + + s = iColorBrowserCalcSaturation(ih, x, sx_max); + + iupColorHSI2RGB(ih->data->hue, s, i, r, g, b); + + diff = sx_max - (float)(x - ih->data->Ix); + if (diff<1.0f) /* anti-aliasing */ + { + *r = (unsigned char)((*r)*diff + bg_red*(1.0f-diff)); + *g = (unsigned char)((*g)*diff + bg_green*(1.0f-diff)); + *b = (unsigned char)((*b)*diff + bg_blue*(1.0f-diff)); + } + + if (!active) + { + *r = cdIupLIGTHER(*r); + *g = cdIupLIGTHER(*g); + *b = cdIupLIGTHER(*b); + } + } + } + } +} + +static void iColorBrowserUpdateCursorSI(Ihandle* ih) +{ + int x; + int y = (int)(ih->data->intensity*(ih->data->Iy2 - ih->data->Iy1)) + ih->data->Iy1; + ih->data->si_y = iupROUND(y); + x = (int)(ih->data->saturation*iColorBrowserSXmax(ih, ih->data->si_y)) + ih->data->Ix; + ih->data->si_x = iupROUND(x); +} + +static void iColorBrowserSetCursorSI(Ihandle* ih, int x, int y) +{ + float sx_max; + + if (y < ih->data->Iy1) + ih->data->si_y = ih->data->Iy1; + else if (y > ih->data->Iy2) + ih->data->si_y = ih->data->Iy2; + else + ih->data->si_y = y; + + sx_max = iColorBrowserSXmax(ih, ih->data->si_y); + + if (x < ih->data->Ix) + ih->data->si_x = ih->data->Ix; + else if (x > ih->data->Ix+sx_max) + ih->data->si_x = ih->data->Ix+(int)sx_max; + else + ih->data->si_x = x; + + ih->data->intensity = iColorBrowserCalcIntensity(ih, ih->data->si_y); + ih->data->saturation = iColorBrowserCalcSaturation(ih, ih->data->si_x, sx_max); + + if (ih->data->saturation == -0.0f) + ih->data->saturation = 0; + if (ih->data->intensity == -0.0f) + ih->data->intensity = 0; +} + +static void iColorBrowserUpdateCursorHue(Ihandle* ih) +{ + int rc = ih->data->R-ICB_SPACE-ICB_HUEWIDTH/2; + float angle = ih->data->hue * ICB_DEG2RAD; + float cos_angle = cosf(angle); + float sin_angle = sinf(angle); + float x = rc*cos_angle + ih->data->xc; + float y = rc*sin_angle + ih->data->yc; + ih->data->h_x = iupROUND(x); + ih->data->h_y = iupROUND(y); +} + +static void iColorBrowserSetCursorHue(Ihandle* ih, int x, int y) +{ + int xl = x - ih->data->xc; + int yl = y - ih->data->yc; + ih->data->hue = (float)(atan2f(yl, xl) * CD_RAD2DEG); + ih->data->hue = fmodf(ih->data->hue, 360.0f); + if (ih->data->hue < 0.0f) + ih->data->hue += 360.0f; + + iColorBrowserUpdateCursorHue(ih); +} + +static int iColorBrowserCheckInside(Ihandle* ih, int x, int y) +{ + int xl = x - ih->data->xc; + int yl = y - ih->data->yc; + float radius = sqrtf(xl*xl + yl*yl); + + if (radius < ih->data->R-ICB_SPACE-ICB_HUEWIDTH-ICB_SPACE) + return ICB_INSIDE_SI; + + if (radius > ih->data->R-ICB_SPACE-ICB_HUEWIDTH && + radius < ih->data->R-ICB_SPACE) + return ICB_INSIDE_HUE; + + return ICB_INSIDE_NONE; +} + +static void iColorBrowserHSI2RGB(Ihandle* ih) +{ + iupColorHSI2RGB(ih->data->hue, ih->data->saturation, ih->data->intensity, + &(ih->data->red), &(ih->data->green), &(ih->data->blue)); +} + +static void iColorBrowserRGB2HSI(Ihandle* ih) +{ + iupColorRGB2HSI(ih->data->red, ih->data->green, ih->data->blue, + &(ih->data->hue), &(ih->data->saturation), &(ih->data->intensity)); +} + +static void iColorBrowserUpdateDisplay(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return; + + cdCanvasFlush(ih->data->cddbuffer); /* swap the RGB to the display canvas */ + + if (iupdrvIsActive(ih)) + { + cdCanvasForeground(ih->data->cdcanvas, CD_GRAY); + cdCanvasArc(ih->data->cdcanvas, ih->data->h_x+1, ih->data->h_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360); + cdCanvasArc(ih->data->cdcanvas, ih->data->si_x+1, ih->data->si_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360); + cdCanvasForeground(ih->data->cdcanvas, CD_WHITE); + cdCanvasArc(ih->data->cdcanvas, ih->data->h_x, ih->data->h_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360); + cdCanvasArc(ih->data->cdcanvas, ih->data->si_x, ih->data->si_y, ICB_MARKSIZE, ICB_MARKSIZE, 0, 360); + } + else + { + cdCanvasForeground(ih->data->cdcanvas, CD_DARK_GRAY); + cdCanvasSector(ih->data->cdcanvas, ih->data->h_x, ih->data->h_y, ICB_MARKSIZE+1, ICB_MARKSIZE+1, 0, 360); + cdCanvasSector(ih->data->cdcanvas, ih->data->si_x, ih->data->si_y, ICB_MARKSIZE+1, ICB_MARKSIZE+1, 0, 360); + } +} + +static void iColorBrowserCallChangeCb(Ihandle* ih) +{ + IFnccc change_cb = (IFnccc) IupGetCallback(ih, "CHANGE_CB"); + if (change_cb) + change_cb(ih, ih->data->red, ih->data->green, ih->data->blue); + + iupBaseCallValueChangedCb(ih); +} + +static void iColorBrowserCallDragCb(Ihandle* ih) +{ + IFnccc drag_cb = (IFnccc) IupGetCallback(ih, "DRAG_CB"); + if (drag_cb) + drag_cb(ih, ih->data->red, ih->data->green, ih->data->blue); + + iupBaseCallValueChangedCb(ih); +} + +static int iColorBrowserHmouse(Ihandle* ih, int x, int y, int drag) +{ + iColorBrowserSetCursorHue(ih, x, y); + iColorBrowserHSI2RGB(ih); + /* must update the Si area */ + iColorBrowserRenderImageSI(ih); + iColorBrowserUpdateDisplay(ih); + + if (drag) + iColorBrowserCallDragCb(ih); + else + iColorBrowserCallChangeCb(ih); + + return IUP_DEFAULT; +} + +static int iColorBrowserSImouse(Ihandle* ih, int x, int y, int drag) +{ + iColorBrowserSetCursorSI(ih, x, y); + iColorBrowserHSI2RGB(ih); + iColorBrowserUpdateDisplay(ih); + + if (drag) + iColorBrowserCallDragCb(ih); + else + iColorBrowserCallChangeCb(ih); + + return IUP_DEFAULT; +} + + +/******************************************************************/ + + +static int iColorBrowserButton_CB(Ihandle* ih, int b, int press, int x, int y) +{ + if (b != IUP_BUTTON1) + return IUP_DEFAULT; + + cdCanvasUpdateYAxis(ih->data->cdcanvas, &y); + + if (press) + { + int inside = iColorBrowserCheckInside(ih, x, y); + + if (!ih->data->h_down && inside==ICB_INSIDE_HUE) + { + iColorBrowserHmouse(ih, x, y, 1); + ih->data->h_down = 1; + } + + if (!ih->data->si_down && inside==ICB_INSIDE_SI) + { + iColorBrowserSImouse(ih, x, y, 1); + ih->data->si_down = 1; + } + } + else + { + if (ih->data->h_down) + { + iColorBrowserHmouse(ih, x, y, 0); + ih->data->h_down = 0; + } + + if (ih->data->si_down) + { + iColorBrowserSImouse(ih, x, y, 0); + ih->data->si_down = 0; + } + } + + return IUP_DEFAULT; +} + +/* Callback for the mouse motion in the canvas */ +static int iColorBrowserMotion_CB(Ihandle* ih, int x, int y, char *status) +{ + if (!iup_isbutton1(status)) + { + ih->data->h_down = 0; + ih->data->si_down = 0; + return IUP_DEFAULT; + } + + if (ih->data->h_down) + { + cdCanvasUpdateYAxis(ih->data->cdcanvas, &y); + iColorBrowserHmouse(ih, x, y, 1); + } + else if (ih->data->si_down) + { + cdCanvasUpdateYAxis(ih->data->cdcanvas, &y); + iColorBrowserSImouse(ih, x, y, 1); + } + + return IUP_DEFAULT; +} + +static int iColorBrowserFocus_CB(Ihandle* ih, int focus) +{ + ih->data->has_focus = focus; + iColorBrowserRenderImageHue(ih); + iColorBrowserRenderImageSI(ih); + iColorBrowserUpdateDisplay(ih); + return IUP_DEFAULT; +} + +static void iColorBrowserUpdateSize(Ihandle* ih) +{ + int T, D; + + /* update canvas size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL); + + ih->data->R = min(ih->data->w, ih->data->h)/2; + ih->data->xc = ih->data->w/2; + ih->data->yc = ih->data->h/2; + T = ih->data->R-ICB_SPACE-ICB_HUEWIDTH-ICB_SPACE; + ih->data->Ix = ih->data->xc - T/2; /* cos(60)=0.5 */ + D = (int)(2*T*0.866); /* sin(60)=0.866 */ + ih->data->Iy1 = ih->data->yc - D/2; + ih->data->Iy2 = ih->data->Iy1 + D; + ih->data->SxMax = ih->data->xc + T; +} + +static int iColorBrowserResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update size */ + iColorBrowserUpdateSize(ih); + + iColorBrowserUpdateCursorHue(ih); + iColorBrowserUpdateCursorSI(ih); + + /* update render */ + iColorBrowserRenderImageHue(ih); + iColorBrowserRenderImageSI(ih); + + return IUP_DEFAULT; +} + +static int iColorBrowserRedraw_CB(Ihandle* ih) +{ + iColorBrowserUpdateDisplay(ih); + return IUP_DEFAULT; +} + +static int iColorBrowserWheel_CB(Ihandle* ih, float delta) +{ + ih->data->hue += delta; + + iColorBrowserUpdateCursorHue(ih); + iColorBrowserHSI2RGB(ih); + /* must update the Si area */ + iColorBrowserRenderImageSI(ih); + iColorBrowserUpdateDisplay(ih); + iColorBrowserCallChangeCb(ih); + + return IUP_DEFAULT; +} + +static int iColorBrowserKeypress_CB(Ihandle* ih, int c, int press) +{ + int x, y, changing_hue = 0; + + if (!press) + return IUP_DEFAULT; + + x = ih->data->si_x; + y = ih->data->si_y; + + switch (c) + { + case K_UP: + y++; + break; + case K_DOWN: + y--; + break; + case K_RIGHT: + x++; + break; + case K_LEFT: + x--; + break; + case K_PGUP: + ih->data->hue += 1.0f; + changing_hue = 1; + break; + case K_PGDN: + ih->data->hue -= 1.0f; + changing_hue = 1; break; + case K_HOME: + ih->data->hue = 0.0f; + changing_hue = 1; + break; + case K_END: + ih->data->hue = 180.0f; + changing_hue = 1; + break; + default: + return IUP_DEFAULT; + } + + if (changing_hue) + { + iColorBrowserUpdateCursorHue(ih); + /* must update the Si area */ + iColorBrowserRenderImageSI(ih); + } + else + iColorBrowserSetCursorSI(ih, x, y); + + iColorBrowserHSI2RGB(ih); + + iColorBrowserUpdateDisplay(ih); + iColorBrowserCallChangeCb(ih); + + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ +} + + +/*********************************************************************************/ + + +static char* iColorBrowserGetHSIAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + sprintf(buffer, "%f %f %f", (double)ih->data->hue, (double)ih->data->saturation, (double)ih->data->intensity); + return buffer; +} + +static int iColorBrowserSetHSIAttrib(Ihandle* ih, const char* value) +{ + float old_hue = ih->data->hue, + old_saturation = ih->data->saturation, + old_intensity = ih->data->intensity; + + if (!iupStrToHSI(value, &ih->data->hue, &ih->data->saturation, &ih->data->intensity)) + return 0; + + if (ih->data->cddbuffer) + { + if (old_hue != ih->data->hue) + iColorBrowserUpdateCursorHue(ih); + if (old_saturation != ih->data->saturation || old_intensity != ih->data->intensity) + iColorBrowserUpdateCursorSI(ih); + iColorBrowserHSI2RGB(ih); + iColorBrowserRenderImageSI(ih); + iColorBrowserUpdateDisplay(ih); + } + + return 0; +} + +static char* iColorBrowserGetRGBAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(20); + sprintf(buffer, "%d %d %d", (int) ih->data->red, (int) ih->data->green, (int) ih->data->blue); + return buffer; +} + +static int iColorBrowserSetRGBAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + + ih->data->red = r; + ih->data->green = g; + ih->data->blue = b; + iColorBrowserRGB2HSI(ih); + + if (ih->data->cddbuffer) + { + iColorBrowserUpdateCursorHue(ih); + iColorBrowserUpdateCursorSI(ih); + iColorBrowserRenderImageSI(ih); + iColorBrowserUpdateDisplay(ih); + } + + return 0; +} + +static int iColorBrowserSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = iupControlBaseGetParentBgColor(ih); + ih->data->bgcolor = cdIupConvertColor(value); + + if (ih->data->cddbuffer) + { + iColorBrowserRenderImageHue(ih); + iColorBrowserRenderImageSI(ih); + iColorBrowserUpdateDisplay(ih); + } + return 1; +} + +static int iColorBrowserSetActiveAttrib(Ihandle* ih, const char* value) +{ + iupBaseSetActiveAttrib(ih, value); + iColorBrowserUpdateDisplay(ih); + return 0; /* do not store value in hash table */ +} + + +/****************************************************************************/ + + +static int iColorBrowserMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, ih->data->cdcanvas); + + if (ih->data->cddbuffer) + iColorBrowserUpdateSize(ih); + + return IUP_NOERROR; +} + +static void iColorBrowserUnMapMethod(Ihandle* ih) +{ + if (ih->data->cddbuffer) + cdKillCanvas(ih->data->cddbuffer); + + if (ih->data->cdcanvas) + cdKillCanvas(ih->data->cdcanvas); +} + +static int iColorBrowserCreateMethod(Ihandle* ih, void **params) +{ + (void)params; + + /* free the data allocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + IupSetfAttribute(ih, "RASTERSIZE", "%dx%d", ICB_DEFAULTSIZE, ICB_DEFAULTSIZE); + iupAttribSetStr(ih, "BORDER", "NO"); + ih->expand = IUP_EXPAND_NONE; + + /* IupCanvas callbacks */ + IupSetCallback(ih, "ACTION", (Icallback)iColorBrowserRedraw_CB); + IupSetCallback(ih, "RESIZE_CB", (Icallback)iColorBrowserResize_CB); + IupSetCallback(ih, "BUTTON_CB", (Icallback)iColorBrowserButton_CB); + IupSetCallback(ih, "MOTION_CB", (Icallback)iColorBrowserMotion_CB); + IupSetCallback(ih, "FOCUS_CB", (Icallback)iColorBrowserFocus_CB); + IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iColorBrowserKeypress_CB); + IupSetCallback(ih, "WHEEL_CB", (Icallback)iColorBrowserWheel_CB); + + return IUP_NOERROR; +} + +Iclass* iupColorBrowserGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "colorbrowser"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iColorBrowserCreateMethod; + ic->Map = iColorBrowserMapMethod; + ic->UnMap = iColorBrowserUnMapMethod; + + /* IupColorBrowser Callbacks */ + iupClassRegisterCallback(ic, "DRAG_CB", "ccc"); + iupClassRegisterCallback(ic, "CHANGE_CB", "ccc"); + iupClassRegisterCallback(ic, "VALUECHANGED_CB", ""); + + /* IupColorBrowser only */ + iupClassRegisterAttribute(ic, "RGB", iColorBrowserGetRGBAttrib, iColorBrowserSetRGBAttrib, "255 0 0", NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* force new default value */ + iupClassRegisterAttribute(ic, "HSI", iColorBrowserGetHSIAttrib, iColorBrowserSetHSIAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iColorBrowserSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iColorBrowserSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */ + + return ic; +} + +Ihandle *IupColorBrowser(void) +{ + return IupCreate("colorbrowser"); +} diff --git a/iup/srccontrols/color/iup_colorbrowserdlg.c b/iup/srccontrols/color/iup_colorbrowserdlg.c new file mode 100755 index 0000000..65e4d37 --- /dev/null +++ b/iup/srccontrols/color/iup_colorbrowserdlg.c @@ -0,0 +1,1120 @@ +/** \file + * \brief IupColorDlg pre-defined dialog control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" +#include "iupcontrols.h" + +#include +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_strmessage.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_cdutil.h" +#include "iup_register.h" +#include "iup_register.h" +#include "iup_image.h" +#include "iup_colorhsi.h" +#include "iup_childtree.h" + + +const char* default_colortable_cells[20] = +{ + "0 0 0", "64 64 64", "128 128 128", "144 144 144", "0 128 128", "128 0 128", "128 128 0", "128 0 0", "0 128 0", "0 0 128", + "255 255 255", "240 240 240", "224 224 224", "192 192 192", "0 255 255", "255 0 255", "255 255 0", "255 0 0", "0 255 0", "0 0 255" +}; + +typedef struct _IcolorDlgData +{ + int status; + + long previous_color, color; + + float hue, saturation, intensity; + unsigned char red, green, blue, alpha; + + Ihandle *red_txt, *green_txt, *blue_txt, *alpha_txt; + Ihandle *hue_txt, *intensity_txt, *saturation_txt; + Ihandle *color_browser, *color_cnv, *colorhex_txt; + Ihandle *colortable_cbar, *alpha_val; + Ihandle *help_bt; + + cdCanvas* color_cdcanvas, *color_cddbuffer; +} IcolorDlgData; + + +static void iColorBrowserDlgColorCnvRepaint(IcolorDlgData* colordlg_data) +{ + int x, y, w, h, width, height, box_size = 10; + + if (!colordlg_data->color_cddbuffer) + return; + + cdCanvasGetSize(colordlg_data->color_cddbuffer, &width, &height, NULL, NULL); + + cdCanvasBackground(colordlg_data->color_cddbuffer, CD_WHITE); + cdCanvasClear(colordlg_data->color_cddbuffer); + + w = (width+box_size-1)/box_size; + h = (height+box_size-1)/box_size; + + cdCanvasForeground(colordlg_data->color_cddbuffer, CD_GRAY); + + for (y = 0; y < h; y++) + { + for (x = 0; x < w; x++) + { + if (((x%2) && (y%2)) || (((x+1)%2) && ((y+1)%2))) + { + int xmin, xmax, ymin, ymax; + + xmin = x*box_size; + xmax = xmin+box_size; + ymin = y*box_size; + ymax = ymin+box_size; + + cdCanvasBox(colordlg_data->color_cddbuffer, xmin, xmax, ymin, ymax); + } + } + } + + cdCanvasForeground(colordlg_data->color_cddbuffer, colordlg_data->previous_color); + cdCanvasBox(colordlg_data->color_cddbuffer, 0, width/2, 0, height); + + cdCanvasForeground(colordlg_data->color_cddbuffer, colordlg_data->color); + cdCanvasBox(colordlg_data->color_cddbuffer, width/2+1, width, 0, height); + + cdCanvasFlush(colordlg_data->color_cddbuffer); +} + +static void iColorBrowserDlgHSI2RGB(IcolorDlgData* colordlg_data) +{ + iupColorHSI2RGB(colordlg_data->hue, colordlg_data->saturation, colordlg_data->intensity, + &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue); +} + +static void iColorBrowserDlgRGB2HSI(IcolorDlgData* colordlg_data) +{ + iupColorRGB2HSI(colordlg_data->red, colordlg_data->green, colordlg_data->blue, + &(colordlg_data->hue), &(colordlg_data->saturation), &(colordlg_data->intensity)); +} + +static void iColorBrowserDlgHex_TXT_Update(IcolorDlgData* colordlg_data) +{ + IupSetfAttribute(colordlg_data->colorhex_txt, "VALUE", "#%02X%02X%02X", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue); +} + +static int iupStrHexToRGB(const char *str, unsigned char *r, unsigned char *g, unsigned char *b) +{ + unsigned int ri = 0, gi = 0, bi = 0; + if (!str) return 0; + if (sscanf(str, "#%2X%2X%2X", &ri, &gi, &bi) != 3) return 0; + if (ri > 255 || gi > 255 || bi > 255) return 0; + *r = (unsigned char)ri; + *g = (unsigned char)gi; + *b = (unsigned char)bi; + return 1; +} + +/*************************************************\ +* Updates text fields with the current HSI values * +\*************************************************/ +static void iColorBrowserDlgHSI_TXT_Update(IcolorDlgData* colordlg_data) +{ + IupSetfAttribute(colordlg_data->hue_txt, "VALUE", "%d", iupROUND(colordlg_data->hue)); + IupSetfAttribute(colordlg_data->saturation_txt, "VALUE", "%d", iupROUND(colordlg_data->saturation * 100)); + IupSetfAttribute(colordlg_data->intensity_txt, "VALUE", "%d", iupROUND(colordlg_data->intensity * 100)); +} + +/*************************************************\ +* Updates text fields with the current RGB values * +\*************************************************/ +static void iColorBrowserDlgRGB_TXT_Update(IcolorDlgData* colordlg_data) +{ + IupSetfAttribute(colordlg_data->red_txt, "VALUE", "%d", (int) colordlg_data->red); + IupSetfAttribute(colordlg_data->green_txt, "VALUE", "%d", (int) colordlg_data->green); + IupSetfAttribute(colordlg_data->blue_txt, "VALUE", "%d", (int) colordlg_data->blue); +} + +static void iColorBrowserDlgBrowserRGB_Update(IcolorDlgData* colordlg_data) +{ + IupSetfAttribute(colordlg_data->color_browser, "RGB", "%d %d %d", colordlg_data->red, colordlg_data->green, colordlg_data->blue); +} + +static void iColorBrowserDlgBrowserHSI_Update(IcolorDlgData* colordlg_data) +{ + IupSetfAttribute(colordlg_data->color_browser, "HSI", "%f %f %f", (double)colordlg_data->hue, (double)colordlg_data->saturation, (double)colordlg_data->intensity); +} + +/*****************************************\ +* Sets the RGB color in the Color Canvas * +\*****************************************/ +static void iColorBrowserDlgColor_Update(IcolorDlgData* colordlg_data) +{ + colordlg_data->color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue); + colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha); + iColorBrowserDlgColorCnvRepaint(colordlg_data); +} + +static void iColorBrowserDlgHSIChanged(IcolorDlgData* colordlg_data) +{ + iColorBrowserDlgHSI2RGB(colordlg_data); + iColorBrowserDlgBrowserHSI_Update(colordlg_data); + iColorBrowserDlgHex_TXT_Update(colordlg_data); + iColorBrowserDlgRGB_TXT_Update(colordlg_data); + iColorBrowserDlgColor_Update(colordlg_data); +} + +static void iColorBrowserDlgRGBChanged(IcolorDlgData* colordlg_data) +{ + iColorBrowserDlgRGB2HSI(colordlg_data); + iColorBrowserDlgBrowserRGB_Update(colordlg_data); + iColorBrowserDlgHex_TXT_Update(colordlg_data); + iColorBrowserDlgHSI_TXT_Update(colordlg_data); + iColorBrowserDlgColor_Update(colordlg_data); +} + +/***********************************************\ +* Initializes the default values to the element * +\***********************************************/ +static void iColorBrowserDlgInit_Defaults(IcolorDlgData* colordlg_data) +{ + char* str = iupStrGetMemory(100); + Ihandle* box; + int i; + + IupSetAttribute(colordlg_data->color_browser, "RGB", "0 0 0"); + + IupSetAttribute(colordlg_data->red_txt, "VALUE", "0"); + IupSetAttribute(colordlg_data->green_txt, "VALUE", "0"); + IupSetAttribute(colordlg_data->blue_txt, "VALUE", "0"); + + IupSetAttribute(colordlg_data->hue_txt, "VALUE", "0"); + IupSetAttribute(colordlg_data->saturation_txt, "VALUE", "0"); + IupSetAttribute(colordlg_data->intensity_txt, "VALUE", "0"); + + IupSetAttribute(colordlg_data->colorhex_txt, "VALUE", "#000000"); + + colordlg_data->alpha = 255; + IupSetAttribute(colordlg_data->alpha_val, "VALUE", "255"); + IupSetAttribute(colordlg_data->alpha_txt, "VALUE", "255"); + + box = IupGetParent(colordlg_data->alpha_val); + IupSetAttribute(box, "FLOATING", "YES"); + IupSetAttribute(box, "VISIBLE", "NO"); + + box = IupGetParent(colordlg_data->colortable_cbar); + IupSetAttribute(box, "FLOATING", "YES"); + IupSetAttribute(box, "VISIBLE", "NO"); + + box = IupGetParent(colordlg_data->colorhex_txt); + IupSetAttribute(box, "FLOATING", "YES"); + IupSetAttribute(box, "VISIBLE", "NO"); + + for(i = 0; i < 20; i++) + { + sprintf(str, "CELL%d", i); + IupSetAttribute(colordlg_data->colortable_cbar, str, default_colortable_cells[i]); + } +} + + +/**************************************************************************************************************/ +/* Internal Callbacks */ +/**************************************************************************************************************/ + + +static int iColorBrowserDlgButtonOK_CB(Ihandle* ih) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + colordlg_data->status = 1; + return IUP_CLOSE; +} + +static int iColorBrowserDlgButtonCancel_CB(Ihandle* ih) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + colordlg_data->status = 0; + return IUP_CLOSE; +} + +static int iColorBrowserDlgButtonHelp_CB(Ihandle* ih) +{ + Icallback cb = IupGetCallback(IupGetDialog(ih), "HELP_CB"); + if (cb && cb(ih) == IUP_CLOSE) + { + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + colordlg_data->status = 0; + return IUP_CLOSE; + } + return IUP_DEFAULT; +} + +static int iColorBrowserDlgColorCnvRedraw_CB(Ihandle* ih) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + if (!colordlg_data->color_cddbuffer) + return IUP_DEFAULT; + + cdCanvasActivate(colordlg_data->color_cddbuffer); + + iColorBrowserDlgColorCnvRepaint(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgRedAction_CB(Ihandle* ih, int c, char *value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int vi; + + if (iupStrToInt(value, &vi)) + { + colordlg_data->red = (unsigned char)vi; + iColorBrowserDlgRGBChanged(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgRedSpin_CB(Ihandle* ih, int vi) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->red = (unsigned char)vi; + iColorBrowserDlgRGBChanged(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgGreenAction_CB(Ihandle* ih, int c, char *value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int vi; + + if (iupStrToInt(value, &vi)) + { + colordlg_data->green = (unsigned char)vi; + iColorBrowserDlgRGBChanged(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgGreenSpin_CB(Ihandle* ih, int vi) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->green = (unsigned char)vi; + iColorBrowserDlgRGBChanged(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgBlueAction_CB(Ihandle* ih, int c, char *value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int vi; + + if (iupStrToInt(value, &vi)) + { + colordlg_data->blue = (unsigned char)vi; + iColorBrowserDlgRGBChanged(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgBlueSpin_CB(Ihandle* ih, int vi) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->blue = (unsigned char)vi; + iColorBrowserDlgRGBChanged(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgHueAction_CB(Ihandle* ih, int c, char *value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int vi; + + if (iupStrToInt(value, &vi)) + { + colordlg_data->hue = (float)vi; + iColorBrowserDlgHSIChanged(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgHueSpin_CB(Ihandle* ih, int vi) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->hue = (float)vi; + iColorBrowserDlgHSIChanged(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgSaturationAction_CB(Ihandle* ih, int c, char *value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int vi; + + if (iupStrToInt(value, &vi)) + { + colordlg_data->saturation = (float)vi/100.0f; + iColorBrowserDlgHSIChanged(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgSaturationSpin_CB(Ihandle* ih, int vi) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->saturation = (float)vi/100.0f; + iColorBrowserDlgHSIChanged(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgIntensityAction_CB(Ihandle* ih, int c, char *value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int vi; + + if (iupStrToInt(value, &vi)) + { + colordlg_data->intensity = (float)vi/100.0f; + iColorBrowserDlgHSIChanged(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgIntensitySpin_CB(Ihandle* ih, int vi) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->intensity = (float)vi/100.0f; + iColorBrowserDlgHSIChanged(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgHexAction_CB(Ihandle* ih, int c, char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + if (iupStrHexToRGB(value, &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue)) + { + iColorBrowserDlgRGB2HSI(colordlg_data); + iColorBrowserDlgBrowserRGB_Update(colordlg_data); + iColorBrowserDlgHSI_TXT_Update(colordlg_data); + iColorBrowserDlgRGB_TXT_Update(colordlg_data); + iColorBrowserDlgColor_Update(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgColorSelDrag_CB(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->red = r; + colordlg_data->green = g; + colordlg_data->blue = b; + + iColorBrowserDlgRGB2HSI(colordlg_data); + iColorBrowserDlgHex_TXT_Update(colordlg_data); + iColorBrowserDlgHSI_TXT_Update(colordlg_data); + iColorBrowserDlgRGB_TXT_Update(colordlg_data); + + colordlg_data->color = cdEncodeColor(colordlg_data->red,colordlg_data->green,colordlg_data->blue); + colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha); + iColorBrowserDlgColorCnvRepaint(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgAlphaVal_CB(Ihandle* ih, double val) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->alpha = (unsigned char)val; + IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha); + + colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha); + iColorBrowserDlgColorCnvRepaint(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgAlphaAction_CB(Ihandle* ih, int c, char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int vi; + + if (iupStrToInt(value, &vi)) + { + colordlg_data->alpha = (unsigned char)vi; + IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha); + + colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha); + iColorBrowserDlgColorCnvRepaint(colordlg_data); + } + + (void)c; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgAlphaSpin_CB(Ihandle* ih, int vi) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + colordlg_data->alpha = (unsigned char)vi; + IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha); + + colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha); + iColorBrowserDlgColorCnvRepaint(colordlg_data); + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgColorTableSelect_CB(Ihandle* ih, int cell, int type) +{ + char* str = iupStrGetMemory(30); + + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + sprintf(str, "CELL%d", cell); + iupStrToRGB(IupGetAttribute(ih, str), &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue); + + iColorBrowserDlgRGB_TXT_Update(colordlg_data); + iColorBrowserDlgRGBChanged(colordlg_data); + + (void)type; + return IUP_DEFAULT; +} + +static int iColorBrowserDlgColorCnvButton_CB(Ihandle* ih, int b, int press, int x, int y) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int width; + (void)y; + + if (b != IUP_BUTTON1 || !press || !colordlg_data->color_cddbuffer) + return IUP_DEFAULT; + + cdCanvasGetSize(colordlg_data->color_cddbuffer, &width, NULL, NULL, NULL); + + if (x < width/2) + { + /* reset color to previous */ + colordlg_data->red = cdRed(colordlg_data->previous_color); + colordlg_data->green = cdGreen(colordlg_data->previous_color); + colordlg_data->blue = cdBlue(colordlg_data->previous_color); + colordlg_data->alpha = cdAlpha(colordlg_data->previous_color); + + IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha); + IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha); + + iColorBrowserDlgRGB_TXT_Update(colordlg_data); + iColorBrowserDlgRGBChanged(colordlg_data); + } + + return IUP_DEFAULT; +} + +static int iColorBrowserDlgColorCnvMap_CB(Ihandle* ih) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + /* Create Canvas */ + colordlg_data->color_cdcanvas = cdCreateCanvas(CD_IUP, colordlg_data->color_cnv); + + if (!colordlg_data->color_cdcanvas) + return IUP_DEFAULT; + + /* this can fail if canvas size is zero */ + colordlg_data->color_cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, colordlg_data->color_cdcanvas); + return IUP_DEFAULT; +} + +static int iColorBrowserDlgColorCnvUnMap_CB(Ihandle* ih) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + if (colordlg_data->color_cddbuffer) + cdKillCanvas(colordlg_data->color_cddbuffer); + + if (colordlg_data->color_cdcanvas) + cdKillCanvas(colordlg_data->color_cdcanvas); + + return IUP_DEFAULT; +} + + +/**************************************************************************************************************/ +/* Attributes */ +/**************************************************************************************************************/ + + +static char* iColorBrowserDlgGetStatusAttrib(Ihandle* ih) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + if (colordlg_data->status) + return "1"; + else + return NULL; +} + +static int iColorBrowserDlgSetShowHelpAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + IupSetAttribute(colordlg_data->help_bt, "VISIBLE", iupStrBoolean(value)? "YES": "NO"); + return 1; +} + +static int iColorBrowserDlgSetShowHexAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + /* valid only before map */ + if (ih->handle) + return 1; + + if (iupStrBoolean(value)) + { + Ihandle* box = IupGetParent(colordlg_data->colorhex_txt); + IupSetAttribute(box, "FLOATING", NULL); + IupSetAttribute(box, "VISIBLE", "YES"); + } + + return 1; +} + +static int iColorBrowserDlgSetShowColorTableAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + /* valid only before map */ + if (ih->handle) + return 1; + + if (iupStrBoolean(value)) + { + Ihandle* box = IupGetParent(colordlg_data->colortable_cbar); + IupSetAttribute(box, "FLOATING", NULL); + IupSetAttribute(box, "VISIBLE", "YES"); + } + + return 1; +} + +static int iColorBrowserDlgSetShowAlphaAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + /* valid only before map */ + if (ih->handle) + return 1; + + if (iupStrBoolean(value)) + { + Ihandle* box = IupGetParent(colordlg_data->alpha_val); + IupSetAttribute(box, "FLOATING", NULL); + IupSetAttribute(box, "VISIBLE", "YES"); + } + + return 1; +} + +static int iColorBrowserDlgSetAlphaAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int alpha; + if (iupStrToInt(value, &alpha)) + { + colordlg_data->alpha = (unsigned char)alpha; + IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha); + IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha); + + colordlg_data->color = cdEncodeAlpha(colordlg_data->color, colordlg_data->alpha); + colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha); + iColorBrowserDlgColorCnvRepaint(colordlg_data); + + if (!ih->handle) /* do it only before map */ + IupSetAttribute(ih, "SHOWALPHA", "YES"); + } + + return 1; +} + +static char* iColorBrowserDlgGetAlphaAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + sprintf(buffer, "%d", (int)colordlg_data->alpha); + return buffer; +} + +static int iColorBrowserDlgSetValueAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int ret = iupStrToRGBA(value, &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue, &colordlg_data->alpha); + if (!ret) + return 0; + + colordlg_data->previous_color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue); + colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha); + + if (ret == 4) + { + IupSetfAttribute(colordlg_data->alpha_txt, "VALUE", "%d", (int)colordlg_data->alpha); + IupSetfAttribute(colordlg_data->alpha_val, "VALUE", "%d", (int)colordlg_data->alpha); + + if (!ih->handle) /* do it only before map */ + IupSetAttribute(ih, "SHOWALPHA", "YES"); + } + + iColorBrowserDlgRGB_TXT_Update(colordlg_data); + iColorBrowserDlgRGBChanged(colordlg_data); + + return 0; +} + +static char* iColorBrowserDlgGetValueAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + if (iupAttribGetBoolean(ih, "SHOWALPHA")) + sprintf(buffer, "%d %d %d %d", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue, (int)colordlg_data->alpha); + else + sprintf(buffer, "%d %d %d", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue); + return buffer; +} + +static int iupStrToHSI_Int(const char *str, int *h, int *s, int *i) +{ + int fh, fs, fi; + if (!str) return 0; + if (sscanf(str, "%d %d %d", &fh, &fs, &fi) != 3) return 0; + if (fh > 359 || fs > 100 || fi > 100) return 0; + if (fh < 0 || fs < 0 || fi < 0) return 0; + *h = fh; + *s = fs; + *i = fi; + return 1; +} + +static int iColorBrowserDlgSetValueHSIAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + int hue, saturation, intensity; + + if (!iupStrToHSI_Int(value, &hue, &saturation, &intensity)) + return 0; + + colordlg_data->hue = (float)hue; + colordlg_data->saturation = (float)saturation/100.0f; + colordlg_data->intensity = (float)intensity/100.0f; + + iColorBrowserDlgHSI2RGB(colordlg_data); + colordlg_data->previous_color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue); + colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha); + + iColorBrowserDlgHSIChanged(colordlg_data); + return 0; +} + +static char* iColorBrowserDlgGetValueHSIAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + sprintf(buffer, "%d %d %d", (int)colordlg_data->hue, (int)(colordlg_data->saturation*100), (int)(colordlg_data->intensity*100)); + return buffer; +} + +static int iColorBrowserDlgSetValueHexAttrib(Ihandle* ih, const char* value) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + if (!iupStrHexToRGB(value, &colordlg_data->red, &colordlg_data->green, &colordlg_data->blue)) + return 0; + + colordlg_data->previous_color = cdEncodeColor(colordlg_data->red, colordlg_data->green, colordlg_data->blue); + colordlg_data->previous_color = cdEncodeAlpha(colordlg_data->previous_color, colordlg_data->alpha); + + iColorBrowserDlgRGB2HSI(colordlg_data); + iColorBrowserDlgBrowserRGB_Update(colordlg_data); + iColorBrowserDlgHSI_TXT_Update(colordlg_data); + iColorBrowserDlgRGB_TXT_Update(colordlg_data); + iColorBrowserDlgColor_Update(colordlg_data); + return 0; +} + +static char* iColorBrowserDlgGetValueHexAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + sprintf(buffer, "#%02X%02X%02X", (int)colordlg_data->red, (int)colordlg_data->green, (int)colordlg_data->blue); + return buffer; +} + +static char* iColorBrowserDlgGetColorTableAttrib(Ihandle* ih) +{ + int i, inc, off = 0; + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + char* color_str, attrib_str[30]; + char* str = iupStrGetMemory(300); + for (i=0; i < 20; i++) + { + sprintf(attrib_str, "CELL%d", i); + color_str = IupGetAttribute(colordlg_data->colortable_cbar, attrib_str); + inc = strlen(color_str); + memcpy(str+off, color_str, inc); + memcpy(str+off+inc, ";", 1); + off += inc+1; + } + str[off-1] = 0; /* remove last separator */ + return str; +} + +static int iColorBrowserDlgSetColorTableAttrib(Ihandle* ih, const char* value) +{ + int i = 0; + unsigned char r, g, b; + char str[30]; + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + + if (!ih->handle) /* do it only before map */ + iColorBrowserDlgSetShowColorTableAttrib(ih, "YES"); + + while (value && *value && i < 20) + { + if (iupStrToRGB(value, &r, &g, &b)) + { + sprintf(str, "CELL%d", i); + IupSetfAttribute(colordlg_data->colortable_cbar, str, "%d %d %d", (int)r, (int)g, (int)b); + } + + value = strchr(value, ';'); + if (value) value++; + i++; + } + + return 1; +} + + +/**************************************************************************************************************/ +/* Methods */ +/**************************************************************************************************************/ + +static int iColorBrowserDlgMapMethod(Ihandle* ih) +{ + if (!IupGetCallback(ih, "HELP_CB")) + { + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + IupSetAttribute(colordlg_data->help_bt, "VISIBLE", "NO"); + } + + return IUP_NOERROR; +} + +static void iColorBrowserDlgDestroyMethod(Ihandle* ih) +{ + IcolorDlgData* colordlg_data = (IcolorDlgData*)iupAttribGetInherit(ih, "_IUP_GC_DATA"); + free(colordlg_data); +} + +static int iColorBrowserDlgCreateMethod(Ihandle* ih, void** params) +{ + Ihandle *ok_bt, *cancel_bt; + Ihandle *rgb_vb, *hsi_vb, *clr_vb; + Ihandle *lin1, *lin2, *col1, *col2; + + IcolorDlgData* colordlg_data = (IcolorDlgData*)malloc(sizeof(IcolorDlgData)); + memset(colordlg_data, 0, sizeof(IcolorDlgData)); + iupAttribSetStr(ih, "_IUP_GC_DATA", (char*)colordlg_data); + + /* ======================================================================= */ + /* BUTTONS ============================================================= */ + /* ======================================================================= */ + ok_bt = IupButton("OK", NULL); /* Ok Button */ + IupSetAttribute(ok_bt, "PADDING", "20x0"); + IupSetCallback (ok_bt, "ACTION", (Icallback)iColorBrowserDlgButtonOK_CB); + IupSetAttributeHandle(ih, "DEFAULTENTER", ok_bt); + + cancel_bt = IupButton(iupStrMessageGet("IUP_CANCEL"), NULL); /* Cancel Button */ + IupSetAttribute(cancel_bt, "PADDING", "20x0"); + IupSetCallback (cancel_bt, "ACTION", (Icallback)iColorBrowserDlgButtonCancel_CB); + IupSetAttributeHandle(ih, "DEFAULTESC", cancel_bt); + + colordlg_data->help_bt = IupButton(iupStrMessageGet("IUP_HELP"), NULL); /* Help Button */ + IupSetAttribute(colordlg_data->help_bt, "PADDING", "20x0"); + IupSetCallback (colordlg_data->help_bt, "ACTION", (Icallback)iColorBrowserDlgButtonHelp_CB); + + /* ======================================================================= */ + /* COLOR =============================================================== */ + /* ======================================================================= */ + colordlg_data->color_browser = IupColorBrowser(); + IupSetAttribute(colordlg_data->color_browser, "EXPAND", "YES"); + IupSetCallback(colordlg_data->color_browser, "DRAG_CB", (Icallback)iColorBrowserDlgColorSelDrag_CB); + IupSetCallback(colordlg_data->color_browser, "CHANGE_CB", (Icallback)iColorBrowserDlgColorSelDrag_CB); + + colordlg_data->color_cnv = IupCanvas(NULL); /* Canvas of the color */ + IupSetAttribute(colordlg_data->color_cnv, "SIZE", "x12"); + IupSetAttribute(colordlg_data->color_cnv, "CANFOCUS", "NO"); + IupSetAttribute(colordlg_data->color_cnv, "EXPAND", "HORIZONTAL"); + IupSetCallback (colordlg_data->color_cnv, "ACTION", (Icallback)iColorBrowserDlgColorCnvRedraw_CB); + IupSetCallback (colordlg_data->color_cnv, "MAP_CB", (Icallback)iColorBrowserDlgColorCnvMap_CB); + IupSetCallback (colordlg_data->color_cnv, "UNMAP_CB", (Icallback)iColorBrowserDlgColorCnvUnMap_CB); + IupSetCallback (colordlg_data->color_cnv, "BUTTON_CB", (Icallback)iColorBrowserDlgColorCnvButton_CB); + + colordlg_data->colorhex_txt = IupText(NULL); /* Hex of the color */ + IupSetAttribute(colordlg_data->colorhex_txt, "VISIBLECOLUMNS", "7"); + IupSetCallback (colordlg_data->colorhex_txt, "ACTION", (Icallback)iColorBrowserDlgHexAction_CB); + IupSetAttribute(colordlg_data->colorhex_txt, "MASK", "#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]"); + + /* ======================================================================= */ + /* ALPHA TRANSPARENCY ================================================== */ + /* ======================================================================= */ + colordlg_data->alpha_val = IupVal("HORIZONTAL"); + IupSetAttribute(colordlg_data->alpha_val, "EXPAND", "HORIZONTAL"); + IupSetAttribute(colordlg_data->alpha_val, "MIN", "0"); + IupSetAttribute(colordlg_data->alpha_val, "MAX", "255"); + IupSetAttribute(colordlg_data->alpha_val, "VALUE", "255"); + IupSetAttribute(colordlg_data->alpha_val, "SIZE", "80x12"); + IupSetCallback (colordlg_data->alpha_val, "MOUSEMOVE_CB", (Icallback)iColorBrowserDlgAlphaVal_CB); + IupSetCallback (colordlg_data->alpha_val, "BUTTON_PRESS_CB", (Icallback)iColorBrowserDlgAlphaVal_CB); + IupSetCallback (colordlg_data->alpha_val, "BUTTON_RELEASE_CB", (Icallback)iColorBrowserDlgAlphaVal_CB); + + colordlg_data->alpha_txt = IupText(NULL); /* Alpha value */ + IupSetAttribute(colordlg_data->alpha_txt, "VISIBLECOLUMNS", "3"); + IupSetAttribute(colordlg_data->alpha_txt, "SPIN", "YES"); + IupSetAttribute(colordlg_data->alpha_txt, "SPINMIN", "0"); + IupSetAttribute(colordlg_data->alpha_txt, "SPINMAX", "255"); + IupSetAttribute(colordlg_data->alpha_txt, "SPININC", "1"); + IupSetCallback (colordlg_data->alpha_txt, "ACTION", (Icallback)iColorBrowserDlgAlphaAction_CB); + IupSetCallback (colordlg_data->alpha_txt, "SPIN_CB", (Icallback)iColorBrowserDlgAlphaSpin_CB); + IupSetAttribute(colordlg_data->alpha_txt, "MASKINT", "0:255"); + + /* ======================================================================= */ + /* COLOR TABLE ========================================================= */ + /* ======================================================================= */ + colordlg_data->colortable_cbar = IupColorbar(); + IupSetAttribute(colordlg_data->colortable_cbar, "ORIENTATION", "HORIZONTAL"); + IupSetAttribute(colordlg_data->colortable_cbar, "NUM_PARTS", "2"); + IupSetAttribute(colordlg_data->colortable_cbar, "NUM_CELLS", "20"); + IupSetAttribute(colordlg_data->colortable_cbar, "SHOW_PREVIEW", "NO"); + IupSetAttribute(colordlg_data->colortable_cbar, "SIZE", "138x22"); + IupSetAttribute(colordlg_data->colortable_cbar, "SQUARED", "NO"); + IupSetCallback (colordlg_data->colortable_cbar, "SELECT_CB", (Icallback)iColorBrowserDlgColorTableSelect_CB); + + /* ======================================================================= */ + /* RGB TEXT FIELDS ===================================================== */ + /* ======================================================================= */ + colordlg_data->red_txt = IupText(NULL); /* Red value */ + IupSetAttribute(colordlg_data->red_txt, "VISIBLECOLUMNS", "3"); + IupSetAttribute(colordlg_data->red_txt, "SPIN", "YES"); + IupSetAttribute(colordlg_data->red_txt, "SPINMIN", "0"); + IupSetAttribute(colordlg_data->red_txt, "SPINMAX", "255"); + IupSetAttribute(colordlg_data->red_txt, "SPININC", "1"); + IupSetCallback (colordlg_data->red_txt, "ACTION", (Icallback)iColorBrowserDlgRedAction_CB); + IupSetCallback (colordlg_data->red_txt, "SPIN_CB", (Icallback)iColorBrowserDlgRedSpin_CB); + IupSetAttribute(colordlg_data->red_txt, "MASKINT", "0:255"); + + colordlg_data->green_txt = IupText(NULL); /* Green value */ + IupSetAttribute(colordlg_data->green_txt, "VISIBLECOLUMNS", "3"); + IupSetAttribute(colordlg_data->green_txt, "SPIN", "YES"); + IupSetAttribute(colordlg_data->green_txt, "SPINMIN", "0"); + IupSetAttribute(colordlg_data->green_txt, "SPINMAX", "255"); + IupSetAttribute(colordlg_data->green_txt, "SPININC", "1"); + IupSetCallback (colordlg_data->green_txt, "ACTION", (Icallback)iColorBrowserDlgGreenAction_CB); + IupSetCallback (colordlg_data->green_txt, "SPIN_CB", (Icallback)iColorBrowserDlgGreenSpin_CB); + IupSetAttribute(colordlg_data->green_txt, "MASKINT", "0:255"); + + colordlg_data->blue_txt = IupText(NULL); /* Blue value */ + IupSetAttribute(colordlg_data->blue_txt, "VISIBLECOLUMNS", "3"); + IupSetAttribute(colordlg_data->blue_txt, "SPIN", "YES"); + IupSetAttribute(colordlg_data->blue_txt, "SPINMIN", "0"); + IupSetAttribute(colordlg_data->blue_txt, "SPINMAX", "255"); + IupSetAttribute(colordlg_data->blue_txt, "SPININC", "1"); + IupSetCallback (colordlg_data->blue_txt, "ACTION", (Icallback)iColorBrowserDlgBlueAction_CB); + IupSetCallback (colordlg_data->blue_txt, "SPIN_CB", (Icallback)iColorBrowserDlgBlueSpin_CB); + IupSetAttribute(colordlg_data->blue_txt, "MASKINT", "0:255"); + + /* ======================================================================= */ + /* HSI TEXT FIELDS ===================================================== */ + /* ======================================================================= */ + colordlg_data->hue_txt = IupText(NULL); /* Hue value */ + IupSetAttribute(colordlg_data->hue_txt, "VISIBLECOLUMNS", "3"); + IupSetAttribute(colordlg_data->hue_txt, "SPIN", "YES"); + IupSetAttribute(colordlg_data->hue_txt, "SPINMIN", "0"); + IupSetAttribute(colordlg_data->hue_txt, "SPINMAX", "359"); + IupSetAttribute(colordlg_data->hue_txt, "SPINWRAP", "YES"); + IupSetAttribute(colordlg_data->hue_txt, "SPININC", "1"); + IupSetCallback(colordlg_data->hue_txt, "ACTION", (Icallback)iColorBrowserDlgHueAction_CB); + IupSetCallback(colordlg_data->hue_txt, "SPIN_CB", (Icallback)iColorBrowserDlgHueSpin_CB); + IupSetAttribute(colordlg_data->hue_txt, "MASKINT", "0:359"); + + colordlg_data->saturation_txt = IupText(NULL); /* Saturation value */ + IupSetAttribute(colordlg_data->saturation_txt, "VISIBLECOLUMNS", "3"); + IupSetAttribute(colordlg_data->saturation_txt, "SPIN", "YES"); + IupSetAttribute(colordlg_data->saturation_txt, "SPINMIN", "0"); + IupSetAttribute(colordlg_data->saturation_txt, "SPINMAX", "100"); + IupSetAttribute(colordlg_data->saturation_txt, "SPININC", "1"); + IupSetCallback(colordlg_data->saturation_txt, "ACTION", (Icallback)iColorBrowserDlgSaturationAction_CB); + IupSetCallback(colordlg_data->saturation_txt, "SPIN_CB", (Icallback)iColorBrowserDlgSaturationSpin_CB); + IupSetAttribute(colordlg_data->saturation_txt, "MASKINT", "0:100"); + + colordlg_data->intensity_txt = IupText(NULL); /* Intensity value */ + IupSetAttribute(colordlg_data->intensity_txt, "VISIBLECOLUMNS", "3"); + IupSetAttribute(colordlg_data->intensity_txt, "SPIN", "YES"); + IupSetAttribute(colordlg_data->intensity_txt, "SPINMIN", "0"); + IupSetAttribute(colordlg_data->intensity_txt, "SPINMAX", "100"); + IupSetAttribute(colordlg_data->intensity_txt, "SPININC", "1"); + IupSetCallback(colordlg_data->intensity_txt, "ACTION", (Icallback)iColorBrowserDlgIntensityAction_CB); + IupSetCallback(colordlg_data->intensity_txt, "SPIN_CB", (Icallback)iColorBrowserDlgIntensitySpin_CB); + IupSetAttribute(colordlg_data->intensity_txt, "MASKINT", "0:100"); + + /* =================== */ + /* 1st line = Controls */ + /* =================== */ + + col1 = IupVbox(colordlg_data->color_browser, IupSetAttributes(IupHbox(colordlg_data->color_cnv, NULL), "MARGIN=30x0"),NULL); + + hsi_vb = IupVbox(IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_HUE")), + colordlg_data->hue_txt, + NULL), "ALIGNMENT=ACENTER"), + IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_SATURATION")), + colordlg_data->saturation_txt, + NULL), "ALIGNMENT=ACENTER"), + IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_INTENSITY")), + colordlg_data->intensity_txt, + NULL), "ALIGNMENT=ACENTER"), + NULL); + IupSetAttribute(hsi_vb, "GAP", "5"); + + rgb_vb = IupVbox(IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_RED")), + colordlg_data->red_txt, + NULL), "ALIGNMENT=ACENTER"), + IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_GREEN")), + colordlg_data->green_txt, + NULL), "ALIGNMENT=ACENTER"), + IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_BLUE")), + colordlg_data->blue_txt, + NULL), "ALIGNMENT=ACENTER"), + NULL); + IupSetAttribute(rgb_vb, "GAP", "5"); + + clr_vb = IupVbox(IupSetAttributes(IupHbox(IupLabel(iupStrMessageGet("IUP_OPACITY")), + colordlg_data->alpha_txt, colordlg_data->alpha_val, + NULL), "ALIGNMENT=ACENTER"), + IupSetAttributes(IupHbox(IupLabel("He&xa:"), + colordlg_data->colorhex_txt, + NULL), "ALIGNMENT=ACENTER"), + IupSetAttributes(IupVbox(IupLabel(iupStrMessageGet("IUP_PALETTE")), + colordlg_data->colortable_cbar, + NULL), "GAP=3"), + NULL); + IupSetAttribute(clr_vb, "GAP", "5"); + IupSetAttribute(clr_vb, "EXPAND", "YES"); + + IupDestroy(IupSetAttributes(IupNormalizer(IupGetChild(IupGetChild(hsi_vb, 0), 0), /* Hue Label */ + IupGetChild(IupGetChild(hsi_vb, 1), 0), /* Saturation Label */ + IupGetChild(IupGetChild(hsi_vb, 2), 0), /* Intensity Label */ + IupGetChild(IupGetChild(clr_vb, 0), 0), /* Opacity Label */ + IupGetChild(IupGetChild(clr_vb, 1), 0), /* Hexa Label */ + NULL), "NORMALIZE=HORIZONTAL")); + + IupDestroy(IupSetAttributes(IupNormalizer(IupGetChild(IupGetChild(rgb_vb, 0), 0), /* Red Label */ + IupGetChild(IupGetChild(rgb_vb, 1), 0), /* Green Label */ + IupGetChild(IupGetChild(rgb_vb, 2), 0), /* Blue Label */ + NULL), "NORMALIZE=HORIZONTAL")); + + col2 = IupVbox(IupSetAttributes(IupHbox(hsi_vb, IupFill(), rgb_vb, NULL), "EXPAND=YES"), + IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL"), + clr_vb, + NULL); + IupSetAttributes(col2, "EXPAND=NO, GAP=10"); + + lin1 = IupHbox(col1, col2, NULL); + IupSetAttribute(lin1, "GAP", "10"); + IupSetAttribute(lin1, "MARGIN", "0x0"); + + /* ================== */ + /* 2nd line = Buttons */ + /* ================== */ + + lin2 = IupHbox(IupFill(), ok_bt, cancel_bt, colordlg_data->help_bt, NULL); + IupSetAttribute(lin2, "GAP", "5"); + IupSetAttribute(lin2, "MARGIN", "0x0"); + IupSetAttribute(lin2, "NORMALIZESIZE", "HORIZONTAL"); + + /* Do not use IupAppend because we set childtype=IUP_CHILDNONE */ + iupChildTreeAppend(ih, IupSetAttributes(IupVbox(lin1, IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL"), lin2, NULL), "MARGIN=10x10, GAP=10")); + + iColorBrowserDlgInit_Defaults(colordlg_data); + + (void)params; + return IUP_NOERROR; +} + +Iclass* iupColorBrowserDlgGetClass(void) +{ + Iclass* ic = iupClassNew(iupDialogGetClass()); + + ic->Create = iColorBrowserDlgCreateMethod; + ic->Destroy = iColorBrowserDlgDestroyMethod; + ic->Map = iColorBrowserDlgMapMethod; + + ic->name = "colordlg"; /* this will hide the GTK and Windows implementations */ + ic->nativetype = IUP_TYPEDIALOG; + ic->is_interactive = 1; + ic->childtype = IUP_CHILDNONE; + + iupClassRegisterAttribute(ic, "COLORTABLE", iColorBrowserDlgGetColorTableAttrib, iColorBrowserDlgSetColorTableAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "STATUS", iColorBrowserDlgGetStatusAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", iColorBrowserDlgGetValueAttrib, iColorBrowserDlgSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ALPHA", iColorBrowserDlgGetAlphaAttrib, iColorBrowserDlgSetAlphaAttrib, IUPAF_SAMEASSYSTEM, "255", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUEHSI", iColorBrowserDlgGetValueHSIAttrib, iColorBrowserDlgSetValueHSIAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUEHEX", iColorBrowserDlgGetValueHexAttrib, iColorBrowserDlgSetValueHexAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWALPHA", NULL, iColorBrowserDlgSetShowAlphaAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWCOLORTABLE", NULL, iColorBrowserDlgSetShowColorTableAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWHEX", NULL, iColorBrowserDlgSetShowHexAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOWHELP", NULL, iColorBrowserDlgSetShowHelpAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} diff --git a/iup/srccontrols/color/iup_colorhsi.c b/iup/srccontrols/color/iup_colorhsi.c new file mode 100755 index 0000000..ce5e71f --- /dev/null +++ b/iup/srccontrols/color/iup_colorhsi.c @@ -0,0 +1,358 @@ +/** \file + * \brief HSI Color Manipulation + * Copied and adapted from IM + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include +#include "iup_colorhsi.h" + +static const float rad60 = 1.0471975f; +static const float rad120 = 2.0943951f; +static const float rad180 = 3.1415926f; +static const float rad240 = 4.1887902f; +static const float rad300 = 5.2359877f; +static const float rad360 = 6.2831853f; +static const float sqrt3 = 1.7320508f; +static const float rad2deg = 57.2957795131f; + +static float costab[361]; +static float sintab[361]; +static int init_tab = 0; + +static void iColorBuildTables(void) +{ + int theta; + for (theta=0; theta<=360; theta++) + { + float th = ((float)theta)/rad2deg; + costab[theta] = cosf(th); + sintab[theta] = sinf(th); + } + init_tab = 1; +} + +static void iColorSinCos(float H, float *sinH, float *cosH) +{ + int theta; + + H *= rad2deg; + theta = (int)(H + 0.5f); /* Round */ + + if (!init_tab) + iColorBuildTables(); + + if (theta<0) theta = 0; + if (theta>360) theta = 360; + + *cosH = costab[theta]; + *sinH = sintab[theta]; +} + +static float iColorNormHue(float H) +{ + while (H < 0.0f) + H += rad360; + + if (H > rad360) + H = fmodf(H, rad360); + + return H; +} + +static unsigned char iColorQuantize(float value) +{ + if (value >= 1.0f) return 255; + if (value <= 0.0f) return 0; + return (unsigned char)(value*256); +} + +static float iColorReconstruct(unsigned char value) +{ + if (value <= 0) return 0.0f; + if (value >= 255) return 1.0f; + return (((float)value + 0.5f)/256.0f); +} + +static void iColorSmax01(float h, float hr, float hb, float hg, float *h0, float *h1) +{ + if (h < rad60) + { + *h0 = hb; + *h1 = hr; + } + else if (h < rad120) + { + *h0 = hb; + *h1 = hg; + } + else if (h < rad180) + { + *h0 = hr; + *h1 = hg; + } + else if (h < rad240) + { + *h0 = hr; + *h1 = hb; + } + else if (h < rad300) + { + *h0 = hg; + *h1 = hb; + } + else + { + *h0 = hg; + *h1 = hr; + } +} + +/* Given H and I, returns S max, but s is in u,v space. */ +static float iColorHSI_Smax(float h, float cosH, float sinH, float i) +{ + float hr, hb, hg, imax, h0, h1; + + /* i here is normalized between 0-1 */ + + if (i == 0.0f || i == 1.0f) + return 0.0f; + + /* Making r=0, g=0, b=0, r=1, g=1 or b=1 in the parametric equations and + writting s in function of H and I. */ + + /* at bottom */ + if (i <= 1.0f/3.0f) + { + /* face B=0 */ + if (h < rad120) + { + hb = (cosH + sinH*sqrt3)/3.0f; + return i/hb; + } + + /* face R=0 */ + if (h < rad240) + { + hr = -cosH/1.5f; + return i/hr; + } + + /* face G=0 (h < rad360) */ + { + hg = (cosH - sinH*sqrt3)/3.0f; + return i/hg; + } + } + + /* at top */ + if (i >= 2.0f/3.0f) + { + /* face R=1 */ + if (h < rad60 || h > rad300) + { + hr = cosH/1.5f; + return (1.0f-i)/hr; + } + + /* face G=1 */ + if (h < rad180) + { + hg = (-cosH + sinH*sqrt3)/3.0f; + return (1.0f-i)/hg; + } + + /* face B=1 (h > rad180 && h < rad300) */ + { + hb = (-cosH - sinH*sqrt3)/3.0f; + return (1.0f-i)/hb; + } + } + + /* in the middle */ + hr = cosH/1.5f; + hg = (-cosH + sinH*sqrt3)/3.0f; + hb = (-cosH - sinH*sqrt3)/3.0f; + + iColorSmax01(h, hr, hb, hg, &h0, &h1); + + if (h == 0.0f || h == rad120 || h == rad240) + imax = 1.0f/3.0f; + else if (h == rad60 || h == rad180 || h == rad300) + imax = 2.0f/3.0f; + else + imax = h0/(h0 - h1); + + if (i < imax) + return -i/h0; + else + return (1.0f-i)/h1; +} + +/* Given H, returns I where S is max, + BUT the maximum S here is 1 at the corners of the cube. */ +static float iColorHSI_ImaxS(float h, float cosH, float sinH) +{ + float i, h0, h1; + float hr, hb, hg; + + /* i here is normalized between 0-1 */ + + if (h == 0.0f || h == rad120 || h == rad240) + return 1.0f/3.0f; + + if (h == rad60 || h == rad180 || h == rad300) + return 2.0f/3.0f; + + hr = cosH/1.5f; + hg = (-cosH + sinH*sqrt3)/3.0f; + hb = (-cosH - sinH*sqrt3)/3.0f; + + iColorSmax01(h, hr, hb, hg, &h0, &h1); + + i = h0/(h0 - h1); + + return i; +} + +static void iColorRGB2HSI(float r, float g, float b, float *h, float *s, float *i) +{ + float v, u, ImaxS; + + /* Parametric equations */ + v = r - (g + b)/2.0f; + u = (g - b) * (sqrt3/2.0f); + + *i = (r + g + b)/3; /* already normalized to 0-1 */ + + *s = sqrtf(v*v + u*u); /* s is between 0-1, BUT it is linear in the cube and it is in u,v space. */ + + if (*s == 0.0f) + { + /* *h = (left unchanged) */ + ImaxS = 1.0f/3.0f; + } + else + { + float Smax; + float H, cosH, sinH; + + H = atan2f(u, v); + H = iColorNormHue(H); + *h = H * rad2deg; + + iColorSinCos(H, &sinH, &cosH); + + /* must scale S from 0-Smax to 0-1 */ + Smax = iColorHSI_Smax(H, cosH, sinH, *i); + if (Smax == 0.0f) + *s = 0.0f; + else + { + if (*s > Smax) /* because of round problems when calculating s and Smax */ + *s = Smax; + *s /= Smax; + } + + ImaxS = iColorHSI_ImaxS((float)H, cosH, sinH); + } + + /* must convert I from linear scale to non-linear scale. USED ONLY FOR THE COLORBROWSER */ + if (*i < 0.5f) /* half I is I=ImaxS, not I=0.5 */ + *i = ((*i)*0.5f)/ImaxS; + else + *i = (((*i) - ImaxS)*0.5f)/(1.0f - ImaxS) + 0.5f; +} + +static void iColorHSI2RGB(float h, float s, float i, float *r, float *g, float *b) +{ + float cosH, sinH, H, v, u; + float Smax, ImaxS; + + if (i < 0) i = 0; + else if (i > 1) i = 1; + + if (s < 0) s = 0; + else if (s > 1) s = 1; + + if (s == 0.0f || i == 1.0f || i == 0.0f || (int)h == 360) + { + *r = i; + *g = i; + *b = i; + return; + } + + H = h/rad2deg; + H = iColorNormHue(H); + + iColorSinCos(H, &sinH, &cosH); + + /* must convert I from non-linear scale to linear scale. USED ONLY FOR THE COLORBROWSER */ + ImaxS = iColorHSI_ImaxS(H, cosH, sinH); + if (i < 0.5f) /* half I is I=ImaxS, not I=0.5 */ + i = ImaxS * (i / 0.5f); + else + i = (1.0f - ImaxS) * (i - 0.5f)/0.5f + ImaxS; + + /* must scale S from 0-1 to 0-Smax */ + Smax = iColorHSI_Smax(H, cosH, sinH, i); + s *= Smax; + if (s > 1.0f) /* because of round problems when calculating s and Smax */ + s = 1.0f; + + v = s * cosH; + u = s * sinH; + + /* Inverse of the Parametric equations, using i normalized to 0-1 */ + *r = i + v/1.5f; + *g = i - (v - u*sqrt3)/3.0f; + *b = i - (v + u*sqrt3)/3.0f; + + /* fix round errors */ + if (*r < 0.0f) *r = 0; + if (*g < 0.0f) *g = 0; + if (*b < 0.0f) *b = 0; + + if (*r > 1.0f) *r = 1.0f; + if (*g > 1.0f) *g = 1.0f; + if (*b > 1.0f) *b = 1.0f; +} + +/*********************************************************************************************/ + +void iupColorRGB2HSI(unsigned char r, unsigned char g, unsigned char b, float *h, float *s, float *i) +{ + float fr = iColorReconstruct(r); + float fg = iColorReconstruct(g); + float fb = iColorReconstruct(b); + + iColorRGB2HSI(fr, fg, fb, h, s, i); +} + +void iupColorHSI2RGB(float h, float s, float i, unsigned char *r, unsigned char *g, unsigned char *b) +{ + float fr, fg, fb; + + iColorHSI2RGB(h, s, i, &fr, &fg, &fb); + + *r = iColorQuantize(fr); + *g = iColorQuantize(fg); + *b = iColorQuantize(fb); +} + +int iupStrToHSI(const char *str, float *h, float *s, float *i) +{ + float fh, fs, fi; + if (!str) return 0; + if (sscanf(str, "%f %f %f", &fh, &fs, &fi) != 3) return 0; + if (fh > 359 || fs > 1 || fi > 1) return 0; + if (fh < 0 || fs < 0 || fi < 0) return 0; + *h = fh; + *s = fs; + *i = fi; + return 1; +} diff --git a/iup/srccontrols/color/iup_colorhsi.h b/iup/srccontrols/color/iup_colorhsi.h new file mode 100755 index 0000000..b29ea48 --- /dev/null +++ b/iup/srccontrols/color/iup_colorhsi.h @@ -0,0 +1,44 @@ +/** \file + * \brief HSI Color Manipulation + * Copied and adapted from IM + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_COLORHSI_H +#define __IUP_COLORHSI_H + +#if defined(__cplusplus) +extern "C" { +#endif + +/* 0<=H<=359 */ +/* 0<=S<=1 */ +/* 0<=I<=1 */ + + +/* Converts from RGB to HSI. + */ +void iupColorRGB2HSI(unsigned char r, unsigned char g, unsigned char b, float *h, float *s, float *i); + +/* Converts from HSI to RGB. + */ +void iupColorHSI2RGB(float h, float s, float i, unsigned char *r, unsigned char *g, unsigned char *b); + +int iupStrToHSI(const char *str, float *h, float *s, float *i); + +#ifdef IUP_DEFMATHFLOAT +#define atan2f(_X, _Y) ((float)atan2((double)_X, (double)_Y)) +#define cosf(_X) ((float)cos((double)_X)) +#define fmodf(_X, _Y) ((float)fmod((double)_X, (double)_Y)) +#define sinf(_X) ((float)sin((double)_X)) +#define sqrtf(_X) ((float)sqrt((double)_X)) +#endif + + + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/iup/srccontrols/config.mak b/iup/srccontrols/config.mak new file mode 100755 index 0000000..394d607 --- /dev/null +++ b/iup/srccontrols/config.mak @@ -0,0 +1,48 @@ +PROJNAME = iup +LIBNAME = iupcontrols +OPT = YES + +INCLUDES = ../include ../src . + +SRCCOLOR = iup_colorbrowser.c iup_colorhsi.c iup_colorbrowserdlg.c +SRCCOLOR := $(addprefix color/, $(SRCCOLOR)) + +SRCMATRIX = iupmat_key.c iupmat_mark.c iupmat_aux.c iupmat_mem.c iupmat_mouse.c iupmat_numlc.c \ + iupmat_colres.c iupmat_draw.c iupmat_focus.c iupmat_getset.c iupmatrix.c \ + iupmat_scroll.c iupmat_edit.c +SRCMATRIX := $(addprefix matrix/, $(SRCMATRIX)) + +SRC = iup_cdutil.c iup_gauge.c iup_cells.c iup_colorbar.c iup_controls.c \ + iup_dial.c iup_oldtabs.c iup_oldval.c iup_oldmask.c \ + $(SRCCOLOR) $(SRCMATRIX) + +LIBS = iup iupcd +LDIR = ../lib/$(TEC_UNAME) +USE_CD = Yes + +# force the definition of math functions using float +# Some compilers do not define them +ifeq ($(TEC_UNAME), dll) + DEFINES += IUP_DEFMATHFLOAT +endif +ifeq ($(TEC_UNAME), vc6) + DEFINES += IUP_DEFMATHFLOAT +endif +ifeq ($(TEC_UNAME), dll7) + DEFINES += IUP_DEFMATHFLOAT +endif +ifeq ($(TEC_UNAME), vc7) + DEFINES += IUP_DEFMATHFLOAT +endif +ifneq ($(findstring ow, $(TEC_UNAME)), ) + DEFINES += IUP_DEFMATHFLOAT +endif +ifneq ($(findstring bc, $(TEC_UNAME)), ) + DEFINES += IUP_DEFMATHFLOAT +endif +ifneq ($(findstring AIX, $(TEC_UNAME)), ) + DEFINES += IUP_DEFMATHFLOAT +endif +ifneq ($(findstring SunOS, $(TEC_UNAME)), ) + DEFINES += IUP_DEFMATHFLOAT +endif diff --git a/iup/srccontrols/iup_cdutil.c b/iup/srccontrols/iup_cdutil.c new file mode 100755 index 0000000..3ffb15b --- /dev/null +++ b/iup/srccontrols/iup_cdutil.c @@ -0,0 +1,153 @@ +/** \file + * \brief cdiuputil. CD and IUP utilities for the IupControls + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include + +#include + +#include "iup.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_cdutil.h" + + +long cdIupConvertColor(const char *color) +{ + unsigned char r, g, b; + if (iupStrToRGB(color, &r, &g, &b)) + return cdEncodeColor(r, g, b); + else + return 0; +} + +void cdIupCalcShadows(long bgcolor, long *light_shadow, long *mid_shadow, long *dark_shadow) +{ + int r, bg_r = cdRed(bgcolor); + int g, bg_g = cdGreen(bgcolor); + int b, bg_b = cdBlue(bgcolor); + + /* light_shadow */ + + int max = bg_r; + if (bg_g > max) max = bg_g; + if (bg_b > max) max = bg_b; + + if (255-max < 64) + { + r = 255; + g = 255; + b = 255; + } + else + { + /* preserve some color information */ + if (bg_r == max) r = 255; + else r = bg_r + (255-max); + if (bg_g == max) g = 255; + else g = bg_g + (255-max); + if (bg_b == max) b = 255; + else b = bg_b + (255-max); + } + + if (light_shadow) *light_shadow = cdEncodeColor((unsigned char)r, (unsigned char)g, (unsigned char)b); + + /* dark_shadow */ + r = bg_r - 128; + g = bg_g - 128; + b = bg_b - 128; + if (r < 0) r = 0; + if (g < 0) g = 0; + if (b < 0) b = 0; + + if (dark_shadow) *dark_shadow = cdEncodeColor((unsigned char)r, (unsigned char)g, (unsigned char)b); + + /* mid_shadow = (dark_shadow+bgcolor)/2 */ + if (mid_shadow) *mid_shadow = cdEncodeColor((unsigned char)((bg_r+r)/2), (unsigned char)((bg_g+g)/2), (unsigned char)((bg_b+b)/2)); +} + +void cdIupDrawSunkenRect(cdCanvas *canvas, int x1, int y1, int x2, int y2, long light_shadow, long mid_shadow, long dark_shadow) +{ + cdCanvasForeground(canvas, mid_shadow); + cdCanvasLine(canvas, x1, y1+1, x1, y2); + cdCanvasLine(canvas, x1, y2, x2-1, y2); + + cdCanvasForeground(canvas, dark_shadow); + cdCanvasLine(canvas, x1+1, y1+2, x1+1, y2-1); + cdCanvasLine(canvas, x1+1, y2-1, x2-2, y2-1); + + cdCanvasForeground(canvas, light_shadow); + cdCanvasLine(canvas, x1, y1, x2, y1); + cdCanvasLine(canvas, x2, y1, x2, y2); +} + +void cdIupDrawRaisenRect(cdCanvas *canvas, int x1, int y1, int x2, int y2, long light_shadow, long mid_shadow, long dark_shadow) +{ + cdCanvasForeground(canvas, light_shadow); + cdCanvasLine(canvas, x1, y1+1, x1, y2); + cdCanvasLine(canvas, x1, y2, x2-1, y2); + + cdCanvasForeground(canvas, dark_shadow); + cdCanvasLine(canvas, x1, y1, x2, y1); + cdCanvasLine(canvas, x2, y1, x2, y2); + + cdCanvasForeground(canvas, mid_shadow); + cdCanvasLine(canvas, x1+1, y1+1, x2-1, y1+1); + cdCanvasLine(canvas, x2-1, y1+2, x2-1, y2-1); +} + +void cdIupDrawVertSunkenMark(cdCanvas *canvas, int x, int y1, int y2, long light_shadow, long dark_shadow) +{ + cdCanvasForeground(canvas, dark_shadow); + cdCanvasLine(canvas, x-1, y1, x-1, y2); + cdCanvasForeground(canvas, light_shadow); + cdCanvasLine(canvas, x, y1, x, y2); +} + +void cdIupDrawHorizSunkenMark(cdCanvas *canvas, int x1, int x2, int y, long light_shadow, long dark_shadow) +{ + cdCanvasForeground(canvas, dark_shadow); + cdCanvasLine(canvas, x1, y+1, x2, y+1); + cdCanvasForeground(canvas, light_shadow); + cdCanvasLine(canvas, x1, y, x2, y); +} + +void cdIupDrawFocusRect(Ihandle* ih, cdCanvas *canvas, int x1, int y1, int x2, int y2) +{ + int y, x, w, h; +#ifdef WIN32 + void* gc = cdCanvasGetAttribute(canvas, "HDC"); +#else + void* gc = cdCanvasGetAttribute(canvas, "GC"); +#endif + + cdCanvasUpdateYAxis(canvas, &y1); + cdCanvasUpdateYAxis(canvas, &y2); + y = y1; + if (y2 +#include +#include + +#undef CD_NO_OLD_INTERFACE + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_cdutil.h" + + +#define ICELLS_OUT -999 + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + cdCanvas* cdcanvas; /* cd canvas for drawing */ + cdCanvas* cddbuffer; /* image canvas for double buffering */ + int w; /* control width (pixels) */ + int h; /* control height (pixels) */ + int clipped; /* cells bounding box clipping activated */ + int boxed; /* draw cells bounding box activated */ + int bufferize; /* bufferize on */ + int non_scrollable_lins; /* number of non-scrollable lines */ + int non_scrollable_cols; /* number of non-scrollable columns */ + long int bgcolor; /* Empty area color and bgcolor */ +}; + + +/* Function to inquire application cell data (line height) */ +static int iCellsGetHeight(Ihandle* ih, int i) +{ + int size; + + IFni cb = (IFni)IupGetCallback(ih, "HEIGHT_CB"); + if (!cb) + return 30; /* default value */ + + size = cb(ih, i); + if (size < 0) + size = 0; + + return size; +} + +/* Function to inquire application cell data (column width) */ +static int iCellsGetWidth(Ihandle* ih, int j) +{ + int size; + + IFni cb = (IFni)IupGetCallback(ih, "WIDTH_CB"); + if (!cb) + return 60; /* default value */ + + size = cb(ih, j); + if (size < 0) + size = 0; + + return size; +} + +/* Function used to calculate a cell limits */ +static int iCellsGetLimits(Ihandle* ih, int i, int j, int* xmin, int* xmax, int* ymin, int* ymax) +{ + int result = 1; + int xmin_sum = 0; + int ymin_sum = 0; + int w = ih->data->w; + int h = ih->data->h; + int _xmin, _xmax, _ymin, _ymax; + + /* Adjusting the inital position according to the cell's type. If it + * is non-scrollable, the origin is always zero, otherwise the origin + * is the scrollbar position */ + int posx = (j <= ih->data->non_scrollable_cols)? 0: IupGetInt(ih, "POSX"); + int posy = (i <= ih->data->non_scrollable_lins)? 0: IupGetInt(ih, "POSY"); + int idx; + + /* Adding to the origin, the cells' width and height */ + for (idx = 1; idx < j; idx++) + xmin_sum += iCellsGetWidth(ih, idx); + + for (idx = 1; idx < i; idx++) + ymin_sum += iCellsGetHeight(ih, idx); + + /* Finding the cell origin */ + _xmin = xmin_sum - posx; + _ymax = h - (ymin_sum - posy) - 1; + + /* Computing the cell limit, based on its origin and size */ + _xmax = _xmin + iCellsGetWidth(ih, j); + _ymin = _ymax - iCellsGetHeight(ih, i); + + /* Checking if the cell is visible */ + if (_xmax < 0 || _xmin > w || _ymin > h || _ymax < 0) + result = 0; + + if (xmin != NULL) + *xmin = _xmin; + + if (xmax != NULL) + *xmax = _xmax; + + if (ymin != NULL) + *ymin = _ymin; + + if (ymax != NULL) + *ymax = _ymax; + + return result; +} + +/* Function to inquire application cell data (vertical span) */ +static int iCellsGetVspan(Ihandle* ih, int i, int j) +{ + int result = 1; /* default value */ + + IFnii cb = (IFnii)IupGetCallback(ih, "VSPAN_CB"); + if (cb) + result = cb(ih, i, j); + + if (result < 0) + result = 1; + + return result; +} + +/* Function to inquire application cell data (horizontal span) */ +static int iCellsGetHspan(Ihandle* ih, int i, int j) +{ + int result = 1; /* default value */ + + IFnii cb = (IFnii)IupGetCallback(ih, "HSPAN_CB"); + if (cb) + result = cb(ih, i, j); + + if (result < 0) + result = 1; + + return result; +} + +/* Function to inquire application cell data (#columns) */ +static int iCellsGetNCols(Ihandle* ih) +{ + int result = 10; /* default value */ + + Icallback cb = IupGetCallback(ih, "NCOLS_CB"); + if (cb) + result = cb(ih); + + if (result < 0) + result = 0; + + return result; +} + +/* Function to inquire application cell data (# lines) */ +static int iCellsGetNLines(Ihandle* ih) +{ + int result = 10; /* default value */ + + Icallback cb = IupGetCallback(ih, "NLINES_CB"); + if (cb) + result = cb(ih); + + if (result < 0) + result = 0; + + return result; +} + +/* Recalculation of first visible line */ +static int iCellsGetFirstLine(Ihandle* ih) +{ + int i, j; + int nlines = iCellsGetNLines(ih); + int ncols = iCellsGetNCols(ih); + + if (ih->data->non_scrollable_lins >= nlines) + return 1; + + /* Looping the lines until a visible one is found */ + for (i = 1; i <= nlines; i++) { + for (j = 1; j <= ncols; j++) { + if (iCellsGetLimits(ih, i, j, NULL, NULL, NULL, NULL)) + return i; + } + } + return ICELLS_OUT; +} + +/* Recalculation of first visible column */ +static int iCellsGetFirstCol(Ihandle* ih) +{ + int i, j; + int ncols = iCellsGetNCols(ih); + int nlines = iCellsGetNLines(ih); + + if (ih->data->non_scrollable_cols >= ncols) + return 1; + + /* Looping the columns until a visible one is found */ + for (j = 1; j <= ncols; j++) { + for (i = 1; i <= nlines; i++) { + if (iCellsGetLimits(ih, i, j, NULL, NULL, NULL, NULL)) + return j; + } + } + return ICELLS_OUT; +} + +/* Function used to get the cells groups virtual size */ +static void iCellsGetVirtualSize(Ihandle* ih, int* wi, int* he) +{ + int i, j; + *wi = 0; *he = 0; + + /* Looping through all lines and columns, adding its width and heights + * to the return values. So, the cells virtual size is computed */ + for (i = 1; i <= iCellsGetNLines(ih); i++) + *he = *he + iCellsGetHeight(ih, i); + for (j = 1; j <= iCellsGetNCols(ih); j++) + *wi = *wi + iCellsGetWidth(ih, j); +} + +/* Function used to calculate a group of columns height */ +static int iCellsGetRangedHeight(Ihandle* ih, int from, int to) +{ + int i; + int result = 0; + + /* Looping through a column adding the line height */ + for (i = from; i <= to; i++) + result += iCellsGetHeight(ih, i); + + return result; +} + +/* Function used to calculate a group of lines width */ +static int iCellsGetRangedWidth(Ihandle* ih, int from, int to) +{ + int j; + int result = 0; + + /* Looping through a column adding the column width */ + for (j = from; j <= to; j++) + result += iCellsGetWidth(ih, j); + + return result; +} + +/* Function used to turn a cell visible */ +static void iCellsSetFullVisible(Ihandle* ih, int i, int j) +{ + int xmin, xmax, ymin, ymax; + int posx = IupGetInt(ih, "POSX"); + int posy = IupGetInt(ih, "POSY"); + int dx = 0; + int dy = 0; + + /* Getting the frontiers positions for the visible cell */ + int min_x = iCellsGetRangedWidth(ih, 1, ih->data->non_scrollable_cols); + int max_y = ih->data->h - iCellsGetRangedHeight(ih, 1, ih->data->non_scrollable_lins); + + /* Getting the cell's area limit */ + iCellsGetLimits(ih, i, j, &xmin, &xmax, &ymin, &ymax); + + /* Adjusting the diference of the scrollbars' position (horizontal) */ + if (xmax > ih->data->w) + dx = xmax - ih->data->w; + + /* Giving priority to xmin position. This can be seen by the usage + * of dx at the left part of the expression (using the last dx). + * This is the case wher the cell cannot be fitted. */ + if (xmin - dx < min_x) + dx = - (min_x - xmin); + + /* Adjusting the diference of the scrollbars' position (horizontal) */ + if (ymax > max_y) + dy = - (ymax - max_y); + if (ymin < 0) + dy = -ymin; + + /* Adding the diference to scrollbars' position */ + posx += dx; + posy += dy; + + /* Setting iup scrollbars' attributes */ + IupSetfAttribute(ih, "POSX", "%d", posx); + IupSetfAttribute(ih, "POSY", "%d", posy); +} + +/* Function used to make a cell the first visible one */ +static void iCellsAdjustOrigin(Ihandle* ih, int lin, int col) +{ + int xmin_sum, ymin_sum; + + /* If the origin line is a non-scrollable one, the scrollbar position is + * set to zero. Otherwise, the sum of the previous widths will be + * set to the scrollbar position. This algorithm is applied to both + * scrollbars */ + if (lin <= ih->data->non_scrollable_lins) + { + IupSetAttribute(ih, "POSY", "0"); + } + else if (lin <= iCellsGetNLines(ih)) + { + ymin_sum = iCellsGetRangedHeight(ih, ih->data->non_scrollable_lins+1, lin-1); + IupSetfAttribute(ih, "POSY", "%d", ymin_sum); + } + + /* As said before... */ + if (col <= ih->data->non_scrollable_cols) + { + IupSetAttribute(ih, "POSX", "0"); + } + else if (col <= iCellsGetNCols(ih)) + { + xmin_sum = iCellsGetRangedWidth(ih, ih->data->non_scrollable_cols+1, col-1); + IupSetfAttribute(ih, "POSX", "%d", xmin_sum); + } +} + +/* Function used for the scrollbar's update; usually needed when the + * object has modified its size or the cells sizes has changed. */ +static void iCellsAdjustScrolls(Ihandle* ih) +{ + int virtual_height, virtual_width; + + /* Getting the virtual size */ + iCellsGetVirtualSize(ih, &virtual_width, &virtual_height); + + IupSetfAttribute(ih, "YMAX", "%d", virtual_height-1); + IupSetfAttribute(ih, "XMAX", "%d", virtual_width-1); + + /* Setting the object scrollbar position */ + IupSetfAttribute(ih, "DY", "%d", ih->data->h); + IupSetfAttribute(ih, "DX", "%d", ih->data->w); +} + +/* Function used to call the client; is used when a cell must be repainted. */ +static void iCellsCallDrawCb(Ihandle* ih, int xmin, int xmax, int ymin, int ymax, int i, int j) +{ + int cxmin, cxmax, cymin, cymax; + int oldxmin, oldxmax, oldymin, oldymax, oldclip; + int w = ih->data->w; + int h = ih->data->h; + IFniiiiii draw_cb; + cdCanvas* old_cnv = cdActiveCanvas(); + + /* Getting clipping area for post restore */ + oldclip = cdCanvasClip(ih->data->cddbuffer, CD_QUERY); + cdCanvasGetClipArea(ih->data->cddbuffer, &oldxmin, &oldxmax, &oldymin, &oldymax); + + if (ih->data->clipped) /* Clipping the cell area */ + { + cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA); + cxmin = xmin < 0 ? 0 : xmin; + cymin = ymin < 0 ? 0 : ymin; + cxmax = xmax > w ? w : xmax; + cymax = ymax > h ? h : ymax; + cdCanvasClipArea(ih->data->cddbuffer, xmin, xmax, ymin, ymax); + } + + draw_cb = (IFniiiiii)IupGetCallback(ih, "DRAW_CB"); + if (draw_cb) + { + if (old_cnv != ih->data->cddbuffer) /* backward compatibility code */ + cdActivate(ih->data->cddbuffer); + + draw_cb(ih, i, j, xmin, xmax, ymin, ymax); + + if (old_cnv && old_cnv != ih->data->cddbuffer) + { + cdActivate(old_cnv); + cdCanvasActivate(ih->data->cddbuffer); + } + } + + cdCanvasClip(ih->data->cddbuffer, oldclip); + cdCanvasClipArea(ih->data->cddbuffer, oldxmin, oldxmax, oldymin, oldymax); +} + +/* Render function for one cell in a given coordinate. */ +static void iCellsRenderCellIn(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax) +{ + int k; + int w = ih->data->w; + int h = ih->data->h; + int hspan = 1; + int vspan = 1; + + /* Checking if the cells is out of range. (no span will affect it!) */ + if (xmin > w || ymax < 0) + return; + + /* Calculating cell spans */ + hspan = iCellsGetHspan(ih, i, j); + vspan = iCellsGetVspan(ih, i, j); + + /* if any span is set to zero, then another cell invaded its space and + * the cell does not need to draw itself */ + if (hspan == 0 || vspan == 0) + return; + + /* Increasing cell's width and height according to its spans */ + for(k = 1; k < hspan; k++) + xmax += iCellsGetWidth(ih, j+k); + for(k = 1; k < vspan; k++) + ymin -= iCellsGetHeight(ih, i+k); + + /* Checking if the cell expanded enough to appear inside the canvas */ + if (xmax < 0 || ymin > h) + return; + + /* Calling application's draw callback */ + iCellsCallDrawCb(ih, xmin, xmax, ymin, ymax, i, j); + + /* Drawing a box in cell's area */ + if (ih->data->boxed) + { + cdCanvasForeground(ih->data->cddbuffer, CD_BLACK); + cdCanvasRect(ih->data->cddbuffer, xmin, xmax, ymin, ymax); + } +} + +/* Repaint function for all cells in a given range */ +static void iCellsRenderRangedCells(Ihandle* ih, int linfrom, int linto, int colfrom, int colto) +{ + int i, j; + int xmin, xmax, ymin, ymax; + int refxmin, refxmax; + + /* Getting first cell limits: this function is slow to be called everytime */ + iCellsGetLimits(ih, linfrom, colfrom, &xmin, &xmax, &ymin, &ymax); + + /* Initializing current reference position */ + refxmin = xmin; + refxmax = xmax; + + /* Looping through the cells adding next cell width and height */ + for (i = linfrom; i <= linto; i++) + { + xmin = refxmin; + xmax = refxmax; + for (j = colfrom; j <= colto; j++) + { + iCellsRenderCellIn(ih, i, j, xmin, xmax, ymin, ymax); + xmin = xmax; + xmax = xmin + (j == colto ? 0 : iCellsGetWidth(ih, j+1)); + } + ymax = ymin; + ymin = ymax - (i == linto ? 0 : iCellsGetHeight(ih, i+1)); + } +} + +/* Repaint function for all cells */ +static void iCellsRenderCells(Ihandle* ih) +{ + int sline = ih->data->non_scrollable_lins; + int scol = ih->data->non_scrollable_cols; + int nlines = iCellsGetNLines(ih); + int ncols = iCellsGetNCols(ih); + + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + + /* Repainting the four parts of the cells: common cells, non-scrollable + * columns, non-scrollable lines, and non-scrollable margin + * (line and column) */ + iCellsRenderRangedCells(ih, sline+1, nlines, scol+1, ncols); + iCellsRenderRangedCells(ih, sline+1, nlines, 1, scol); + iCellsRenderRangedCells(ih, 1, sline, scol+1, ncols); + iCellsRenderRangedCells(ih, 1, sline, 1, scol); +} + +static void iCellsRepaint(Ihandle* ih) +{ + if (ih->data->cddbuffer == NULL) + return; + + /* If object is buffering, it will not be drawn */ + if (ih->data->bufferize == 1) + return; + + /* update render */ + iCellsRenderCells(ih); + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); +} + +static int iCellsRedraw_CB(Ihandle* ih) +{ + if (ih->data->cddbuffer == NULL) + return IUP_DEFAULT; + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + return IUP_DEFAULT; +} + +/* Function used to calculate the cell coordinates limited by a hint */ +static int iCellsGetRangedCoord(Ihandle* ih, int x, int y, int* lin, int* col, int linfrom, int linto, int colfrom, int colto) +{ + int i, j, k; + int hspan, vspan; + int rxmax, rymin; + int xmin, xmax, ymin, ymax; + int refxmin, refxmax; + int w = ih->data->w; + + /* Getting the first cell's limit -- based on the range */ + iCellsGetLimits(ih, linfrom, colfrom, &xmin, &xmax, &ymin, &ymax); + + /* Initializing reference position */ + refxmin = xmin; + refxmax = xmax; + + /* Looping through the cells adding next cell width and height */ + for (i = linfrom; i <= linto; i++) + { + xmin = refxmin; + xmax = refxmax; + if (!(ymax < 0)) + { + for (j = colfrom; j <= colto; j++) + { + hspan = 1; + vspan = 1; + if (!(xmin > w)) + { + hspan = iCellsGetHspan(ih, i, j); + vspan = iCellsGetVspan(ih, i, j); + if (hspan != 0 && vspan != 0) + { + rxmax = xmax; + rymin = ymin; + for(k = 1; k < hspan; k++) + rxmax += iCellsGetWidth(ih, j+k); + for(k = 1; k < vspan; k++) + rymin -= iCellsGetHeight(ih, i+k); + + /* A cell was found */ + if (x >= xmin && x <= rxmax && y >= rymin && y <= ymax) + { + *lin = i; + *col = j; + return 1; + } + } + xmin = xmax; + xmax = xmin + (j == colto ? 0 : iCellsGetWidth(ih, j+1)); + } + } + } + ymax = ymin; + ymin = ymax - (i == linto ? 0 : iCellsGetHeight(ih, i+1)); + } + + /* No cell selected... */ + *lin = ICELLS_OUT; + *col = ICELLS_OUT; + return 0; +} + +/* Function used to calculate the cell coordinates */ +static int iCellsGetCoord(Ihandle* ih, int x, int y, int* lin, int* col) +{ + int pck = 0; + int sline = ih->data->non_scrollable_lins; + int scol = ih->data->non_scrollable_cols; + int nlines = iCellsGetNLines(ih); + int ncols = iCellsGetNCols(ih); + + /* Trying to pick a cell (raster coordinates) at the four + * parts of the cells (reverse order of the repainting): + * non-scrollable margin (line and column), non-scrollable + * columns, non-scrollable lines, and common cells. */ + pck = iCellsGetRangedCoord(ih, x, y, lin, col, 1, sline, 1, scol); + if (pck) + return 1; + + pck = iCellsGetRangedCoord(ih, x, y, lin, col, 1, sline, scol+1, ncols); + if (pck) + return 1; + + pck = iCellsGetRangedCoord(ih, x, y, lin, col, sline+1, nlines, 1, scol); + if (pck) + return 1; + + pck = iCellsGetRangedCoord(ih, x, y, lin, col, 1, nlines, 1, ncols); + return pck; +} + +static int iCellsScroll_CB(Ihandle* ih) +{ + IFnii cb; + int ret = IUP_DEFAULT; + int fline = -999; + int fcol = -999; + + fline = iCellsGetFirstLine(ih); + fcol = iCellsGetFirstCol(ih); + + /* Checking the existence of a scroll bar callback. If the application + * has set one, it will be called now. If the application returns + * IUP_DEFAULT, the cells will be repainted. */ + cb = (IFnii)IupGetCallback(ih, "SCROLLING_CB"); + if (cb) + ret = cb(ih, fline, fcol); + + if (ret == IUP_DEFAULT) + iCellsRepaint(ih); + + return IUP_DEFAULT; +} + +static int iCellsMotion_CB(Ihandle* ih, int x, int y, char* r) +{ + int i, j; + + /* Checking the existence of a motion bar callback. If the application + * has set one, it will be called now. However, before calling the + * callback, we need to find out which cell is under the mouse + * position. */ + IFniiiis cb = (IFniiiis)IupGetCallback(ih, "MOUSEMOTION_CB"); + if (!cb) + return IUP_DEFAULT; + + iCellsGetCoord(ih, x, y, &i, &j); + return cb(ih, i, j, x, y, r); +} + +static int iCellsResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update canvas size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL); + + /* recalculate scrollbars positions and size */ + iCellsAdjustScrolls(ih); + + /* update render */ + iCellsRenderCells(ih); + + return IUP_DEFAULT; +} + +static int iCellsButton_CB(Ihandle* ih, int b, int m, int x, int y, char* r) +{ + int i, j; + IFniiiiiis cb; + + y = cdIupInvertYAxis(y, ih->data->h); + + /* Treating the button event. The application will receive + * a button press callback. */ + cb = (IFniiiiiis)IupGetCallback(ih, "MOUSECLICK_CB"); + if (!cb) + return IUP_DEFAULT; + + iCellsGetCoord(ih, x, y, &i, &j); + return cb(ih, b, m, i, j, x, y, r); +} + +static char* iCellsGetImageCanvasAttrib(Ihandle* ih) +{ + return (char*)ih->data->cddbuffer; +} + +static char* iCellsGetCanvasAttrib(Ihandle* ih) +{ + return (char*)ih->data->cdcanvas; +} + +static char* iCellsGetFirstLineAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(80); + sprintf( buffer, "%d", iCellsGetFirstLine(ih) ); + return buffer; +} + +static char* iCellsGetFirstColAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(80); + sprintf(buffer, "%d", iCellsGetFirstCol(ih) ); + return buffer; +} + +static char* iCellsGetLimitsAttrib(Ihandle* ih, const char* name_id) +{ + char* buffer = iupStrGetMemory(80); + int xmin, xmax, ymin, ymax; + int i, j; + + if (iupStrToIntInt(name_id, &i, &j, ':') != 2) + return NULL; + + iCellsGetLimits(ih, i, j, &xmin, &xmax, &ymin, &ymax); + sprintf(buffer, "%d:%d:%d:%d", xmin, xmax, ymin, ymax); + return buffer; +} + +static int iCellsSetBufferizeAttrib(Ihandle* ih, const char* value) +{ + if (value == NULL || iupStrEqualNoCase(value, "NO")) + { + ih->data->bufferize = 0; + iCellsAdjustScrolls(ih); + iCellsRepaint(ih); + } + else + ih->data->bufferize = 1; + + return 0; +} + +static char* iCellsGetBufferizeAttrib(Ihandle* ih) +{ + if (ih->data->bufferize) + return "YES"; + else + return "NO"; +} + +static int iCellsSetRepaintAttrib(Ihandle* ih, const char* value) +{ + (void)value; /* not used */ + ih->data->bufferize = 0; + iCellsAdjustScrolls(ih); + iCellsRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static int iCellsSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = iupControlBaseGetParentBgColor(ih); + + ih->data->bgcolor = cdIupConvertColor(value); + + iCellsRepaint(ih); + return 1; +} + +static int iCellsSetOriginAttrib(Ihandle* ih, const char* value) +{ + int lin = -9; + int col = -9; + iupStrToIntInt(value, &lin, &col, ':'); + iCellsAdjustOrigin(ih, lin, col); + iCellsRepaint(ih); + return 1; +} + +static int iCellsSetNonScrollableColsAttrib(Ihandle* ih, const char* value) +{ + if (iupStrToInt(value, &ih->data->non_scrollable_cols)) + iCellsRepaint(ih); + return 0; +} + +static char* iCellsGetNonScrollableColsAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(80); + sprintf(buffer, "%d", ih->data->non_scrollable_cols); + return buffer; +} + +static int iCellsSetNonScrollableLinesAttrib(Ihandle* ih, const char* value) +{ + if (iupStrToInt(value, &ih->data->non_scrollable_lins)) + iCellsRepaint(ih); + return 0; +} + +static char* iCellsGetNonScrollableLinesAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(80); + sprintf(buffer, "%d", ih->data->non_scrollable_lins); + return buffer; +} + +static int iCellsSetBoxedAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NO")) + ih->data->boxed = 0; + else + ih->data->boxed = 1; + + iCellsRepaint(ih); + return 0; +} + +static char* iCellsGetBoxedAttrib(Ihandle* ih) +{ + if (ih->data->boxed) + return "YES"; + else + return "NO"; +} + +static int iCellsSetClippedAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NO")) + ih->data->clipped = 0; + else + ih->data->clipped = 1; + + iCellsRepaint(ih); + return 0; +} + +static char* iCellsGetClippedAttrib(Ihandle* ih) +{ + if (ih->data->clipped) + return "YES"; + else + return "NO"; +} + +static int iCellsSetFullVisibleAttrib(Ihandle* ih, const char* value) +{ + int i, j; + if (iupStrToIntInt(value, &i, &j, ':') != 2) + return 0; + + iCellsSetFullVisible(ih, i, j); + iCellsRepaint(ih); + return 0; /* do not store value in hash table */ +} + + +/****************************************************************************/ + + +static int iCellsMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + + return IUP_NOERROR; +} + +static void iCellsUnMapMethod(Ihandle* ih) +{ + if (ih->data->cddbuffer) + cdKillCanvas(ih->data->cddbuffer); + + if (ih->data->cdcanvas) + cdKillCanvas(ih->data->cdcanvas); +} + +static int iCellsCreateMethod(Ihandle* ih, void **params) +{ + (void)params; + + /* free the data allocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "SCROLLBAR", "YES"); + iupAttribSetStr(ih, "BORDER", "NO"); + + /* default values */ + ih->data->boxed = 1; + ih->data->clipped = 1; + + /* IupCanvas callbacks */ + IupSetCallback(ih, "RESIZE_CB", (Icallback)iCellsResize_CB); + IupSetCallback(ih, "ACTION", (Icallback)iCellsRedraw_CB); + IupSetCallback(ih, "BUTTON_CB", (Icallback)iCellsButton_CB); + IupSetCallback(ih, "MOTION_CB", (Icallback)iCellsMotion_CB); + IupSetCallback(ih, "SCROLL_CB", (Icallback)iCellsScroll_CB); + + return IUP_NOERROR; +} + +Iclass* iupCellsGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "cells"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */ + + /* Class functions */ + ic->Create = iCellsCreateMethod; + ic->Map = iCellsMapMethod; + ic->UnMap = iCellsUnMapMethod; + + /* Do not need to set base attributes because they are inherited from IupCanvas */ + + /* IupCells Callbacks */ + iupClassRegisterCallback(ic, "SCROLLING_CB", "ii"); + iupClassRegisterCallback(ic, "MOUSEMOTION_CB", "iiiis"); + iupClassRegisterCallback(ic, "MOUSECLICK_CB", "iiiiiis"); + iupClassRegisterCallback(ic, "DRAW_CB", "iiiiiiv"); + iupClassRegisterCallback(ic, "VSPAN_CB", "ii"); + iupClassRegisterCallback(ic, "HSPAN_CB", "ii"); + iupClassRegisterCallback(ic, "NCOLS_CB", ""); + iupClassRegisterCallback(ic, "NLINES_CB", ""); + iupClassRegisterCallback(ic, "HEIGHT_CB", "i"); + iupClassRegisterCallback(ic, "WIDTH_CB", "i"); + + /* IupCells only */ + iupClassRegisterAttribute(ic, "BOXED", iCellsGetBoxedAttrib, iCellsSetBoxedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "CLIPPED", iCellsGetClippedAttrib, iCellsSetClippedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "NON_SCROLLABLE_LINES", iCellsGetNonScrollableLinesAttrib, iCellsSetNonScrollableLinesAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "NON_SCROLLABLE_COLS", iCellsGetNonScrollableColsAttrib, iCellsSetNonScrollableColsAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "NO_COLOR", iupControlBaseGetBgColorAttrib, iCellsSetBgColorAttrib, NULL, NULL, IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "BUFFERIZE", iCellsGetBufferizeAttrib, iCellsSetBufferizeAttrib, NULL, NULL, IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "ORIGIN", NULL, iCellsSetOriginAttrib, NULL, NULL, IUPAF_DEFAULT); + + iupClassRegisterAttribute(ic, "FULL_VISIBLE", NULL, iCellsSetFullVisibleAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "REPAINT", NULL, iCellsSetRepaintAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "LIMITS", iCellsGetLimitsAttrib, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FIRST_COL", iCellsGetFirstColAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FIRST_LINE", iCellsGetFirstLineAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IMAGE_CANVAS", iCellsGetImageCanvasAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_READONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CANVAS", iCellsGetCanvasAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_READONLY|IUPAF_NO_INHERIT); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iCellsSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */ + + return ic; +} + +Ihandle* IupCells(void) +{ + return IupCreate("cells"); +} diff --git a/iup/srccontrols/iup_colorbar.c b/iup/srccontrols/iup_colorbar.c new file mode 100755 index 0000000..72e717c --- /dev/null +++ b/iup/srccontrols/iup_colorbar.c @@ -0,0 +1,1082 @@ +/** \file + * \brief Colorbar Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" +#include "iupcontrols.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_image.h" +#include "iup_cdutil.h" + + +#define ICOLORBAR_DEFAULT_NUM_CELLS 16 /* default number of cells */ +#define ICOLORBAR_NO_COLOR 0xff000000 /* no color */ +#define ICOLORBAR_DELTA 5 /* preview margin */ +#define ICOLORBAR_RENDER_ALL -1 +#define ICOLORBAR_RENDER_NONE -2 + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + int w; /* size of the canvas - width */ + int h; /* size of the canvas - height */ + cdCanvas* cdcanvas; /* cd canvas for drawing */ + cdCanvas* cddbuffer; /* image canvas for double buffering */ + long int colors[256]; /* CD color vector */ + int num_cells; /* number of cells at the widgets */ + int num_parts; /* number of sections used to split the colors cells area */ + int vertical; /* vertical orientation flag */ + int squared; /* square cells attribute flag */ + int shadowed; /* 3D shadowed attribute flag */ + long bgcolor; /* control background color */ + long light_shadow; /* } */ + long mid_shadow; /* } 3D shadowed color */ + long dark_shadow; /* } */ + int bufferize; /* bufferation flag */ + long int transparency; /* transparency color */ + int show_secondary; /* secondary color selction flag */ + int preview_size; /* preview size (pixels) 0=disabled, -1=automatic */ + int fgcolor_idx; /* current primary index selected */ + int bgcolor_idx; /* current secondary index selected */ + int focus_cell; /* cell with focus */ + int has_focus; /* 1 if the control has the focus, else 0 */ +}; + +/* Default colors used for a widget */ +static struct { + unsigned int r; + unsigned int g; + unsigned int b; +} default_colors[ICOLORBAR_DEFAULT_NUM_CELLS] = { + { 0, 0, 0 }, { 128, 0, 0 }, { 0, 128, 0 }, { 128, 128, 0 }, + { 0, 0, 128 }, { 128, 0, 128 }, { 0, 128, 128 }, { 192, 192, 192 }, + { 128, 128, 128 }, { 255, 0, 0 }, { 0, 255, 0 }, { 255, 255, 0 }, + { 0, 0, 255 }, { 255, 0, 255 }, { 0, 255, 255 }, { 255, 255, 255 } +}; + + +/* This function draw the 3D cell effect. */ +static void iColorbarDrawSunken(Ihandle* ih, int xmin, int xmax, int ymin, int ymax) +{ + if (!ih->data->shadowed) return; + cdIupDrawSunkenRect(ih->data->cddbuffer, xmin, ymin, xmax, ymax, ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); +} + +/* This function is used to draw a box for a cell. */ +static void iColorbarDrawBox(Ihandle* ih, int xmin, int xmax, int ymin, int ymax, int idx) +{ + long int color = ih->data->colors[idx]; + cdCanvasInteriorStyle(ih->data->cddbuffer, CD_SOLID); + + if (color == ih->data->transparency) + { + int xm = (xmin+xmax)/2; + int ym = (ymin+ymax)/2; + cdCanvasForeground(ih->data->cddbuffer,0xeeeeee); + cdCanvasBox(ih->data->cddbuffer,xmin, xm, ymin, ym); + cdCanvasBox(ih->data->cddbuffer,xm, xmax, ym, ymax); + cdCanvasForeground(ih->data->cddbuffer,0xcccccc); + cdCanvasBox(ih->data->cddbuffer,xmin, xm, ym, ymax); + cdCanvasBox(ih->data->cddbuffer,xm, xmax, ymin, ym); + } + else + { + if (!iupdrvIsActive(ih)) + { + unsigned char r, g, b, bg_r, bg_g, bg_b; + cdDecodeColor(color, &r, &g, &b); + cdDecodeColor(ih->data->bgcolor, &bg_r, &bg_g, &bg_b); + iupImageColorMakeInactive(&r, &g, &b, bg_r, bg_g, bg_b); + color = cdEncodeColor(r, g, b); + } + cdCanvasForeground(ih->data->cddbuffer,color); + cdCanvasBegin(ih->data->cddbuffer,CD_FILL); + cdCanvasVertex(ih->data->cddbuffer,xmin, ymin); cdCanvasVertex(ih->data->cddbuffer,xmin, ymax); + cdCanvasVertex(ih->data->cddbuffer,xmax, ymax); cdCanvasVertex(ih->data->cddbuffer,xmax, ymin); + cdCanvasEnd(ih->data->cddbuffer); + } + + cdCanvasForeground(ih->data->cddbuffer,CD_BLACK); + cdCanvasBegin(ih->data->cddbuffer,CD_CLOSED_LINES); + cdCanvasVertex(ih->data->cddbuffer,xmin, ymin); cdCanvasVertex(ih->data->cddbuffer,xmin, ymax); + cdCanvasVertex(ih->data->cddbuffer,xmax, ymax); cdCanvasVertex(ih->data->cddbuffer,xmax, ymin); + cdCanvasEnd(ih->data->cddbuffer); +} + +/* This function is used to get the largest square of a cell bounding box. */ +static void iColorbarFitSquare(int* xmin, int* xmax, int* ymin, int* ymax) +{ + int mx = (*xmax + *xmin) / 2; + int my = (*ymax + *ymin) / 2; + int dx = (*xmax - *xmin) / 2; + int dy = (*ymax - *ymin) / 2; + + if (dx < dy) + { + *ymin = my - dx; + *ymax = my + dx; + } + else + { + *xmin = mx - dy; + *xmax = mx + dy; + } +} + +/* This function is used to get the preview area bounding box. */ +static void iColorbarGetPreviewLimit(Ihandle* ih, int* xmin, int* xmax, int* ymin, int* ymax) +{ + int num_itens = ih->data->num_cells / ih->data->num_parts + 1; /* include space for preview area */ + + *xmin = 0; *ymin = 0; + if (ih->data->vertical) + { + *xmax = ih->data->w; + if (ih->data->preview_size > 0) + *ymax = *ymin + ih->data->preview_size; + else + *ymax = ih->data->h / num_itens; + } + else + { + *ymax = ih->data->h; + if (ih->data->preview_size > 0) + *xmax = *xmin + ih->data->preview_size; + else + *xmax = ih->data->w / num_itens; + } + if (ih->data->squared) + iColorbarFitSquare(xmin, xmax, ymin, ymax); +} + +/* This function is used to get a cell bounding box. */ +static void iColorbarGetCellLimit(Ihandle* ih, int idx, int* xmin, int* xmax, int* ymin, int* ymax) +{ + int delta, dummy; + int wcell, hcell; + int px = 0, py = 0; + int posx, posy; + int num_itens = ih->data->num_cells / ih->data->num_parts; + + if (ih->data->preview_size != 0) + iColorbarGetPreviewLimit(ih, &dummy, &px, &dummy, &py); + + if (ih->data->vertical) /* Vertical orientation */ + { + wcell = ih->data->w / ih->data->num_parts; + hcell = (ih->data->h - py) / num_itens; + posx = idx / num_itens; + posy = idx % num_itens; + if (ih->data->squared) + { + wcell = wcell < hcell ? wcell : hcell; + hcell = wcell; + } + delta = (ih->data->w - (ih->data->num_parts*wcell)) / 2; + *xmin = delta + (posx+0)*wcell; + *xmax = delta + (posx+1)*wcell; + *ymin = py + (posy+0)*hcell; + *ymax = py + (posy+1)*hcell; + } + else /* Horizontal orientation */ + { + hcell = ih->data->h / ih->data->num_parts; + wcell = (ih->data->w - px) / num_itens; + posx = idx % num_itens; + posy = idx / num_itens; + if (ih->data->squared) + { + wcell = wcell < hcell ? wcell : hcell; + hcell = wcell; + } + delta = (ih->data->h - (ih->data->num_parts * hcell)) / 2; + *xmin = px + (posx + 0) * wcell; + *xmax = px + (posx + 1) * wcell; + *ymin = delta + (posy + 0) * hcell; + *ymax = delta + (posy + 1) * hcell; + } +} + +/* This function is used to get the index color of a canvas coordinate. */ +static int iColorbarGetIndexColor(Ihandle* ih, int x, int y) +{ + int i; + int xmin, ymin; + int xmax, ymax; + int result = -9; + + for (i = 0; i < ih->data->num_cells; i++) + { + iColorbarGetCellLimit(ih, i, &xmin, &xmax, &ymin, &ymax); + if (x > xmin && x < xmax && y > ymin && y < ymax) + { + result = i; + break; + } + } + return result; +} + +/* This function is used to repaint the preview area. */ +static void iColorbarRenderPreview(Ihandle* ih) +{ + int delta = ICOLORBAR_DELTA; + int xmin, ymin; + int xmax, ymax; + int xhalf, yhalf; + int bg = ih->data->bgcolor_idx; + int fg = ih->data->fgcolor_idx; + + if (ih->data->preview_size == 0) + return; + + iColorbarGetPreviewLimit(ih, &xmin, &xmax, &ymin, &ymax); + + if (xmax-xmin < delta || ymax-ymin < delta) + delta = 0; + + if (ih->data->show_secondary) + { + xhalf = 2 * (xmax - xmin - 2 * delta) / 3 + delta; + yhalf = 2 * (ymax - ymin - 2 * delta) / 3 + delta; + + iColorbarDrawBox(ih, xmax - xhalf, xmax - delta, ymin + delta, ymin + yhalf, bg); + iColorbarDrawBox(ih, xmin + delta, xmin + xhalf, ymax - yhalf, ymax - delta, fg); + } + else + { + iColorbarDrawBox(ih, xmin + delta, xmax - delta, ymin + delta, ymax - delta, fg); + } +} + +static void iColorbarDrawFocusCell(Ihandle* ih) +{ + int delta = 4; + int xmin, ymin; + int xmax, ymax; + + iColorbarGetCellLimit(ih, ih->data->focus_cell, &xmin, &xmax, &ymin, &ymax); + xmin += delta; + xmax -= delta; + ymin += delta; + ymax -= delta; + + cdIupDrawFocusRect(ih, ih->data->cdcanvas, xmin, ymin, xmax, ymax); +} + +/* This function is used to repaint a cell. */ +static void iColorbarRenderCell(Ihandle* ih, int idx) +{ + int delta = 2; + int xmin, ymin; + int xmax, ymax; + + iColorbarGetCellLimit(ih, idx, &xmin, &xmax, &ymin, &ymax); + xmin += delta; + xmax -= delta; + ymin += delta; + ymax -= delta; + + iColorbarDrawBox(ih, xmin, xmax, ymin, ymax, idx); + iColorbarDrawSunken(ih, xmin, xmax, ymin, ymax); +} + +/* This function loops all cells, repainting them. */ +static void iColorbarRenderCells(Ihandle* ih) +{ + int i; + for (i = 0; i < ih->data->num_cells; i++) + iColorbarRenderCell(ih, i); +} + +static void iColorbarRepaint(Ihandle* ih) +{ + /* Checking errors or not initialized conditions */ + if (ih->data->cddbuffer == NULL) + return; + + /* If object is buffering, it will be not drawn */ + if (ih->data->bufferize == 1) + return; + + /* update render */ + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + iColorbarRenderPreview(ih); + iColorbarRenderCells(ih); + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + iColorbarDrawFocusCell(ih); +} + +static int iColorbarCheckPreview(Ihandle* ih, int x, int y) +{ + int xmin, ymin; + int xmax, ymax; + int xhalf, yhalf; + int delta = ICOLORBAR_DELTA; + + iColorbarGetPreviewLimit(ih, &xmin, &xmax, &ymin, &ymax); + + if (ih->data->show_secondary) + { + xhalf = 2 * (xmax - xmin - 2 * delta) / 3 + delta; + yhalf = 2 * (ymax - ymin - 2 * delta) / 3 + delta; + + if (x > xmin+delta && x < xmin+xhalf && y > ymax-yhalf && y < ymax-delta) + return IUP_PRIMARY; + if (x > xmax-xhalf && x < xmax-delta && y > ymin+delta && y < ymin+yhalf) + return IUP_SECONDARY; + if (x > xmin && x < xmax && y > ymin && y < ymax) + return 1; /* switch */ + } + else + { + if (x > xmin+delta && x < xmax-delta && y > ymin+delta && y < ymax-delta) + return IUP_PRIMARY; + } + + return 0; +} + +static int iColorbarSetNumPartsAttrib(Ihandle* ih, const char* value) +{ + if (iupStrToInt(value, &ih->data->num_parts)) + iColorbarRepaint(ih); + return 0; +} + +static char* iColorbarGetNumPartsAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + sprintf(buffer, "%d", ih->data->num_parts); + return buffer; +} + +static int iColorbarSetPrimaryCellAttrib(Ihandle* ih, const char* value) +{ + int new_val; + if (iupStrToInt(value, &new_val)) + { + if (new_val > 0 && new_val < ih->data->num_cells) + { + ih->data->fgcolor_idx = new_val; + iColorbarRepaint(ih); + } + } + return 0; +} + +static char* iColorbarGetPrimaryCellAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + sprintf(buffer, "%d", ih->data->fgcolor_idx); + return buffer; +} + +static int iColorbarSetSecondaryCellAttrib(Ihandle* ih, const char* value) +{ + int new_val; + if (iupStrToInt(value, &new_val)) + { + if (new_val > 0 && new_val < ih->data->num_cells) + { + ih->data->bgcolor_idx = new_val; + iColorbarRepaint(ih); + } + } + + return 0; +} + +static char* iColorbarGetSecondaryCellAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + sprintf(buffer, "%d", ih->data->bgcolor_idx); + return buffer; +} + +static int iColorbarSetBufferizeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NO")) + { + ih->data->bufferize = 0; + iColorbarRepaint(ih); + } + else + ih->data->bufferize = 1; + + return 0; +} + +static char* iColorbarGetBufferizeAttrib(Ihandle* ih) +{ + if (ih->data->bufferize) + return "YES"; + else + return "NO"; +} + +static int iColorbarSetNumCellsAttrib(Ihandle* ih, const char* value) +{ + int new_val; + if (iupStrToInt(value, &new_val)) + { + if (new_val > 0 && new_val <= 256) + { + ih->data->num_cells = new_val; + + if (ih->data->fgcolor_idx >= ih->data->num_cells) + ih->data->fgcolor_idx = ih->data->num_cells - 1; + + if (ih->data->bgcolor_idx >= ih->data->num_cells) + ih->data->bgcolor_idx = ih->data->num_cells - 1; + + iColorbarRepaint(ih); + } + } + return 0; +} + +static char* iColorbarGetNumCellsAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(100); + sprintf(buffer, "%d", ih->data->num_cells); + return buffer; +} + +static int iColorbarSetOrientationAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "HORIZONTAL")) + ih->data->vertical = 0; + else + ih->data->vertical = 1; + + iColorbarRepaint(ih); + return 0; +} + +static char* iColorbarGetOrientationAttrib(Ihandle* ih) +{ + if (ih->data->vertical) + return "VERTICAL"; + else + return "HORIZONTAL"; +} + +static int iColorbarSetSquaredAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NO")) + ih->data->squared = 0; + else + ih->data->squared = 1; + + iColorbarRepaint(ih); + return 0; +} + +static char* iColorbarGetSquaredAttrib(Ihandle* ih) +{ + if (ih->data->squared) + return "YES"; + else + return "NO"; +} + +static int iColorbarSetShadowedAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NO")) + ih->data->shadowed = 0; + else + ih->data->shadowed = 1; + + iColorbarRepaint(ih); + return 0; +} + +static char* iColorbarGetShadowedAttrib(Ihandle* ih) +{ + if (ih->data->shadowed) + return "YES"; + else + return "NO"; +} + +static int iColorbarSetShowSecondaryAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NO")) + ih->data->show_secondary = 0; + else + ih->data->show_secondary = 1; + + iColorbarRepaint(ih); + return 0; +} + +static char* iColorbarGetShowSecondaryAttrib(Ihandle* ih) +{ + if (ih->data->show_secondary) + return "YES"; + else + return "NO"; +} + +static int iColorbarSetShowPreviewAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NO")) + ih->data->preview_size = 0; + else + ih->data->preview_size = -1; /* reset to automatic */ + + iColorbarRepaint(ih); + return 1; +} + +static int iColorbarSetPreviewSizeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrToInt(value, &ih->data->preview_size)) + iColorbarRepaint(ih); + return 0; +} + +static char* iColorbarGetPreviewSizeAttrib(Ihandle* ih) +{ + if (ih->data->preview_size == -1) /* automatic */ + return NULL; + else + { + char* buffer = iupStrGetMemory(100); + sprintf(buffer, "%d", ih->data->preview_size); + return buffer; + } +} + +static int iColorbarSetCellAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int idx = -1; + iupStrToInt(name_id, &idx); + if (idx >= 0 || idx < ih->data->num_cells) + { + ih->data->colors[idx] = cdIupConvertColor(value); + iColorbarRepaint(ih); + } + + return 0; +} + +static char* iColorbarGetCellAttrib(Ihandle* ih, const char* name_id) +{ + char* buffer = iupStrGetMemory(100); + int idx = -1; + long color; + + iupStrToInt(name_id, &idx); + if (idx < 0 || idx >= ih->data->num_cells) + return NULL; + + color = ih->data->colors[idx]; + sprintf(buffer, "%d %d %d", cdRed(color), cdGreen(color), cdBlue(color)); + return buffer; +} + +static int iColorbarSetTransparencyAttrib(Ihandle* ih, const char* value) +{ + if (value == NULL) + ih->data->transparency = ICOLORBAR_NO_COLOR; + else + ih->data->transparency = cdIupConvertColor(value); + + iColorbarRepaint(ih); + return 0; +} + +static char* iColorbarGetTransparencyAttrib(Ihandle* ih) +{ + if (ih->data->transparency == ICOLORBAR_NO_COLOR) + return NULL; + else + { + char* buffer = iupStrGetMemory(100); + sprintf(buffer, "%d %d %d", cdRed(ih->data->transparency), cdGreen(ih->data->transparency), cdBlue(ih->data->transparency)); + return buffer; + } +} + +static int iColorbarSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = iupControlBaseGetParentBgColor(ih); + + ih->data->bgcolor = cdIupConvertColor(value); + + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + if (!iupdrvIsActive(ih)) + ih->data->light_shadow = ih->data->mid_shadow; + + iColorbarRepaint(ih); + return 1; +} + +static int iColorbarSetActiveAttrib(Ihandle* ih, const char* value) +{ + iupBaseSetActiveAttrib(ih, value); + + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + if (!iupdrvIsActive(ih)) + ih->data->light_shadow = ih->data->mid_shadow; + + iColorbarRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static int iColorbarRedraw_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + iColorbarDrawFocusCell(ih); + + return IUP_DEFAULT; +} + +static int iColorbarResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL); + + /* update render */ + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + iColorbarRenderPreview(ih); + iColorbarRenderCells(ih); + + return IUP_DEFAULT; +} + +static void iColorbarRenderPartsRepaint(Ihandle* ih, int preview, int idx) +{ + /* update render */ + if (preview) + iColorbarRenderPreview(ih); + + if (idx != ICOLORBAR_RENDER_NONE) + { + if (idx == ICOLORBAR_RENDER_ALL) + iColorbarRenderCells(ih); + else + iColorbarRenderCell(ih, idx); + } + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + iColorbarDrawFocusCell(ih); +} + +static int iColorbarFocus_CB(Ihandle* ih, int focus) +{ + ih->data->has_focus = focus; + + if (ih->data->cddbuffer) + { + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + iColorbarDrawFocusCell(ih); + } + + return IUP_DEFAULT; +} + +static void iColorbarCallExtentedCb(Ihandle* ih, int idx) +{ + IFni extended_cb = (IFni)IupGetCallback(ih, "EXTENDED_CB"); + if (!extended_cb) + return; + + if (extended_cb(ih, idx) == IUP_IGNORE) + return; + + iColorbarRenderPartsRepaint(ih, 1, ICOLORBAR_RENDER_ALL); /* the preview and all the cells are rendered */ +} + +static void iColorbarCallSelectCb(Ihandle* ih, int idx, int type) +{ + IFnii select_cb; + + if (type == IUP_SECONDARY && !ih->data->show_secondary) + return; + + select_cb = (IFnii)IupGetCallback(ih, "SELECT_CB"); + if (!select_cb) + return; + + if (select_cb(ih, idx, type) == IUP_IGNORE) + return; + + if (type == IUP_PRIMARY) + ih->data->fgcolor_idx = idx; + else + ih->data->bgcolor_idx = idx; + + iColorbarRenderPartsRepaint(ih, 1, ICOLORBAR_RENDER_NONE); /* only the preview area is rendered */ +} + +static void iColorbarCallCellCb(Ihandle* ih, int idx) +{ + char* returned; + sIFni cell_cb = (sIFni)IupGetCallback(ih, "CELL_CB"); + if (!cell_cb) + return; + + returned = cell_cb(ih, idx); /* the application can change the color */ + if (returned) + { + int preview = 0; + /* check if the preview area should be rendered */ + if (idx == ih->data->fgcolor_idx || idx == ih->data->bgcolor_idx) + preview = 1; + + ih->data->colors[idx] = cdIupConvertColor(returned); + iColorbarRenderPartsRepaint(ih, preview, idx); /* the preview and the cell are rendered */ + } +} + +static int iColorbarKeyPress_CB(Ihandle* ih, int c, int press) +{ + if (c != K_LEFT && c != K_UP && c != K_RIGHT && c != K_DOWN && + c != K_HOME && c != K_END && + c != K_SP && c != K_sCR && c != K_sSP && c != K_cSP) + return IUP_DEFAULT; + + if (!press || !ih->data->has_focus) + return IUP_DEFAULT; + + switch(c) + { + case K_LEFT: + if (ih->data->vertical) + { + int cells_per_line = ih->data->num_cells / ih->data->num_parts; + if (ih->data->focus_cell > cells_per_line) + ih->data->focus_cell -= cells_per_line; + } + else + { + if (ih->data->focus_cell > 0) + ih->data->focus_cell--; + } + break; + case K_DOWN: + if (ih->data->vertical) + { + if (ih->data->focus_cell > 0) + ih->data->focus_cell--; + } + else + { + int cells_per_line = ih->data->num_cells / ih->data->num_parts; + if (ih->data->focus_cell > cells_per_line) + ih->data->focus_cell -= cells_per_line; + } + break; + case K_RIGHT: + if (ih->data->vertical) + { + int cells_per_line = ih->data->num_cells / ih->data->num_parts; + if (ih->data->focus_cell+cells_per_line < ih->data->num_cells-1) + ih->data->focus_cell += cells_per_line; + } + else + { + if (ih->data->focus_cell < ih->data->num_cells-1) + ih->data->focus_cell++; + } + break; + case K_UP: + if (ih->data->vertical) + { + if (ih->data->focus_cell < ih->data->num_cells-1) + ih->data->focus_cell++; + } + else + { + int cells_per_line = ih->data->num_cells / ih->data->num_parts; + if (ih->data->focus_cell+cells_per_line < ih->data->num_cells-1) + ih->data->focus_cell += cells_per_line; + } + break; + case K_HOME: + ih->data->focus_cell = 0; + break; + case K_END: + ih->data->focus_cell = ih->data->num_cells-1; + break; + case K_sCR: + iColorbarCallCellCb(ih, ih->data->focus_cell); + return IUP_DEFAULT; + case K_SP: + iColorbarCallSelectCb(ih, ih->data->focus_cell, IUP_PRIMARY); + return IUP_DEFAULT; + case K_cSP: + iColorbarCallSelectCb(ih, ih->data->focus_cell, IUP_SECONDARY); + return IUP_DEFAULT; + case K_sSP: + iColorbarCallExtentedCb(ih, ih->data->focus_cell); + return IUP_DEFAULT; + } + + if (ih->data->cddbuffer) + { + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + iColorbarDrawFocusCell(ih); + } + + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ +} + +static int iColorbarButton_CB(Ihandle* ih, int b, int m, int x, int y, char* r) +{ + int idx; + + if (m == 0) + return IUP_DEFAULT; + + y = cdIupInvertYAxis(y, ih->data->h); + + if (b == IUP_BUTTON1 && iup_isdouble(r)) + { + idx = iColorbarGetIndexColor(ih, x, y); + if (idx < 0 || idx >= ih->data->num_cells) + { + int ret = iColorbarCheckPreview(ih, x, y); + if (ret) + { + if (ret == 1) + { + IFnii switch_cb = (IFnii)IupGetCallback(ih, "SWITCH_CB"); + + if (!ih->data->show_secondary) + return IUP_DEFAULT; + + if (switch_cb && switch_cb(ih, ih->data->fgcolor_idx, ih->data->bgcolor_idx) == IUP_IGNORE) + return IUP_DEFAULT; + + /* the application allow to switch the indices */ + idx = ih->data->fgcolor_idx; + ih->data->fgcolor_idx = ih->data->bgcolor_idx; + ih->data->bgcolor_idx = idx; + + iColorbarRenderPartsRepaint(ih, 1, ICOLORBAR_RENDER_NONE); /* only the preview area is rendered */ + } + else + { + if (ret == IUP_PRIMARY) + idx = ih->data->fgcolor_idx; + else + idx = ih->data->bgcolor_idx; + + iColorbarCallCellCb(ih, idx); + } + } + + return IUP_DEFAULT; + } + + ih->data->focus_cell = idx; + + iColorbarCallCellCb(ih, idx); + } + else if (b == IUP_BUTTON1) + { + idx = iColorbarGetIndexColor(ih, x, y); + if (idx < 0 || idx >= ih->data->num_cells) + return IUP_DEFAULT; + + ih->data->focus_cell = idx; + + iColorbarCallSelectCb(ih, idx, IUP_PRIMARY); + } + else if (b == IUP_BUTTON3 && iup_isshift(r)) + { + idx = iColorbarGetIndexColor(ih, x, y); + if (idx < 0 || idx >= ih->data->num_cells) + return IUP_DEFAULT; + + ih->data->focus_cell = idx; + + iColorbarCallExtentedCb(ih, idx); + } + else if (b == IUP_BUTTON3) + { + idx = iColorbarGetIndexColor(ih, x, y); + if (idx < 0 || idx >= ih->data->num_cells) + return IUP_DEFAULT; + + ih->data->focus_cell = idx; + + iColorbarCallSelectCb(ih, idx, IUP_SECONDARY); + } + + return IUP_DEFAULT; +} + + +/****************************************************************************/ + + +static int iColorbarMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + + return IUP_NOERROR; +} + +static void iColorbarUnMapMethod(Ihandle* ih) +{ + if (ih->data->cddbuffer) + cdKillCanvas(ih->data->cddbuffer); + + if (ih->data->cdcanvas) + cdKillCanvas(ih->data->cdcanvas); +} + +static int iColorbarCreateMethod(Ihandle* ih, void **params) +{ + int i; + (void)params; + + /* free the data allocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "BORDER", "NO"); + + /* default values */ + ih->data->num_cells = 16; + ih->data->num_parts = 1; + ih->data->vertical = 1; + ih->data->squared = 1; + ih->data->shadowed = 1; + ih->data->focus_cell = 0; + ih->data->preview_size = -1; /* automatic */ + ih->data->fgcolor_idx = 0; /* black */ + ih->data->bgcolor_idx = 15; /* white */ + ih->data->transparency = ICOLORBAR_NO_COLOR; + ih->data->light_shadow = CD_WHITE; + ih->data->mid_shadow = CD_GRAY; + ih->data->dark_shadow = CD_DARK_GRAY; + + /* Initialization of the color vector */ + for (i = 0; i < ICOLORBAR_DEFAULT_NUM_CELLS; i++) + { + ih->data->colors[i] = cdEncodeColor((unsigned char)default_colors[i].r, + (unsigned char)default_colors[i].g, + (unsigned char)default_colors[i].b); + } + + /* IupCanvas callbacks */ + IupSetCallback(ih, "RESIZE_CB", (Icallback)iColorbarResize_CB); + IupSetCallback(ih, "ACTION", (Icallback)iColorbarRedraw_CB); + IupSetCallback(ih, "BUTTON_CB", (Icallback)iColorbarButton_CB); + IupSetCallback(ih, "FOCUS_CB", (Icallback)iColorbarFocus_CB); + IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iColorbarKeyPress_CB); + + return IUP_NOERROR; +} + +Iclass* iupColorbarGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "colorbar"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */ + + /* Class functions */ + ic->Create = iColorbarCreateMethod; + ic->Map = iColorbarMapMethod; + ic->UnMap = iColorbarUnMapMethod; + + /* Do not need to set base attributes because they are inherited from IupCanvas */ + + /* IupColorbar Callbacks */ + iupClassRegisterCallback(ic, "CELL_CB", "i=s"); + iupClassRegisterCallback(ic, "SWITCH_CB", "ii"); + iupClassRegisterCallback(ic, "SELECT_CB", "ii"); + iupClassRegisterCallback(ic, "EXTENDED_CB", "i"); + + /* IupColorbar only */ + iupClassRegisterAttributeId(ic, "CELL", iColorbarGetCellAttrib, iColorbarSetCellAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NUM_CELLS", iColorbarGetNumCellsAttrib, iColorbarSetNumCellsAttrib, IUPAF_SAMEASSYSTEM, "16", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NUM_PARTS", iColorbarGetNumPartsAttrib, iColorbarSetNumPartsAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PREVIEW_SIZE", iColorbarGetPreviewSizeAttrib, iColorbarSetPreviewSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "PRIMARY_CELL", iColorbarGetPrimaryCellAttrib, iColorbarSetPrimaryCellAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SECONDARY_CELL", iColorbarGetSecondaryCellAttrib, iColorbarSetSecondaryCellAttrib, IUPAF_SAMEASSYSTEM, "15", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "BUFFERIZE", iColorbarGetBufferizeAttrib, iColorbarSetBufferizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "ORIENTATION", iColorbarGetOrientationAttrib, iColorbarSetOrientationAttrib, IUPAF_SAMEASSYSTEM, "VERTICAL", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "TRANSPARENCY", iColorbarGetTransparencyAttrib, iColorbarSetTransparencyAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SHOW_PREVIEW", NULL, iColorbarSetShowPreviewAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SHOW_SECONDARY", iColorbarGetShowSecondaryAttrib, iColorbarSetShowSecondaryAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SQUARED", iColorbarGetSquaredAttrib, iColorbarSetSquaredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "SHADOWED", iColorbarGetShadowedAttrib, iColorbarSetShadowedAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iColorbarSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iColorbarSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */ + + return ic; +} + +Ihandle *IupColorbar(void) +{ + return IupCreate("colorbar"); +} diff --git a/iup/srccontrols/iup_controls.c b/iup/srccontrols/iup_controls.c new file mode 100755 index 0000000..e60bd91 --- /dev/null +++ b/iup/srccontrols/iup_controls.c @@ -0,0 +1,56 @@ +/** \file + * \brief initializes the additional controls. + * + * See Copyright Notice in "iup.h" + */ + + +#include "iup.h" +#include "iupcontrols.h" + +#include "iup_object.h" +#include "iup_childtree.h" +#include "iup_register.h" +#include "iup_controls.h" +#include "iup_attrib.h" + + +int IupControlsOpen(void) +{ + if (IupGetGlobal("_IUP_CONTROLS_OPEN")) + return IUP_OPENED; + + iupRegisterClass(iupDialGetClass()); + iupRegisterClass(iupCellsGetClass()); + iupRegisterClass(iupColorbarGetClass()); + iupRegisterClass(iupColorBrowserGetClass()); + iupRegisterClass(iupMatrixGetClass()); + iupRegisterClass(iupGaugeGetClass()); + iupRegisterClass(iupColorBrowserDlgGetClass()); + + IupSetGlobal("_IUP_CONTROLS_OPEN", "1"); + + return IUP_NOERROR; +} + +void IupControlsClose(void) /* for backward compatibility */ +{ +} + +char *iupControlBaseGetParentBgColor(Ihandle* ih) +{ + return IupGetAttribute(iupChildTreeGetNativeParent(ih), "BGCOLOR"); +} + +char *iupControlBaseGetBgColorAttrib(Ihandle* ih) +{ + /* check the hash table */ + char *color = iupAttribGet(ih, "BGCOLOR"); + + /* If not defined check native definition from parent */ + if (!color) + color = iupControlBaseGetParentBgColor(ih); + + return color; +} + diff --git a/iup/srccontrols/iup_controls.h b/iup/srccontrols/iup_controls.h new file mode 100755 index 0000000..bb26963 --- /dev/null +++ b/iup/srccontrols/iup_controls.h @@ -0,0 +1,33 @@ +/** \file + * \brief Additional Controls Class Initialization functions. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUP_CONTROLS_H +#define __IUP_CONTROLS_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +Iclass* iupDialGetClass(void); +Iclass* iupCellsGetClass(void); +Iclass* iupColorbarGetClass(void); +Iclass* iupColorBrowserGetClass(void); +Iclass* iupMatrixGetClass(void); +Iclass* iupGaugeGetClass(void); +Iclass* iupTabsGetClass(void); +Iclass* iupColorBrowserDlgGetClass(void); + +char *iupControlBaseGetParentBgColor (Ihandle* ih); +char *iupControlBaseGetBgColorAttrib(Ihandle* ih); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/iup_dial.c b/iup/srccontrols/iup_dial.c new file mode 100755 index 0000000..1dd2d0f --- /dev/null +++ b/iup/srccontrols/iup_dial.c @@ -0,0 +1,864 @@ +/** \file + * \brief Dial Control. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_cdutil.h" + + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define IDIAL_SPACE 3 +#define IDIAL_NCOLORS 10 +#define IDIAL_DEFAULT_DENSITY 0.2 +#define IDIAL_DEFAULT_DENSITY_STR "0.2" +#define IDIAL_DEFAULT_FGCOLOR "64 64 64" +#define IDIAL_DEFAULT_FGCOLOR_COMP 64 + +enum{IDIAL_VERTICAL, IDIAL_HORIZONTAL, IDIAL_CIRCULAR}; + +#define dialmin(a,b) ((a)<(b)?(a):(b)) + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + /* attributes */ + double angle; + int type; + double unit; + double density; + + /* mouse interaction control */ + int px; + int py; + int pressing; + + /* visual appearance control */ + void (*Draw)(Ihandle* ih); + int w, h; + int has_focus; + int num_div; /* number of sections in the dial wheel */ + double radius; /* radius size of the dial wheel */ + long fgcolor[IDIAL_NCOLORS+1]; + long bgcolor, + light_shadow, + mid_shadow, + dark_shadow; + + /* drawing canvas */ + cdCanvas *cddbuffer; + cdCanvas *cdcanvas; +}; + + +static long int iDialGetFgColor(Ihandle* ih, double a, double amin) +{ + double nu = fabs(a - 0.5 * M_PI); + double de = fabs(0.5 * M_PI - amin); + double fr = nu / de; + int i = (int)(IDIAL_NCOLORS * fr); + return ih->data->fgcolor[IDIAL_NCOLORS - i]; +} + +static void iDialDrawVerticalBackground(Ihandle* ih, double amin, double amax, int *ymin, int *ymax) +{ + double delta = (0.5 * M_PI - amin) / IDIAL_NCOLORS; + double a, yc = ih->data->h / 2.0; + *ymin = *ymax = ih->data->h / 2; + for (a = amin; a < 0.5 * M_PI; a += delta) /* shading */ + { + int y0 = (int)(yc - ih->data->radius * cos(a)); + int y1 = (int)(yc - ih->data->radius * cos(a+delta)); + cdCanvasForeground(ih->data->cddbuffer, iDialGetFgColor(ih, a, amin)); + cdCanvasBox(ih->data->cddbuffer, IDIAL_SPACE+1, ih->data->w-1-IDIAL_SPACE-2, y0, y1); + + if (y0 < *ymin) *ymin = y0; + + if (abs(y1-y0) < 2) + continue; + } + for (a = 0.5 * M_PI; a < amax; a += delta) + { + int y0 = (int)(yc + ih->data->radius * fabs(cos(a))); + int y1 = (int)(yc + ih->data->radius * fabs(cos(a+delta))); + cdCanvasForeground(ih->data->cddbuffer, iDialGetFgColor(ih, a, amin)); + cdCanvasBox(ih->data->cddbuffer, IDIAL_SPACE+1, ih->data->w-1-IDIAL_SPACE-2, y0, y1); + + if (y1 > *ymax) *ymax = y1; + + if (abs(y1-y0) < 2) + continue; + } +} + +static void iDialDrawVertical(Ihandle* ih) +{ + double delta = 2 * M_PI / ih->data->num_div; + double a, amin, amax; + int ymin, ymax; + + ih->data->radius = (ih->data->h - 2 * IDIAL_SPACE - 2) / 2.0; + + amin = 0.0; + amax = M_PI; + if(ih->data->angle < amin) + { + for (a = ih->data->angle; a < amin; a += delta) + ; + } + else + { + for (a = ih->data->angle; a > amin; a -= delta) + ; + a += delta; + } + + iDialDrawVerticalBackground(ih, amin, amax, &ymin, &ymax); + + cdIupDrawRaisenRect(ih->data->cddbuffer, IDIAL_SPACE, ymin, ih->data->w-1-IDIAL_SPACE, ymax, + ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); + + for ( ; a < amax; a += delta) /* graduation */ + { + int y; + if (a < 0.5 * M_PI) y = (int)(ih->data->h / 2.0 - ih->data->radius * cos(a)); + else y = (int)(ih->data->h / 2.0 + ih->data->radius * fabs(cos(a))); + + if (abs(y-ymin) < 3 || abs(ymax-y) < 3) + continue; + + cdIupDrawHorizSunkenMark(ih->data->cddbuffer, IDIAL_SPACE+1, ih->data->w-1-IDIAL_SPACE-2, y, ih->data->light_shadow, ih->data->dark_shadow); + } +} + +static void iDialDrawHorizontalBackground(Ihandle* ih,double amin,double amax, int *xmin, int *xmax) +{ + double delta = (0.5 * M_PI - amin) / IDIAL_NCOLORS; + double a, xc = ih->data->w / 2.0; + *xmin = *xmax = ih->data->w / 2; + for (a = amin; a < 0.5 * M_PI; a += delta) + { + int x0=(int)(xc - ih->data->radius * cos(a)); + int x1=(int)(xc - ih->data->radius * cos(a + delta)); + cdCanvasForeground(ih->data->cddbuffer,iDialGetFgColor(ih, a, amin)); + cdCanvasBox(ih->data->cddbuffer, x0, x1, IDIAL_SPACE+2, ih->data->h-1-IDIAL_SPACE-1); + + if (x0 < *xmin) *xmin = x0; + + if (abs(x1 - x0) < 2) + continue; + } + for (a = 0.5 * M_PI; a < amax; a += delta) + { + int x0 =(int)(xc + ih->data->radius * fabs(cos(a))); + int x1 =(int)(xc + ih->data->radius * fabs(cos(a + delta))); + cdCanvasForeground(ih->data->cddbuffer, iDialGetFgColor(ih, a, amin)); + cdCanvasBox(ih->data->cddbuffer, x0, x1, IDIAL_SPACE+2, ih->data->h-1-IDIAL_SPACE-1); + + if (x1 > *xmax) *xmax = x1; + + if (abs(x1-x0) < 2) + continue; + } +} + +static void iDialDrawHorizontal(Ihandle* ih) +{ + double delta = 2 * M_PI / ih->data->num_div; + int x; + double a, amin, amax; + int xmin, xmax; + ih->data->radius = (ih->data->w - 2 * IDIAL_SPACE - 2) / 2.0; + amin = 0.0; + amax = M_PI; + if(ih->data->angle < amin) + { + for (a = ih->data->angle; a < amin; a += delta) ; + } + else + { + for (a = ih->data->angle; a > amin; a-= delta) ; + a += delta; + } + + iDialDrawHorizontalBackground(ih, amin, amax, &xmin, &xmax); + + cdIupDrawRaisenRect(ih->data->cddbuffer, xmin, IDIAL_SPACE, xmax, ih->data->h-1-IDIAL_SPACE, + ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); + + for ( ; a < amax; a += delta) + { + if (a < 0.5 * M_PI) x = (int)(ih->data->w / 2.0 - ih->data->radius * cos(a)); + else x = (int)(ih->data->w / 2.0 + ih->data->radius * fabs(cos(a))); + + if (abs(x - xmin) < 3 || abs(xmax - x) < 3) + continue; + + cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, IDIAL_SPACE+2, ih->data->h-1-IDIAL_SPACE-1, ih->data->light_shadow, ih->data->dark_shadow); + } +} + +static void iDialDrawCircularMark(Ihandle* ih, int x1, int y1) +{ + cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasBox(ih->data->cddbuffer,x1, x1+4, y1, y1+4); + + cdCanvasForeground(ih->data->cddbuffer, ih->data->light_shadow); + cdCanvasLine(ih->data->cddbuffer, x1, y1+1, x1, y1+3); + cdCanvasLine(ih->data->cddbuffer, x1+1, y1+4, x1+3, y1+4); + + cdCanvasForeground(ih->data->cddbuffer, ih->data->mid_shadow); + cdCanvasLine(ih->data->cddbuffer, x1+1, y1, x1+4, y1); + cdCanvasLine(ih->data->cddbuffer, x1+4, y1, x1+4, y1+3); + + cdCanvasForeground(ih->data->cddbuffer, ih->data->dark_shadow); + cdCanvasLine(ih->data->cddbuffer, x1+2, y1, x1+3, y1); + cdCanvasLine(ih->data->cddbuffer, x1+4, y1+1, x1+4, y1+2); +} + +static void iDialDrawCircular(Ihandle* ih) +{ + double delta = 2 * M_PI / ih->data->num_div, a = ih->data->angle; + int i, xc = ih->data->w / 2, yc = ih->data->h / 2, wide; + ih->data->radius = dialmin(ih->data->w, ih->data->h) / 2 - 2 * IDIAL_SPACE; + + wide = (int)(2 * ih->data->radius); + cdCanvasForeground(ih->data->cddbuffer, ih->data->mid_shadow); + cdCanvasLineWidth(ih->data->cddbuffer, 2); + cdCanvasArc(ih->data->cddbuffer, xc, yc, wide-1, wide-1, -135, 45.0); + cdCanvasLineWidth(ih->data->cddbuffer, 1); + cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasSector(ih->data->cddbuffer, xc, yc, wide-2, wide-2, 0.0, 360.0); + cdCanvasForeground(ih->data->cddbuffer, ih->data->light_shadow); + cdCanvasArc(ih->data->cddbuffer, xc, yc, wide, wide, 45, 225); + cdCanvasForeground(ih->data->cddbuffer, ih->data->dark_shadow); + cdCanvasArc(ih->data->cddbuffer, xc, yc, wide, wide, -135, 45); + + for (i = 0; i < ih->data->num_div; ++i) + { + int x2 = (int)(xc + (ih->data->radius - 6) * cos(a)); + int y2 = (int)(yc + (ih->data->radius - 6) * sin(a)); + + if (i == 0) + { + cdCanvasForeground(ih->data->cddbuffer, CD_BLACK); + cdCanvasLine(ih->data->cddbuffer, xc, yc, x2, y2); + } + + iDialDrawCircularMark(ih, x2-2, y2-2); + a += delta; + } + + iDialDrawCircularMark(ih, xc-2, yc-2); +} + +static void iDialRepaint(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return; + + /* update render */ + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + ih->data->Draw(ih); + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1); +} + +static void iDialUpdateFgColors(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b) +{ + int i, max, deltar, deltag, deltab; + + /* this function is also called before mapping */ + max = (ih->handle && iupdrvIsActive(ih))? 255 : 192; + deltar = (max-r) / IDIAL_NCOLORS; + deltag = (max-g) / IDIAL_NCOLORS; + deltab = (max-b) / IDIAL_NCOLORS; + + for (i=0; i<=IDIAL_NCOLORS; i++) + { + ih->data->fgcolor[i] = cdEncodeColor(r, g, b); + r = (unsigned char)(r + deltar); + g = (unsigned char)(g + deltag); + b = (unsigned char)(b + deltab); + } +} + +static int iDialButtonPress(Ihandle* ih, int button, int x, int y) +{ + IFn cb; + + if (button!=IUP_BUTTON1) + return IUP_DEFAULT; + + y = cdIupInvertYAxis(y, ih->data->h); + ih->data->px = x; + ih->data->py = y; + + if (ih->data->type != IDIAL_CIRCULAR) + ih->data->angle=0; + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + cb(ih); + else + { + IFnd cb_old = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB"); + if (cb_old) + cb_old(ih, ih->data->angle * ih->data->unit); + } + + return IUP_DEFAULT; +} + +static int iDialButtonRelease(Ihandle* ih, int button) +{ + IFn cb; + + if (button!=IUP_BUTTON1) + return IUP_DEFAULT; + + iDialRepaint(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + cb(ih); + else + { + IFnd cb_old = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB"); + if (cb_old) + cb_old(ih, ih->data->angle * ih->data->unit); + } + + return IUP_DEFAULT; +} + + +/******************************************************************/ + + +static int iDialMotionVertical_CB(Ihandle* ih, int x, int y, char *status) +{ + IFn cb; + (void)x; /* not used */ + + if (!iup_isbutton1(status)) + return IUP_DEFAULT; + + y = cdIupInvertYAxis(y, ih->data->h); + ih->data->angle += (double)(y-ih->data->py) / ih->data->radius; + ih->data->py = y; + + iDialRepaint(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + cb(ih); + else + { + IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB"); + if (cb_old) + cb_old(ih, ih->data->angle * ih->data->unit); + } + + return IUP_DEFAULT; +} + +static int iDialMotionHorizontal_CB(Ihandle* ih, int x, int y, char *status) +{ + IFn cb; + + if (!iup_isbutton1(status)) + return IUP_DEFAULT; + + y = cdIupInvertYAxis(y, ih->data->h); + ih->data->angle += (double)(x-ih->data->px) / ih->data->radius; + ih->data->px = x; + + iDialRepaint(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + cb(ih); + else + { + IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB"); + if (cb_old) + cb_old(ih, ih->data->angle * ih->data->unit); + } + + return IUP_DEFAULT; +} + +static int iDialMotionCircular_CB(Ihandle* ih, int x, int y, char *status) +{ + int cx = ih->data->w / 2; + int cy = ih->data->h / 2; + double vet, xa, ya, xb, yb, ma, mb, ab; + IFn cb; + + if (!iup_isbutton1(status)) + return IUP_DEFAULT; + + y = cdIupInvertYAxis(y, ih->data->h); + + xa = ih->data->px-cx; + ya = ih->data->py-cy; + ma = sqrt(xa * xa + ya * ya); + + xb = x - cx; + yb = y - cy; + mb = sqrt(xb * xb + yb * yb); + + ab = xa * xb + ya * yb; + vet = xa * yb - xb * ya; + + ab = ab / (ma * mb); + + /* if the mouse is in the center of the dial, ignore it */ + if (ma == 0 || mb == 0 || ab < -1 || ab > 1) + return IUP_DEFAULT; + + if (vet>0) ih->data->angle += acos(ab); + else ih->data->angle -= acos(ab); + + iDialRepaint(ih); + ih->data->px = x; + ih->data->py = y; + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + cb(ih); + else + { + IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB"); + if (cb_old) + cb_old(ih, ih->data->angle * ih->data->unit); + } + + return IUP_DEFAULT; +} + +static int iDialButton_CB(Ihandle* ih, int button, int pressed, int x, int y) +{ + if (pressed) + return iDialButtonPress(ih, button, x, y); + else + return iDialButtonRelease(ih, button); +} + +static int iDialResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL); + + /* update number of divisions */ + switch(ih->data->type) + { + case IDIAL_VERTICAL: + ih->data->num_div = (int)((ih->data->h-2 * IDIAL_SPACE-2) * ih->data->density); + break; + + case IDIAL_HORIZONTAL: + ih->data->num_div = (int)((ih->data->w-2 * IDIAL_SPACE-2) * ih->data->density); + break; + + case IDIAL_CIRCULAR: + ih->data->num_div = (int)((dialmin(ih->data->w, ih->data->h)-2 * IDIAL_SPACE-2) * ih->data->density); + break; + } + + /* update render */ + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + ih->data->Draw(ih); + + return IUP_DEFAULT; +} + +static int iDialRedraw_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1); + + return IUP_DEFAULT; +} + +static int iDialFocus_CB(Ihandle* ih, int focus) +{ + ih->data->has_focus = focus; + iDialRepaint(ih); + return IUP_DEFAULT; +} + +static int iDialKeyPress_CB(Ihandle* ih, int c, int press) +{ + IFn cb; + char* cb_name; + + if (c != K_LEFT && c != K_UP && + c != K_sLEFT && c != K_sUP && + c != K_RIGHT && c != K_DOWN && + c != K_sRIGHT && c != K_sDOWN && + c != K_HOME) + return IUP_DEFAULT; + + if (press && ih->data->pressing) + { + switch(c) + { + case K_sLEFT: + case K_sDOWN: + ih->data->angle -= M_PI / 100.0; + break; + case K_LEFT: + case K_DOWN: + ih->data->angle -= M_PI / 10.0; + break; + case K_sRIGHT: + case K_sUP: + ih->data->angle += M_PI / 100.0; + break; + case K_RIGHT: + case K_UP: + ih->data->angle += M_PI / 10.0; + break; + } + } + + if (c == K_HOME) + ih->data->angle = 0; + + if (press) + { + if (ih->data->pressing) + { + cb_name = "MOUSEMOVE_CB"; + } + else + { + ih->data->pressing = 1; + if (ih->data->type != IDIAL_CIRCULAR) + ih->data->angle = 0; + cb_name = "BUTTON_PRESS_CB"; + } + } + else + { + ih->data->pressing = 0; + cb_name = "RELEASE_CB"; + } + + iDialRepaint(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + cb(ih); + else + { + IFnd cb_old = (IFnd) IupGetCallback(ih, cb_name); + if (cb_old) + cb_old(ih, ih->data->angle * ih->data->unit); + } + + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ +} + +static int iDialWheel_CB(Ihandle* ih, float delta) +{ + IFn cb; + + ih->data->angle += ((double)delta) * (M_PI / 10.0); + + if (fabs(ih->data->angle) < M_PI / 10.1) + ih->data->angle = 0; + + iDialRepaint(ih); + + cb = (IFn)IupGetCallback(ih, "VALUECHANGED_CB"); + if (cb) + cb(ih); + else + { + IFnd cb_old = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB"); + if (cb_old) + cb_old(ih, ih->data->angle * ih->data->unit); + } + + return IUP_DEFAULT; +} + + +/*********************************************************************************/ + + +static char* iDialGetValueAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->angle); + return str; +} + +static int iDialSetValueAttrib(Ihandle* ih, const char* value) +{ + if (!value) /* reset to default */ + ih->data->angle = 0; + else + ih->data->angle = atof(value); + + iDialRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static int iDialSetDensityAttrib(Ihandle* ih, const char* value) +{ + ih->data->density = atof(value); + iDialRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iDialGetDensityAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->density); + return str; +} + +static int iDialSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = iupControlBaseGetParentBgColor(ih); + + ih->data->bgcolor = cdIupConvertColor(value); + + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + if (!iupdrvIsActive(ih)) + ih->data->light_shadow = ih->data->mid_shadow; + + iDialRepaint(ih); + return 1; +} + +static int iDialSetFgColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + iDialUpdateFgColors(ih, r, g, b); + + iDialRepaint(ih); + return 1; +} + +static int iDialSetActiveAttrib(Ihandle* ih, const char* value) +{ + unsigned char r, g, b; + + iupBaseSetActiveAttrib(ih, value); + + value = iupAttribGetStr(ih, "FGCOLOR"); + if (!iupStrToRGB(value, &r, &g, &b)) + return 0; + iDialUpdateFgColors(ih, r, g, b); + + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + if (!iupdrvIsActive(ih)) + ih->data->light_shadow = ih->data->mid_shadow; + + iDialRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static int iDialSetUnitAttrib(Ihandle* ih, const char* value) +{ + ih->data->unit = iupStrEqualNoCase(value, "DEGREES")? CD_RAD2DEG : 1.0; + return 1; +} + +static int iDialSetTypeAttrib(Ihandle* ih, const char* value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrEqualNoCase(value, "VERTICAL")) + { + ih->data->Draw = iDialDrawVertical; + ih->data->type = IDIAL_VERTICAL; + IupSetCallback(ih, "MOTION_CB", (Icallback)iDialMotionVertical_CB); + IupSetAttribute(ih, "SIZE", "16x80"); + } + else if (iupStrEqualNoCase(value, "CIRCULAR")) + { + ih->data->Draw = iDialDrawCircular; + ih->data->type = IDIAL_CIRCULAR; + IupSetCallback(ih, "MOTION_CB", (Icallback)iDialMotionCircular_CB); + IupSetAttribute(ih, "SIZE", "40x36"); + } + else /* "HORIZONTAL" */ + { + ih->data->Draw = iDialDrawHorizontal; + ih->data->type = IDIAL_HORIZONTAL; + IupSetCallback(ih, "MOTION_CB", (Icallback)iDialMotionHorizontal_CB); + IupSetAttribute(ih, "SIZE", "80x16"); + } + return 0; /* do not store value in hash table */ +} + +static char* iDialGetTypeAttrib(Ihandle* ih) +{ + if (ih->data->type == IDIAL_HORIZONTAL) + return "HORIZONTAL"; + else if (ih->data->type == IDIAL_VERTICAL) + return "VERTICAL"; + else /* (ih->data->type == IDIAL_CIRCULAR) */ + return "CIRCULAR"; +} + + +/****************************************************************************/ + + +static int iDialMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + + return IUP_NOERROR; +} + +static void iDialUnMapMethod(Ihandle* ih) +{ + if (ih->data->cddbuffer) + cdKillCanvas(ih->data->cddbuffer); + + if (ih->data->cdcanvas) + cdKillCanvas(ih->data->cdcanvas); +} + +static int iDialCreateMethod(Ihandle* ih, void **params) +{ + char* type = "HORIZONTAL"; + if (params && params[0]) + type = params[0]; + + /* free the data allocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "BORDER", "NO"); + ih->expand = IUP_EXPAND_NONE; + + /* default values */ + iDialSetTypeAttrib(ih, type); + ih->data->density = IDIAL_DEFAULT_DENSITY; + ih->data->unit = 1.0; /* RADIANS */ + iDialUpdateFgColors(ih, IDIAL_DEFAULT_FGCOLOR_COMP, IDIAL_DEFAULT_FGCOLOR_COMP, IDIAL_DEFAULT_FGCOLOR_COMP); + + /* IupCanvas callbacks */ + IupSetCallback(ih, "ACTION", (Icallback)iDialRedraw_CB); + IupSetCallback(ih, "RESIZE_CB", (Icallback)iDialResize_CB); + IupSetCallback(ih, "BUTTON_CB", (Icallback)iDialButton_CB); + IupSetCallback(ih, "FOCUS_CB", (Icallback)iDialFocus_CB); + IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iDialKeyPress_CB); + IupSetCallback(ih, "WHEEL_CB", (Icallback)iDialWheel_CB); + + return IUP_NOERROR; +} + +Iclass* iupDialGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "dial"; + ic->format = "S"; /* one optional string */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iDialCreateMethod; + ic->Map = iDialMapMethod; + ic->UnMap = iDialUnMapMethod; + + /* Do not need to set base attributes because they are inherited from IupCanvas */ + + /* IupDial Callbacks */ + iupClassRegisterCallback(ic, "MOUSEMOVE_CB", "d"); + iupClassRegisterCallback(ic, "BUTTON_PRESS_CB", "d"); + iupClassRegisterCallback(ic, "BUTTON_RELEASE_CB", "d"); + iupClassRegisterCallback(ic, "VALUECHANGED_CB", ""); + + /* IupDial only */ + iupClassRegisterAttribute(ic, "VALUE", iDialGetValueAttrib, iDialSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TYPE", iDialGetTypeAttrib, iDialSetTypeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "DENSITY", iDialGetDensityAttrib, iDialSetDensityAttrib, IDIAL_DEFAULT_DENSITY_STR, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iDialSetFgColorAttrib, IDIAL_DEFAULT_FGCOLOR, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "UNIT", NULL, iDialSetUnitAttrib, IUPAF_SAMEASSYSTEM, "RADIANS", IUPAF_NOT_MAPPED); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iDialSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iDialSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */ + + return ic; +} + +Ihandle* IupDial(const char* type) +{ + void *params[2]; + params[0] = (void*)type; + params[1] = NULL; + return IupCreatev("dial", params); +} diff --git a/iup/srccontrols/iup_gauge.c b/iup/srccontrols/iup_gauge.c new file mode 100755 index 0000000..8732eee --- /dev/null +++ b/iup/srccontrols/iup_gauge.c @@ -0,0 +1,435 @@ +/** \file + * \brief Gauge control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_cdutil.h" + +#define IGAUGE_DEFAULTCOLOR "64 96 192" +#define IGAUGE_DEFAULTSIZE "120x14" + +#define IGAUGE_GAP 3 +#define IGAUGE_BLOCKS 20 + +#define gaugeround(_) ((int)((_)+.5)) + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + int w; + int h; + + int show_text; + int dashed; + int horiz_padding, vert_padding; /* internal margin */ + + long bgcolor; + long fgcolor; + long light_shadow; + long mid_shadow; + long dark_shadow; + + double value; /* min<=valuedata->text; + + cdCanvasNativeFont(ih->data->cddbuffer, IupGetAttribute(ih, "FONT")); + cdCanvasTextAlignment(ih->data->cddbuffer, CD_CENTER); + cdCanvasBackOpacity(ih->data->cddbuffer, CD_TRANSPARENT); + + x = (int)(0.5 * ih->data->w); + y = (int)(0.5 * ih->data->h); + + if(text == NULL) + { + char* m = iupStrGetMemory(30); + sprintf(m, "%.1f%%", 100 * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin)); + text = m; + } + + cdCanvasGetTextBox(ih->data->cddbuffer, x, y, text, &xmin, &xmax, &ymin, &ymax); + + if(xmid < xmin) + { + cdCanvasForeground(ih->data->cddbuffer, ih->data->fgcolor); + cdCanvasText(ih->data->cddbuffer, x, y, text); + } + else if(xmid > xmax) + { + cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasText(ih->data->cddbuffer, x, y, text); + } + else + { + cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA); + cdCanvasClipArea(ih->data->cddbuffer, xmin, xmid, ymin, ymax); + cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasText(ih->data->cddbuffer, x, y, text); + + cdCanvasClipArea(ih->data->cddbuffer, xmid, xmax, ymin, ymax); + cdCanvasForeground(ih->data->cddbuffer, ih->data->fgcolor); + cdCanvasText(ih->data->cddbuffer, x, y, text); + cdCanvasClip(ih->data->cddbuffer, CD_CLIPOFF); + } +} + +static void iGaugeDrawGauge(Ihandle* ih) +{ + int border = 3; /* includes the pixel used to draw the 3D border */ + int xstart = ih->data->horiz_padding+border; + int ystart = ih->data->vert_padding+border; + int xend = ih->data->w-1 - (ih->data->horiz_padding+border); + int yend = ih->data->h-1 - (ih->data->vert_padding+border); + + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + + cdIupDrawSunkenRect(ih->data->cddbuffer, 0, 0, ih->data->w-1, ih->data->h-1, + ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); + + cdCanvasForeground(ih->data->cddbuffer, ih->data->fgcolor); + + if (ih->data->dashed) + { + float step = (xend - xstart + 1) / (float)IGAUGE_BLOCKS; + float boxw = step - IGAUGE_GAP; + float vx = (float)((xend-xstart + 1) * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin)); + int intvx = (int)(100 * vx); + float i = 0; + + if(ih->data->value == ih->data->vmin) + return; + + while(gaugeround(100*(i + boxw)) <= intvx) + { + cdCanvasBox(ih->data->cddbuffer, xstart + gaugeround(i), + xstart + gaugeround(i + boxw) - 1, ystart, yend); + i += step; + } + } + else + { + int xmid = xstart + gaugeround((xend-xstart + 1) * (ih->data->value - ih->data->vmin) / (ih->data->vmax - ih->data->vmin)); + + if(ih->data->value != ih->data->vmin) + cdCanvasBox(ih->data->cddbuffer, xstart, xmid, ystart, yend ); + + if(ih->data->show_text) + iGaugeDrawText(ih, xmid); + } +} + +static int iGaugeResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer,&ih->data->w,&ih->data->h,NULL,NULL); + + /* update render */ + iGaugeDrawGauge(ih); + + return IUP_DEFAULT; +} + +static void iGaugeRepaint(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return; + + /* update render */ + iGaugeDrawGauge(ih); + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); +} + +static int iGaugeRedraw_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + return IUP_DEFAULT; +} + +static void iGaugeCropValue(Ihandle* ih) +{ + if(ih->data->value>ih->data->vmax) + ih->data->value = ih->data->vmax; + else if(ih->data->valuedata->vmin) + ih->data->value = ih->data->vmin; +} + +static int iGaugeSetFgColorAttrib(Ihandle* ih, const char* value) +{ + ih->data->fgcolor = cdIupConvertColor(value); + iGaugeRepaint(ih); + return 1; +} + +static int iGaugeSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = iupControlBaseGetParentBgColor(ih); + + ih->data->bgcolor = cdIupConvertColor(value); + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + + iGaugeRepaint(ih); + return 1; +} + +static int iGaugeSetValueAttrib(Ihandle* ih, const char* value) +{ + if(value == NULL) + ih->data->value = 0; + else + ih->data->value = atof(value); + iGaugeCropValue(ih); + + iGaugeRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iGaugeGetValueAttrib(Ihandle* ih) +{ + char* value = iupStrGetMemory(30); + sprintf(value, "%g", ih->data->value); + return value; +} + +static int iGaugeSetMinAttrib(Ihandle* ih, const char* value) +{ + ih->data->vmin = atof(value); + iGaugeCropValue(ih); + + iGaugeRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iGaugeGetMinAttrib(Ihandle* ih) +{ + char* value = iupStrGetMemory(30); + sprintf(value, "%g", ih->data->vmin); + return value; +} + +static int iGaugeSetMaxAttrib(Ihandle* ih, const char* value) +{ + ih->data->vmax = atof(value); + iGaugeCropValue(ih); + iGaugeRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iGaugeGetMaxAttrib(Ihandle* ih) +{ + char* value = iupStrGetMemory(30); + sprintf(value, "%g", ih->data->vmax); + return value; +} + +static int iGaugeSetShowTextAttrib(Ihandle* ih, const char* value) +{ + if(iupStrEqualNoCase(value, "YES")) + ih->data->show_text = 1; + else if(iupStrEqualNoCase(value, "NO")) + ih->data->show_text = 0; + + iGaugeRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iGaugeGetShowTextAttrib(Ihandle* ih) +{ + if(ih->data->show_text) + return "YES"; + else + return "NO"; +} + +static int iGaugeSetPaddingAttrib(Ihandle* ih, const char* value) +{ + iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x'); + iGaugeRepaint(ih); + return 0; +} + +static char* iGaugeGetPaddingAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%dx%d", ih->data->horiz_padding, ih->data->vert_padding); + return str; +} + +static int iGaugeSetDashedAttrib(Ihandle* ih, const char* value) +{ + if(iupStrEqualNoCase(value, "YES")) + ih->data->dashed = 1; + else if(iupStrEqualNoCase(value, "NO")) + ih->data->dashed = 0; + + iGaugeRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iGaugeGetDashedAttrib(Ihandle* ih) +{ + if(ih->data->dashed) + return "YES"; + else + return "NO"; +} + +static int iGaugeSetTextAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->text) + free(ih->data->text); + + ih->data->text = iupStrDup(value); + + iGaugeRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iGaugeGetTextAttrib(Ihandle* ih) +{ + return ih->data->text; +} + +static void iGaugeUnMapMethod(Ihandle* ih) +{ + if (ih->data->cddbuffer) + cdKillCanvas(ih->data->cddbuffer); + + if (ih->data->cdcanvas) + cdKillCanvas(ih->data->cdcanvas); +} + +static int iGaugeMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + + return IUP_NOERROR; +} + +static int iGaugeCreateMethod(Ihandle* ih, void **params) +{ + (void)params; + + /* free the data allocated by IupCanvas */ + if (ih->data) + free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "BORDER", "NO"); + IupSetAttribute(ih, "SIZE", IGAUGE_DEFAULTSIZE); + ih->expand = IUP_EXPAND_NONE; + + /* default values */ + iupAttribSetStr(ih, "FGCOLOR", IGAUGE_DEFAULTCOLOR); + ih->data->fgcolor = cdIupConvertColor(IGAUGE_DEFAULTCOLOR); + ih->data->vmax = 1; + ih->data->bgcolor = CD_GRAY; + ih->data->light_shadow = CD_WHITE; + ih->data->mid_shadow = CD_GRAY; + ih->data->dark_shadow = CD_DARK_GRAY; + ih->data->show_text = 1; + + /* IupCanvas callbacks */ + IupSetCallback(ih, "RESIZE_CB", (Icallback)iGaugeResize_CB); + IupSetCallback(ih, "ACTION", (Icallback)iGaugeRedraw_CB); + + return IUP_NOERROR; +} + +Iclass* iupGaugeGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "gauge"; + ic->format = NULL; /* no parameters */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 0; + + /* Class functions */ + ic->Create = iGaugeCreateMethod; + ic->Map = iGaugeMapMethod; + ic->UnMap = iGaugeUnMapMethod; + + /* Do not need to set base attributes because they are inherited from IupCanvas */ + + /* IupGauge only */ + iupClassRegisterAttribute(ic, "MIN", iGaugeGetMinAttrib, iGaugeSetMinAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MAX", iGaugeGetMaxAttrib, iGaugeSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", iGaugeGetValueAttrib, iGaugeSetValueAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DASHED", iGaugeGetDashedAttrib, iGaugeSetDashedAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "PADDING", iGaugeGetPaddingAttrib, iGaugeSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "TEXT", iGaugeGetTextAttrib, iGaugeSetTextAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOW_TEXT", iGaugeGetShowTextAttrib, iGaugeSetShowTextAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iGaugeSetFgColorAttrib, IGAUGE_DEFAULTCOLOR, NULL, IUPAF_NOT_MAPPED); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iGaugeSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */ + + return ic; +} + +Ihandle *IupGauge(void) +{ + return IupCreate("gauge"); +} diff --git a/iup/srccontrols/iup_oldmask.c b/iup/srccontrols/iup_oldmask.c new file mode 100755 index 0000000..fec10f3 --- /dev/null +++ b/iup/srccontrols/iup_oldmask.c @@ -0,0 +1,208 @@ +/** \file + * \brief OLD mask pattern matching + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcontrols.h" +#include "iupmask.h" + +#include "iup_mask.h" +#include "iup_str.h" + + +void iupmaskRemove(Ihandle *ih) +{ + IupSetAttribute(ih,"MASK", NULL); +} + +void iupmaskMatRemove(Ihandle *ih, int lin, int col) +{ + IupMatSetAttribute(ih,"MASK", lin, col, NULL); +} + +int iupmaskSetInt(Ihandle *ih, int autofill, int min, int max) +{ + (void)autofill; + IupSetfAttribute(ih,"MASKINT", "%d:%d", min, max); + return 1; +} + +int iupmaskMatSetInt(Ihandle *ih, int autofill, int min, int max, int lin, int col) +{ + (void)autofill; + IupMatSetfAttribute(ih,"MASKINT", lin, col, "%d:%d", min, max); + return 1; +} + +int iupmaskSetFloat(Ihandle* ih, int autofill, float min, float max) +{ + (void)autofill; + IupSetfAttribute(ih,"MASKFLOAT", "%f:%f", min, max); + return 1; +} + +int iupmaskMatSetFloat(Ihandle* ih, int autofill, float min, float max, int lin, int col) +{ + (void)autofill; + IupMatSetfAttribute(ih,"MASKFLOAT", lin, col, "%f:%f", min, max); + return 0; +} + +int iupmaskSet(Ihandle* ih, const char* mask_str, int autofill, int casei) +{ + (void)autofill; + IupSetAttribute(ih,"MASKCASEI", casei?"YES":"NO"); + IupStoreAttribute(ih,"MASK", mask_str); + if (iupStrEqual(mask_str, IupGetAttribute(ih,"MASK"))) + return 1; + else + return 0; +} + +int iupmaskMatSet(Ihandle* ih, const char* mask_str, int autofill, int casei, int lin, int col) +{ + (void)autofill; + IupMatSetAttribute(ih,"MASKCASEI", lin, col, casei?"YES":"NO"); + IupMatSetAttribute(ih,"MASK", lin, col, (char*)mask_str); + if (iupStrEqual(mask_str, IupMatGetAttribute(ih,"MASK", lin, col))) + return 1; + else + return 0; +} + +int iupmaskCheck(Ihandle* ih) +{ + char *val = IupGetAttribute(ih,"VALUE"); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + return iupMaskCheck(mask,val)==1; +} + +int iupmaskMatCheck(Ihandle *ih, int lin, int col) +{ + char *val = IupMatGetAttribute(ih,"",lin,col); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + return iupMaskCheck(mask,val)==1; +} + +int iupmaskGet(Ihandle *ih, char **sval) +{ + char *val = IupGetAttribute(ih,"VALUE"); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if (iupMaskCheck(mask,val)==1) + { + *sval = val; + return 1; + } + else + return 0; +} + +int iupmaskMatGet(Ihandle *ih, char **sval, int lin, int col) +{ + char *val = IupMatGetAttribute(ih,"",lin,col); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if (iupMaskCheck(mask,val)==1) + { + *sval = val; + return 1; + } + else + return 0; +} + +int iupmaskGetDouble(Ihandle *ih, double *dval) +{ + char *val = IupGetAttribute(ih,"VALUE"); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if(iupMaskCheck(mask,val)==1) + { + *dval = 0.0; + sscanf(val,"%lf",dval); + return 1; + } + else + return 0; +} + +int iupmaskMatGetDouble(Ihandle *ih, double *dval, int lin, int col) +{ + char *val = IupMatGetAttribute(ih,"",lin,col); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if(iupMaskCheck(mask,val)==1) + { + *dval = 0.0; + sscanf(val,"%lf",dval); + return 1; + } + else + return 0; +} + +int iupmaskGetFloat(Ihandle *ih, float *fval) +{ + char *val = IupGetAttribute(ih,"VALUE"); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if(iupMaskCheck(mask,val)==1) + { + *fval = 0.0F; + sscanf(val,"%f",fval); + return 1; + } + else + return 0; +} + +int iupmaskMatGetFloat(Ihandle *ih, float *fval, int lin, int col) +{ + char *val = IupMatGetAttribute(ih,"",lin,col); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if (iupMaskCheck(mask,val)==1) + { + *fval = 0.0F; + sscanf(val,"%f",fval); + return 1; + } + else + return 0; +} + +int iupmaskGetInt(Ihandle *ih, int *ival) +{ + char *val = IupGetAttribute(ih,"VALUE"); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if (iupMaskCheck(mask,val)==1) + { + *ival = 0; + sscanf(val,"%d",ival); + return 1; + } + else + return 0; +} + +int iupmaskMatGetInt(Ihandle *ih, int *ival, int lin, int col) +{ + char *val = IupMatGetAttribute(ih,"",lin,col); + Imask* mask = (Imask*)IupGetAttribute(ih,"OLD_MASK_DATA"); + + if(iupMaskCheck(mask,val)==1) + { + *ival = 0; + sscanf(val,"%d",ival); + return 1; + } + else + return 0; +} diff --git a/iup/srccontrols/iup_oldtabs.c b/iup/srccontrols/iup_oldtabs.c new file mode 100755 index 0000000..43b0c57 --- /dev/null +++ b/iup/srccontrols/iup_oldtabs.c @@ -0,0 +1,2616 @@ +/** \file + * \brief iuptabs control + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_register.h" +#include "iup_layout.h" +#include "iup_controls.h" +#include "iup_cdutil.h" + + +/* Constants */ +static const int ITABS_BORDER = 1; +static const int ITABS_MARGIN = 10; +static const int ITABS_SPACING = 2; +static const int ITABS_SCROLL_LENGTH = 51; /* the length of the scroll control in any direction */ +static const int ITABS_SCROLL_THICK = 17; +static const int ITABS_SCROLL_SPACING = 7; +static const int ITABS_BROKEN_TAB = 8; +static const int ITABS_CURRENT_EXTRA_PIXELS = 1; + +/* Enum's */ +typedef enum +{ + ITABS_TOP, ITABS_BOTTOM, ITABS_LEFT, ITABS_RIGHT +} ItabsType; + +typedef enum +{ + ITABS_FALSE, ITABS_TRUE +} ItabsBool; + +typedef enum +{ + ITABS_BROKEN_NONE, + ITABS_BROKEN_START, + ITABS_BROKEN_END, + ITABS_BROKEN_CENTER +} ItabsBrokenType; + +typedef enum +{ + ITABS_HORIZONTAL, ITABS_VERTICAL +} ItabsOrientation; + +typedef enum +{ + ITABS_BUTTON_NONE, + ITABS_BUTTONPRESS_FORWARD, ITABS_BUTTONPRESS_MENU, ITABS_BUTTONPRESS_BACKWARD, /* can not change order because of "+= 3" */ + ITABS_BUTTONRELEASE_FORWARD, ITABS_BUTTONRELEASE_MENU, ITABS_BUTTONRELEASE_BACKWARD +} ItabsButtonState; + +typedef enum +{ + ITABS_RENDER_PLANE_ALIGN, ITABS_RENDER_PLANE_NORMAL +} ItabsTextRender; + +/* Info about how to draw each tab */ +typedef struct _tagTabsDrawInfo +{ + Ihandle* ihandle; /* child handle */ + int text_w, /* width of the text of this Tab */ + tab_len; /* len */ +} ItabsDrawInfo; + +typedef struct _tagTabsLine +{ + /* Visible tabs (start and end interval) */ + int start_tab, end_tab; + + /* Shows if any button is pressed */ + ItabsButtonState button; + + /* Info about how to draw each tab */ + ItabsDrawInfo* tabs_info; + + /* Shows if all the tabs are visible */ + ItabsBool scroll_visible, + broken_start_visible, + broken_end_visible; + + /* Shows if the current tab is visible, when + there are other tabs to the left or right */ + ItabsBool broken_center_visible; + + /* Available space to the broken tabs */ + int broken_tab_space, + broken_space_start, + broken_space_end; + + /* Tabs line size */ + int line_thick, + line_length; + + /* Point to thick and length according to render */ + int* line_w; + int* line_h; + + /* Tabs scroll size */ + int scroll_len, /* the scroll space in the tabs line length direction */ + scroll_thick, + scroll_x, + scroll_y, + scroll_w, + scroll_h; + + int text_h; /* height of the text (all texts have the same height) */ +} ItabsLine; + +/* Control context */ +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + /* tabs type */ + ItabsType tabs_type; + ItabsOrientation tabs_orientation; + ItabsTextRender tabs_render; /* tabs line render (depends on + tabs type and orientation) */ + + cdCanvas* cdcanvas; /* CD canvas for drawing */ + cdCanvas* cddbuffer; /* image canvas for double buffering */ + Ihandle* zbox; /* Handle "zbox" is a child of Tabs */ + + int number_of_tabs; /* number of tabs */ + int current_tab; /* current tab */ + ItabsLine tabs_line; /* data from a queue of tabs */ + + /* data from width and weight */ + int w, h; + int* max_line_length; /* pointer to w or h */ + + /* Used colors */ + long bgcolor; + long fgcolor; + long light_shadow; + long mid_shadow; + long dark_shadow; + + int has_focus, + focus_x1, + focus_x2, + focus_y1, + focus_y2; + + char* font_active; + char* font_inactive; +}; + +static void iTabsUpdateRender(Ihandle* ih) +{ + if (ih->data->tabs_orientation == ITABS_VERTICAL) + { + if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT) + ih->data->tabs_render = ITABS_RENDER_PLANE_ALIGN; + else + ih->data->tabs_render = ITABS_RENDER_PLANE_NORMAL; + } + else + { + if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT) + ih->data->tabs_render = ITABS_RENDER_PLANE_NORMAL; + else + ih->data->tabs_render = ITABS_RENDER_PLANE_ALIGN; + } + + if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT) + { + ih->data->tabs_line.line_w = &ih->data->tabs_line.line_thick; + ih->data->tabs_line.line_h = &ih->data->tabs_line.line_length; + ih->data->max_line_length = &ih->data->h; + } + else + { + ih->data->tabs_line.line_w = &ih->data->tabs_line.line_length; + ih->data->tabs_line.line_h = &ih->data->tabs_line.line_thick; + ih->data->max_line_length = &ih->data->w; + } + + if (ih->data->tabs_render == ITABS_RENDER_PLANE_NORMAL) + { + ih->data->tabs_line.scroll_len = ITABS_SCROLL_THICK; + ih->data->tabs_line.scroll_thick = ITABS_SCROLL_LENGTH; + } + else + { + ih->data->tabs_line.scroll_len = ITABS_SCROLL_LENGTH; + ih->data->tabs_line.scroll_thick = ITABS_SCROLL_THICK; + } + + if (ih->data->tabs_orientation == ITABS_HORIZONTAL) + { + ih->data->tabs_line.scroll_w = ITABS_SCROLL_LENGTH; + ih->data->tabs_line.scroll_h = ITABS_SCROLL_THICK; + } + else + { + ih->data->tabs_line.scroll_w = ITABS_SCROLL_THICK; + ih->data->tabs_line.scroll_h = ITABS_SCROLL_LENGTH; + } +} + +static void iTabsSetCDFont(Ihandle* ih, char* tab_font, int bold) +{ + if (tab_font) + cdCanvasNativeFont(ih->data->cddbuffer, tab_font); + else + cdCanvasNativeFont(ih->data->cddbuffer, IupGetAttribute(ih, "FONT")); + + if (bold) + cdCanvasFont(ih->data->cddbuffer, NULL, CD_BOLD, 0); +} + +/* Gets the associated name of the tab */ +static Ihandle* iTabsGetTabIhandle(Ihandle* ih, int number) +{ + return ih->data->tabs_line.tabs_info[number].ihandle; +} + +/* ========================================================================= */ +/* Drawing functions */ +/* ========================================================================= */ + +/* Fills the draw area */ +static void iTabsFillArea(cdCanvas* canvas, int x1, int y1, int x2, int y2, + int x3, int y3, int x4, int y4) +{ + cdCanvasBegin(canvas, CD_FILL); + cdCanvasVertex(canvas, x1, y1); + cdCanvasVertex(canvas, x2, y2); + cdCanvasVertex(canvas, x3, y3); + cdCanvasVertex(canvas, x4, y4); + cdCanvasEnd(canvas); + + cdCanvasBegin(canvas, CD_CLOSED_LINES); + cdCanvasVertex(canvas, x1, y1); + cdCanvasVertex(canvas, x2, y2); + cdCanvasVertex(canvas, x3, y3); + cdCanvasVertex(canvas, x4, y4); + cdCanvasEnd(canvas); +} + +/* Draws the broken borders */ +static void iTabsDrawBrokenBorder(Ihandle* ih, ItabsType type, int x1, int y1, int x2, int y2) +{ + cdCanvas* canvas = ih->data->cddbuffer; + double step_x = (x2 - x1) / 5; + double step_y = (y2 - y1) / 5; + int old_color = cdCanvasForeground(canvas, CD_QUERY); + + switch(type) + { + case ITABS_TOP: + cdCanvasForeground(canvas, ih->data->mid_shadow); + cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1, (int)(x1 + 4. * step_x), y2); + cdCanvasLine(canvas, (int)(x1 + step_x), y1, (int)(x1 + 2. * step_x), y2); + + cdCanvasForeground(canvas, ih->data->dark_shadow); + cdCanvasLine(canvas, x1, y1, (int)(x1 + step_x), y2); + cdCanvasLine(canvas, (int)(x1 + step_x), y1 - 1, (int)(x1 + 2. * step_x), y2 - 1); + cdCanvasLine(canvas, (int)(x1 + step_x * 2.), y1, (int)(x1 + 3. * step_x), y2); + cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1 + 1, (int)(x1 + 4. * step_x), y2 + 1); + cdCanvasLine(canvas, (int)(x1 + step_x * 4.), y1, x2, y2); + break; + + case ITABS_BOTTOM: + cdCanvasForeground(canvas, ih->data->mid_shadow); + cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1, (int)(x1 + 4. * step_x), y2); + cdCanvasLine(canvas, (int)(x1 + step_x), y1, (int)(x1 + 2. * step_x), y2); + + cdCanvasForeground(canvas, ih->data->dark_shadow); + cdCanvasLine(canvas, x1, y1, (int)(x1 + step_x), y2); + cdCanvasLine(canvas, (int)(x1 + step_x), y1 - 1, (int)(x1 + 2. * step_x), y2 - 1); + cdCanvasLine(canvas, (int)(x1 + step_x * 2.), y1, (int)(x1 + 3. * step_x), y2); + cdCanvasLine(canvas, (int)(x1 + step_x * 3.), y1 + 1, (int)(x1 + 4. * step_x), y2 + 1); + cdCanvasLine (canvas, (int)(x1 + step_x * 4.), y1, x2, y2); + break; + + case ITABS_LEFT: + cdCanvasForeground(canvas, ih->data->mid_shadow); + cdCanvasLine(canvas, x1, (int)(y1 + 3. * step_y), x2, (int)(y1 + step_y * 4.)); + cdCanvasLine(canvas, x1, (int)(y1 + step_y), x2, (int)(y1 + step_y * 2.)); + + cdCanvasForeground(canvas, ih->data->dark_shadow); + cdCanvasLine(canvas, x1, y1, x2, (int)(y1 + step_y)); + cdCanvasLine(canvas, x1 - 1, (int)(y1 + step_y), x2 - 1, (int)(y1 + step_y * 2.)); + cdCanvasLine(canvas, x1, (int)(y1 + step_y * 2.), x2, (int)(y1 + step_y * 3.)); + cdCanvasLine(canvas, x1 + 1, (int)(y1 + 3. * step_y), x2 + 1, (int)(y1 + step_y * 4.)); + cdCanvasLine(canvas, x1, (int)(y1 + 4. * step_y), x2, y2); + break; + + case ITABS_RIGHT: + cdCanvasForeground(canvas, ih->data->mid_shadow); + cdCanvasLine(canvas, x1, (int)(y1 + 3. * step_y), x2, (int)(y1 + step_y * 4.)); + cdCanvasLine(canvas, x1, (int)(y1 + step_y), x2, (int)(y1 + step_y * 2.)); + + cdCanvasForeground(canvas, ih->data->dark_shadow); + cdCanvasLine(canvas, x1, y1, x2, (int)(y1 + step_y)); + cdCanvasLine(canvas, x1 - 1, (int)(y1 + step_y), x2 - 1, (int)(y1 + step_y * 2.)); + cdCanvasLine(canvas, x1, (int)(y1 + step_y * 2.), x2, (int)(y1 + step_y * 3.)); + cdCanvasLine(canvas, x1 + 1, (int)(y1 + 3. * step_y), x2 + 1, (int)(y1 + step_y * 4.)); + cdCanvasLine(canvas, x1, (int)(y1 + 4. * step_y), x2, y2); + break; + } + + cdCanvasForeground (canvas, old_color); +} + +/* Draws the borders */ +static void iTabsDrawBorder(Ihandle* ih, ItabsType type, int x1, int y1, int x2, int y2) +{ + cdCanvas* canvas = ih->data->cddbuffer; + + switch(type) + { + case ITABS_TOP: + cdCanvasForeground(canvas, ih->data->light_shadow); + cdCanvasLine(canvas, x1, y1, x2, y2); + break; + + case ITABS_LEFT: + cdCanvasForeground(canvas, ih->data->light_shadow); + cdCanvasLine(canvas, x1, y1, x2, y2); + break; + + case ITABS_BOTTOM: + cdCanvasForeground(canvas, ih->data->dark_shadow); + cdCanvasLine(canvas, x1, y1, x2, y2); + cdCanvasForeground(canvas, ih->data->mid_shadow); + if (x1 > x2) + cdCanvasLine(canvas, x2+1, y1+1, x1-1, y2+1); + else + cdCanvasLine(canvas, x1+1, y1+1, x2-1, y2+1); + break; + + case ITABS_RIGHT: + cdCanvasForeground(canvas, ih->data->dark_shadow); + cdCanvasLine(canvas, x1, y1, x2, y2); + cdCanvasForeground(canvas, ih->data->mid_shadow); + if (y1 > y2) + cdCanvasLine(canvas, x1-1, y2+1, x2-1, y1-1); + else + cdCanvasLine(canvas, x1-1, y1+1, x2-1, y2-1); + break; + } +} + +/* Draws a tab corner */ +static void iTabsDrawCorner(Ihandle* ih, int color, int x1, int y1, int x2, int y2) +{ + cdCanvas* canvas = ih->data->cddbuffer; + + cdCanvasForeground(canvas, ih->data->bgcolor); + cdCanvasLine(canvas, x1, y1, x2, y1); + cdCanvasLine(canvas, x1, y1, x1, y2); + cdCanvasForeground(canvas,color); + cdCanvasLine(canvas, x1, y2, x2, y1); +} + +/* Draws a tab */ +static void iTabsDrawTab(Ihandle* ih, int tab_index, int offset) +{ + cdCanvas* canvas = ih->data->cddbuffer; + int x1, y1, x2, y2, x3, y3, x4, y4, x1a, y1a, x4a, y4a; + int tab_w, tab_h; + int x_text = 0, y_text = 0; + int line_thick, tab_len, full_tab_len; + ItabsType types[3]; + ItabsBool beforeCurrent, afterCurrent; + int extraHeight = (tab_index == ih->data->current_tab) ? 0 : 1; + ItabsBrokenType type; + + /* there is an error in visible tabs that happen when you change the tab configuration dynamically */ + if (tab_index < 0 || tab_index > ih->data->number_of_tabs-1) + return; + + /* Defines what type of tab that will be drawn and sets the length */ + full_tab_len = ih->data->tabs_line.tabs_info[tab_index].tab_len; + + if (tab_index == (ih->data->tabs_line.end_tab + 1)) + { + type = ITABS_BROKEN_END; + tab_len = ih->data->tabs_line.broken_space_end; + } + else if (tab_index == (ih->data->tabs_line.start_tab - 1)) + { + type = ITABS_BROKEN_START; + tab_len = ih->data->tabs_line.broken_space_start; + } + else if (ih->data->tabs_line.broken_center_visible == ITABS_TRUE) + { + type = ITABS_BROKEN_CENTER; + tab_len = ih->data->tabs_line.broken_tab_space; + } + else + { + type = ITABS_BROKEN_NONE; + tab_len = full_tab_len; + } + + if (tab_len > full_tab_len) + tab_len = full_tab_len; + + /* If the selected tab is not the first, and this tab is visible, + * subtracts one pixel from him and advances the tab on one pixel, + * to prevent the side of tab is confused with the border control. */ + if (ih->data->current_tab != 0 && + ((ih->data->tabs_line.start_tab == 0 && tab_index == 0) || + (ih->data->tabs_line.start_tab > 0 && tab_index == (ih->data->tabs_line.start_tab - 1)))) + { + offset += 1; + tab_len--; + full_tab_len--; + } + + line_thick = ih->data->tabs_line.line_thick; + + if (tab_index != ih->data->current_tab) + line_thick -= ITABS_CURRENT_EXTRA_PIXELS; + + if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT) + { + tab_w = line_thick; + tab_h = tab_len; + } + else + { + tab_w = tab_len; + tab_h = line_thick; + } + + /* Calculates the border of tabs, text position and the sides will be drawn */ + switch(ih->data->tabs_type) + { + case ITABS_TOP: + x1 = x1a = offset; + y1 = ih->data->h - *(ih->data->tabs_line.line_h) - 1; + y1a = y1 + extraHeight; + x2 = x1; + y2 = y1 + tab_h - 1; + x3 = x2 + tab_w - 1; + y3 = y2; + x4 = x3; + y4 = y1; + x4a = x3; + y4a = y1; + + /* defines the order to draw */ + types[0] = ITABS_LEFT; + types[1] = ITABS_TOP; + types[2] = ITABS_RIGHT; + + break; + + case ITABS_BOTTOM: + x1 = x1a = offset; + y1 = *(ih->data->tabs_line.line_h) - 1; + y1a = y1 - extraHeight; + x2 = x1; + y2 = y1 - tab_h + 1; + x3 = x2 + tab_w - 1; + y3 = y2; + x4 = x3; + y4 = y1; + x4a = x3; + y4a = y1; + + types[0] = ITABS_LEFT; + types[1] = ITABS_BOTTOM; + types[2] = ITABS_RIGHT; + + break; + + case ITABS_LEFT: + x1 = *(ih->data->tabs_line.line_w) - 1; + x1a = x1 - extraHeight; + y1 = y1a = ih->data->h - offset - 1; + x2 = x1 - tab_w + 1; + y2 = y1; + x3 = x2; + y3 = y1 - tab_h + 1; + x4 = x1; + y4 = y3; + x4a = x1a; + y4a = y3; + + types[0] = ITABS_TOP; + types[1] = ITABS_LEFT; + types[2] = ITABS_BOTTOM; + + break; + + case ITABS_RIGHT: + x1 = ih->data->w - ih->data->tabs_line.line_thick - 1; + x1a = x1 + extraHeight; + y1 = y1a = ih->data->h - offset - 1; + x2 = x1 + tab_w - 1; + y2 = y1; + x3 = x2; + y3 = y1 - tab_h + 1; + x4 = x1; + y4 = y3; + x4a = x1a; + y4a = y3; + + types[0] = ITABS_TOP; + types[1] = ITABS_RIGHT; + types[2] = ITABS_BOTTOM; + + break; + + default: + return; + } + + if (tab_index == (ih->data->current_tab - 1)) + { + beforeCurrent = ITABS_TRUE; + afterCurrent = ITABS_FALSE; + } + else if (tab_index == (ih->data->current_tab + 1)) + { + beforeCurrent = ITABS_FALSE; + afterCurrent = ITABS_TRUE; + } + else + { + beforeCurrent = ITABS_FALSE; + afterCurrent = ITABS_FALSE; + } + + /* Draws the square of tab*/ + cdCanvasForeground(canvas, ih->data->bgcolor); + + /* Fills the square of tab */ + iTabsFillArea(canvas, x1, y1, x2, y2, x3, y3, x4, y4); + + /* Draws the border on the top */ + iTabsDrawBorder(ih, types[1], x2, y2, x3, y3); + + switch(type) + { + case ITABS_BROKEN_END: + switch(ih->data->tabs_type) + { + case ITABS_TOP: + cdCanvasClipArea(canvas, x1, x3 - ITABS_BORDER - 1, y1, y3); + break; + case ITABS_BOTTOM: + cdCanvasClipArea(canvas, x2, x4 - ITABS_BORDER - 1, y2, y4); + break; + case ITABS_LEFT: + cdCanvasClipArea(canvas, x3, x1, y3 + ITABS_BORDER + 1, y1); + break; + case ITABS_RIGHT: + cdCanvasClipArea(canvas, x4, x2, y4 + ITABS_BORDER + 1, y2); + break; + } + + if (beforeCurrent == ITABS_TRUE) + iTabsDrawBrokenBorder(ih, types[0], x1a, y1a, x2, y2); + else if (afterCurrent == ITABS_TRUE) + iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4a, y4a); + else + { + iTabsDrawBorder(ih, types[0], x1a, y1a, x2, y2); + iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4a, y4a); + } + + if (types[1] == ITABS_TOP) + iTabsDrawCorner(ih, ih->data->light_shadow, x1 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1, + x1 + ITABS_BORDER + 1, y3 + ITABS_BORDER - 3); + + if (types[1] == ITABS_BOTTOM) + iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1, + x2 + ITABS_BORDER + 1, y2 + ITABS_BORDER + 1); + break; + + case ITABS_BROKEN_START: + switch(ih->data->tabs_type) + { + case ITABS_TOP: + cdCanvasClipArea(canvas, x1 + ITABS_BORDER + 1, x3, y1, y3); + break; + case ITABS_BOTTOM: + cdCanvasClipArea(canvas, x2 + ITABS_BORDER + 1, x4, y2, y4); + break; + case ITABS_LEFT: + cdCanvasClipArea(canvas, x3, x1, y3, y1 - ITABS_BORDER - 1); + break; + case ITABS_RIGHT: + cdCanvasClipArea(canvas, x4, x2, y4, y2 - ITABS_BORDER - 1); + break; + } + + if (beforeCurrent == ITABS_TRUE) + iTabsDrawBrokenBorder(ih, types[0], x1a, y1a, x2, y2); + else if (afterCurrent == ITABS_TRUE) + iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4a, y4a); + else + { + iTabsDrawBrokenBorder(ih, types[0], x1a, y1a, x2, y2); + iTabsDrawBorder(ih, types[2], x3, y3, x4a, y4a); + } + + if (types[1] == ITABS_TOP) + iTabsDrawCorner(ih, ih->data->dark_shadow, x3 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1, + x3 + ITABS_BORDER - 3, y3 + ITABS_BORDER - 3); + + if (types[1] == ITABS_BOTTOM) + iTabsDrawCorner(ih, ih->data->dark_shadow, x4 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1, + x4 + ITABS_BORDER - 3, y2 + ITABS_BORDER + 1); + break; + + case ITABS_BROKEN_CENTER: + switch(ih->data->tabs_type) + { + case ITABS_TOP: + cdCanvasClipArea (canvas, x1 + ITABS_BORDER + 1, x3 - ITABS_BORDER - 1, + y1 + ITABS_BORDER + 1, y3 - ITABS_BORDER - 1); + break; + case ITABS_BOTTOM: + cdCanvasClipArea (canvas, x2 + ITABS_BORDER + 1, x4 - ITABS_BORDER - 1, + y2 + ITABS_BORDER + 1, y4 - ITABS_BORDER - 1); + break; + case ITABS_LEFT: + cdCanvasClipArea (canvas, x3 + ITABS_BORDER + 1, x1 - ITABS_BORDER - 1, + y3 + ITABS_BORDER + 1, y1 - ITABS_BORDER - 1); + break; + case ITABS_RIGHT: + cdCanvasClipArea (canvas, x4 + ITABS_BORDER + 1, x2 - ITABS_BORDER - 1, + y4 + ITABS_BORDER + 1, y2 - ITABS_BORDER - 1); + break; + } + + iTabsDrawBrokenBorder(ih, types[0], x1, y1, x2, y2); + iTabsDrawBrokenBorder(ih, types[2], x3, y3, x4, y4); + break; + + case ITABS_BROKEN_NONE: + switch(ih->data->tabs_type) + { + case ITABS_TOP: + cdCanvasClipArea (canvas, x1 + ITABS_BORDER + 1, x3 - ITABS_BORDER - 1, + y1 + ITABS_BORDER + 1, y3 - ITABS_BORDER - 1); + break; + case ITABS_BOTTOM: + cdCanvasClipArea (canvas, x2 + ITABS_BORDER + 1, x4 - ITABS_BORDER - 1, + y2 + ITABS_BORDER + 1, y4 - ITABS_BORDER - 1); + break; + case ITABS_LEFT: + cdCanvasClipArea (canvas, x3 + ITABS_BORDER + 1, x1 - ITABS_BORDER - 1, + y3 + ITABS_BORDER + 1, y1 - ITABS_BORDER - 1); + break; + case ITABS_RIGHT: + cdCanvasClipArea (canvas, x4 + ITABS_BORDER + 1, x2 - ITABS_BORDER - 1, + y4 + ITABS_BORDER + 1, y2 - ITABS_BORDER - 1); + break; + } + + if (beforeCurrent == ITABS_TRUE) + iTabsDrawBorder(ih, types[0], x1a, y1a, x2, y2); + else if (afterCurrent == ITABS_TRUE) + iTabsDrawBorder(ih, types[2], x3, y3, x4a, y4a); + else + { + iTabsDrawBorder(ih, types[0], x1a, y1a, x2, y2); + iTabsDrawBorder(ih, types[2], x3, y3, x4a, y4a); + } + + if (types[1] == ITABS_TOP) + { + iTabsDrawCorner(ih, ih->data->light_shadow, x1 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1, + x1 + ITABS_BORDER + 1, y3 + ITABS_BORDER - 3); + + iTabsDrawCorner(ih, ih->data->dark_shadow, x3 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1, + x3 + ITABS_BORDER - 3, y3 + ITABS_BORDER - 3); + } + + if (types[1] == ITABS_BOTTOM) + { + iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1, + x2 + ITABS_BORDER + 1, y2 + ITABS_BORDER + 1); + + iTabsDrawCorner(ih, ih->data->dark_shadow, x4 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1, + x4 + ITABS_BORDER - 3, y2 + ITABS_BORDER + 1); + } + + if (types[1] == ITABS_LEFT) + { + iTabsDrawCorner(ih, ih->data->light_shadow, x3 + ITABS_BORDER - 1, y1 + ITABS_BORDER - 1, + x3 + ITABS_BORDER + 1, y1 + ITABS_BORDER - 3); + + iTabsDrawCorner(ih, ih->data->dark_shadow, x3 + ITABS_BORDER - 1, y3 + ITABS_BORDER - 1, + x3 + ITABS_BORDER + 1, y3 + ITABS_BORDER + 1); + } + + if (types[1] == ITABS_RIGHT) + { + iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y2 + ITABS_BORDER - 1, + x2 + ITABS_BORDER - 3, y2 + ITABS_BORDER - 3); + + iTabsDrawCorner(ih, ih->data->dark_shadow, x2 + ITABS_BORDER - 1, y4 + ITABS_BORDER - 1, + x2 + ITABS_BORDER - 3, y4 + ITABS_BORDER + 1); + } + + break; + } + + if (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT) + tab_h = full_tab_len; + else + tab_w = full_tab_len; + + switch(ih->data->tabs_type) + { + case ITABS_TOP: + x_text = x1 + tab_w / 2; + y_text = y1 + tab_h / 2; + break; + case ITABS_BOTTOM: + x_text = x2 + tab_w / 2; + y_text = y2 + tab_h / 2; + break; + case ITABS_LEFT: + x_text = x1 - tab_w / 2; + y_text = y1 - tab_h / 2; + break; + case ITABS_RIGHT: + x_text = x2 - tab_w / 2; + y_text = y2 - tab_h / 2; + break; + } + cdCanvasTextAlignment (canvas, CD_CENTER); + + /* Draws the text */ + cdCanvasForeground (canvas, ih->data->fgcolor); + + if (ih->data->tabs_orientation == ITABS_VERTICAL) + cdCanvasTextOrientation(canvas, 90); + else + cdCanvasTextOrientation(canvas, 0); + + { + char* tab_font = NULL; + int bold = 0; + + if (iupdrvIsActive(ih) && IupGetInt(ih->data->tabs_line.tabs_info[tab_index].ihandle, "ACTIVE")) + { + if (tab_index == ih->data->current_tab) + { + tab_font = ih->data->font_active; + bold = 1; + } + } + else + { + cdCanvasForeground(canvas, CD_DARK_GRAY); + tab_font = ih->data->font_inactive; + } + + iTabsSetCDFont(ih, tab_font, bold); + } + + cdCanvasClip(canvas, CD_CLIPAREA); + + { + char* text = iupAttribGet(ih->data->tabs_line.tabs_info[tab_index].ihandle, "TABTITLE"); + if (!text) text = " "; + + if (ih->data->has_focus && (tab_index == ih->data->current_tab)) + { + int x1, y1, x2, y2; + cdCanvasGetTextBox(canvas, x_text, y_text, text, &x1, &x2, &y1, &y2); + if (ih->data->tabs_orientation == ITABS_VERTICAL) + {y1-=2; y2+=2;} + else + {x1-=2; x2+=2;} + ih->data->focus_x1 = x1; + ih->data->focus_x2 = x2; + ih->data->focus_y1 = y1; + ih->data->focus_y2 = y2; + } + + cdCanvasText(canvas, x_text, y_text, text); + } + + cdCanvasClip (canvas, CD_CLIPOFF); +} + +/* Draws the lower border of the tab labels */ +static void iTabsDrawLabelLowerBorder(Ihandle* ih, int start, int end) +{ + switch(ih->data->tabs_type) + { + case ITABS_TOP: + iTabsDrawBorder(ih, ITABS_TOP, start, ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1, + end, ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1); + break; + + case ITABS_LEFT: + if (!start) + iTabsDrawBorder(ih, ITABS_LEFT, *(ih->data->tabs_line.line_w) - 1 + 1, ih->data->h - 1 - start, + *(ih->data->tabs_line.line_w) - 1 + 1, ih->data->h - 1 - end); + else + iTabsDrawBorder(ih, ITABS_LEFT, *(ih->data->tabs_line.line_w) - 1 + 1, ih->data->h - 1 - start, + *(ih->data->tabs_line.line_w) - 1 + 1, 0); + break; + + case ITABS_BOTTOM: + iTabsDrawBorder(ih, ITABS_BOTTOM, start, *(ih->data->tabs_line.line_h) - 1 + 1, + end, *(ih->data->tabs_line.line_h) - 1 + 1); + break; + + case ITABS_RIGHT: + if (!start) + iTabsDrawBorder(ih, ITABS_RIGHT, ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, ih->data->h - 1 - start, + ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, ih->data->h - 1 - end); + else + iTabsDrawBorder(ih, ITABS_RIGHT, ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, ih->data->h - 1 - start, + ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1, 0); + break; + } +} + +/* Draws a normal button */ +static void iTabsDrawButton(Ihandle* ih, int x, int y, int width, int height) +{ + cdCanvas* canvas = ih->data->cddbuffer; + int old_color = cdCanvasForeground(canvas, ih->data->bgcolor); + + cdCanvasBegin(canvas, CD_FILL); + cdCanvasVertex(canvas, x, y); + cdCanvasVertex(canvas, x + width - 1, y); + cdCanvasVertex(canvas, x + width - 1, y + height - 1); + cdCanvasVertex(canvas, x, y + height - 1); + cdCanvasEnd(canvas); + + cdCanvasForeground (canvas, old_color); + + iTabsDrawBorder(ih, ITABS_TOP, x + width - 1, y + height - 1, x, y + height - 1); + iTabsDrawBorder(ih, ITABS_LEFT, x, y + height - 1, x, y); + iTabsDrawBorder(ih, ITABS_BOTTOM, x, y, x + width - 1, y); + iTabsDrawBorder(ih, ITABS_RIGHT, x + width - 1, y, x + width - 1, y + height - 1); +} + +/* Draws arrows +* +* x, y ..........: lower border of the bounding box +* width, height .: dimensions of the bounding box +* type ..........: ITABS_LEFT, ITABS_RIGHT, ITABS_TOP, ITABS_BOTTOM +*/ +static void iTabsDrawArrow(Ihandle* ih, int x, int y, int width, int height, int type) +{ + cdCanvas* canvas = ih->data->cddbuffer; + long old_color; + + if (iupdrvIsActive(ih)) + old_color = cdCanvasForeground(canvas, CD_BLACK); + else + old_color = cdCanvasForeground(canvas, CD_DARK_GRAY); + + cdCanvasBegin(canvas, CD_CLOSED_LINES); + switch(type) + { + case ITABS_LEFT: + cdCanvasVertex(canvas, x + 4, y + height / 2); + cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4); + cdCanvasVertex(canvas, x + width - 1 - 4, y + 4); + break; + + case ITABS_RIGHT: + cdCanvasVertex(canvas, x + width - 1 - 4, y + height / 2); + cdCanvasVertex(canvas, x + 4, y + height - 1 - 4); + cdCanvasVertex(canvas, x + 4, y + 4); + break; + + case ITABS_TOP: + cdCanvasVertex(canvas, x + 4, y + 4); + cdCanvasVertex(canvas, x + width / 2, y + height - 1 - 4); + cdCanvasVertex(canvas, x + width - 1 - 4, y + 4); + break; + + case ITABS_BOTTOM: + cdCanvasVertex(canvas, x + 4, y + height - 1 - 4); + cdCanvasVertex(canvas, x + width / 2, y + 4); + cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4); + break; + } + cdCanvasEnd(canvas); + + cdCanvasBegin(canvas, CD_FILL); + switch(type) + { + case ITABS_LEFT: + cdCanvasVertex(canvas, x + 4, y + height / 2); + cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4); + cdCanvasVertex(canvas, x + width - 1 - 4, y + 4); + break; + + case ITABS_RIGHT: + cdCanvasVertex(canvas, x + width - 1 - 4, y + height / 2); + cdCanvasVertex(canvas, x + 4, y + height - 1 - 4); + cdCanvasVertex(canvas, x + 4, y + 4); + break; + + case ITABS_TOP: + cdCanvasVertex(canvas, x + 4, y + 4); + cdCanvasVertex(canvas, x + width / 2, y + height - 1 - 4); + cdCanvasVertex(canvas, x + width - 1 - 4, y + 4); + break; + + case ITABS_BOTTOM: + cdCanvasVertex(canvas, x + 4, y + height - 1 - 4); + cdCanvasVertex(canvas, x + width / 2, y + 4); + cdCanvasVertex(canvas, x + width - 1 - 4, y + height - 1 - 4); + break; + } + cdCanvasEnd(canvas); + + cdCanvasForeground(canvas, old_color); +} + +/* Draws dots "..." */ +static void iTabsDrawDots(Ihandle* ih, int x, int y, int width, int height) +{ + x -= 1; + y += height / 3 - 1; + cdCanvasRect(ih->data->cddbuffer, x + 3, x + 4, y + 3, y + 4); + cdCanvasRect(ih->data->cddbuffer, x + width / 2, x+ width / 2 + 1 , y + 3, y + 4); + cdCanvasRect(ih->data->cddbuffer, x + width - 1 - 3, x + width - 1 - 2, y + 3, y + 4); +} + +/* Draws the scroll_visible with the dots button "..." */ +static void iTabsDrawScroll(Ihandle* ih) +{ + int x = ih->data->tabs_line.scroll_x, + y = ih->data->tabs_line.scroll_y, + w = ih->data->tabs_line.scroll_w, + h = ih->data->tabs_line.scroll_h; + int scroll_updown; + + if (ih->data->tabs_type == ITABS_TOP || + ih->data->tabs_type == ITABS_BOTTOM) + scroll_updown = 0; + else + scroll_updown = 1; + + if (ih->data->tabs_orientation == ITABS_HORIZONTAL) + { + int x3 = w / 3; + + iTabsDrawButton(ih, x, y, x3, h); + iTabsDrawArrow (ih, x, y, x3, h, scroll_updown ? ITABS_TOP : ITABS_LEFT); + + iTabsDrawButton(ih, x + x3, y, x3, h); + iTabsDrawDots (ih, x + x3, y, x3, h); + + iTabsDrawButton(ih, x + 2 * x3, y, x3, h ); + iTabsDrawArrow (ih, x + 2 * x3, y, x3, h, scroll_updown ? ITABS_BOTTOM : ITABS_RIGHT); + } + else + { + int y3 = h / 3; + + iTabsDrawButton(ih, x, y, w, y3); + iTabsDrawArrow (ih, x, y, w, y3, scroll_updown ? ITABS_BOTTOM : ITABS_RIGHT); + + iTabsDrawButton(ih, x, y + y3, w, y3); + iTabsDrawDots (ih, x, y + y3, w, y3); + + iTabsDrawButton(ih, x, y + 2 * y3, w, y3); + iTabsDrawArrow (ih, x, y + 2 * y3, w, y3, scroll_updown ? ITABS_TOP : ITABS_LEFT); + } + + iTabsDrawCorner(ih, ih->data->dark_shadow, x + w - 1, y + h - 1, x + w - 3, y + h - 3); + iTabsDrawCorner(ih, ih->data->dark_shadow, x + w - 1, y, x + w - 3, y + 2); + iTabsDrawCorner(ih, ih->data->light_shadow, x, y + h - 1, x + 2, y + h - 3); + iTabsDrawCorner(ih, ih->data->dark_shadow, x, y, x + 2, y + 2); +} + +/* Clear tab background */ +static void iTabsDrawBackground(Ihandle* ih) +{ + int x1, y1, x2, y2, x3, y3, x4, y4; + cdCanvas* canvas = ih->data->cddbuffer; + + cdCanvasBackground(canvas, cdIupConvertColor(iupControlBaseGetParentBgColor(ih))); + cdCanvasClear(canvas); + + switch(ih->data->tabs_type) + { + case ITABS_TOP: + x1 = 0; + y1 = ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1; + x2 = x1; + y2 = 0; + x3 = ih->data->w - 1; + y3 = y2; + x4 = x3; + y4 = y1; + break; + + case ITABS_BOTTOM: + x1 = 0; + y1 = *(ih->data->tabs_line.line_h) - 1 + 1; + x2 = x1; + y2 = ih->data->h - 1; + x3 = ih->data->w - 1; + y3 = y2; + x4 = x3; + y4 = y1; + break; + + case ITABS_LEFT: + x1 = *(ih->data->tabs_line.line_w) - 1 + 1; + y1 = ih->data->h - 1; + x2 = ih->data->w - 1; + y2 = y1; + x3 = x2; + y3 = 0; + x4 = x1; + y4 = y3; + break; + + case ITABS_RIGHT: + x1 = ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1; + y1 = ih->data->h - 1; + x2 = 0; + y2 = y1; + x3 = x2; + y3 = 0; + x4 = x1; + y4 = y3; + break; + + default: + return; + } + + /* Foreground color */ + cdCanvasForeground(canvas, ih->data->bgcolor); + + cdCanvasBegin(canvas, CD_FILL); + cdCanvasVertex(canvas, x1, y1); + cdCanvasVertex(canvas, x2, y2); + cdCanvasVertex(canvas, x3, y3); + cdCanvasVertex(canvas, x4, y4); + cdCanvasEnd(canvas); + + cdCanvasBegin(canvas, CD_CLOSED_LINES); + cdCanvasVertex(canvas, x1, y1); + cdCanvasVertex(canvas, x2, y2); + cdCanvasVertex(canvas, x3, y3); + cdCanvasVertex(canvas, x4, y4); + cdCanvasEnd(canvas); +} + +/* Draws tab borders */ +static void iTabsDrawTabsBorders(Ihandle* ih) +{ + int x1, y1, x2, y2, x3, y3, x4, y4; + ItabsType types[3]; + + switch(ih->data->tabs_type) + { + case ITABS_TOP: + x1 = 0; + y1 = ih->data->h - *(ih->data->tabs_line.line_h) - 1 - 1; + x2 = x1; + y2 = 0; + x3 = ih->data->w - 1; + y3 = y2; + x4 = x3; + y4 = y1; + + /* defines the order to draw */ + types[0] = ITABS_LEFT; + types[1] = ITABS_BOTTOM; + types[2] = ITABS_RIGHT; + break; + + case ITABS_BOTTOM: + x1 = 0; + y1 = *(ih->data->tabs_line.line_h) - 1 + 1; + x2 = x1; + y2 = ih->data->h - 1; + x3 = ih->data->w - 1; + y3 = y2; + x4 = x3; + y4 = y1; + + /* defines the order to draw */ + types[0] = ITABS_LEFT; + types[1] = ITABS_TOP; + types[2] = ITABS_RIGHT; + break; + + case ITABS_LEFT: + x1 = *(ih->data->tabs_line.line_w) - 1 + 1; + y1 = ih->data->h - 1; + x2 = ih->data->w - 1; + y2 = y1; + x3 = x2; + y3 = 0; + x4 = x1; + y4 = y3; + + /* defines the order to draw */ + types[0] = ITABS_TOP; + types[1] = ITABS_RIGHT; + types[2] = ITABS_BOTTOM; + break; + + case ITABS_RIGHT: + x1 = ih->data->w - *(ih->data->tabs_line.line_w) - 1 - 1; + y1 = ih->data->h - 1; + x2 = 0; + y2 = y1; + x3 = x2; + y3 = 0; + x4 = x1; + y4 = y3; + + /* defines the order to draw */ + types[0] = ITABS_TOP; + types[1] = ITABS_LEFT; + types[2] = ITABS_BOTTOM; + break; + + default: + return; + } + + iTabsDrawBorder(ih, types[0], x1, y1, x2, y2); + iTabsDrawBorder(ih, types[1], x2, y2, x3, y3); + iTabsDrawBorder(ih, types[2], x3, y3, x4, y4); +} + +/* Draws all the tabs and the scroll_visible, if it exists */ +static void iTabsDrawLineOfTabs(Ihandle* ih) +{ + int offset = 0; + int c = 0; + + /* draws decorations, when necessary */ + if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE) + { + iTabsDrawTab(ih, ih->data->tabs_line.start_tab - 1, offset); + offset += ih->data->tabs_line.broken_space_start; + } + + if (ih->data->tabs_line.broken_center_visible == ITABS_FALSE) + { + for(c = ih->data->tabs_line.start_tab; c <= ih->data->tabs_line.end_tab; c++) + { + if (c != ih->data->current_tab) + { + iTabsDrawTab(ih, c, offset); + offset += ih->data->tabs_line.tabs_info[c].tab_len; + } + else + { + if (ih->data->current_tab != 0) + iTabsDrawLabelLowerBorder(ih, 0, offset); + + iTabsDrawTab(ih, c, offset); + offset += ih->data->tabs_line.tabs_info[c].tab_len; + iTabsDrawLabelLowerBorder(ih, offset - 1, ih->data->w); + } + } + } + else + { + if (ih->data->current_tab != 0) + iTabsDrawLabelLowerBorder(ih, 0, offset); + + iTabsDrawTab(ih, ih->data->current_tab, offset); + offset += ih->data->tabs_line.broken_tab_space; + iTabsDrawLabelLowerBorder(ih, offset, ih->data->w); + } + + if (ih->data->tabs_line.broken_end_visible) + { + iTabsDrawTab(ih, ih->data->tabs_line.end_tab + 1, offset); + offset += ih->data->tabs_line.broken_space_end; + } + + if (ih->data->tabs_line.scroll_visible == ITABS_TRUE) + iTabsDrawScroll(ih); +} + +/* Calls the user callback to change of tab */ +static int iTabsCallTabChangeCb(Ihandle* ih, Ihandle* new_tab, Ihandle* old_tab) +{ + IFnnn cb = NULL; + + if (!IupGetInt(new_tab, "ACTIVE")) + return IUP_IGNORE; + + cb = (IFnnn)IupGetCallback(ih, "TABCHANGE_CB"); + if (!cb) + return IUP_DEFAULT; + + return cb(ih, new_tab, old_tab); +} + +/* ========================================================================= */ +/* Functions to calculate the tab sizes and the tab visibilities */ +/* ========================================================================= */ + +/* Calculates the box size that involves the text of the tabs */ +static void iTabsCalcTextSize(Ihandle* ih) +{ + char* title; + int t, text_w, size, tabsize; + int text_width, text_height; + + iupdrvFontGetCharSize(ih, NULL, &text_height); + ih->data->tabs_line.text_h = text_height; + + /* Get the global size of tab */ + size = iupAttribGetInt(ih, "TABSIZE"); + + for(t = 0; t < ih->data->number_of_tabs; t++) + { + Ihandle* tab_child = ih->data->tabs_line.tabs_info[t].ihandle; + + title = iupAttribGet(tab_child, "TABTITLE"); + if (!title) title = " "; + + /* Get the size of an specific tab */ + tabsize = iupAttribGetInt(tab_child, "TABSIZE"); + text_width = iupdrvFontGetStringWidth(ih, title); + + /* Uses the specific size if the value is larger than the minimum size */ + if (tabsize > text_width) + text_w = tabsize; + else + { + /* Else, uses the tab size if the value is larger than the minimum size */ + if (size > text_width) + text_w = size; + else /* otherwise, uses the minimum size */ + text_w = text_width; + } + + ih->data->tabs_line.tabs_info[t].text_w = text_w; + } +} + +static void iTabsCalcTabSize(Ihandle* ih) +{ + int t, tab_len, tab_thick; + + iTabsCalcTextSize(ih); + + ih->data->tabs_line.line_thick = 0; + ih->data->tabs_line.line_length = 0; + + for(t = 0; t < ih->data->number_of_tabs; t++) + { + /* initialize with the text size */ + if (ih->data->tabs_render == ITABS_RENDER_PLANE_ALIGN) + { + tab_len = ih->data->tabs_line.tabs_info[t].text_w; + tab_thick = ih->data->tabs_line.text_h; + } + else + { + tab_len = ih->data->tabs_line.text_h; + tab_thick = ih->data->tabs_line.tabs_info[t].text_w; + } + + /* add the borders */ + if (abs(ih->data->current_tab - t) == 1) /* if neighbor of the current tab */ + tab_len += ITABS_BORDER; + else if (t == ih->data->current_tab) /* if tab is the current tab */ + { + if (ih->data->current_tab == 0 || ih->data->current_tab == (ih->data->number_of_tabs - 1)) + tab_len += 2 * ITABS_BORDER; + else + tab_len += 3 * ITABS_BORDER; + } + else + tab_len += 2 * ITABS_BORDER; + + /* add margins */ + if (ih->data->tabs_render == ITABS_RENDER_PLANE_ALIGN) + tab_len += 2 * ITABS_MARGIN; + else + tab_len += 2 * ITABS_SPACING; + + ih->data->tabs_line.tabs_info[t].tab_len = tab_len; + + ih->data->tabs_line.line_length += tab_len; /* is always the sum on the lengths */ + + if (tab_thick > ih->data->tabs_line.line_thick) /* is always the maximum thickness */ + ih->data->tabs_line.line_thick = tab_thick; + } + + if (ih->data->tabs_render == ITABS_RENDER_PLANE_ALIGN) + ih->data->tabs_line.line_thick += 2 * ITABS_SPACING + 2 * ITABS_BORDER; + else + ih->data->tabs_line.line_thick += 2 * ITABS_MARGIN + 2 * ITABS_BORDER; + + if (ih->data->tabs_line.line_thick < ih->data->tabs_line.scroll_thick) + ih->data->tabs_line.line_thick = ih->data->tabs_line.scroll_thick; + + /* extra pixels of the selected tab */ + ih->data->tabs_line.line_thick += ITABS_CURRENT_EXTRA_PIXELS; +} + +static void iTabsCalcScrollPos(Ihandle* ih) +{ + int x1=0, y1=0, x2=0, y2=0; + + switch(ih->data->tabs_type) + { + case ITABS_TOP: + ih->data->tabs_line.scroll_x = ih->data->w - ih->data->tabs_line.scroll_w - 2; + ih->data->tabs_line.scroll_y = ih->data->h - *(ih->data->tabs_line.line_h); + y1=0; y2=*(ih->data->tabs_line.line_h); + x1=0; x2=ih->data->w-1; + break; + case ITABS_BOTTOM: + ih->data->tabs_line.scroll_x = ih->data->w - ih->data->tabs_line.scroll_w - 2; + ih->data->tabs_line.scroll_y = *(ih->data->tabs_line.line_h) - 2 - ih->data->tabs_line.scroll_h + 1; + y1=ih->data->h - *(ih->data->tabs_line.line_h); y2=ih->data->h-1; + x1=0; x2=ih->data->w-1; + break; + case ITABS_LEFT: + ih->data->tabs_line.scroll_x = *(ih->data->tabs_line.line_w) - 2 - ih->data->tabs_line.scroll_w + 1; + ih->data->tabs_line.scroll_y = 0; + x1=0; x2=*(ih->data->tabs_line.line_w); + y1=0; y2=ih->data->h-1; + break; + case ITABS_RIGHT: + ih->data->tabs_line.scroll_x = ih->data->w - *(ih->data->tabs_line.line_w); + ih->data->tabs_line.scroll_y = 0; + x1=ih->data->w-*(ih->data->tabs_line.line_w); x2=ih->data->w-1; + y1=0; y2=ih->data->h-1; + break; + } + + iupAttribSetStrf(ih, "TIPRECT", "%d %d %d %d", x1, y1, x2, y2); +} + +/* Calculates the visibility of tabs */ +static void iTabsCalcVisibleTabs(Ihandle* ih) +{ + int line_length = *ih->data->max_line_length; + int old_line_length; + int t, t_aux = 0; + + /* Verifies if all the tabs are visible */ + if (*ih->data->max_line_length > ih->data->tabs_line.line_length) + { + /* All the tabs are visible */ + ih->data->tabs_line.scroll_visible = ITABS_FALSE; + ih->data->tabs_line.broken_start_visible = ITABS_FALSE; + ih->data->tabs_line.broken_end_visible = ITABS_FALSE; + ih->data->tabs_line.broken_center_visible = ITABS_FALSE; + + ih->data->tabs_line.start_tab = 0; + ih->data->tabs_line.end_tab = ih->data->number_of_tabs - 1; + + return; + } + + /* Subtracts space of scroll */ + line_length -= ih->data->tabs_line.scroll_len + ITABS_SCROLL_SPACING; + + ih->data->tabs_line.scroll_visible = ITABS_TRUE; + + /* Verifies if current tab is smaller than start tab, adjusting if necessary */ + if (ih->data->current_tab < ih->data->tabs_line.start_tab) + ih->data->tabs_line.start_tab = ih->data->current_tab; + + /* Processes tabs in sequence, until the total length overcome the virtual length */ + t = ih->data->tabs_line.start_tab; + old_line_length = line_length; + + while(1) + { + do + { + while (ih->data->tabs_line.start_tab < ih->data->current_tab) + { + if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len <= line_length) + break; + ih->data->tabs_line.start_tab++; + } + + for(t = ih->data->tabs_line.start_tab, t_aux = 0; + t < ih->data->number_of_tabs; t++, t_aux++) + { + if (ih->data->tabs_line.tabs_info[t].tab_len > line_length) + { + if ((t - 1) < ih->data->current_tab) + { + while (t_aux > 0) + { + line_length += + ih->data->tabs_line.tabs_info[t - t_aux].tab_len; + + if (ih->data->tabs_line.start_tab == 0) + { + line_length -= ITABS_BROKEN_TAB; + ih->data->tabs_line.broken_start_visible = ITABS_TRUE; + } + + ih->data->tabs_line.start_tab++; + + if (ih->data->tabs_line.tabs_info[t].tab_len <= line_length) + break; + + t_aux--; + } + + if (ih->data->tabs_line.tabs_info[t].tab_len > line_length) + { + /* no success */ + ih->data->tabs_line.broken_center_visible = ITABS_TRUE; + break; /* break two loops */ + } + } + else + { + t--; + break; /* break two loops */ + } + } + + line_length -= ih->data->tabs_line.tabs_info[t].tab_len; + ih->data->tabs_line.broken_center_visible = ITABS_FALSE; + } + + if (t == ih->data->number_of_tabs) + t--; + } + while (t < ih->data->current_tab); + + if (ih->data->tabs_line.start_tab > 0 && + ih->data->tabs_line.broken_center_visible != ITABS_TRUE) + { + if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab - 1].tab_len < + (line_length - ITABS_BROKEN_TAB)) + { + ih->data->tabs_line.start_tab--; + line_length = old_line_length; + continue; + } + } + + break; + } + + if (ih->data->tabs_line.start_tab > 0) + { + t = ih->data->tabs_line.start_tab; + line_length = old_line_length; + line_length -= ITABS_BROKEN_TAB; + ih->data->tabs_line.broken_start_visible = ITABS_TRUE; + + while(1) + { + do + { + while (ih->data->tabs_line.start_tab < ih->data->current_tab) + { + if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len <= line_length) + break; + ih->data->tabs_line.start_tab++; + } + + for(t = ih->data->tabs_line.start_tab, t_aux = 0; + t < ih->data->number_of_tabs; t++, t_aux++) + { + if (ih->data->tabs_line.tabs_info[t].tab_len > line_length) + { + if ((t - 1) < ih->data->current_tab) + { + while (t_aux > 0) + { + line_length += + ih->data->tabs_line.tabs_info[t - t_aux].tab_len; + + if (ih->data->tabs_line.start_tab == 0) + { + line_length -= ITABS_BROKEN_TAB; + ih->data->tabs_line.broken_start_visible = ITABS_TRUE; + } + + ih->data->tabs_line.start_tab++; + + if (ih->data->tabs_line.tabs_info[t].tab_len <= line_length) + break; + + t_aux--; + } + + if (ih->data->tabs_line.tabs_info[t].tab_len > line_length) + { + /* no success */ + ih->data->tabs_line.broken_center_visible = ITABS_TRUE; + break; /* break two loops */ + } + } + else + { + t--; + break; /* break two loops */ + } + } + + line_length -= ih->data->tabs_line.tabs_info[t].tab_len; + ih->data->tabs_line.broken_center_visible = ITABS_FALSE; + } + + if (t == ih->data->number_of_tabs) + t--; + } + while (t < ih->data->current_tab); + + if (ih->data->tabs_line.start_tab > 0 && + ih->data->tabs_line.broken_center_visible != ITABS_TRUE) + { + if (ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab - 1].tab_len < + (line_length - ITABS_BROKEN_TAB)) + { + ih->data->tabs_line.start_tab--; + line_length = old_line_length; + continue; + } + } + + break; + } + } + else + ih->data->tabs_line.broken_start_visible = ITABS_FALSE; + + /* space not occupied by tabs is destined for the broken tabs */ + ih->data->tabs_line.broken_tab_space = line_length; + + if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE) + ih->data->tabs_line.broken_tab_space += ITABS_BROKEN_TAB; + + if (ih->data->tabs_line.broken_center_visible == ITABS_TRUE && + ih->data->tabs_line.start_tab == t) + { + /* If there is one visible tab and more tabs to the right, + it must be clipped */ + ih->data->tabs_line.end_tab = ih->data->tabs_line.start_tab; + ih->data->tabs_line.broken_end_visible = ITABS_FALSE; + ih->data->tabs_line.broken_start_visible = ITABS_FALSE; + } + else + { + ih->data->tabs_line.end_tab = t; + ih->data->tabs_line.broken_center_visible = ITABS_FALSE; + + /* If the last tab is not visible, it must be included the + right broken tab, and delete one of tabs, when necessary */ + if (ih->data->tabs_line.end_tab < (ih->data->number_of_tabs - 1)) + { + ih->data->tabs_line.broken_end_visible = ITABS_TRUE; + + if (line_length < ITABS_BROKEN_TAB) + { + if (ih->data->tabs_line.start_tab == ih->data->tabs_line.end_tab) + { + /* no space to broken tabs */ + ih->data->tabs_line.broken_center_visible = ITABS_TRUE; + ih->data->tabs_line.broken_end_visible = ITABS_FALSE; + ih->data->tabs_line.broken_start_visible = ITABS_FALSE; + + ih->data->tabs_line.broken_tab_space += + ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len; + } + else if (ih->data->current_tab == ih->data->tabs_line.end_tab) + { + ih->data->tabs_line.broken_tab_space += + ih->data->tabs_line.tabs_info[ih->data->tabs_line.start_tab].tab_len; + ih->data->tabs_line.start_tab++; + ih->data->tabs_line.broken_start_visible = ITABS_TRUE; + } + else + { + ih->data->tabs_line.broken_tab_space += + ih->data->tabs_line.tabs_info[ih->data->tabs_line.end_tab].tab_len; + ih->data->tabs_line.end_tab--; + } + } + } + else + ih->data->tabs_line.broken_end_visible = ITABS_FALSE; + } + + if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE && + ih->data->tabs_line.broken_end_visible == ITABS_TRUE) + { + ih->data->tabs_line.broken_space_start = (int) + ceil((double) ih->data->tabs_line.broken_tab_space / 2); + ih->data->tabs_line.broken_space_end = (int) + floor((double) ih->data->tabs_line.broken_tab_space / 2); + } + else if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE) + { + ih->data->tabs_line.broken_space_start = ih->data->tabs_line.broken_tab_space; + ih->data->tabs_line.broken_space_end = 0; + } + else if (ih->data->tabs_line.broken_end_visible == ITABS_TRUE) + { + ih->data->tabs_line.broken_space_end = ih->data->tabs_line.broken_tab_space; + ih->data->tabs_line.broken_space_start = 0; + } + else + { + ih->data->tabs_line.broken_space_end = 0; + ih->data->tabs_line.broken_space_start = 0; + } + + if (ih->data->tabs_line.start_tab == 0) + ih->data->tabs_line.broken_start_visible = ITABS_FALSE; +} + +static void iTabsGetDecorOffset(Ihandle* ih, int *x, int *y) +{ + switch(ih->data->tabs_type) + { + case ITABS_TOP: + *x = ITABS_MARGIN; + *y = *(ih->data->tabs_line.line_h) + ITABS_MARGIN; + break; + + case ITABS_LEFT: + *x = *(ih->data->tabs_line.line_w) + ITABS_MARGIN; + *y = ITABS_MARGIN; + break; + + case ITABS_RIGHT: + case ITABS_BOTTOM: + default: + *x = ITABS_MARGIN; + *y = ITABS_MARGIN; + break; + } +} + +static void iTabsGetDecorSize(Ihandle* ih, int *w, int *h) +{ + switch(ih->data->tabs_type) + { + case ITABS_TOP: + *w = 2 * ITABS_MARGIN; + *h = *(ih->data->tabs_line.line_h) + 2 * ITABS_MARGIN; + break; + + case ITABS_BOTTOM: + *w = 2 * ITABS_MARGIN; + *h = *(ih->data->tabs_line.line_h) + 2 * ITABS_MARGIN; + break; + + case ITABS_LEFT: + *w = *(ih->data->tabs_line.line_w) + 2 * ITABS_MARGIN; + *h = 2 * ITABS_MARGIN; + break; + + case ITABS_RIGHT: + *w = *(ih->data->tabs_line.line_w) + 2 * ITABS_MARGIN; + *h = 2 * ITABS_MARGIN; + break; + } +} + +/* Changes the zbox value and redraws the tabs */ +static void iTabsSetNewCurrentTab(Ihandle* ih, int tab) +{ + char* next_tab_name = IupGetName(iTabsGetTabIhandle(ih, tab)); + if (next_tab_name == NULL) + return; + + ih->data->current_tab = tab; + IupSetAttribute(ih->data->zbox, "VALUE", next_tab_name); + + iTabsCalcVisibleTabs(ih); /* calculates the visibility of tabs (depends on the sizes calculated and on the current tab) */ + + IupUpdate(ih); +} + + +/* ========================================================================= */ +/* IupCanvas Callbacks */ +/* ========================================================================= */ + + +static int iTabsFocus_CB(Ihandle* ih, int focus) +{ + ih->data->has_focus = focus; + IupUpdate(ih); + return IUP_DEFAULT; +} + +static int iTabsResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update canvas size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL); + + iTabsCalcTabSize(ih); /* calculates sizes of Tab line (depends on the TABTITLE of all children and on FONT) */ + iTabsCalcScrollPos(ih); /* calculates the position of the scroll (depends on the sizes calculated) */ + iTabsCalcVisibleTabs(ih); /* calculates the visibility of tabs (depends on the sizes calculated and on the current tab) */ + + return IUP_DEFAULT; +} + +static int iTabsRedraw_CB(Ihandle* ih) +{ + char* clip_rect; + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* Paints the background and draws the border */ + iTabsDrawBackground(ih); + iTabsDrawTabsBorders(ih); + + /* Draws tabs and decorations */ + iTabsDrawLineOfTabs(ih); + + clip_rect = iupAttribGet(ih, "CLIPRECT"); + if (clip_rect) + { + int x1, x2, y1, y2; + sscanf(clip_rect, "%d %d %d %d", &x1, &y1, &x2, &y2); + y1 = cdIupInvertYAxis(y1, ih->data->h); + y2 = cdIupInvertYAxis(y2, ih->data->h); + cdCanvasClipArea(ih->data->cdcanvas, x1, x2, y1, y2); + cdCanvasClip(ih->data->cdcanvas, CD_CLIPAREA); + } + + /* Ends the draw process */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + cdIupDrawFocusRect(ih, ih->data->cdcanvas, ih->data->focus_x1, ih->data->focus_y1, ih->data->focus_x2, ih->data->focus_y2); + + if (clip_rect) + cdCanvasClip(ih->data->cdcanvas, CD_CLIPOFF); + + return IUP_DEFAULT; +} + +/* Callback to popup menu, with the tabs list */ +static int iTabsMenu_CB(Ihandle* ih) +{ + char* number = iupAttribGet(ih, "_IUPTABS_ID"); + int tab_number = 0; + int result; + + sscanf (number, "%d", &tab_number); + + if (ih->data->current_tab != tab_number) + { + result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, tab_number), + iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, tab_number); + } + + return IUP_DEFAULT; +} + +/* Creates a menu with all the tab labels */ +static Ihandle* iTabsMakeMenuFromTabs(Ihandle* ih) +{ + int c = 0; + Ihandle* menu = IupMenu(NULL); + Ihandle* item = NULL; + + for(c = 0; c < ih->data->number_of_tabs; c++) + { + char* title = iupAttribGet(ih->data->tabs_line.tabs_info[c].ihandle, "TABTITLE"); + if (!title) title = " "; + + item = IupItem(title, NULL); + IupSetCallback(item, "ACTION", (Icallback) iTabsMenu_CB); + + iupAttribSetStrf(item, "_IUPTABS_ID", "%4d", c); + + if (c == ih->data->current_tab) + IupSetAttribute(item, "VALUE", "ON"); + + IupAppend(menu, item); + } + + return menu; +} + +static int iTabsGetNextTab(Ihandle* ih) +{ + int next_tab; + + if (ih->data->current_tab < (ih->data->number_of_tabs - 1)) + next_tab = ih->data->current_tab + 1; + else + next_tab = 0; + + /* find the next active tab */ + while(next_tab != ih->data->current_tab && + !IupGetInt(iTabsGetTabIhandle(ih, next_tab), "ACTIVE")) + { + if (next_tab < (ih->data->number_of_tabs - 1)) + next_tab = next_tab + 1; + else + next_tab = 0; + } + + if (next_tab == ih->data->current_tab) + return -1; + + return next_tab; +} + +static int iTabsGetPreviousTab(Ihandle* ih) +{ + int previous_tab; + if (ih->data->current_tab > 0) + previous_tab = ih->data->current_tab - 1; + else + previous_tab = ih->data->number_of_tabs - 1; + + /* find the previous active tab */ + while(previous_tab != ih->data->current_tab && + !IupGetInt(iTabsGetTabIhandle(ih, previous_tab), "ACTIVE")) + { + if (previous_tab > 0) + previous_tab = previous_tab - 1; + else + previous_tab = ih->data->number_of_tabs - 1; + } + + if (previous_tab == ih->data->current_tab) + return -1; + + return previous_tab; +} + +/* Key press Callback */ +static int iTabsKeyPress_CB(Ihandle* ih, int c, int press) +{ + if (press == 0) + return IUP_DEFAULT; + + if (((c == K_RIGHT || c == K_sRIGHT) && (ih->data->tabs_type == ITABS_TOP || ih->data->tabs_type == ITABS_BOTTOM)) || + ((c == K_DOWN || c == K_sDOWN) && (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT))) + { + int result; + int next_tab = iTabsGetNextTab(ih); + if (next_tab == -1) + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ + + result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, next_tab), + iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, next_tab); + + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ + } + else if (((c == K_LEFT || c == K_sLEFT) && (ih->data->tabs_type == ITABS_TOP || ih->data->tabs_type == ITABS_BOTTOM)) || + ((c == K_UP || c == K_sUP) && (ih->data->tabs_type == ITABS_LEFT || ih->data->tabs_type == ITABS_RIGHT))) + { + int result; + int previous_tab = iTabsGetPreviousTab(ih); + if (previous_tab == -1) + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ + + result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, previous_tab), + iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, previous_tab); + + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ + } + + return IUP_DEFAULT; +} + +/* Button press Callback of IUP Canvas */ +static int iTabsButton_CB (Ihandle* ih, int b, int press, int mx, int my) +{ + static int last_tab_press = -1; + int* virtual_width = NULL; + int* virtual_height = NULL; + int width = 0, height = 0, offset = 0; + int* virtual_mx = NULL; + int* virtual_my = NULL; + int click_x = mx, click_y = ih->data->h-1 - my; + int count = 0; + + /* Only events of the left button are handled */ + if (b != IUP_BUTTON1) + return IUP_DEFAULT; + + /* Calculates the bounding box size of the tabs queue */ + switch(ih->data->tabs_type) + { + case ITABS_TOP: + width = ih->data->w; + height = ih->data->tabs_line.line_thick; + virtual_width = &width; + virtual_height = &height; + virtual_mx = &mx; + virtual_my = &my; + *virtual_my = -(*virtual_my - (ih->data->tabs_line.line_thick - 1)); + break; + + case ITABS_BOTTOM: + width = ih->data->w; + height = ih->data->tabs_line.line_thick; + virtual_width = &width; + virtual_height = &height; + virtual_mx = &mx; + virtual_my = &my; + *virtual_my = *virtual_my - ih->data->h + ih->data->tabs_line.line_thick; + break; + + case ITABS_LEFT: + width = ih->data->tabs_line.line_thick; + height = ih->data->h; + virtual_width = &height; + virtual_height = &width; + virtual_mx = &my; + virtual_my = &mx; + *virtual_my = -(*virtual_my - (ih->data->tabs_line.line_thick - 1)); + break; + + case ITABS_RIGHT: + width = ih->data->tabs_line.line_thick; + height = ih->data->h; + virtual_width = &height; + virtual_height = &width; + virtual_mx = &my; + virtual_my = &mx; + *virtual_my = *virtual_my - ih->data->w + ih->data->tabs_line.line_thick; + break; + } + + /* Adjusts the offset when the first tab is not selected */ + if (ih->data->current_tab != 0) + offset = 1; + + /* Checks if the mouse is on the tabs area */ + if ((*virtual_mx > (*virtual_width - 1)) || + (*virtual_my > (*virtual_height - 1)) || + (*virtual_mx < 0) || (*virtual_my < 0)) + { + /* If a button release or any scroll_visible button are pressed, they'll are released */ + if (!press && ih->data->tabs_line.button != ITABS_BUTTON_NONE) + ih->data->tabs_line.button = ITABS_BUTTON_NONE; + + return IUP_DEFAULT; + } + + if (!press && ih->data->tabs_line.button != ITABS_BUTTON_NONE) + ih->data->tabs_line.button += 3; /* increment from BUTPRESS_* to BUTRELEASE_* */ + + /* If there is a scroll_visible, verifies if the click was on one of buttons */ + if (ih->data->tabs_line.scroll_visible == ITABS_TRUE) + { + int scroll_pos, scroll_space; + + if (ih->data->tabs_orientation == ITABS_HORIZONTAL) + { + scroll_space = ih->data->tabs_line.scroll_w; + scroll_pos = click_x - ih->data->tabs_line.scroll_x; + } + else + { + scroll_space = ih->data->tabs_line.scroll_h; + scroll_pos = click_y - ih->data->tabs_line.scroll_y; + + /* the controls are inverted when text is vertical */ + scroll_pos = scroll_space - scroll_pos; + } + + if (click_y > ih->data->tabs_line.scroll_y && click_x > ih->data->tabs_line.scroll_x && + click_y < ih->data->tabs_line.scroll_y+ih->data->tabs_line.scroll_h && click_x < ih->data->tabs_line.scroll_x+ih->data->tabs_line.scroll_w) + { + /* Verifies which button was pressed by user */ + if (scroll_pos > 2 * scroll_space / 3) /* forward button*/ + { + /* If press, to draw it pressed */ + if (press) + { + ih->data->tabs_line.button = ITABS_BUTTONPRESS_FORWARD ; + } + else if (ih->data->tabs_line.button == ITABS_BUTTONRELEASE_FORWARD) + /* else, change the tab */ + { + int result; + int next_tab = iTabsGetNextTab(ih); + if (next_tab == -1) + return IUP_DEFAULT; + + result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, next_tab), iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, next_tab); + } + } + else if (scroll_pos > scroll_space / 3) /* menu button*/ + { + /* If press, to draw it pressed */ + if (press) + { + ih->data->tabs_line.button = ITABS_BUTTONPRESS_MENU ; + } + else if (ih->data->tabs_line.button == ITABS_BUTTONRELEASE_MENU) + /* else, change the tab */ + { + Ihandle* menu = iTabsMakeMenuFromTabs (ih); + IupPopup(menu, IUP_MOUSEPOS, IUP_MOUSEPOS); + IupDestroy(menu); + } + } + else /* backward button*/ + { + /* If press, to draw it pressed */ + if (press) + { + ih->data->tabs_line.button = ITABS_BUTTONPRESS_BACKWARD ; + } + else if (ih->data->tabs_line.button == ITABS_BUTTONRELEASE_BACKWARD) + /* else, change the tab */ + { + int result; + int previous_tab = iTabsGetPreviousTab(ih); + if (previous_tab == -1) + return IUP_DEFAULT; + + result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, previous_tab), + iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, previous_tab); + } + } + + return IUP_DEFAULT; + } + } + + /* If there is any scroll_visible button pressed, it will be released */ + if (!press && ih->data->tabs_line.button != ITABS_BUTTON_NONE) + { + ih->data->tabs_line.button = ITABS_BUTTON_NONE; + IupUpdate(ih); + return IUP_DEFAULT; + } + + /* Checks when the click was on the left broken tab */ + if (ih->data->tabs_line.broken_start_visible == ITABS_TRUE) + { + if (*virtual_mx >= offset && + *virtual_mx <= (offset + ih->data->tabs_line.broken_space_start - 1) && + *virtual_my <= (ih->data->tabs_line.line_thick - ITABS_CURRENT_EXTRA_PIXELS - 1)) + { + if (press) + last_tab_press = ih->data->tabs_line.start_tab-1; + else if (last_tab_press == ih->data->tabs_line.start_tab-1) + { + int result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, last_tab_press), + iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, last_tab_press); + } + + return IUP_DEFAULT; + } + else + offset += ih->data->tabs_line.broken_space_start; + } + + /* Checks when the click was on one of tabs */ + for(count = ih->data->tabs_line.start_tab; count <= ih->data->tabs_line.end_tab; count++) + { + if (*virtual_mx >= offset && + *virtual_mx <= (offset + ih->data->tabs_line.tabs_info[count].tab_len - 1)) + { + if (count != ih->data->current_tab) + { + if (*virtual_my <= (ih->data->tabs_line.line_thick - ITABS_CURRENT_EXTRA_PIXELS - 1)) + { + if (press) + last_tab_press = count; + else if (last_tab_press == count) + { + int result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, last_tab_press), + iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, last_tab_press); + } + + return IUP_DEFAULT; + } + } + } + + offset += ih->data->tabs_line.tabs_info[count].tab_len; + } + + /* Checks when the click was on the right broken tab */ + if (ih->data->tabs_line.broken_end_visible == ITABS_TRUE) + { + if (*virtual_mx >= offset && + *virtual_mx <= (offset + ih->data->tabs_line.broken_space_end - 1) && + *virtual_my <= (ih->data->tabs_line.line_thick - ITABS_CURRENT_EXTRA_PIXELS - 1)) + { + if (press) + last_tab_press = ih->data->tabs_line.end_tab + 1; + else if (last_tab_press == ih->data->tabs_line.end_tab + 1) + { + int result = iTabsCallTabChangeCb(ih, iTabsGetTabIhandle(ih, last_tab_press), + iTabsGetTabIhandle(ih, ih->data->current_tab)); + if (result != IUP_IGNORE) + iTabsSetNewCurrentTab(ih, last_tab_press); + } + + return IUP_DEFAULT; + } + else + offset += ih->data->tabs_line.broken_space_end; + } + + return IUP_DEFAULT; +} + +static void iTabsRefreshTabs(Ihandle* ih) +{ + int t, old_number_of_tabs = ih->data->number_of_tabs; + Ihandle* child, *old_current_tab_handle = NULL; + + if (ih->data->tabs_line.tabs_info) + old_current_tab_handle = ih->data->tabs_line.tabs_info[ih->data->current_tab].ihandle; + + ih->data->number_of_tabs = 0; + child = ih->data->zbox->firstchild; + while(child) + { + if (IupGetName(child) == NULL) + iupAttribSetHandleName(child); + + ih->data->number_of_tabs++; + child = child->brother; + } + + if (old_number_of_tabs < ih->data->number_of_tabs) + ih->data->tabs_line.tabs_info = (ItabsDrawInfo*)realloc(ih->data->tabs_line.tabs_info, ih->data->number_of_tabs * sizeof (ItabsDrawInfo)); + + t = 0; + child = ih->data->zbox->firstchild; + while (child) + { + ih->data->tabs_line.tabs_info[t].ihandle = child; + + if (child == old_current_tab_handle) + ih->data->current_tab = t; /* current tab was moved */ + + child = child->brother; + t++; + } + + if (old_current_tab_handle && + old_current_tab_handle != ih->data->tabs_line.tabs_info[ih->data->current_tab].ihandle) + { + /* current tab was removed, reset to first child */ + ih->data->current_tab = 0; + } +} + + +/* ========================================================================= */ +/* Attributes */ +/* ========================================================================= */ + + +static int iTabsSetAlignmentAttrib(Ihandle* ih, const char* value) +{ + int inherit; + return iupClassObjectSetAttribute(ih->data->zbox, "ALIGNMENT", value, &inherit); +} + +static char* iTabsGetAlignmentAttrib(Ihandle* ih) +{ + int inherit; + char *def_value; + return iupClassObjectGetAttribute(ih->data->zbox, "ALIGNMENT", &def_value, &inherit); +} + +static int iTabsSetTabOrientationAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "VERTICAL")) + ih->data->tabs_orientation = ITABS_VERTICAL; + else + ih->data->tabs_orientation = ITABS_HORIZONTAL; + + iTabsUpdateRender(ih); + + return 0; /* do not store value in hash table */ +} + +static char* iTabsGetTabOrientationAttrib(Ihandle* ih) +{ + if (ih->data->tabs_orientation == ITABS_VERTICAL) + return "VERTICAL"; + else + return "HORIZONTAL"; +} + +static int iTabsSetTabTypeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "BOTTOM")) + ih->data->tabs_type = ITABS_BOTTOM; + else if (iupStrEqualNoCase(value, "LEFT")) + ih->data->tabs_type = ITABS_LEFT; + else if (iupStrEqualNoCase(value, "RIGHT")) + ih->data->tabs_type = ITABS_RIGHT; + else /* "TOP" */ + ih->data->tabs_type = ITABS_TOP; + + iTabsUpdateRender(ih); + + return 0; /* do not store value in hash table */ +} + +static char* iTabsGetTabTypeAttrib(Ihandle* ih) +{ + if (ih->data->tabs_type == ITABS_BOTTOM) + return "BOTTOM"; + else if (ih->data->tabs_type == ITABS_LEFT) + return "LEFT"; + else if (ih->data->tabs_type == ITABS_RIGHT) + return "RIGHT"; + else /* ITABS_TOP */ + return "TOP"; +} + +static int iTabsSetRepaintAttrib(Ihandle* ih, const char* value) +{ + (void)value; + + iTabsCalcTabSize(ih); /* calculate sizes of Tab line (depends on the TABTITLE of all children) */ + iTabsCalcScrollPos(ih); /* calculates the position of the scroll (depends on the sizes calculated) */ + iTabsCalcVisibleTabs(ih); /* calculates the visibility of tabs (depends on the sizes calculated and on the current tab) */ + + IupUpdate(ih); + + return 0; /* do not store value in hash table */ +} + +static int iTabsSetFontActiveAttrib(Ihandle* ih, const char* value) +{ + char* native = IupMapFont(value); + if (!native) native = (char*)value; + + if (native) + { + if (ih->data->font_active) + free(ih->data->font_active); + + ih->data->font_active = iupStrDup(native); + IupUpdate(ih); + } + return 1; +} + +static int iTabsSetFontInactiveAttrib(Ihandle* ih, const char* value) +{ + char* native = IupMapFont(value); + if (!native) native = (char*)value; + + if (native) + { + if (ih->data->font_inactive) + free(ih->data->font_inactive); + + ih->data->font_inactive = iupStrDup(native); + IupUpdate(ih); + } + return 1; +} + +static int iTabsSetFgColorAttrib(Ihandle* ih, const char* value) +{ + ih->data->fgcolor = cdIupConvertColor(value); + IupUpdate(ih); + return 1; +} + +static int iTabsSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = iupControlBaseGetParentBgColor(ih); + + ih->data->bgcolor = cdIupConvertColor(value); + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + + IupUpdate(ih); + return 1; +} + +static int iTabsSetActiveAttrib(Ihandle* ih, const char* value) +{ + iupBaseSetActiveAttrib(ih, value); + IupUpdate(ih); /* post repaint so children is activated/deactivated */ + return 0; /* do not store value in hash table */ +} + +static int iTabsSetValueAttrib(Ihandle* ih, const char* value) +{ + int c; + Ihandle* new_tab = IupGetHandle(value); + + if (new_tab == NULL) + return 0; + + for(c = 0; c < ih->data->number_of_tabs; c++) + { + if (ih->data->tabs_line.tabs_info[c].ihandle == new_tab) + { + iTabsSetNewCurrentTab(ih, c); + break; + } + } + return 0; /* do not store value in hash table */ +} + +static char* iTabsGetValueAttrib(Ihandle* ih) +{ + return IupGetAttribute(ih->data->zbox, "VALUE"); +} + +static int iTabsSetValuePosAttrib(Ihandle* ih, const char* value) +{ + int pos; + + if (!iupStrToInt(value, &pos)) + return 0; + + if (pos<0) pos=0; + if (pos>ih->data->number_of_tabs-1) pos=ih->data->number_of_tabs-1; + + iTabsSetNewCurrentTab(ih, pos); + return 0; /* do not store value in hash table */ +} + +static char* iTabsGetValuePosAttrib(Ihandle* ih) +{ + char *str = iupStrGetMemory(50); + sprintf(str, "%d", ih->data->current_tab); + return str; +} + +static char* iTabsGetClientSizeAttrib(Ihandle* ih) +{ + int width, height, decorwidth, decorheight; + char* str = iupStrGetMemory(20); + width = ih->currentwidth; + height = ih->currentheight; + iTabsGetDecorSize(ih, &decorwidth, &decorheight); + width -= decorwidth; + height -= decorheight; + if (width < 0) width = 0; + if (height < 0) height = 0; + sprintf(str, "%dx%d", width, height); + return str; +} + + +/* ========================================================================= */ +/* Methods */ +/* ========================================================================= */ + + +static Ihandle* iTabsGetInnerContainerMethod(Ihandle* ih) +{ + return ih->data->zbox; +} + +static void iTabsComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int decorwidth, decorheight; + Ihandle* child = ih->data->zbox; /* zbox is always non NULL */ + + iTabsCalcTabSize(ih); /* make sure that decoration is updated, even if UPDATE has not been set after other changes */ + iTabsGetDecorSize(ih, &decorwidth, &decorheight); + + /* update child natural size first */ + iupBaseComputeNaturalSize(child); + + *expand = child->expand; + *w = child->naturalwidth + decorwidth; + *h = child->naturalheight + decorheight; +} + +static void iTabsSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) +{ + int width, height, decorwidth, decorheight; + + iTabsGetDecorSize(ih, &decorwidth, &decorheight); + + width = ih->currentwidth-decorwidth; + height = ih->currentheight-decorheight; + if (width < 0) width = 0; + if (height < 0) height = 0; + + iupBaseSetCurrentSize(ih->data->zbox, width, height, shrink); +} + +static void iTabsSetChildrenPositionMethod(Ihandle* ih, int x, int y) +{ + /* IupTabs is the native parent of its children, + so the position is restarted at (0,0) */ + iTabsGetDecorOffset(ih, &x, &y); + + /* Child coordinates are relative to client left-top corner. */ + iupBaseSetPosition(ih->data->zbox, x, y); +} + +static void iTabsChildAddedMethod(Ihandle* ih, Ihandle* child) +{ + (void)child; + iTabsRefreshTabs(ih); /* update the list of tabs */ +} + +static void iTabsChildRemovedMethod(Ihandle* ih, Ihandle* child) +{ + (void)child; + iTabsRefreshTabs(ih); /* update the list of tabs */ +} + +static int iTabsMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + + return IUP_NOERROR; +} + +static void iTabsUnMapMethod(Ihandle* ih) +{ + if (ih->data->cddbuffer) + cdKillCanvas(ih->data->cddbuffer); + + if (ih->data->cdcanvas) + cdKillCanvas(ih->data->cdcanvas); +} + +static void iTabsDestroyMethod(Ihandle* ih) +{ + if (ih->data->font_inactive) + free(ih->data->font_inactive); + + if (ih->data->font_inactive) + free(ih->data->font_inactive); + + free(ih->data->tabs_line.tabs_info); +} + +static int iTabsCreateMethod(Ihandle* ih, void **params) +{ + /* free the data allocated by IupCanvas */ + if (ih->data) + free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "BORDER", "NO"); + + ih->data->zbox = IupZbox(NULL); + ih->firstchild = ih->data->zbox; /* zbox is actually the only child of Tabs */ + ih->data->zbox->parent = ih; + + /* add children */ + if (params) + { + Ihandle** iparams = (Ihandle**)params; + while (*iparams) + { + IupAppend(ih, *iparams); /* this in fact will add the child to the zbox */ + iparams++; + } + } + + /* IupCanvas callbacks */ + IupSetCallback(ih, "RESIZE_CB", (Icallback)iTabsResize_CB); + IupSetCallback(ih, "ACTION", (Icallback)iTabsRedraw_CB); + IupSetCallback(ih, "BUTTON_CB", (Icallback)iTabsButton_CB); + IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iTabsKeyPress_CB); + IupSetCallback(ih, "FOCUS_CB", (Icallback)iTabsFocus_CB); + + /* initialize colors */ + ih->data->bgcolor = -1; + ih->data->fgcolor = CD_BLACK; + ih->data->light_shadow = CD_WHITE; + ih->data->mid_shadow = CD_GRAY; + ih->data->dark_shadow = CD_DARK_GRAY; + + /* Context initialize with values related to type of tabs */ + ih->data->tabs_type = ITABS_TOP; + ih->data->tabs_orientation = ITABS_HORIZONTAL; + + /* No button is pressed */ + ih->data->tabs_line.button = ITABS_BUTTON_NONE ; + + iTabsUpdateRender(ih); + + return IUP_NOERROR; +} + +static Iclass* iTabsGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "tabs"; + ic->format = "g"; /* array of Ihandle */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILD_ONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iTabsCreateMethod; + ic->Destroy = iTabsDestroyMethod; + ic->Map = iTabsMapMethod; + ic->UnMap = iTabsUnMapMethod; + + ic->ComputeNaturalSize = iTabsComputeNaturalSizeMethod; + ic->SetChildrenCurrentSize = iTabsSetChildrenCurrentSizeMethod; + ic->SetChildrenPosition = iTabsSetChildrenPositionMethod; + + ic->GetInnerContainer = iTabsGetInnerContainerMethod; + ic->ChildAdded = iTabsChildAddedMethod; + ic->ChildRemoved = iTabsChildRemovedMethod; + + /* Do not need to set base attributes because they are inherited from IupCanvas */ + + /* IupTabs Callbacks */ + iupClassRegisterCallback(ic, "TABCHANGE_CB", "nn"); + + /* IupTabs only */ + iupClassRegisterAttribute(ic, "ALIGNMENT", iTabsGetAlignmentAttrib, iTabsSetAlignmentAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABTYPE", iTabsGetTabTypeAttrib, iTabsSetTabTypeAttrib, IUPAF_SAMEASSYSTEM, "TOP", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABORIENTATION", iTabsGetTabOrientationAttrib, iTabsSetTabOrientationAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "REPAINT", NULL, iTabsSetRepaintAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FONT_ACTIVE", NULL, iTabsSetFontActiveAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FONT_INACTIVE", NULL, iTabsSetFontInactiveAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUE", iTabsGetValueAttrib, iTabsSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "VALUEPOS", iTabsGetValuePosAttrib, iTabsSetValuePosAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "TABTITLE", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TABSIZE", NULL, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "FGCOLOR", NULL, iTabsSetFgColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iTabsSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iTabsSetBgColorAttrib, NULL, "255 255 255", IUPAF_DEFAULT); /* overwrite canvas implementation, set a system default to force a new default */ + + /* Base Container */ + iupClassRegisterAttribute(ic, "EXPAND", iupBaseContainerGetExpandAttrib, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CLIENTSIZE", iTabsGetClientSizeAttrib, NULL, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* overwrite canvas default */ + + return ic; +} + +void IupOldTabsOpen(void) +{ + iupRegisterClass(iTabsGetClass()); +} diff --git a/iup/srccontrols/iup_oldval.c b/iup/srccontrols/iup_oldval.c new file mode 100755 index 0000000..50dae8a --- /dev/null +++ b/iup/srccontrols/iup_oldval.c @@ -0,0 +1,809 @@ +/** \file + * \brief Valuator Control. + * + * See Copyright Notice in "iup.h" + */ + + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupcontrols.h" +#include "iupkey.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_cdutil.h" +#include "iup_register.h" + + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + /* mouse interaction control */ + int moving; + + /* visual appearance control */ + int w,h; + long bgcolor, + light_shadow, + mid_shadow, + dark_shadow; + int has_focus; + + /* attributes */ + int type; + int show_ticks; + double val, + step, + pagestep, + vmin, + vmax; + + unsigned char* himage; + int himage_w; + int himage_h; + long int* himage_colors; + int himage_numcolors; + + unsigned char* himageinactive; + int himageinactive_w; + int himageinactive_h; + long int* himageinactive_colors; + int himageinactive_numcolors; + + /* drawing canvas */ + cdCanvas *cddbuffer; + cdCanvas *cdcanvas; + + /* Internal methods */ + void (*Draw)(Ihandle* ih); + void (*CalcPosition)(Ihandle*,int,int); +}; + +#define IVAL_HANDLER_LONG 22 /* handler long side */ +#define IVAL_HANDLER_SHORT 16 /* handler short side */ +#define IVAL_TRAIL 4 /* with of the trail */ +#define IVAL_TICK 3 /* size of the tick mark */ +#define IVAL_TRAIL_START (IVAL_HANDLER_LONG/2+1) +#define IVAL_TRAIL_END(_s) (_s-1-IVAL_HANDLER_LONG/2-1) +#define IVAL_TRAIL_LONG(_s) (_s-1-IVAL_HANDLER_LONG-1) + +enum {IVAL_VERTICAL, IVAL_HORIZONTAL}; + +static void iValUpdateImageBgColor(long int* colors, int num_colors, long bgcolor) +{ + int c; + for (c = 0; c < num_colors; c++) + { + if (*colors == -1) + *colors = bgcolor; + colors++; + } + +} + +static void iValSetImage(const char* name, unsigned char** image_out, long int** color_out, + int* w_out, int* h_out, int* numcolors_out) +{ + int x, y, c, width, height, max_color = 0; + unsigned char* image_data; + Ihandle *img = IupGetHandle(name); + + *w_out = width = img->currentwidth; + *h_out = height = img->currentheight; + image_data = (unsigned char*)IupGetAttribute(img, "WID"); + + *image_out = (unsigned char*) realloc(*image_out, width*height*sizeof(unsigned char)); + *color_out = (long int*) realloc(*color_out, 256*sizeof(long int)); + + for(y = height-1 ; y >=0 ; y--) + { + for(x = 0 ; x < width ; x++) + { + (*image_out)[x+width*y] = *image_data; + if (*image_data > max_color) + max_color = *image_data; + image_data++; + } + } + + max_color++; + *numcolors_out = max_color; + + for(c = 0 ; c < max_color; c++) + { + char colorstr[30]; + char *value; + sprintf(colorstr, "%d", c); + value = iupAttribGet(img, colorstr); + if (iupStrEqualNoCase(value, "BGCOLOR")) + (*color_out)[c] = -1; + else + (*color_out)[c] = cdIupConvertColor(value); + } +} + +static void iValRepaint(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return; + + /* update render */ + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + ih->data->Draw(ih); + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1); +} + +static void iValDrawVerticalTick(Ihandle* ih, int y) +{ + cdIupDrawHorizSunkenMark(ih->data->cddbuffer, 1, 1+IVAL_TICK, y, ih->data->light_shadow, ih->data->dark_shadow); + cdIupDrawHorizSunkenMark(ih->data->cddbuffer, ih->data->w-2-IVAL_TICK, ih->data->w-2, y, ih->data->light_shadow, ih->data->dark_shadow); +} + +static void iValDrawHorizontalTick(Ihandle* ih, int x) +{ + + cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, 1, 1+IVAL_TICK, ih->data->light_shadow, ih->data->dark_shadow); + cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, ih->data->h-2-IVAL_TICK, ih->data->h-2, ih->data->light_shadow, ih->data->dark_shadow); +} + +static void iValDrawVerticalTicks(Ihandle* ih) +{ + int i; + for (i = 0; i < ih->data->show_ticks-1; i++) + { + iValDrawVerticalTick(ih, (i*(IVAL_TRAIL_LONG(ih->data->h)-2))/(ih->data->show_ticks-1) + IVAL_TRAIL_START+1); + } + + iValDrawVerticalTick(ih, IVAL_TRAIL_END(ih->data->h)); +} + +static void iValDrawHorizontalTicks(Ihandle* ih) +{ + int i; + for (i = 0; i < ih->data->show_ticks-1; i++) + { + iValDrawHorizontalTick(ih, (i*(IVAL_TRAIL_LONG(ih->data->w)-2))/(ih->data->show_ticks-1) + IVAL_TRAIL_START+1); + } + + iValDrawHorizontalTick(ih, IVAL_TRAIL_END(ih->data->w)); +} + +static void iValDrawVertical(Ihandle* ih) +{ + int y, x = (ih->data->w-IVAL_TRAIL)/2; + double vn = (ih->data->val-ih->data->vmin)/(ih->data->vmax-ih->data->vmin); + + /* trail */ + cdIupDrawSunkenRect(ih->data->cddbuffer, x, IVAL_TRAIL_START, x+IVAL_TRAIL-1, IVAL_TRAIL_END(ih->data->h)+1, + ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); + + if (ih->data->show_ticks > 2) + iValDrawVerticalTicks(ih); + + if (iupdrvIsActive(ih) && ih->data->himage) + { + x = (ih->data->w - ih->data->himage_w)/2; + y = (int)(vn*(IVAL_TRAIL_LONG(ih->data->h)-2) + IVAL_TRAIL_START+1); + cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himage_w, ih->data->himage_h, ih->data->himage, ih->data->himage_colors, + x, y-ih->data->himage_h/2, 0,0,0,0,0,0); + } + else if (!iupdrvIsActive(ih) && ih->data->himageinactive) + { + x = (ih->data->w - ih->data->himageinactive_w)/2; + y = (int)(vn*(IVAL_TRAIL_LONG(ih->data->h)-2) + IVAL_TRAIL_START+1); + cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himageinactive_w, ih->data->himageinactive_h, ih->data->himageinactive, + ih->data->himageinactive_colors, x, y-ih->data->himageinactive_h/2, 0,0,0,0,0,0); + } + else + { + /* handler border */ + x = (ih->data->w-IVAL_HANDLER_SHORT)/2; + y = (int)(vn*(IVAL_TRAIL_LONG(ih->data->h)-2) + IVAL_TRAIL_START+1); + cdIupDrawRaisenRect(ih->data->cddbuffer, x, y-IVAL_HANDLER_LONG/2-1, x+IVAL_HANDLER_SHORT-1, y+IVAL_HANDLER_LONG/2, + ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); + + /* handler background */ + cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor ); + cdCanvasBox(ih->data->cddbuffer,x+1, x+IVAL_HANDLER_SHORT-1-2, y-IVAL_HANDLER_LONG/2+1, y+IVAL_HANDLER_LONG/2-1); + + /* handler sunken mark */ + cdIupDrawHorizSunkenMark(ih->data->cddbuffer, x+2, x+IVAL_HANDLER_SHORT-4, y, ih->data->light_shadow, ih->data->dark_shadow); + } +} + +static void iValDrawHorizontal(Ihandle* ih) +{ + int x, y = (ih->data->h-IVAL_TRAIL)/2; + double vn = (ih->data->val-ih->data->vmin)/(ih->data->vmax-ih->data->vmin); + + /* trail */ + cdIupDrawSunkenRect(ih->data->cddbuffer, IVAL_TRAIL_START, y, IVAL_TRAIL_END(ih->data->w)+1, y+IVAL_TRAIL-1, + ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); + + if (ih->data->show_ticks > 2) + iValDrawHorizontalTicks(ih); + + if (iupdrvIsActive(ih) && ih->data->himage) + { + y = (ih->data->h - ih->data->himage_h)/2+1; + x = (int)(vn*(IVAL_TRAIL_LONG(ih->data->w)-2) + IVAL_TRAIL_START+1); + cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himage_w, ih->data->himage_h, ih->data->himage, ih->data->himage_colors, + x-ih->data->himage_w/2, y, 0,0,0,0,0,0); + } + else if (!iupdrvIsActive(ih) && ih->data->himageinactive) + { + y = (ih->data->h - ih->data->himageinactive_h)/2+1; + x = (int)(vn*(IVAL_TRAIL_LONG(ih->data->w)-2) + IVAL_TRAIL_START+1); + cdCanvasPutImageRectMap(ih->data->cddbuffer,ih->data->himageinactive_w, ih->data->himageinactive_h, ih->data->himageinactive, ih->data->himageinactive_colors, + x-ih->data->himageinactive_w/2, y, 0,0,0,0,0,0); + } + else + { + /* handler border */ + y = (ih->data->h-IVAL_HANDLER_SHORT)/2; + x = (int)(vn*(IVAL_TRAIL_LONG(ih->data->w)-2) + IVAL_TRAIL_START+1); + cdIupDrawRaisenRect(ih->data->cddbuffer, x-IVAL_HANDLER_LONG/2-1, y, x+IVAL_HANDLER_LONG/2, y+IVAL_HANDLER_SHORT-1, + ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow); + + /* handler background */ + cdCanvasForeground(ih->data->cddbuffer, ih->data->bgcolor ); + cdCanvasBox(ih->data->cddbuffer,x-IVAL_HANDLER_LONG/2, x+IVAL_HANDLER_LONG/2-2, y+1, y+IVAL_HANDLER_SHORT-1-2); + + /* handler sunken mark */ + cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, y+3, y+IVAL_HANDLER_SHORT-3, ih->data->light_shadow, ih->data->dark_shadow); + } +} + +static void iValCropValue(Ihandle* ih) +{ + if (ih->data->val > ih->data->vmax) + ih->data->val = ih->data->vmax; + else if (ih->data->val < ih->data->vmin) + ih->data->val = ih->data->vmin; +} + +static void iValSetVerticalPosition(Ihandle* ih, int x, int y) +{ + double vn; + (void)x; + y = cdIupInvertYAxis(y, ih->data->h); + vn = ((double)(y-IVAL_TRAIL_START))/((double)IVAL_TRAIL_LONG(ih->data->h)); + ih->data->val = vn*(ih->data->vmax-ih->data->vmin) + ih->data->vmin; + iValCropValue(ih); + iValRepaint(ih); +} + +static void iValSetHorizontalPosition(Ihandle* ih, int x, int y) +{ + double vn; + (void)y; + vn = ((double)(x-IVAL_TRAIL_START))/((double)IVAL_TRAIL_LONG(ih->data->w)); + ih->data->val = vn*(ih->data->vmax-ih->data->vmin) + ih->data->vmin; + iValCropValue(ih); + iValRepaint(ih); +} + +static int iValMotion_CB(Ihandle *ih,int x,int y,char *r) +{ + IFnd cb; + + if (!iup_isbutton1(r)) return IUP_DEFAULT; + if (!ih->data->moving) return IUP_DEFAULT; + + ih->data->CalcPosition(ih,x,y); + + cb = (IFnd) IupGetCallback(ih, "MOUSEMOVE_CB"); + if (cb) cb(ih,ih->data->val); + + return IUP_DEFAULT; +} + +static int iValButton_CB(Ihandle *ih,int b,int m,int x,int y) +{ + char* cb_name; + IFnd cb; + if (b!=IUP_BUTTON1) return IUP_DEFAULT; + + if (m) + { + ih->data->CalcPosition(ih, x, y); + ih->data->moving = 1; + cb_name = "BUTTON_PRESS_CB"; + } + else + { + if (!ih->data->moving) return IUP_DEFAULT; + + iValRepaint(ih); + ih->data->moving = 0; + + cb_name = "BUTTON_RELEASE_CB"; + } + + cb = (IFnd) IupGetCallback(ih, cb_name); + if (cb) cb(ih,ih->data->val); + + return IUP_DEFAULT; +} + +static int iValResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL); + + /* update render */ + cdCanvasBackground(ih->data->cddbuffer, ih->data->bgcolor); + cdCanvasClear(ih->data->cddbuffer); + ih->data->Draw(ih); + + return IUP_DEFAULT; +} + +static int iValRedraw_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update display */ + cdCanvasFlush(ih->data->cddbuffer); + if (ih->data->has_focus) + cdIupDrawFocusRect(ih, ih->data->cdcanvas, 0, 0, ih->data->w-1, ih->data->h-1); + + return IUP_DEFAULT; +} + +static int iValFocus_CB (Ihandle* ih, int focus) +{ + ih->data->has_focus = focus; + iValRepaint(ih); + return IUP_DEFAULT; +} + +static int iValKeypress_CB(Ihandle *ih, int c, int press) +{ + char* cb_name; + IFnd cb; + + if (c != K_LEFT && c != K_UP && + c != K_PGDN && c != K_PGUP && + c != K_RIGHT && c != K_DOWN && + c != K_END && c != K_HOME && + c != K_sLEFT && c != K_sUP && + c != K_sPGDN && c != K_sPGUP && + c != K_sRIGHT && c != K_sDOWN && + c != K_sEND && c != K_sHOME) + return IUP_DEFAULT; + + if (press) + { + switch(c) + { + case K_sHOME: + case K_HOME: + ih->data->val = ih->data->vmax; + break; + case K_sEND: + case K_END: + ih->data->val = ih->data->vmin; + break; + case K_sLEFT: + case K_sDOWN: + case K_LEFT: + case K_DOWN: + ih->data->val -= ih->data->step*(ih->data->vmax-ih->data->vmin); + iValCropValue(ih); + break; + case K_sRIGHT: + case K_sUP: + case K_RIGHT: + case K_UP: + ih->data->val += ih->data->step*(ih->data->vmax-ih->data->vmin); + iValCropValue(ih); + break; + case K_sPGDN: + case K_PGDN: + ih->data->val -= ih->data->pagestep*(ih->data->vmax-ih->data->vmin); + iValCropValue(ih); + break; + case K_sPGUP: + case K_PGUP: + ih->data->val += ih->data->pagestep*(ih->data->vmax-ih->data->vmin); + iValCropValue(ih); + break; + } + + if (fabs(ih->data->val-ih->data->vmin) < 0.9*ih->data->step*(ih->data->vmax-ih->data->vmin)) + ih->data->val = ih->data->vmin; + + if (ih->data->moving) + cb_name = "MOUSEMOVE_CB"; + else + { + ih->data->moving = 1; + cb_name = "BUTTON_PRESS_CB"; + } + } + else + { + ih->data->moving = 0; + cb_name = "BUTTON_RELEASE_CB"; + } + + iValRepaint(ih); + + cb = (IFnd) IupGetCallback(ih, cb_name); + if (cb) cb(ih,ih->data->val); + + return IUP_IGNORE; /* to avoid arrow keys being processed by the system */ +} + +static int iValWheel_CB(Ihandle *ih, float delta) +{ + IFnd cb; + + ih->data->val += ((double)delta)*ih->data->step*(ih->data->vmax-ih->data->vmin); + iValCropValue(ih); + + if (fabs(ih->data->val-ih->data->vmin) < 0.9*ih->data->step*(ih->data->vmax-ih->data->vmin)) + ih->data->val = ih->data->vmin; + + iValRepaint(ih); + + cb = (IFnd) IupGetCallback(ih, "BUTTON_PRESS_CB"); + if (cb) cb(ih,ih->data->val); + + cb = (IFnd) IupGetCallback(ih, "BUTTON_RELEASE_CB"); + if (cb) cb(ih,ih->data->val); + + return IUP_DEFAULT; +} + + +/*******************************************************************************/ + + +static int iValSetTypeAttrib(Ihandle* ih, const char *value) +{ + /* valid only before map */ + if (ih->handle) + return 0; + + if (iupStrEqualNoCase(value, "VERTICAL")) + { + IupSetAttribute(ih, "RASTERSIZE", "28x124"); + + ih->data->Draw = iValDrawVertical; + ih->data->CalcPosition = iValSetVerticalPosition; + ih->data->type = IVAL_VERTICAL; + } + else /* "HORIZONTAL" */ + { + IupSetAttribute(ih, "RASTERSIZE", "124x28"); + + ih->data->Draw = iValDrawHorizontal; + ih->data->CalcPosition = iValSetHorizontalPosition; + ih->data->type = IVAL_HORIZONTAL; + } + + return 0; /* do not store value in hash table */ +} + +static char* iValGetTypeAttrib(Ihandle* ih) +{ + if (ih->data->type == IVAL_HORIZONTAL) + return "HORIZONTAL"; + else /* (ih->data->type == IVAL_VERTICAL) */ + return "VERTICAL"; +} + +static char* iValGetValueAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->val); + return str; +} + +static int iValSetValueAttrib(Ihandle* ih, const char* value) +{ + if (!value) + ih->data->val = 0; + else + ih->data->val = atof(value); + iValCropValue(ih); + iValRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static int iValSetShowTicksAttrib(Ihandle* ih, const char* showticks) +{ + int i; + if (iupStrToInt(showticks, &i)) + { + ih->data->show_ticks = i; + iValRepaint(ih); + } + return 0; /* do not store value in hash table */ +} + +static char* iValGetShowTicksAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%d", ih->data->show_ticks); + return str; +} + +static int iValSetStepAttrib(Ihandle* ih, const char* step) +{ + ih->data->step = atof(step); + iValRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iValGetStepAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->step); + return str; +} + +static int iValSetPageStepAttrib(Ihandle* ih, const char* pagestep) +{ + ih->data->step = atof(pagestep); + iValRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iValGetPageStepAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->pagestep); + return str; +} + +static int iValSetMaxAttrib(Ihandle* ih, const char* max) +{ + ih->data->vmax = atof(max); + iValCropValue(ih); + iValRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iValGetMaxAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->vmax); + return str; +} + +static int iValSetMinAttrib(Ihandle* ih, const char* min) +{ + ih->data->vmin = atof(min); + iValCropValue(ih); + iValRepaint(ih); + return 0; /* do not store value in hash table */ +} + +static char* iValGetMinAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(20); + sprintf(str, "%f", ih->data->vmin); + return str; +} + +static int iValSetHandlerImageAttrib(Ihandle* ih, const char* value) +{ + if (!value) + { + if (ih->data->himage) + { + free(ih->data->himage); + free(ih->data->himage_colors); + ih->data->himage = NULL; + ih->data->himage_colors = NULL; + } + } + else + { + iValSetImage(value, &(ih->data->himage), &(ih->data->himage_colors), + &(ih->data->himage_w), &(ih->data->himage_h), &(ih->data->himage_numcolors)); + } + + iValRepaint(ih); + return 1; +} + +static int iValSetHandlerImageInactiveAttrib(Ihandle* ih, const char* value) +{ + if (value==NULL) + { + if (ih->data->himageinactive) + { + free(ih->data->himageinactive); + free(ih->data->himageinactive_colors); + ih->data->himageinactive = NULL; + ih->data->himageinactive_colors = NULL; + } + } + else + { + iValSetImage(value, &(ih->data->himageinactive), &(ih->data->himageinactive_colors), + &(ih->data->himageinactive_w), &(ih->data->himageinactive_h), &(ih->data->himageinactive_numcolors)); + } + + iValRepaint(ih); + return 1; +} + +static int iValSetBgColorAttrib(Ihandle* ih, const char* value) +{ + if (!value) + value = iupControlBaseGetParentBgColor(ih); + + ih->data->bgcolor = cdIupConvertColor(value); + + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + if (!iupdrvIsActive(ih) && !ih->data->himage) + ih->data->light_shadow = ih->data->mid_shadow; + + if (ih->data->himage) + iValUpdateImageBgColor(ih->data->himage_colors, ih->data->himage_numcolors, ih->data->bgcolor); + if (ih->data->himageinactive) + iValUpdateImageBgColor(ih->data->himageinactive_colors, ih->data->himageinactive_numcolors, ih->data->bgcolor); + + iValRepaint(ih); + return 1; +} + +static int iValSetActiveAttrib(Ihandle* ih, const char* value) +{ + iupBaseSetActiveAttrib(ih, value); + + cdIupCalcShadows(ih->data->bgcolor, &ih->data->light_shadow, &ih->data->mid_shadow, &ih->data->dark_shadow); + if (!iupdrvIsActive(ih) && !ih->data->himage) + ih->data->light_shadow = ih->data->mid_shadow; + + iValRepaint(ih); + return 0; /* do not store value in hash table */ +} + + +/************************************************************************************/ + + +static int iValMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + + return IUP_NOERROR; +} + +static void iValUnMapMethod(Ihandle* ih) +{ + if (ih->data->cddbuffer) + cdKillCanvas(ih->data->cddbuffer); + + if (ih->data->cdcanvas) + cdKillCanvas(ih->data->cdcanvas); +} + +static void iValDestroyMethod(Ihandle* ih) +{ + if (ih->data->himage) free(ih->data->himage); + if (ih->data->himage_colors) free(ih->data->himage_colors); + if (ih->data->himageinactive) free(ih->data->himageinactive); + if (ih->data->himageinactive_colors) free(ih->data->himageinactive_colors); +} + +static int iValCreateMethod(Ihandle* ih, void **params) +{ + if (params && params[0]) + iupAttribStoreStr(ih, "TYPE", params[0]); + + /* free the data alocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "BORDER", "NO"); + ih->expand = IUP_EXPAND_NONE; + + /* default values */ + iValSetTypeAttrib(ih, "HORIZONTAL"); + ih->data->vmax = 1; + ih->data->step = 0.01; + ih->data->pagestep = 0.1; + + IupSetCallback(ih,"RESIZE_CB",(Icallback)iValResize_CB); + IupSetCallback(ih,"ACTION",(Icallback)iValRedraw_CB); + IupSetCallback(ih,"BUTTON_CB",(Icallback)iValButton_CB); + IupSetCallback(ih,"MOTION_CB",(Icallback)iValMotion_CB); + IupSetCallback(ih,"FOCUS_CB",(Icallback)iValFocus_CB); + IupSetCallback(ih,"WHEEL_CB",(Icallback)iValWheel_CB); + IupSetCallback(ih,"KEYPRESS_CB",(Icallback)iValKeypress_CB); + + return IUP_NOERROR; +} + +static Iclass* iValGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "val"; + ic->format = "S"; /* one optional string */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iValCreateMethod; + ic->Destroy = iValDestroyMethod; + ic->Map = iValMapMethod; + ic->UnMap = iValUnMapMethod; + + /* IupVal Callbacks */ + iupClassRegisterCallback(ic, "MOUSEMOVE_CB", "d"); + iupClassRegisterCallback(ic, "BUTTON_PRESS_CB", "d"); + iupClassRegisterCallback(ic, "BUTTON_RELEASE_CB", "d"); + + /* IupVal only */ + iupClassRegisterAttribute(ic, "VALUE", iValGetValueAttrib, iValSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TYPE", iValGetTypeAttrib, iValSetTypeAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "SHOWTICKS", iValGetShowTicksAttrib, iValSetShowTicksAttrib, IUPAF_SAMEASSYSTEM, "0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "STEP", iValGetStepAttrib, iValSetStepAttrib, IUPAF_SAMEASSYSTEM, "0.01", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "PAGESTEP", iValGetPageStepAttrib, iValSetPageStepAttrib, IUPAF_SAMEASSYSTEM, "0.1", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "MAX", iValGetMaxAttrib, iValSetMaxAttrib, IUPAF_SAMEASSYSTEM, "1.0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "MIN", iValGetMinAttrib, iValSetMinAttrib, IUPAF_SAMEASSYSTEM, "0.0", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "HANDLER_IMAGE", NULL, iValSetHandlerImageAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "HANDLER_IMAGE_INACTIVE", NULL, iValSetHandlerImageInactiveAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NOT_MAPPED); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iValSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "BGCOLOR", iupControlBaseGetBgColorAttrib, iValSetBgColorAttrib, NULL, "255 255 255", IUPAF_NO_INHERIT); /* overwrite canvas implementation, set a system default to force a new default */ + + return ic; +} + +void IupOldValOpen(void) +{ + iupRegisterClass(iValGetClass()); +} diff --git a/iup/srccontrols/iupcontrols.def b/iup/srccontrols/iupcontrols.def new file mode 100755 index 0000000..06c8f6f --- /dev/null +++ b/iup/srccontrols/iupcontrols.def @@ -0,0 +1,35 @@ +EXPORTS +IupColorbar +IupColorBrowser +IupDial +IupGauge +IupCells +IupMatrix +IupMatSetAttribute +IupMatStoreAttribute +IupMatGetAttribute +IupMatGetInt +IupMatGetFloat +IupMatSetfAttribute + +IupControlsOpen +IupControlsClose + +iupmaskSet +iupmaskSetInt +iupmaskSetFloat +iupmaskCheck +iupmaskGet +iupmaskGetFloat +iupmaskGetDouble +iupmaskGetInt +iupmaskMatSet +iupmaskMatSetInt +iupmaskMatSetFloat +iupmaskMatCheck +iupmaskMatGet +iupmaskMatGetFloat +iupmaskMatGetDouble +iupmaskMatGetInt +iupmaskRemove +iupmaskMatRemove diff --git a/iup/srccontrols/iupcontrols.dep b/iup/srccontrols/iupcontrols.dep new file mode 100644 index 0000000..773616a --- /dev/null +++ b/iup/srccontrols/iupcontrols.dep @@ -0,0 +1,173 @@ +$(OBJDIR)/iup_cdutil.o: iup_cdutil.c ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../src/iup_attrib.h ../src/iup_str.h \ + ../src/iup_drv.h iup_cdutil.h +$(OBJDIR)/iup_gauge.o: iup_gauge.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdiup.h \ + ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_drv.h ../src/iup_stdcontrols.h \ + iup_controls.h iup_cdutil.h +$(OBJDIR)/iup_cells.o: iup_cells.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdiup.h \ + ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_drv.h ../src/iup_stdcontrols.h \ + iup_controls.h iup_cdutil.h +$(OBJDIR)/iup_colorbar.o: iup_colorbar.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcontrols.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h \ + ../../cd/include/cdiup.h ../../cd/include/cddbuf.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \ + ../src/iup_stdcontrols.h iup_controls.h ../src/iup_image.h iup_cdutil.h +$(OBJDIR)/iup_controls.o: iup_controls.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcontrols.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_childtree.h ../src/iup_register.h iup_controls.h \ + ../src/iup_attrib.h +$(OBJDIR)/iup_dial.o: iup_dial.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdiup.h \ + ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_drv.h ../src/iup_stdcontrols.h \ + iup_controls.h iup_cdutil.h +$(OBJDIR)/iup_oldtabs.o: iup_oldtabs.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdiup.h \ + ../../cd/include/cddbuf.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_drv.h ../src/iup_drvfont.h \ + ../src/iup_stdcontrols.h ../src/iup_register.h ../src/iup_layout.h \ + iup_controls.h iup_cdutil.h +$(OBJDIR)/iup_oldval.o: iup_oldval.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h \ + ../../cd/include/cdiup.h ../../cd/include/cddbuf.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \ + ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h \ + ../src/iup_register.h +$(OBJDIR)/iup_oldmask.o: iup_oldmask.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcontrols.h ../include/iupmask.h \ + ../src/iup_mask.h ../src/iup_str.h +$(OBJDIR)/iup_colorbrowser.o: color/iup_colorbrowser.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h \ + ../../cd/include/cdiup.h ../../cd/include/cdirgb.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \ + ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h \ + color/iup_colorhsi.h +$(OBJDIR)/iup_colorhsi.o: color/iup_colorhsi.c color/iup_colorhsi.h +$(OBJDIR)/iup_colorbrowserdlg.o: color/iup_colorbrowserdlg.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../include/iupcontrols.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdiup.h \ + ../../cd/include/cddbuf.h ../../cd/include/cdirgb.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_strmessage.h \ + ../src/iup_drv.h ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h \ + ../src/iup_register.h ../src/iup_image.h color/iup_colorhsi.h \ + ../src/iup_childtree.h +$(OBJDIR)/iupmat_key.o: matrix/iupmat_key.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_stdcontrols.h matrix/iupmat_def.h matrix/iupmat_scroll.h \ + matrix/iupmat_focus.h matrix/iupmat_aux.h matrix/iupmat_getset.h \ + matrix/iupmat_key.h matrix/iupmat_mark.h matrix/iupmat_edit.h \ + matrix/iupmat_draw.h +$(OBJDIR)/iupmat_mark.o: matrix/iupmat_mark.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_stdcontrols.h matrix/iupmat_def.h \ + matrix/iupmat_mark.h matrix/iupmat_getset.h matrix/iupmat_draw.h +$(OBJDIR)/iupmat_aux.o: matrix/iupmat_aux.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_drvfont.h ../src/iup_stdcontrols.h \ + matrix/iupmat_def.h matrix/iupmat_aux.h matrix/iupmat_getset.h +$(OBJDIR)/iupmat_mem.o: matrix/iupmat_mem.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_stdcontrols.h matrix/iupmat_def.h \ + matrix/iupmat_mem.h +$(OBJDIR)/iupmat_mouse.o: matrix/iupmat_mouse.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \ + matrix/iupmat_def.h matrix/iupmat_colres.h matrix/iupmat_aux.h \ + matrix/iupmat_focus.h matrix/iupmat_mouse.h matrix/iupmat_key.h \ + matrix/iupmat_mark.h matrix/iupmat_edit.h matrix/iupmat_draw.h \ + matrix/iupmat_scroll.h +$(OBJDIR)/iupmat_numlc.o: matrix/iupmat_numlc.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \ + matrix/iupmat_def.h matrix/iupmat_edit.h matrix/iupmat_mem.h \ + matrix/iupmat_numlc.h matrix/iupmat_draw.h +$(OBJDIR)/iupmat_colres.o: matrix/iupmat_colres.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \ + matrix/iupmat_def.h matrix/iupmat_colres.h matrix/iupmat_draw.h +$(OBJDIR)/iupmat_draw.o: matrix/iupmat_draw.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_attrib.h \ + ../src/iup_str.h ../src/iup_drv.h ../src/iup_drvfont.h \ + ../src/iup_stdcontrols.h iup_controls.h iup_cdutil.h ../src/iup_image.h \ + matrix/iupmat_def.h matrix/iupmat_cd.h matrix/iupmat_draw.h \ + matrix/iupmat_aux.h matrix/iupmat_getset.h matrix/iupmat_mark.h +$(OBJDIR)/iupmat_focus.o: matrix/iupmat_focus.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \ + matrix/iupmat_def.h matrix/iupmat_aux.h matrix/iupmat_focus.h \ + matrix/iupmat_draw.h +$(OBJDIR)/iupmat_getset.o: matrix/iupmat_getset.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_drvfont.h ../src/iup_str.h \ + ../src/iup_stdcontrols.h iup_controls.h ../src/iup_childtree.h \ + matrix/iupmat_def.h matrix/iupmat_getset.h matrix/iupmat_edit.h \ + matrix/iupmat_draw.h matrix/iupmat_aux.h +$(OBJDIR)/iupmatrix.o: matrix/iupmatrix.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h \ + ../../cd/include/cdiup.h ../../cd/include/cddbuf.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_drv.h \ + ../src/iup_drvfont.h ../src/iup_stdcontrols.h iup_controls.h \ + ../src/iup_register.h matrix/iupmat_def.h matrix/iupmat_getset.h \ + matrix/iupmat_scroll.h matrix/iupmat_aux.h matrix/iupmat_mem.h \ + matrix/iupmat_mouse.h matrix/iupmat_focus.h matrix/iupmat_key.h \ + matrix/iupmat_numlc.h matrix/iupmat_colres.h matrix/iupmat_mark.h \ + matrix/iupmat_edit.h matrix/iupmat_draw.h +$(OBJDIR)/iupmat_scroll.o: matrix/iupmat_scroll.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../include/iupcbs.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_stdcontrols.h matrix/iupmat_def.h matrix/iupmat_scroll.h \ + matrix/iupmat_focus.h matrix/iupmat_aux.h matrix/iupmat_edit.h \ + matrix/iupmat_draw.h +$(OBJDIR)/iupmat_edit.o: matrix/iupmat_edit.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../include/iupcontrols.h \ + ../../cd/include/cd.h ../../cd/include/cd_old.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_attrib.h ../src/iup_str.h ../src/iup_stdcontrols.h \ + ../src/iup_childtree.h matrix/iupmat_def.h matrix/iupmat_scroll.h \ + matrix/iupmat_aux.h matrix/iupmat_edit.h matrix/iupmat_key.h \ + matrix/iupmat_getset.h matrix/iupmat_draw.h diff --git a/iup/srccontrols/make_uname b/iup/srccontrols/make_uname new file mode 100755 index 0000000..cc4b881 --- /dev/null +++ b/iup/srccontrols/make_uname @@ -0,0 +1,3 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/srccontrols/make_uname.bat b/iup/srccontrols/make_uname.bat new file mode 100755 index 0000000..f0a0722 --- /dev/null +++ b/iup/srccontrols/make_uname.bat @@ -0,0 +1,4 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 diff --git a/iup/srccontrols/matrix/iupmat_aux.c b/iup/srccontrols/matrix/iupmat_aux.c new file mode 100755 index 0000000..f8b85bb --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_aux.c @@ -0,0 +1,480 @@ +/** \file + * \brief iupmatrix control + * auxiliary functions + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_aux.h" +#include "iupmat_getset.h" + + +static int iMatrixAuxIsFullVisibleLast(Ihandle* ih, int m) +{ + int i, sum = 0; + ImatLinColData *p; + + if (m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + for(i = p->first; i <= p->last; i++) + sum += p->sizes[i]; + + if (sum > p->visible_size) + return 0; + else + return 1; +} + +int iupMatrixAuxIsCellFullVisible(Ihandle* ih, int lin, int col) +{ + if(((lin >= ih->data->lines.first) && + (lin <= ih->data->lines.last) && + (col >= ih->data->columns.first) && + (col <= ih->data->columns.last))) + { + if (col == ih->data->columns.last && !iMatrixAuxIsFullVisibleLast(ih, IMAT_PROCESS_COL)) + return 0; + if (lin == ih->data->lines.last && !iMatrixAuxIsFullVisibleLast(ih, IMAT_PROCESS_LIN)) + return 0; + + return 1; + } + + return 0; +} + +int iupMatrixAuxIsCellVisible(Ihandle* ih, int lin, int col) +{ + if(((lin >= ih->data->lines.first) && + (lin <= ih->data->lines.last) && + (col >= ih->data->columns.first) && + (col <= ih->data->columns.last))) + { + return 1; + } + + return 0; +} + +void iupMatrixAuxGetVisibleCellDim(Ihandle* ih, int lin, int col, int* x, int* y, int* w, int* h) +{ + int i; + + /* find the position where the column starts */ + *x = ih->data->columns.sizes[0]; + for(i = ih->data->columns.first; i < col; i++) + *x += ih->data->columns.sizes[i]; + + /* find the column size */ + *w = ih->data->columns.sizes[col] - 1; + + /* find the position where the line starts */ + *y = ih->data->lines.sizes[0]; + for(i = ih->data->lines.first; i < lin; i++) + *y += ih->data->lines.sizes[i]; + + /* find the line size */ + *h = ih->data->lines.sizes[lin] - 1; +} + +/* Calculate the size, in pixels, of the invisible columns/lines, + the left/above of the first column/line. + In fact the start position of the visible area. + Depends on the first visible column/line. + -> m : choose will operate on lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] +*/ +void iupMatrixAuxUpdateVisiblePos(Ihandle* ih, int m) +{ + char* POS; + int i, sb, visible_pos; + ImatLinColData *p; + + if (m == IMAT_PROCESS_LIN) + { + p = &(ih->data->lines); + sb = IUP_SB_VERT; + POS = "POSY"; + } + else + { + p = &(ih->data->columns); + sb = IUP_SB_HORIZ; + POS = "POSX"; + } + + visible_pos = 0; + for(i = 1; i < p->first; i++) + visible_pos += p->sizes[i]; + + if (ih->data->canvas.sb & sb) + { + float pos; + + if (p->total_size) + { + while ((visible_pos + p->visible_size > p->total_size) && p->first>1) + { + /* invalid position, must recalculate first */ + p->first--; + visible_pos -= p->sizes[p->first]; + } + + pos = (float)visible_pos/(float)p->total_size; + } + else + pos = 0; + + iupMatrixAuxUpdateLast(p); + IupSetfAttribute(ih, POS, "%.5f", (double)pos); + } + else + iupMatrixAuxUpdateLast(p); +} + +/* Calculate which is the last visible column/line of the matrix. + Depends on the first visible column/line. */ +void iupMatrixAuxUpdateLast(ImatLinColData *p) +{ + int i, sum = 0; + + if (p->visible_size > 0) + { + /* Find which is the last column/line + Start in the first visible and continue adding the widths + up to the visible size */ + for(i = p->first; i < p->num; i++) + { + sum += p->sizes[i]; + if(sum >= p->visible_size) + break; + } + + if (i == p->num) + p->last = i-1; + else + p->last = i; + } + else + { + /* There is no space for any column, set the last column as 0 */ + p->last = 0; + } +} + +int iupMatrixAuxGetColumnWidth(Ihandle* ih, int col) +{ + int width = 0, pixels = 0; + char* str = iupStrGetMemory(100); + char* value; + + /* can only be called for valid columns */ + + sprintf(str, "WIDTH%d", col); + value = iupAttribGet(ih, str); + if (!value) + { + sprintf(str, "RASTERWIDTH%d", col); + value = iupAttribGet(ih, str); + if (value) + pixels = 1; + } + + if (!value) + { + /* Use the titles to define the size */ + if (col == 0) + { + if (!ih->data->callback_mode || ih->data->use_title_size) + { + /* find the largest title */ + int lin, max_width = 0; + for(lin = 0; lin < ih->data->lines.num; lin++) + { + char* title_value = iupMatrixCellGetValue(ih, lin, 0); + if (title_value) + { + iupdrvFontGetMultiLineStringSize(ih, title_value, &width, NULL); + if (width > max_width) + max_width = width; + } + } + width = max_width; + } + } + else if (ih->data->use_title_size) + { + char* title_value = iupMatrixCellGetValue(ih, 0, col); + if (title_value) + iupdrvFontGetMultiLineStringSize(ih, title_value, &width, NULL); + } + if (width) + return width + IMAT_PADDING_W + IMAT_FRAME_W; + + if (col != 0) + value = iupAttribGetStr(ih, "WIDTHDEF"); + } + + if (iupStrToInt(value, &width)) + { + if (width <= 0) + return 0; + else + { + if (pixels) + return width + IMAT_PADDING_W + IMAT_FRAME_W; + else + { + int charwidth; + iupdrvFontGetCharSize(ih, &charwidth, NULL); + return iupWIDTH2RASTER(width, charwidth) + IMAT_PADDING_W + IMAT_FRAME_W; + } + } + } + return 0; +} + +int iupMatrixAuxGetLineHeight(Ihandle* ih, int lin) +{ + int height = 0, pixels = 0; + char* str = iupStrGetMemory(100); + char* value; + + /* can only be called for valid lines */ + + sprintf(str, "HEIGHT%d", lin); + value = iupAttribGet(ih, str); + if(!value) + { + sprintf(str, "RASTERHEIGHT%d", lin); + value = iupAttribGet(ih, str); + if(value) + pixels = 1; + } + + if (!value) + { + /* Use the titles to define the size */ + if (lin == 0) + { + if (!ih->data->callback_mode || ih->data->use_title_size) + { + /* find the highest title */ + int col, max_height = 0; + for(col = 0; col < ih->data->columns.num; col++) + { + char* title_value = iupMatrixCellGetValue(ih, 0, col); + if (title_value && title_value[0]) + { + iupdrvFontGetMultiLineStringSize(ih, title_value, NULL, &height); + if (height > max_height) + max_height = height; + } + } + height = max_height; + } + } + else if (ih->data->use_title_size) + { + char* title_value = iupMatrixCellGetValue(ih, lin, 0); + if (title_value && title_value[0]) + iupdrvFontGetMultiLineStringSize(ih, title_value, NULL, &height); + } + if (height) + return height + IMAT_PADDING_H + IMAT_FRAME_H; + + if (lin != 0) + value = iupAttribGetStr(ih, "HEIGHTDEF"); + } + + if (iupStrToInt(value, &height)) + { + if (height <= 0) + return 0; + else + { + if (pixels) + return height + IMAT_PADDING_H + IMAT_FRAME_H; + else + { + int charheight; + iupdrvFontGetCharSize(ih, NULL, &charheight); + return iupHEIGHT2RASTER(height, charheight) + IMAT_PADDING_H + IMAT_FRAME_H; + } + } + } + return 0; +} + +/* Fill the sizes vector with the width/heigh of all the columns/lines. + Calculate the value of total_size */ +static void iMatrixAuxFillSizeVec(Ihandle* ih, int m) +{ + int i; + ImatLinColData *p; + + if (m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + /* Calculate total width/height of the matrix and the width/height of each column */ + p->total_size = 0; + for(i = 0; i < p->num; i++) + { + if (m == IMAT_PROCESS_LIN) + p->sizes[i] = iupMatrixAuxGetLineHeight(ih, i); + else + p->sizes[i] = iupMatrixAuxGetColumnWidth(ih, i); + + if (i > 0) + p->total_size += p->sizes[i]; + } +} + +static void iMatrixAuxUpdateVisibleSize(Ihandle* ih, int m) +{ + char* D; + ImatLinColData *p; + int canvas_size; + + if (m == IMAT_PROCESS_LIN) + { + D = "DY"; + p = &(ih->data->lines); + canvas_size = ih->data->h; + } + else + { + D = "DX"; + p = &(ih->data->columns); + canvas_size = ih->data->w; + } + + /* Matrix useful area is the current size minus the title area */ + p->visible_size = canvas_size - p->sizes[0]; + if (p->visible_size > p->total_size) + p->visible_size = p->total_size; + + if (p->total_size) + IupSetfAttribute(ih, D, "%f", (double)p->visible_size/(double)p->total_size); + else + IupSetAttribute(ih, D, "1.0"); +} + +void iupMatrixAuxCalcSizes(Ihandle* ih) +{ + iMatrixAuxFillSizeVec(ih, IMAT_PROCESS_COL); + iMatrixAuxFillSizeVec(ih, IMAT_PROCESS_LIN); + + iMatrixAuxUpdateVisibleSize(ih, IMAT_PROCESS_COL); + iMatrixAuxUpdateVisibleSize(ih, IMAT_PROCESS_LIN); + + /* when removing lines the first can be positioned after the last line */ + if (ih->data->lines.first > ih->data->lines.num-1) + { + if (ih->data->lines.num==1) + ih->data->lines.first = 1; + else + ih->data->lines.first = ih->data->lines.num-1; + } + if (ih->data->columns.first > ih->data->columns.num-1) + { + if (ih->data->columns.num == 1) + ih->data->columns.first = 1; + else + ih->data->columns.first = ih->data->columns.num-1; + } + + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL); + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN); + + ih->data->need_calcsize = 0; +} + +int iupMatrixAuxGetLinColFromXY(Ihandle* ih, int x, int y, int* l, int* c) +{ + int size, lin, col; + + size = ih->data->columns.sizes[0]; /* always visible when non zero */ + if (x < size) + col = 0; /* It is in the column of titles */ + else + { + for(col = ih->data->columns.first; col <= ih->data->columns.last; col++) /* for all visible columns */ + { + size += ih->data->columns.sizes[col]; + if (x < size) + break; + } + if (col > ih->data->columns.last) + col = -1; + } + + size = ih->data->lines.sizes[0]; /* always visible when non zero */ + if (y < size) + lin = 0; /* It is in the line of titles */ + else + { + for(lin = ih->data->lines.first; lin <= ih->data->lines.last; lin++) /* for all visible lines */ + { + size += ih->data->lines.sizes[lin]; + if (y < size) + break; + } + if(lin > ih->data->lines.last) + lin = -1; + } + + if (col == -1 || lin == -1) + return 0; + + *l = lin; + *c = col; + return 1; +} + +int iupMatrixAuxCallLeaveCellCb(Ihandle* ih) +{ + IFnii cb = (IFnii)IupGetCallback(ih, "LEAVEITEM_CB"); + if(cb) + return cb(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell); + return IUP_DEFAULT; +} + +void iupMatrixAuxCallEnterCellCb(Ihandle* ih) +{ + IFnii cb = (IFnii)IupGetCallback(ih, "ENTERITEM_CB"); + if (cb) + cb(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell); +} + +int iupMatrixAuxCallEditionCbLinCol(Ihandle* ih, int lin, int col, int mode, int update) +{ + IFniiii cb; + + if (iupAttribGetBoolean(ih, "READONLY")) + return IUP_IGNORE; + + cb = (IFniiii)IupGetCallback(ih, "EDITION_CB"); + if(cb) + return cb(ih, lin, col, mode, update); + return IUP_DEFAULT; +} diff --git a/iup/srccontrols/matrix/iupmat_aux.h b/iup/srccontrols/matrix/iupmat_aux.h new file mode 100755 index 0000000..296c1f5 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_aux.h @@ -0,0 +1,37 @@ +/** \file + * \brief iupmatrix control + * auxiliary functions. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_AUX_H +#define __IUPMAT_AUX_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixAuxIsCellFullVisible(Ihandle* ih, int lin, int col); +int iupMatrixAuxIsCellVisible(Ihandle* ih, int lin, int col); +void iupMatrixAuxGetVisibleCellDim (Ihandle* ih, int lin, int col, int* x, int* y, int* w, int* h); + +void iupMatrixAuxCalcSizes(Ihandle* ih); + +void iupMatrixAuxUpdateVisiblePos(Ihandle* ih, int m); +void iupMatrixAuxUpdateLast(ImatLinColData *p); + +int iupMatrixAuxGetColumnWidth(Ihandle* ih, int col); +int iupMatrixAuxGetLineHeight (Ihandle* ih, int lin); + +int iupMatrixAuxGetLinColFromXY (Ihandle* ih, int x, int y, int* l, int* c); + +int iupMatrixAuxCallLeaveCellCb (Ihandle* ih); +void iupMatrixAuxCallEnterCellCb (Ihandle* ih); +int iupMatrixAuxCallEditionCbLinCol(Ihandle* ih, int lin, int col, int mode, int update); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_cd.h b/iup/srccontrols/matrix/iupmat_cd.h new file mode 100755 index 0000000..1a10f2b --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_cd.h @@ -0,0 +1,25 @@ +/** \file + * \brief iupmatrix. CD help macros. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_CD_H +#define __IUPMAT_CD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IUPMAT_LINE(_ih,_x1,_y1,_x2,_y2) cdCanvasLine((_ih)->data->cddbuffer, (_x1), iupMatrixInvertYAxis(_ih, _y1), (_x2), iupMatrixInvertYAxis(_ih, _y2)) +#define IUPMAT_VERTEX(_ih,_x,_y) cdCanvasVertex((_ih)->data->cddbuffer, (_x), iupMatrixInvertYAxis(_ih, _y)) +#define IUPMAT_BOX(_ih,_xmin,_xmax,_ymin,_ymax) cdCanvasBox((_ih)->data->cddbuffer, (_xmin), (_xmax), iupMatrixInvertYAxis(_ih, _ymin), iupMatrixInvertYAxis(_ih, _ymax)) +#define IUPMAT_RECT(_ih,_xmin,_xmax,_ymin,_ymax) cdCanvasRect((_ih)->data->cddbuffer, (_xmin), (_xmax), iupMatrixInvertYAxis(_ih, _ymin), iupMatrixInvertYAxis(_ih, _ymax)) +#define IUPMAT_CLIPAREA(_ih,_xmin,_xmax,_ymin,_ymax) cdCanvasClipArea((_ih)->data->cddbuffer, (_xmin), (_xmax), iupMatrixInvertYAxis(_ih, _ymin), iupMatrixInvertYAxis(_ih, _ymax)) +#define IUPMAT_TEXT(_ih,_x,_y,_text) cdCanvasText((_ih)->data->cddbuffer, (_x), iupMatrixInvertYAxis(_ih, _y), (_text)) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_colres.c b/iup/srccontrols/matrix/iupmat_colres.c new file mode 100755 index 0000000..d44b7df --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_colres.c @@ -0,0 +1,182 @@ +/** \file + * \brief iupmatrix column resize + * + * See Copyright Notice in "iup.h" + */ + +/**************************************************************************/ +/* Interactive Column Resize Functions and WIDTH/HEIGHT change */ +/**************************************************************************/ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_colres.h" +#include "iupmat_draw.h" + + +#define IMAT_COLRES_TOL 3 +#define IMAT_RESIZE_COLOR 0x666666L + + +/* Verify if the mouse is in the intersection between two of column titles, + if so the resize is started */ +int iupMatrixColResStart(Ihandle* ih, int x, int y) +{ + if (ih->data->lines.sizes[0] && y < ih->data->lines.sizes[0] && iupAttribGetBoolean(ih, "RESIZEMATRIX")) + { + int size, col; + + /* Check if is the column of titles */ + size = ih->data->columns.sizes[0]; + if (abs(size-x) < IMAT_COLRES_TOL) + { + ih->data->colres_drag_col_start_x = 0; + ih->data->colres_dragging = 1; + ih->data->colres_drag_col_last_x = -1; + ih->data->colres_drag_col = 0; + return 1; + } + else + { + /* find the column */ + for(col = ih->data->columns.first; col <= ih->data->columns.last; col++) + { + ih->data->colres_drag_col_start_x = size; + size += ih->data->columns.sizes[col]; + if (abs(size-x) < IMAT_COLRES_TOL) + { + ih->data->colres_dragging = 1; + ih->data->colres_drag_col_last_x = -1; + ih->data->colres_drag_col = col; + return 1; + } + } + } + } + return 0; +} + +void iupMatrixColResFinish(Ihandle* ih, int x) +{ + char str[100]; + int width = x - ih->data->colres_drag_col_start_x; + if (width < 0) + width = 0; + + /* delete feedback */ + if (ih->data->colres_drag_col_last_x != -1) + { + int y1 = ih->data->lines.sizes[0]; /* from the bottom of the line of titles */ + int y2 = ih->data->h-1; /* to the bottom of the matrix */ + + cdCanvasWriteMode(ih->data->cdcanvas, CD_XOR); + cdCanvasForeground(ih->data->cdcanvas, IMAT_RESIZE_COLOR); + cdCanvasLine(ih->data->cdcanvas, ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y1), + ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y2)); + cdCanvasWriteMode(ih->data->cdcanvas, CD_REPLACE); + } + + ih->data->colres_dragging = 0; + + sprintf(str, "RASTERWIDTH%d", ih->data->colres_drag_col); + iupAttribSetInt(ih, str, width-IMAT_PADDING_W-IMAT_FRAME_W); + sprintf(str, "WIDTH%d", ih->data->colres_drag_col); + iupAttribSetStr(ih, str, NULL); + + ih->data->need_calcsize = 1; + iupMatrixDraw(ih, 0); +} + +/* Change the column width interactively, just change the line in the screen. + When the user finishes the drag, the iupMatrixColResFinish function is called + to truly change the column width. */ +void iupMatrixColResMove(Ihandle* ih, int x) +{ + int y1, y2; + + int width = x - ih->data->colres_drag_col_start_x; + if (width < 0) + return; + + y1 = ih->data->lines.sizes[0]; /* from the bottom of the line of titles */ + y2 = ih->data->h-1; /* to the bottom of the matrix */ + + cdCanvasWriteMode(ih->data->cdcanvas, CD_XOR); + cdCanvasForeground(ih->data->cdcanvas, IMAT_RESIZE_COLOR); + + /* If it is not the first time, move old line */ + if (ih->data->colres_drag_col_last_x != -1) + { + cdCanvasLine(ih->data->cdcanvas, ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y1), + ih->data->colres_drag_col_last_x, iupMatrixInvertYAxis(ih, y2)); + } + + cdCanvasLine(ih->data->cdcanvas, x, iupMatrixInvertYAxis(ih, y1), + x, iupMatrixInvertYAxis(ih, y2)); + + ih->data->colres_drag_col_last_x = x; + cdCanvasWriteMode(ih->data->cdcanvas, CD_REPLACE); +} + + +static void iMatrixColResResetMatrixCursor(Ihandle* ih) +{ + char *cursor = iupAttribGet(ih, "_IUPMAT_CURSOR"); + if (cursor) + { + IupStoreAttribute(ih, "CURSOR", cursor); + iupAttribSetStr(ih, "_IUPMAT_CURSOR", NULL); + } +} + +/* Change the cursor when it passes over a group of the column titles. */ +void iupMatrixColResCheckChangeCursor(Ihandle* ih, int x, int y) +{ + if(ih->data->lines.sizes[0] && y < ih->data->lines.sizes[0] && iupAttribGetBoolean(ih, "RESIZEMATRIX")) + { + /* It is in the column titles area and the resize mode is on */ + int found = 0, size, col; + + size = ih->data->columns.sizes[0]; + if (abs(size - x) < IMAT_COLRES_TOL) + found = 1; /* line titles */ + else + { + for(col = ih->data->columns.first; col <= ih->data->columns.last && !found; col++) + { + size += ih->data->columns.sizes[col]; + if(abs(size - x) < IMAT_COLRES_TOL) + found = 1; + } + } + + if (found) + { + if (!iupAttribGet(ih, "_IUPMAT_CURSOR")) + iupAttribStoreStr(ih, "_IUPMAT_CURSOR", IupGetAttribute(ih, "CURSOR")); + IupSetAttribute(ih, "CURSOR", "RESIZE_W"); + } + else /* It is in the empty area after the last column */ + iMatrixColResResetMatrixCursor(ih); + } + else + iMatrixColResResetMatrixCursor(ih); +} + +int iupMatrixColResIsResizing(Ihandle* ih) +{ + return ih->data->colres_dragging; +} + diff --git a/iup/srccontrols/matrix/iupmat_colres.h b/iup/srccontrols/matrix/iupmat_colres.h new file mode 100755 index 0000000..ba7f23d --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_colres.h @@ -0,0 +1,24 @@ +/** \file + * \brief iupmatrix column resize. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_COLRES_H +#define __IUPMAT_COLRES_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixColResStart (Ihandle* ih, int x, int y); +void iupMatrixColResFinish (Ihandle* ih, int x); +void iupMatrixColResMove (Ihandle* ih, int x); +void iupMatrixColResCheckChangeCursor(Ihandle* ih, int x, int y); +int iupMatrixColResIsResizing (Ihandle* ih); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_def.h b/iup/srccontrols/matrix/iupmat_def.h new file mode 100755 index 0000000..d45acde --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_def.h @@ -0,0 +1,122 @@ +/** \file + * \brief iupmatrix. definitions. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_DEF_H +#define __IUPMAT_DEF_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#define IMAT_PROCESS_COL 1 /* Process the columns */ +#define IMAT_PROCESS_LIN 2 /* Process the lines */ + +/***************************************************************************/ +/* Decoration size in pixels */ +/***************************************************************************/ +#define IMAT_PADDING_W 6 +#define IMAT_PADDING_H 6 +#define IMAT_FRAME_W 2 +#define IMAT_FRAME_H 2 + +/* Cell flags */ +#define IUPMAT_FONT 1 /* Has FONTL:C attribute */ +#define IUPMAT_FGCOLOR 2 /* Has FGCOLORL:C attribute */ +#define IUPMAT_BGCOLOR 4 /* Has BGCOLORL:C attribute */ +#define IUPMAT_MARK 8 /* Is marked */ +#define IUPMAT_FRAMEHCOLOR 16 /* Has FRAMEHORIZCOLORL:C */ +#define IUPMAT_FRAMEVCOLOR 32 /* Has FRAMEVERTCOLORL:C */ + +/***************************************************************************/ +/* Structures stored in each matrix */ +/***************************************************************************/ +typedef struct _ImatCell +{ + char *value; /* Cell value */ + unsigned char flags; +} ImatCell; + + +typedef struct _ImatLinColData +{ + int* sizes; /* Width/height of the columns/lines (allocated after map) */ + unsigned char* flags; /* Attribute flags for the columns/lines (allocated after map) */ + + int num; /* Number of columns/lines in the matrix, default/minimum=1, always includes the title */ + int num_alloc; /* Number of columns/lines allocated, default=5 */ + + int first; /* First visible column/line */ + int last; /* Last visible column/line */ + + /* used to configure the scrollbar */ + int total_size; /* Sum of the widths/heights of the columns/lines, not including the title */ + int visible_size; /* Width/height of the visible window, not including the title */ + + int focus_cell; /* index of the current cell */ +} ImatLinColData; + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + ImatCell** cells; /* Cell value, this will be NULL if in callback mode (allocated after map) */ + + Ihandle* texth; /* Text handle */ + Ihandle* droph; /* Dropdown handle */ + Ihandle* datah; /* Current active edition element, may be equal to texth or droph */ + + cdCanvas* cddbuffer; + cdCanvas* cdcanvas; + + ImatLinColData lines; + ImatLinColData columns; + + int has_focus; + int w, h; /* canvas size */ + int callback_mode; + int use_title_size; /* use title contents when calculating cell size */ + int need_calcsize; + int first_redraw; + + /* attributes */ + int mark_continuous, mark_mode, mark_multiple; + int checkframecolor; + + /* Mouse and Keyboard AUX */ + int leftpressed; /* left mouse button is pressed */ + int homekeycount, endkeycount; /* numbers of times that key was pressed */ + + /* ColRes AUX */ + int colres_dragging, /* indicates if it is being made a column resize */ + colres_drag_col, /* column being resized */ + colres_drag_col_start_x, /* position of the start of the column being resized */ + colres_drag_col_last_x; /* previous position */ + + /* Mark AUX */ + int mark_lin1, mark_col1, /* used to store the start cell when a block is being marked */ + mark_lin2, mark_col2, /* used to store the end cell when a block was marked */ + mark_full1, /* indicate if full lines or columns is being selected */ + mark_full2; + + /* Draw AUX, valid only after iupMatrixPrepareDrawData */ + sIFnii font_cb; + IFniiIII fgcolor_cb; + IFniiIII bgcolor_cb; + char *bgcolor, *bgcolor_parent, *fgcolor, *font; /* not need to free */ +}; + + +int iupMatrixIsValid(Ihandle* ih, int check_cells); + +#define iupMatrixInvertYAxis(_ih, _y) ((_ih)->data->h-1 - (_y)) + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_draw.c b/iup/srccontrols/matrix/iupmat_draw.c new file mode 100755 index 0000000..7c53fb5 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_draw.c @@ -0,0 +1,866 @@ +/** \file + * \brief iupmatrix control + * draw functions + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#undef CD_NO_OLD_INTERFACE + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_cdutil.h" +#include "iup_image.h" + +#include "iupmat_def.h" +#include "iupmat_cd.h" +#include "iupmat_draw.h" +#include "iupmat_aux.h" +#include "iupmat_getset.h" +#include "iupmat_mark.h" + + +/* Color attenuation factor in a marked cell, 20% darker */ +#define IMAT_ATENUATION(_x) ((unsigned char)(((_x)*8)/10)) + +/* Text alignment that will be draw. Used by iMatrixDrawCellValue */ +#define IMAT_T_CENTER 1 +#define IMAT_T_LEFT 2 +#define IMAT_T_RIGHT 3 + +#define IMAT_CD_INACTIVE_FGCOLOR 0x666666L + +#define IMAT_COMBOBOX_W 16 + + +typedef int (*IFniiiiiiC)(Ihandle *h, int lin, int col,int x1, int x2, int y1, int y2, cdCanvas* cnv); + + +/**************************************************************************/ +/* Private functions */ +/**************************************************************************/ + + +static int iMatrixDrawGetColAlignment(Ihandle* ih, int col, char* str) +{ + char* align; + sprintf(str, "ALIGNMENT%d", col); + align = iupAttribGet(ih, str); + if (!align) + { + if (col == 0) + return IMAT_T_LEFT; + else + return IMAT_T_CENTER; + } + else if (iupStrEqualNoCase(align, "ARIGHT")) + return IMAT_T_RIGHT; + else if(iupStrEqualNoCase(align, "ACENTER")) + return IMAT_T_CENTER; + else + return IMAT_T_LEFT; +} + +static int iMatrixDrawCallDrawCB(Ihandle* ih, int lin, int col, int x1, int x2, int y1, int y2, IFniiiiiiC draw_cb) +{ + int ret; + cdCanvas* old_cnv; + + IUPMAT_CLIPAREA(ih, x1, x2, y1, y2); + cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA); + + old_cnv = cdActiveCanvas(); + if (old_cnv != ih->data->cddbuffer) /* backward compatibility code */ + cdActivate(ih->data->cddbuffer); + + ret = draw_cb(ih, lin, col, x1, x2, iupMatrixInvertYAxis(ih, y1), iupMatrixInvertYAxis(ih, y2), ih->data->cddbuffer); + + cdCanvasClip(ih->data->cddbuffer, CD_CLIPOFF); + + if (old_cnv && old_cnv != ih->data->cddbuffer) /* backward compatibility code */ + { + cdActivate(old_cnv); + cdCanvasActivate(ih->data->cddbuffer); + } + + if (ret == IUP_DEFAULT) + return 0; + + return 1; +} + +/* Change the CD foreground color, for the selected color to draw a cell with + its FOREGROUND COLOR. This involves checking if there is a color attribute + that cell. If no, uses a color attribute for the line, else if no for the + column, else if no for the entire matrix. Finally, if not find any of + these, use the default color. + -> lin, col - cell coordinates, in IUP format - i.e., l,l represents the left + top cell of the matrix; lin and col values = 0 represents the + title lines and columns. + -> mark - indicate if a cell is marked. If yes, its color is attenuated. +*/ +static unsigned long iMatrixDrawSetFgColor(Ihandle* ih, int lin, int col, int mark) +{ + unsigned char r = 0, g = 0, b = 0; + iupMatrixGetFgRGB(ih, lin, col, &r, &g, &b); + + if (mark) + { + r = IMAT_ATENUATION(r); + g = IMAT_ATENUATION(g); + b = IMAT_ATENUATION(b); + } + + return cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(r, g, b)); +} + +/* Change the CD foreground color, for the selected color to draw a cell with + its BACKGROUND COLOR. This involves checking if there is a color attribute + that cell. If no, uses a color attribute for the line, else if no for the + column, else if no for the entire matrix. Finally, if not find any of + these, use the default color. + -> lin, col - cell coordinates, in IUP format - i.e., l,l represents the left + top cell of the matrix; lin and col values = 0 represents the + title lines and columns. + -> mark - indicate if a cell is marked. If yes, its color is attenuated. +*/ +static unsigned long iMatrixDrawSetBgColor(Ihandle* ih, int lin, int col, int mark, int active) +{ + unsigned char r = 255, g = 255, b = 255; + + iupMatrixGetBgRGB(ih, lin, col, &r, &g, &b); + + if (mark) + { + r = IMAT_ATENUATION(r); + g = IMAT_ATENUATION(g); + b = IMAT_ATENUATION(b); + } + + if (!active) + { + r = cdIupLIGTHER(r); + g = cdIupLIGTHER(g); + b = cdIupLIGTHER(b); + } + + return cdCanvasForeground(ih->data->cddbuffer, cdEncodeColor(r, g, b)); +} + +static void iMatrixDrawFrameHorizLineCell(Ihandle* ih, int lin, int col, int x1, int x2, int y, long framecolor, char* str) +{ + if (ih->data->checkframecolor && (ih->data->callback_mode || ih->data->cells[lin][col].flags & IUPMAT_FRAMEHCOLOR)) + { + unsigned char r,g,b; + sprintf(str, "FRAMEHORIZCOLOR%d:%d", lin, col); + if (iupStrToRGB(iupAttribGet(ih, str), &r, &g, &b)) + framecolor = cdEncodeColor(r, g, b); + } + + cdCanvasForeground(ih->data->cddbuffer, framecolor); + IUPMAT_LINE(ih, x1, y, x2, y); /* bottom horizontal line */ +} + +static void iMatrixDrawFrameVertLineCell(Ihandle* ih, int lin, int col, int x, int y1, int y2, long framecolor, char* str) +{ + if (ih->data->checkframecolor && (ih->data->callback_mode || ih->data->cells[lin][col].flags & IUPMAT_FRAMEVCOLOR)) + { + unsigned char r,g,b; + sprintf(str, "FRAMEVERTCOLOR%d:%d", lin, col); + if (iupStrToRGB(iupAttribGet(ih, str), &r, &g, &b)) + framecolor = cdEncodeColor(r, g, b); + } + + cdCanvasForeground(ih->data->cddbuffer, framecolor); + IUPMAT_LINE(ih, x, y1, x, y2); /* right vertical line */ +} + +static void iMatrixDrawFrameRectTitle(Ihandle* ih, int lin, int col, int x1, int x2, int y1, int y2, long framecolor, char* str) +{ + /* avoid drawing over the frame of the next cell */ + x2 -= IMAT_FRAME_W/2; + y2 -= IMAT_FRAME_H/2; + + iMatrixDrawFrameVertLineCell(ih, lin, col, x2, y1, y2, framecolor, str); /* right vertical line */ + if (col==0) + { + IUPMAT_LINE(ih, x1, y1, x1, y2); /* left vertical line, reuse Foreground */ + x1++; + } + else if (col==1 && ih->data->columns.sizes[0] == 0) + { + /* If does not have line titles then draw the left line of the cell frame */ + IUPMAT_LINE(ih, x1, y1, x1, y2-1); + x1++; + } + + cdCanvasForeground(ih->data->cddbuffer, CD_WHITE); /* Titles have a white line near the frame */ + IUPMAT_LINE(ih, x1, y1+1, x1, y2-1); + + iMatrixDrawFrameHorizLineCell(ih, lin, col, x1, x2, y2, framecolor, str); /* bottom horizontal line */ + if (lin==0) + { + IUPMAT_LINE(ih, x1, y1, x2, y1); /* top horizontal line, reuse Foreground */ + y1++; + } + else if (lin==1 && ih->data->lines.sizes[0] == 0) + { + /* If does not have column titles then draw the top line of the cell frame */ + IUPMAT_LINE(ih, x1, y1, x2-1, y1); + y1++; + } + + cdCanvasForeground(ih->data->cddbuffer, CD_WHITE); /* Titles have a white line near the frame */ + IUPMAT_LINE(ih, x1, y1, x2-1, y1); +} + +static void iMatrixDrawFrameRectCell(Ihandle* ih, int lin, int col, int x1, int x2, int y1, int y2, long framecolor, char* str) +{ + if (col==1 && ih->data->columns.sizes[0] == 0) + { + /* If does not have line titles then draw the left line of the cell frame */ + iMatrixDrawFrameVertLineCell(ih, lin, col, x1, y1, y2-1-1, framecolor, str); + } + + if (lin==1 && ih->data->lines.sizes[0] == 0) + { + /* If does not have column titles then draw the top line of the cell frame */ + iMatrixDrawFrameHorizLineCell(ih, lin, col, x1, x2-1-1, y1, framecolor, str); + } + + /* bottom line */ + iMatrixDrawFrameHorizLineCell(ih, lin, col, x1, x2-1, y2-1, framecolor, str); + + /* rigth line */ + iMatrixDrawFrameVertLineCell(ih, lin, col, x2-1, y1, y2-1, framecolor, str); +} + +static int iMatrixDrawSortSign(Ihandle* ih, int x2, int y1, int y2, int col, int active, char* str) +{ + int yc; + char* sort; + + sprintf(str, "SORTSIGN%d", col); + sort = iupAttribGet(ih, str); + if (!sort || iupStrEqualNoCase(sort, "NO")) + return 0; + + /* Remove the space between text and cell frame */ + x2 -= IMAT_PADDING_W/2 + IMAT_FRAME_W/2; + + /* Set the color used to draw the text */ + if (active) + cdCanvasForeground(ih->data->cddbuffer, IMAT_CD_INACTIVE_FGCOLOR); + else + iMatrixDrawSetFgColor(ih, 0, col, 0); + + yc = (int)( (y1 + y2 ) / 2.0 - .5); + + cdCanvasBegin(ih->data->cddbuffer, CD_FILL); + + if (iupStrEqualNoCase(sort, "DOWN")) + { + IUPMAT_VERTEX(ih, x2 - 5, yc + 2); + IUPMAT_VERTEX(ih, x2 - 1, yc - 2); + IUPMAT_VERTEX(ih, x2 - 9, yc - 2); + } + else + { + IUPMAT_VERTEX(ih, x2 - 1, yc + 2); + IUPMAT_VERTEX(ih, x2 - 9, yc + 2); + IUPMAT_VERTEX(ih, x2 - 5, yc - 2); + } + + cdCanvasEnd(ih->data->cddbuffer); + return 1; +} + +static void iMatrixDrawComboFeedback(Ihandle* ih, int x2, int y1, int y2, int active, long framecolor) +{ + int xh2, yh2, x1; + + /* feedback area */ + x2 -= IMAT_PADDING_W/2 + IMAT_FRAME_W/2; + x1 = x2 - IMAT_COMBOBOX_W; + y1 += IMAT_PADDING_H/2 + IMAT_FRAME_H/2; + y2 -= IMAT_PADDING_H/2 + IMAT_FRAME_H/2; + + /* feedback background */ + iMatrixDrawSetBgColor(ih, 0, 0, 0, active); + IUPMAT_BOX(ih, x1, x2, y1, y2); + + /* feedback frame */ + cdCanvasForeground(ih->data->cddbuffer, framecolor); + IUPMAT_RECT(ih, x1, x2, y1, y2); + + /* feedback arrow */ + xh2 = x2 - IMAT_COMBOBOX_W / 2; + yh2 = y2 - (y2 - y1) / 2; + + cdCanvasBegin(ih->data->cddbuffer, CD_FILL); + IUPMAT_VERTEX(ih, xh2, yh2 + 3); + IUPMAT_VERTEX(ih, xh2 + 4, yh2 - 1); + IUPMAT_VERTEX(ih, xh2 - 4, yh2 - 1); + cdCanvasEnd(ih->data->cddbuffer); +} + +static void iMatrixDrawBackground(Ihandle* ih, int x1, int x2, int y1, int y2, int marked, int active, int lin, int col) +{ + /* avoid drawing over the frame of the next cell */ + x2 -= IMAT_FRAME_W/2; + y2 -= IMAT_FRAME_H/2; + + iMatrixDrawSetBgColor(ih, lin, col, marked, active); + IUPMAT_BOX(ih, x1, x2, y1, y2); +} + +/* Put the cell contents in the screen, using the specified color and alignment. + -> y1, y2 : vertical limits of the cell + -> x1, x2 : horizontal limits of the complete cell + -> alignment : alignment type (horizontal) assigned to the text. The options are: + [IMAT_T_CENTER,IMAT_T_LEFT,IMAT_T_RIGHT] + -> marked : mark state + -> lin, col - cell coordinates */ +static void iMatrixDrawCellValue(Ihandle* ih, int x1, int x2, int y1, int y2, int alignment, int marked, int active, int lin, int col, IFniiiiiiC draw_cb) +{ + char *text; + + /* avoid drawing over the frame of the next cell */ + x2 -= IMAT_FRAME_W/2; + y2 -= IMAT_FRAME_H/2; + + /* avoid drawing over the frame of the cell */ + x2 -= IMAT_FRAME_W/2; + y2 -= IMAT_FRAME_H/2; + + if (lin==0 || col==0) + { + /* avoid drawing over the frame of the cell */ + x1 += IMAT_FRAME_W/2; + y1 += IMAT_FRAME_H/2; + + if (col==0) x1 += IMAT_FRAME_W/2; + if (lin==0) y1 += IMAT_FRAME_H/2; + } + else if ((col==1 && ih->data->columns.sizes[0] == 0) || (lin==1 && ih->data->lines.sizes[0] == 0)) + { + /* avoid drawing over the frame of the cell */ + x1 += IMAT_FRAME_W/2; + y1 += IMAT_FRAME_H/2; + } + + if (draw_cb && !iMatrixDrawCallDrawCB(ih, lin, col, x1, x2, y1, y2, draw_cb)) + return; + + text = iupMatrixCellGetValue(ih, lin, col); + + /* Put the text */ + if (text && *text) + { + int num_line, line_height, total_height; + int charheight, ypos; + + num_line = iupStrLineCount(text); + iupdrvFontGetCharSize(ih, NULL, &charheight); + + line_height = charheight; + total_height = (line_height + IMAT_PADDING_H/2) * num_line - IMAT_PADDING_H/2 - IMAT_FRAME_H/2; + + if (lin==0) + { + int text_w; + iupdrvFontGetMultiLineStringSize(ih, text, &text_w, NULL); + if (text_w > x2 - x1 + 1 - IMAT_PADDING_W - IMAT_FRAME_W) + alignment = IMAT_T_LEFT; + } + + /* Set the color used to draw the text */ + if (!active) + cdCanvasForeground(ih->data->cddbuffer, IMAT_CD_INACTIVE_FGCOLOR); + else + iMatrixDrawSetFgColor(ih, lin, col, marked); + + /* Set the clip area to the cell region informed, the text maybe greatter than the cell */ + IUPMAT_CLIPAREA(ih, x1, x2, y1, y2); + cdCanvasClip(ih->data->cddbuffer, CD_CLIPAREA); + + cdCanvasNativeFont(ih->data->cddbuffer, iupMatrixGetFont(ih, lin, col)); + + /* Create an space between text and cell frame */ + x1 += IMAT_PADDING_W/2; x2 -= IMAT_PADDING_W/2; + y1 += IMAT_PADDING_H/2; y2 -= IMAT_PADDING_H/2; + + if (alignment == IMAT_T_CENTER) + cdCanvasTextAlignment(ih->data->cddbuffer, CD_CENTER); + else if(alignment == IMAT_T_LEFT) + cdCanvasTextAlignment(ih->data->cddbuffer, CD_WEST); + else + cdCanvasTextAlignment(ih->data->cddbuffer, CD_EAST); + + if (num_line == 1) + { + ypos = (int)((y1 + y2) / 2.0 - 0.5); + + /* Put the text */ + if (alignment == IMAT_T_CENTER) + IUPMAT_TEXT(ih, (x1 + x2) / 2, ypos, text); + else if(alignment == IMAT_T_LEFT) + IUPMAT_TEXT(ih, x1, ypos, text); + else + IUPMAT_TEXT(ih, x2, ypos, text); + } + else + { + int i; + char *p, *q, *newtext; + + newtext = iupStrDup(text); + p = newtext; + + /* Get the position of the first text to be put in the screen */ + ypos = (int)( (y1 + y2) / 2.0 - 0.5) - total_height/2 + line_height/2; + + for(i = 0; i < num_line; i++) + { + q = strchr(p, '\n'); + if (q) *q = 0; /* Cut the string to contain only one line */ + + /* Draw the text */ + if(alignment == IMAT_T_CENTER) + IUPMAT_TEXT(ih, (x1 + x2) / 2, ypos, p); + else if(alignment == IMAT_T_LEFT) + IUPMAT_TEXT(ih, x1, ypos, p); + else + IUPMAT_TEXT(ih, x2, ypos, p); + + /* Advance the string */ + if (q) p = q + 1; + + /* Advance a line */ + ypos += line_height + IMAT_PADDING_H/2; + } + + free(newtext); + } + + cdCanvasClip(ih->data->cddbuffer, CD_CLIPOFF); + } +} + +static void iMatrixDrawTitleCorner(Ihandle* ih) +{ + char str[100]; + long framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR")); + int active = iupdrvIsActive(ih); + IFniiiiiiC draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB"); + + iMatrixDrawBackground(ih, 0, ih->data->columns.sizes[0], 0, ih->data->lines.sizes[0], 0, active, 0, 0); + + iMatrixDrawFrameRectTitle(ih, 0, 0, 0, ih->data->columns.sizes[0], 0, ih->data->lines.sizes[0], framecolor, str); + + iMatrixDrawCellValue(ih, 0, ih->data->columns.sizes[0], 0, ih->data->lines.sizes[0], IMAT_T_CENTER, 0, active, 0, 0, draw_cb); +} + +static void iMatrixDrawMatrix(Ihandle* ih) +{ + iupMatrixPrepareDrawData(ih); + + /* fill the background because there will be empty cells */ + if ((ih->data->lines.num == 1) || (ih->data->columns.num == 1)) + { + cdCanvasBackground(ih->data->cddbuffer, cdIupConvertColor(ih->data->bgcolor_parent)); + cdCanvasClear(ih->data->cddbuffer); + } + + /* Draw the corner between line and column titles, if necessary */ + if (ih->data->lines.sizes[0] && ih->data->columns.sizes[0]) + iMatrixDrawTitleCorner(ih); + + /* If there are columns, then draw their titles */ + iupMatrixDrawColumnTitle(ih, ih->data->columns.first, ih->data->columns.last); + + /* If there are lines, then draw their titles */ + iupMatrixDrawLineTitle(ih, ih->data->lines.first, ih->data->lines.last); + + /* If there are cells in the matrix, then draw them */ + if ((ih->data->lines.num > 1) && (ih->data->columns.num > 1)) + iupMatrixDrawCells(ih, ih->data->lines.first, ih->data->columns.first, + ih->data->lines.last, ih->data->columns.last); +} + +static void iMatrixDrawFocus(Ihandle* ih) +{ + int x1, y1, x2, y2, dx, dy; + + if (iupAttribGetBoolean(ih, "HIDEFOCUS")) + return; + + if (!iupMatrixAuxIsCellVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)) + return; + + iupMatrixAuxGetVisibleCellDim(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, &x1, &y1, &dx, &dy); + + x2 = x1 + dx - 1; + y2 = y1 + dy - 1; + + if (ih->data->columns.focus_cell == 1 && ih->data->columns.sizes[0] == 0) + x1++; + if (ih->data->lines.focus_cell == 1 && ih->data->lines.sizes[0] == 0) + y1++; + + cdIupDrawFocusRect(ih, ih->data->cdcanvas, x1, iupMatrixInvertYAxis(ih, y1), x2, iupMatrixInvertYAxis(ih, y2)); +} + + +/**************************************************************************/ +/* Exported functions */ +/**************************************************************************/ + + +/* Draw the line titles, visible, between lin and lastlin, include it. + Line titles marked will be draw with the appropriate feedback. + -> lin1 - First line to have its title drawn + -> lin2 - Last line to have its title drawn */ +void iupMatrixDrawLineTitle(Ihandle* ih, int lin1, int lin2) +{ + int x1, y1, x2, y2; + int lin, alignment, active; + char str[100]; + long framecolor; + IFniiiiiiC draw_cb; + + if (!ih->data->columns.sizes[0]) + return; + + if (lin1 > ih->data->lines.last || + lin2 < ih->data->lines.first) + return; + + if (lin1 < ih->data->lines.first) + lin1 = ih->data->lines.first; + if (lin2 > ih->data->lines.last) + lin2 = ih->data->lines.last; + + /* Start the position of the line title */ + x1 = 0; + x2 = ih->data->columns.sizes[0]; + + y1 = ih->data->lines.sizes[0]; + for(lin = ih->data->lines.first; lin < lin1; lin++) + y1 += ih->data->lines.sizes[lin]; + + framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR")); + active = iupdrvIsActive(ih); + draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB"); + + alignment = iMatrixDrawGetColAlignment(ih, 0, str); + + /* Draw the titles */ + for(lin = lin1; lin <= lin2; lin++) + { + /* If it is a hidden line (size = 0), don't draw the title */ + if(ih->data->lines.sizes[lin] == 0) + continue; + + y2 = y1 + ih->data->lines.sizes[lin]; + + /* If it doesn't have title, the loop just calculate the final position */ + if (ih->data->columns.sizes[0]) + { + int marked = iupMatrixLineIsMarked(ih, lin); + + iMatrixDrawBackground(ih, x1, x2, y1, y2, marked, active, lin, 0); + + iMatrixDrawFrameRectTitle(ih, lin, 0, x1, x2, y1, y2, framecolor, str); + + iMatrixDrawCellValue(ih, x1, x2, y1, y2, alignment, marked, active, lin, 0, draw_cb); + } + + y1 = y2; + } +} + +/* Draw the column titles, visible, between col and lastcol, include it. + Column titles marked will be draw with the appropriate feedback. + -> col1 - First column to have its title drawn + -> col2 - Last column to have its title drawn */ +void iupMatrixDrawColumnTitle(Ihandle* ih, int col1, int col2) +{ + int x1, y1, x2, y2; + int col, active; + char str[100]; + long framecolor; + IFniiiiiiC draw_cb; + + if (!ih->data->lines.sizes[0]) + return; + + if (col1 > ih->data->columns.last || + col2 < ih->data->columns.first) + return; + + if (col1 < ih->data->columns.first) + col1 = ih->data->columns.first; + if (col2 > ih->data->columns.last) + col2 = ih->data->columns.last; + + /* Start the position of the first column title */ + y1 = 0; + y2 = ih->data->lines.sizes[0]; + + x1 = ih->data->columns.sizes[0]; + for(col = ih->data->columns.first; col < col1; col++) + x1 += ih->data->columns.sizes[col]; + + framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR")); + active = iupdrvIsActive(ih); + draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB"); + + /* Draw the titles */ + for(col = col1; col <= col2; col++) + { + /* If it is an hide column (size = 0), no draw the title */ + if(ih->data->columns.sizes[col] == 0) + continue; + + x2 = x1 + ih->data->columns.sizes[col]; + + /* If it doesn't have title, the loop just calculate the final position */ + if (ih->data->lines.sizes[0]) + { + int sort = 0; + int marked = iupMatrixColumnIsMarked(ih, col); + + iMatrixDrawBackground(ih, x1, x2, y1, y2, marked, active, 0, col); + + iMatrixDrawFrameRectTitle(ih, 0, col, x1, x2, y1, y2, framecolor, str); + + if (iMatrixDrawSortSign(ih, x2, y1, y2, col, active, str)) + sort = IMAT_COMBOBOX_W; /* same space is used by the sort sign */ + + iMatrixDrawCellValue(ih, x1, x2-sort, y1, y2, IMAT_T_CENTER, marked, active, 0, col, draw_cb); + } + + x1 = x2; + } +} + +/* Redraw a block of cells of the matrix. Handle marked cells, change + automatically the background color of them. + - lin1, col1 : cell coordinates that mark the left top corner of the area to be redrawn + - lin2, col2 : cell coordinates that mark the right bottom corner of the area to be redrawn */ +void iupMatrixDrawCells(Ihandle* ih, int lin1, int col1, int lin2, int col2) +{ + int x1, y1, x2, y2, old_x2, old_y1, old_y2; + int alignment, lin, col, active; + long framecolor, emptyarea_color = -1; + char str[100]; + IFnii mark_cb; + IFnii dropcheck_cb; + IFniiiiiiC draw_cb; + + x1 = 0; + x2 = ih->data->w-1; + y1 = 0; + y2 = ih->data->h-1; + + old_x2 = x2; + old_y1 = y1; + old_y2 = y2; + + if (col1 > ih->data->columns.last || + col2 < ih->data->columns.first || + lin1 > ih->data->lines.last || + lin2 < ih->data->lines.first) + return; + + if (col1 < ih->data->columns.first) + col1 = ih->data->columns.first; + if (col2 > ih->data->columns.last) + col2 = ih->data->columns.last; + if (lin1 < ih->data->lines.first) + lin1 = ih->data->lines.first; + if (lin2 > ih->data->lines.last) + lin2 = ih->data->lines.last; + + /* Find the initial position of the first column */ + x1 += ih->data->columns.sizes[0]; + for(col = ih->data->columns.first; col < col1; col++) + x1 += ih->data->columns.sizes[col]; + + /* Find the final position of the last column */ + x2 = x1; + for( ; col <= col2; col++) + x2 += ih->data->columns.sizes[col]; + + /* Find the initial position of the first line */ + y1 += ih->data->lines.sizes[0]; + for(lin = ih->data->lines.first; lin < lin1; lin++) + y1 += ih->data->lines.sizes[lin]; + + /* Find the final position of the last line */ + y2 = y1; + for( ; lin <= lin2; lin++) + y2 += ih->data->lines.sizes[lin]; + + if ((col2 == ih->data->columns.num-1) && (old_x2 > x2)) + { + emptyarea_color = cdIupConvertColor(ih->data->bgcolor_parent); + cdCanvasForeground(ih->data->cddbuffer, emptyarea_color); + + /* If it was drawn until the last column and remains space in the right of it, + then delete this area with the the background color. */ + IUPMAT_BOX(ih, x2, old_x2, old_y1, old_y2); + } + + if ((lin2 == ih->data->lines.num-1) && (old_y2 > y2)) + { + if (emptyarea_color == -1) + emptyarea_color = cdIupConvertColor(ih->data->bgcolor_parent); + cdCanvasForeground(ih->data->cddbuffer, emptyarea_color); + + /* If it was drawn until the last line visible and remains space below it, + then delete this area with the the background color. */ + IUPMAT_BOX(ih, 0, old_x2, y2, old_y2); + } + + /***** Draw the cell values and frame */ + old_y1 = y1; + framecolor = cdIupConvertColor(iupAttribGetStr(ih, "FRAMECOLOR")); + active = iupdrvIsActive(ih); + + mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); + dropcheck_cb = (IFnii)IupGetCallback(ih, "DROPCHECK_CB"); + draw_cb = (IFniiiiiiC)IupGetCallback(ih, "DRAW_CB"); + + for(col = col1; col <= col2; col++) /* For all the columns in the region */ + { + if (ih->data->columns.sizes[col] == 0) + continue; + + alignment = iMatrixDrawGetColAlignment(ih, col, str); + + x2 = x1 + ih->data->columns.sizes[col]; + + for(lin = lin1; lin <= lin2; lin++) /* For all lines in the region */ + { + int drop = 0; + int marked = 0; + + if (ih->data->lines.sizes[lin] == 0) + continue; + + y2 = y1 + ih->data->lines.sizes[lin]; + + /* If the cell is marked, then draw it with attenuation color */ + marked = iupMatrixMarkCellGet(ih, lin, col, mark_cb, str); + + iMatrixDrawBackground(ih, x1, x2, y1, y2, marked, active, lin, col); + + iMatrixDrawFrameRectCell(ih, lin, col, x1, x2, y1, y2, framecolor, str); + + if (dropcheck_cb && dropcheck_cb(ih, lin, col) == IUP_DEFAULT) + { + drop = IMAT_COMBOBOX_W; + iMatrixDrawComboFeedback(ih, x2, y1, y2, active, framecolor); + } + + /* draw the cell contents */ + iMatrixDrawCellValue(ih, x1, x2-drop, y1, y2, alignment, marked, active, lin, col, draw_cb); + + y1 = y2; + } + + x1 = x2; + y1 = old_y1; /* must reset also y */ + } +} + +void iupMatrixDraw(Ihandle* ih, int update) +{ + if (!ih->data->first_redraw) + return; + + if (ih->data->need_calcsize) + iupMatrixAuxCalcSizes(ih); + + iMatrixDrawMatrix(ih); + + if (update) + iupMatrixDrawUpdate(ih); +} + +void iupMatrixDrawUpdate(Ihandle* ih) +{ + cdCanvasFlush(ih->data->cddbuffer); + + if (ih->data->has_focus) + iMatrixDrawFocus(ih); +} + +int iupMatrixDrawSetRedrawAttrib(Ihandle* ih, const char* value) +{ + int type; + + if (value == NULL) + type = 0; + else if(value[0] == 'L' || value[0] == 'l') + type = IMAT_PROCESS_LIN; + else if(value[0] == 'C' || value[0] == 'c') + type = IMAT_PROCESS_COL; + else + type = 0; + + if (type) + { + int min = 0, max = 0; + value++; + + if(iupStrToIntInt(value, &min, &max, ':') != 2) + max = min; + + if (min > max) + return 0; + + iupMatrixPrepareDrawData(ih); + + if (ih->data->need_calcsize) + iupMatrixAuxCalcSizes(ih); + + if (ih->data->lines.sizes[0] && ih->data->columns.sizes[0]) + iMatrixDrawTitleCorner(ih); + + if (type == IMAT_PROCESS_LIN) + { + iupMatrixDrawLineTitle(ih, min, max); + iupMatrixDrawCells(ih, min, ih->data->columns.first, max, ih->data->columns.last); + } + else + { + iupMatrixDrawColumnTitle(ih, min, max); + iupMatrixDrawCells(ih, ih->data->lines.first, min, ih->data->lines.last, max); + } + } + else + { + iupMatrixAuxCalcSizes(ih); + iMatrixDrawMatrix(ih); + } + + iupMatrixDrawUpdate(ih); + return 0; +} diff --git a/iup/srccontrols/matrix/iupmat_draw.h b/iup/srccontrols/matrix/iupmat_draw.h new file mode 100755 index 0000000..03337e7 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_draw.h @@ -0,0 +1,31 @@ +/** \file + * \brief iupmatrix control + * draw functions. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_DRAW_H +#define __IUPMAT_DRAW_H + +#ifdef __cplusplus +extern "C" { +#endif + +void iupMatrixDrawCells(Ihandle* ih, int lin1, int col1, int lin2, int col2); +void iupMatrixDrawColumnTitle(Ihandle* ih, int col1, int col2); +void iupMatrixDrawLineTitle(Ihandle* ih, int lin1, int lin2); + +/* Render the visible cells and update display */ +void iupMatrixDraw(Ihandle* ih, int update); + +/* Update the display only */ +void iupMatrixDrawUpdate(Ihandle* ih); + +int iupMatrixDrawSetRedrawAttrib(Ihandle* ih, const char* value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_edit.c b/iup/srccontrols/matrix/iupmat_edit.c new file mode 100755 index 0000000..a7e0a74 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_edit.c @@ -0,0 +1,450 @@ +/** \file +* \brief iupmatrix edit +* Functions used to edit a node name in place. +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupcontrols.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" +#include "iup_childtree.h" + +#include "iupmat_def.h" +#include "iupmat_scroll.h" +#include "iupmat_aux.h" +#include "iupmat_edit.h" +#include "iupmat_key.h" +#include "iupmat_getset.h" +#include "iupmat_draw.h" + + +static int iMatrixEditCallDropdownCb(Ihandle* ih, int lin, int col) +{ + IFnnii cb = (IFnnii)IupGetCallback(ih, "DROP_CB"); + if(cb) + { + int ret; + char* value = iupMatrixCellGetValue(ih, lin, col); + if (!value) value = ""; + + iupAttribSetStr(ih->data->droph, "PREVIOUSVALUE", value); + IupSetAttribute(ih->data->droph, "VALUE", "1"); + + ret = cb(ih, ih->data->droph, lin, col); + + /* check if the user set an invalid value */ + if (IupGetInt(ih->data->droph, "VALUE") == 0) + IupSetAttribute(ih->data->droph, "VALUE", "1"); + + if(ret == IUP_DEFAULT) + return 1; + } + + return 0; +} + +static int iMatrixEditDropDownAction_CB(Ihandle* ih, char* t, int i, int v) +{ + Ihandle* ih_matrix = ih->parent; + IFniinsii cb = (IFniinsii)IupGetCallback(ih_matrix, "DROPSELECT_CB"); + if(cb) + { + int ret = cb(ih_matrix, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, ih, t, i, v); + + /* If the user returns IUP_CONTINUE in a dropselect_cb + the value is accepted and the matrix leaves edition mode. */ + if (ret == IUP_CONTINUE) + { + iupMatrixEditHide(ih_matrix); + iupMatrixDrawUpdate(ih); + } + } + + return IUP_DEFAULT; +} + +static void iMatrixEditChooseElement(Ihandle* ih, int lin, int col) +{ + int drop = iMatrixEditCallDropdownCb(ih, lin, col); + if(drop) + ih->data->datah = ih->data->droph; + else + { + char* value; + + ih->data->datah = ih->data->texth; + + /* dropdown values are set by the user in DROP_CB. + text value is set here from cell contents. */ + value = iupMatrixCellGetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell); + if (!value) value = ""; + IupSetAttribute(ih->data->texth, "VALUE", value); + } +} + +static int iMatrixEditCallEditionCb(Ihandle* ih, int mode, int update) +{ + int ret = iupMatrixAuxCallEditionCbLinCol(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, mode, update); + + if (update && ret == IUP_DEFAULT && mode == 0) /* leaving edition mode */ + iupMatrixCellUpdateValue(ih); + + return ret; +} + +static int iMatrixEditCancel(Ihandle* ih, int focus, int update, int ignore) +{ + if (IupGetInt(ih->data->datah, "VISIBLE")) + { + int ret; + + /* Avoid calling EDITION_CB twice. Usually because a killfocus. */ + if (iupAttribGet(ih, "_IUPMAT_CALL_EDITION")) + return IUP_DEFAULT; + + iupAttribSetStr(ih, "_IUPMAT_CALL_EDITION", "1"); + ret = iMatrixEditCallEditionCb(ih, 0, update); + iupAttribSetStr(ih, "_IUPMAT_CALL_EDITION", NULL); + + if (ret == IUP_IGNORE && ignore) + return IUP_IGNORE; + + IupSetAttribute(ih->data->datah, "VISIBLE", "NO"); + IupSetAttribute(ih->data->datah, "ACTIVE", "NO"); + + if (focus) + { + IupSetFocus(ih); + ih->data->has_focus = 1; /* set this so even if getfocus_cb is not called the focus is drawn */ + } +#ifdef SunOS + /* Usually when the edit control is hidden the matrix is automatically repainted by the system, except in SunOS. */ + iupMatrixDrawUpdate(ih); +#endif + } + + return IUP_DEFAULT; +} + +static int iMatrixEditKillFocus_CB(Ihandle* ih) +{ + Ihandle* ih_matrix = ih->parent; + if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Motif")) + { + if (iupAttribGet(ih_matrix, "_IUPMAT_DOUBLE_CLICK")) + return IUP_DEFAULT; + } + + iupMatrixEditForceHidden(ih_matrix); + return IUP_DEFAULT; +} + +int iupMatrixEditHide(Ihandle* ih) +{ + return iMatrixEditCancel(ih, 1, 1, 1); /* set focus + update + use ignore */ +} + +void iupMatrixEditForceHidden(Ihandle* ih) +{ + iMatrixEditCancel(ih, 0, 1, 0); /* no focus + update + no ignore */ +} + +int iupMatrixEditIsVisible(Ihandle* ih) +{ + if (!IupGetInt(ih, "ACTIVE")) + return 0; + + if (!IupGetInt(ih->data->datah, "VISIBLE")) + return 0; + + return 1; +} + +int iupMatrixEditShow(Ihandle* ih) +{ + char* mask; + int w, h, x, y; + + /* work around for Windows when using Multiline */ + if (iupAttribGet(ih, "_IUPMAT_IGNORE_SHOW")) + { + iupAttribSetStr(ih, "_IUPMAT_IGNORE_SHOW", NULL); + return 0; + } + + /* not active */ + if(!IupGetInt(ih, "ACTIVE")) + return 0; + + /* already visible */ + if(IupGetInt(ih->data->datah, "VISIBLE")) + return 0; + + /* notify application */ + if (iMatrixEditCallEditionCb(ih, 1, 0) == IUP_IGNORE) + return 0; + + /* select edit control */ + iMatrixEditChooseElement(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell); + + /* position the cell to make it visible */ + /* If the focus is not visible, a scroll is done for that the focus to be visible */ + if (!iupMatrixAuxIsCellFullVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)) + iupMatrixScrollToVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell); + + /* set attributes */ + iupMatrixPrepareDrawData(ih); + IupStoreAttribute(ih->data->datah, "BGCOLOR", iupMatrixGetBgColor(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)); + IupStoreAttribute(ih->data->datah, "FGCOLOR", iupMatrixGetFgColor(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)); + IupSetAttribute(ih->data->datah, "FONT", iupMatrixGetFont(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)); + + mask = IupMatGetAttribute(ih,"MASK", ih->data->lines.focus_cell, ih->data->columns.focus_cell); + if (mask) + { + IupSetAttribute(ih->data->datah, "MASKCASEI", IupMatGetAttribute(ih,"MASKCASEI", ih->data->lines.focus_cell, ih->data->columns.focus_cell)); + IupSetAttribute(ih->data->datah, "MASK", mask); + } + else + { + mask = IupMatGetAttribute(ih,"MASKINT", ih->data->lines.focus_cell, ih->data->columns.focus_cell); + if (mask) + IupSetAttribute(ih->data->datah, "MASKINT", mask); + else + { + mask = IupMatGetAttribute(ih,"MASKFLOAT", ih->data->lines.focus_cell, ih->data->columns.focus_cell); + if (mask) + IupSetAttribute(ih->data->datah, "MASKFLOAT", mask); + } + } + + /* calc size */ + iupMatrixAuxGetVisibleCellDim(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, &x, &y, &w, &h); + + ih->data->datah->x = x; + ih->data->datah->y = y; + if (IupGetGlobal("GTKVERSION")) + { + /* In GTK, IupCanvas is not the actual container of the IupText/IupList */ + ih->data->datah->x += ih->x; + ih->data->datah->y += ih->y; + } + + ih->data->datah->currentwidth = w; + ih->data->datah->currentheight = h; + iupClassObjectLayoutUpdate(ih->data->datah); + + /* activate and show */ + IupSetAttribute(ih->data->datah, "ACTIVE", "YES"); + IupSetAttribute(ih->data->datah, "VISIBLE", "YES"); + IupSetFocus(ih->data->datah); + + return 1; +} + +static int iMatrixEditTextAction_CB(Ihandle* ih, int c, char* after) +{ + Ihandle* ih_matrix = ih->parent; + IFniiiis cb = (IFniiiis) IupGetCallback(ih_matrix, "ACTION_CB"); + if (cb && c!=0) /* only for valid characters */ + { + int oldc = c; + c = cb(ih_matrix, c, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, 1, after); + if (c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE) + return c; + else if(c == IUP_DEFAULT) + c = oldc; + return c; + } + + return IUP_DEFAULT; +} + +static int iMatrixEditTextKeyAny_CB(Ihandle* ih, int c) +{ + Ihandle* ih_matrix = ih->parent; + IFniiiis cb = (IFniiiis) IupGetCallback(ih_matrix, "ACTION_CB"); + if (cb && c==0) /* only for other characters */ + { + int oldc = c; + c = cb(ih_matrix, c, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, 1, IupGetAttribute(ih, "VALUE")); + if(c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE) + return c; + else if(c == IUP_DEFAULT) + c = oldc; + } + + switch (c) + { + case K_cUP: + case K_cDOWN: + case K_cLEFT: + case K_cRIGHT: + if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT) + { + iupMatrixProcessKeyPress(ih_matrix, c); + return IUP_IGNORE; + } + break; + case K_UP: + if (IupGetInt(ih, "CARET") == 1) + { + /* if at the first line of the text */ + if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT) + { + iupMatrixProcessKeyPress(ih_matrix, c); + return IUP_IGNORE; + } + } + break; + case K_DOWN: + { + char* value = IupGetAttribute(ih, "VALUE"); + if (value) + { + /* if at the last line of the text */ + if (iupStrLineCount(value) == IupGetInt(ih, "CARET")) + { + if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT) + { + iupMatrixProcessKeyPress(ih_matrix, c); + return IUP_IGNORE; + } + } + } + } + break; + case K_LEFT: + if (IupGetInt(ih, "CARETPOS") == 0) + { + /* if at the first character */ + if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT) + { + iupMatrixProcessKeyPress(ih_matrix, c); + return IUP_IGNORE; + } + } + break; + case K_RIGHT: + { + char* value = IupGetAttribute(ih, "VALUE"); + if (value) + { + /* if at the last character */ + if ((int)strlen(value) == IupGetInt(ih, "CARETPOS")) + { + if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT) + { + iupMatrixProcessKeyPress(ih_matrix, c); + return IUP_IGNORE; + } + } + } + } + break; + case K_ESC: + iMatrixEditCancel(ih_matrix, 1, 0, 0); /* set focus + NO update + NO ignore */ + return IUP_IGNORE; + case K_CR: + if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT) + { + if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Win32") && IupGetInt(ih, "MULTILINE")) + { + /* work around for Windows when using Multiline */ + iupAttribSetStr(ih_matrix, "_IUPMAT_IGNORE_SHOW", "1"); + } + + if (iupMatrixAuxCallLeaveCellCb(ih_matrix) != IUP_IGNORE) + { + iupMatrixScrollKeyCr(ih_matrix); + iupMatrixAuxCallEnterCellCb(ih_matrix); + } + iupMatrixDrawUpdate(ih_matrix); + return IUP_IGNORE; + } + break; + } + + return IUP_CONTINUE; +} + +static int iMatrixEditDropDownKeyAny_CB(Ihandle* ih, int c) +{ + Ihandle* ih_matrix = ih->parent; + IFniiiis cb = (IFniiiis)IupGetCallback(ih_matrix, "ACTION_CB"); + if (cb) + { + int oldc = c; + c = cb(ih_matrix, c, ih_matrix->data->lines.focus_cell, ih_matrix->data->columns.focus_cell, 1, ""); + if (c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE) + return c; + else if(c == IUP_DEFAULT) + c = oldc; + } + + switch (c) + { + case K_CR: + if (iupMatrixEditHide(ih_matrix) == IUP_DEFAULT) + { + if (iupMatrixAuxCallLeaveCellCb(ih_matrix) != IUP_IGNORE) + { + iupMatrixScrollKeyCr(ih_matrix); + iupMatrixAuxCallEnterCellCb(ih_matrix); + } + iupMatrixDrawUpdate(ih_matrix); + return IUP_IGNORE; + } + break; + case K_ESC: + iMatrixEditCancel(ih_matrix, 1, 0, 0); /* set focus + NO update + NO ignore */ + return IUP_IGNORE; + } + + return IUP_CONTINUE; +} + +char* iupMatrixEditGetValue(Ihandle* ih) +{ + if (ih->data->datah == ih->data->droph) + return IupGetAttribute(ih->data->droph, IupGetAttribute(ih->data->droph, "VALUE")); + else + return IupGetAttribute(ih->data->texth, "VALUE"); +} + +void iupMatrixEditCreate(Ihandle* ih) +{ + /******** EDIT *************/ + ih->data->texth = IupText(NULL); + iupChildTreeAppend(ih, ih->data->texth); + + IupSetCallback(ih->data->texth, "ACTION", (Icallback)iMatrixEditTextAction_CB); + IupSetCallback(ih->data->texth, "K_ANY", (Icallback)iMatrixEditTextKeyAny_CB); + IupSetCallback(ih->data->texth, "KILLFOCUS_CB", (Icallback)iMatrixEditKillFocus_CB); + IupSetAttribute(ih->data->texth, "VALUE", ""); + IupSetAttribute(ih->data->texth, "VISIBLE", "NO"); + IupSetAttribute(ih->data->texth, "ACTIVE", "NO"); + + + /******** DROPDOWN *************/ + ih->data->droph = IupList(NULL); + iupChildTreeAppend(ih, ih->data->droph); + + IupSetCallback(ih->data->droph, "ACTION", (Icallback)iMatrixEditDropDownAction_CB); + IupSetCallback(ih->data->droph, "KILLFOCUS_CB", (Icallback)iMatrixEditKillFocus_CB); + IupSetCallback(ih->data->droph, "K_ANY", (Icallback)iMatrixEditDropDownKeyAny_CB); + IupSetAttribute(ih->data->droph, "DROPDOWN", "YES"); + IupSetAttribute(ih->data->droph, "MULTIPLE", "NO"); + IupSetAttribute(ih->data->droph, "VISIBLE", "NO"); + IupSetAttribute(ih->data->droph, "ACTIVE", "NO"); +} diff --git a/iup/srccontrols/matrix/iupmat_edit.h b/iup/srccontrols/matrix/iupmat_edit.h new file mode 100755 index 0000000..9a7815f --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_edit.h @@ -0,0 +1,26 @@ +/** \file + * \brief iupmatrix. + * Functions used to edit a cell in place. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_EDIT_H +#define __IUPMAT_EDIT_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixEditIsVisible (Ihandle *ih); +int iupMatrixEditShow (Ihandle* ih); +int iupMatrixEditHide (Ihandle* ih); +void iupMatrixEditForceHidden(Ihandle* ih); +char* iupMatrixEditGetValue (Ihandle* ih); +void iupMatrixEditCreate (Ihandle* ih); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_focus.c b/iup/srccontrols/matrix/iupmat_focus.c new file mode 100755 index 0000000..3c000f8 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_focus.c @@ -0,0 +1,58 @@ +/** \file + * \brief iupmatrix focus control + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_aux.h" +#include "iupmat_focus.h" +#include "iupmat_draw.h" + + +void iupMatrixFocusSet(Ihandle* ih, int lin, int col) +{ + ih->data->lines.focus_cell = lin; + ih->data->columns.focus_cell = col; +} + +int iupMatrixFocus_CB(Ihandle* ih, int focus) +{ + int rc = IUP_DEFAULT; + + if (!iupMatrixIsValid(ih, 1)) + return IUP_DEFAULT; + + if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Motif")) + { + if (focus && iupAttribGet(ih, "_IUPMAT_DOUBLE_CLICK")) + { + iupAttribSetStr(ih, "_IUPMAT_DOUBLE_CLICK", NULL); + return IUP_DEFAULT; + } + } + + ih->data->has_focus = focus; + iupMatrixDrawUpdate(ih); + + if (focus) + iupMatrixAuxCallEnterCellCb(ih); + else + iupMatrixAuxCallLeaveCellCb(ih); + + return rc; +} + + diff --git a/iup/srccontrols/matrix/iupmat_focus.h b/iup/srccontrols/matrix/iupmat_focus.h new file mode 100755 index 0000000..75f5894 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_focus.h @@ -0,0 +1,21 @@ +/** \file + * \brief iupmatrix focus control. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_FOCUS_H +#define __IUPMAT_FOCUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixFocus_CB(Ihandle* ih, int focus); +void iupMatrixFocusSet(Ihandle* ih, int lin, int col); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_getset.c b/iup/srccontrols/matrix/iupmat_getset.c new file mode 100755 index 0000000..34947b6 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_getset.c @@ -0,0 +1,358 @@ +/** \file + * \brief iupmatrix setget control + * attributes set and get + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_drvfont.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_childtree.h" + +#include "iupmat_def.h" +#include "iupmat_getset.h" +#include "iupmat_edit.h" +#include "iupmat_draw.h" +#include "iupmat_aux.h" + + +int iupMatrixCheckCellPos(Ihandle* ih, int lin, int col) +{ + /* Check if the cell exists */ + if ((lin < 0) || (col < 0) || (lin > ih->data->lines.num-1) || (col > ih->data->columns.num-1)) + return 0; + + return 1; +} + +void iupMatrixCellSetValue(Ihandle* ih, int lin, int col, const char* value) +{ + if (ih->data->callback_mode) + return; + + if (ih->data->cells[lin][col].value) + free(ih->data->cells[lin][col].value); + + ih->data->cells[lin][col].value = iupStrDup(value); + + if (lin==0 || col==0) + ih->data->need_calcsize = 1; +} + +char* iupMatrixCellGetValue (Ihandle* ih, int lin, int col) +{ + if (!ih->handle) + { + char str[100]; + sprintf(str, "%d:%d", lin, col); + return iupAttribGet(ih, str); + } + else + { + if (ih->data->callback_mode) + { + sIFnii value_cb = (sIFnii)IupGetCallback(ih, "VALUE_CB"); + return value_cb(ih, lin, col); + } + else + return ih->data->cells[lin][col].value; + } +} + +void iupMatrixCellSetFlag(Ihandle* ih, int lin, int col, unsigned char attr, int set) +{ + if (!ih->handle) + return; + + if (lin==-1) + { + if ((col < 0) || (col > ih->data->columns.num-1)) + return; + + if (set) + ih->data->columns.flags[col] |= attr; + else + ih->data->columns.flags[col] &= ~attr; + } + else if (col == -1) + { + if ((lin < 0) || (lin > ih->data->lines.num-1)) + return; + + if (set) + ih->data->lines.flags[lin] |= attr; + else + ih->data->lines.flags[lin] &= ~attr; + } + else + { + if (!ih->data->callback_mode) + { + if ((lin < 0) || (col < 0) || (lin > ih->data->lines.num-1) || (col > ih->data->columns.num-1)) + return; + + if (set) + ih->data->cells[lin][col].flags |= attr; + else + ih->data->cells[lin][col].flags &= ~attr; + } + } +} + +void iupMatrixCellUpdateValue(Ihandle* ih) +{ + IFniis value_edit_cb; + char *value = iupMatrixEditGetValue(ih); + + iupMatrixCellSetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, value); + + value_edit_cb = (IFniis)IupGetCallback(ih, "VALUE_EDIT_CB"); + if (value_edit_cb) + value_edit_cb(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, value); + + iupMatrixPrepareDrawData(ih); + iupMatrixDrawCells(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, ih->data->lines.focus_cell, ih->data->columns.focus_cell); +} + +void iupMatrixPrepareDrawData(Ihandle* ih) +{ + /* FGCOLOR, BGCOLOR and FONT */ + iupAttribStoreStr(ih, "_IUPMAT_BGCOLOR_PARENT", iupControlBaseGetParentBgColor(ih)); + iupAttribStoreStr(ih, "_IUPMAT_BGCOLOR", IupGetAttribute(ih, "BGCOLOR")); + iupAttribStoreStr(ih, "_IUPMAT_FGCOLOR", IupGetAttribute(ih, "FGCOLOR")); + iupAttribStoreStr(ih, "_IUPMAT_FONT", IupGetAttribute(ih, "FONT")); + + ih->data->bgcolor_parent = iupAttribGet(ih, "_IUPMAT_BGCOLOR_PARENT"); + ih->data->bgcolor = iupAttribGet(ih, "_IUPMAT_BGCOLOR"); + ih->data->fgcolor = iupAttribGet(ih, "_IUPMAT_FGCOLOR"); + ih->data->font = iupAttribGet(ih, "_IUPMAT_FONT"); + + ih->data->font_cb = (sIFnii)IupGetCallback(ih, "FONT_CB"); + ih->data->fgcolor_cb = (IFniiIII)IupGetCallback(ih, "FGCOLOR_CB"); + ih->data->bgcolor_cb = (IFniiIII)IupGetCallback(ih, "BGCOLOR_CB"); +} + +static char* iMatrixGetCellAttrib(Ihandle* ih, unsigned char attr, int lin, int col, int native_parent) +{ + char* value = NULL; + char attrib_id[100]; + const char* attrib = NULL; + char* attrib_global = NULL; + + if (attr == IUPMAT_FONT) + { + attrib = "FONT"; + attrib_global = ih->data->font; + } + else if (attr == IUPMAT_BGCOLOR) + { + attrib = "BGCOLOR"; + attrib_global = ih->data->bgcolor; + } + else if (attr == IUPMAT_FGCOLOR) + { + attrib = "FGCOLOR"; + attrib_global = ih->data->fgcolor; + } + + /* 1 - check for this cell */ + if (ih->data->callback_mode || ih->data->cells[lin][col].flags & attr) + { + sprintf(attrib_id, "%s%d:%d", attrib, lin, col); + value = iupAttribGet(ih, attrib_id); + } + if (!value) + { + /* 2 - check for this line, if not title col */ + if (col != 0) + { + if (ih->data->lines.flags[lin] & attr) + { + sprintf(attrib_id, "%s%d:*", attrib, lin); + value = iupAttribGet(ih, attrib_id); + } + } + + if (!value) + { + /* 3 - check for this column, if not title line */ + if (lin != 0) + { + if (ih->data->columns.flags[col] & attr) + { + sprintf(attrib_id,"%s*:%d", attrib, col); + value = iupAttribGet(ih, attrib_id); + } + } + + if (!value) + { + /* 4 - check for the matrix or native parent */ + if (native_parent) + value = ih->data->bgcolor_parent; + else + value = attrib_global; + } + } + } + + return value; +} + +static int iMatrixCallColorCB(Ihandle* ih, IFniiIII cb, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b) +{ + int ir, ig, ib, ret; + ret = cb(ih, lin, col, &ir, &ig, &ib); + *r = iupBYTECROP(ir); + *g = iupBYTECROP(ig); + *b = iupBYTECROP(ib); + return ret; +} + +char* iupMatrixGetFgColor(Ihandle* ih, int lin, int col) +{ + unsigned char r = 0, g = 0, b = 0; + /* called from Edit only */ + if (!ih->data->fgcolor_cb || (iMatrixCallColorCB(ih, ih->data->fgcolor_cb, lin, col, &r, &g, &b) == IUP_IGNORE)) + { + char* fgcolor = iMatrixGetCellAttrib(ih, IUPMAT_FGCOLOR, lin, col, 0); + if (!fgcolor) + { + if (lin ==0 || col == 0) + fgcolor = IupGetGlobal("DLGFGCOLOR"); + else + fgcolor = IupGetGlobal("TXTFGCOLOR"); + } + return fgcolor; + } + else + { + char* buffer = iupStrGetMemory(30); + sprintf(buffer, "%d %d %d", r, g, b); + return buffer; + } +} + +void iupMatrixGetFgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b) +{ + /* called from Draw only */ + if (!ih->data->fgcolor_cb || (iMatrixCallColorCB(ih, ih->data->fgcolor_cb, lin, col, r, g, b) == IUP_IGNORE)) + { + char* fgcolor = iMatrixGetCellAttrib(ih, IUPMAT_FGCOLOR, lin, col, 0); + if (!fgcolor) + { + if (lin ==0 || col == 0) + fgcolor = IupGetGlobal("DLGFGCOLOR"); + else + fgcolor = IupGetGlobal("TXTFGCOLOR"); + } + iupStrToRGB(fgcolor, r, g, b); + } +} + +char* iupMatrixGetBgColor(Ihandle* ih, int lin, int col) +{ + unsigned char r = 0, g = 0, b = 0; + /* called from Edit only */ + if (!ih->data->bgcolor_cb || (iMatrixCallColorCB(ih, ih->data->bgcolor_cb, lin, col, &r, &g, &b) == IUP_IGNORE)) + { + int native_parent = 0; + if (lin == 0 || col == 0) + native_parent = 1; + return iMatrixGetCellAttrib(ih, IUPMAT_BGCOLOR, lin, col, native_parent); + } + else + { + char* buffer = iupStrGetMemory(30); + sprintf(buffer, "%d %d %d", r, g, b); + return buffer; + } +} + +#define IMAT_DARKER(_x) (((_x)*9)/10) + +void iupMatrixGetBgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b) +{ + /* called from Draw only */ + if (!ih->data->bgcolor_cb || (iMatrixCallColorCB(ih, ih->data->bgcolor_cb, lin, col, r, g, b) == IUP_IGNORE)) + { + int native_parent = 0; + if (lin == 0 || col == 0) + native_parent = 1; + iupStrToRGB(iMatrixGetCellAttrib(ih, IUPMAT_BGCOLOR, lin, col, native_parent), r, g, b); + if (native_parent) + { + int ir = IMAT_DARKER(*r), ig=IMAT_DARKER(*g), ib=IMAT_DARKER(*b); /* use a darker version of the background by 10% */ + *r = iupBYTECROP(ir); + *g = iupBYTECROP(ig); + *b = iupBYTECROP(ib); + } + } +} + +char* iupMatrixGetFont(Ihandle* ih, int lin, int col) +{ + char* font = NULL; + /* called from Draw and Edit only */ + if (ih->data->font_cb) + font = ih->data->font_cb(ih, lin, col); + if (!font) + font = iMatrixGetCellAttrib(ih, IUPMAT_FONT, lin, col, 0); + return font; +} + +char *iupMatrixGetSize(Ihandle* ih, int index, int m, int pixels) +{ + char* str; + int size; + ImatLinColData *lincol_data; + + if(m == IMAT_PROCESS_LIN) + lincol_data = &(ih->data->lines); + else + lincol_data = &(ih->data->columns); + + if (index < 0 || index > lincol_data->num-1) + return NULL; + + if (m == IMAT_PROCESS_LIN) + size = iupMatrixAuxGetLineHeight(ih, index); + else + size = iupMatrixAuxGetColumnWidth(ih, index); + + str = iupStrGetMemory(100); + + if (size) + { + /* remove the decoration added in iupMatrixAuxGet */ + if (m == IMAT_PROCESS_COL) + size -= IMAT_PADDING_W + IMAT_FRAME_W; + else + size -= IMAT_PADDING_H + IMAT_FRAME_H; + + if (!pixels) + { + int charwidth, charheight; + iupdrvFontGetCharSize(ih, &charwidth, &charheight); + if (m == IMAT_PROCESS_COL) + size = iupRASTER2WIDTH(size, charwidth); + else + size = iupRASTER2HEIGHT(size, charheight); + } + } + + sprintf(str, "%d", size); + return str; +} diff --git a/iup/srccontrols/matrix/iupmat_getset.h b/iup/srccontrols/matrix/iupmat_getset.h new file mode 100755 index 0000000..9ae3d07 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_getset.h @@ -0,0 +1,37 @@ +/** \file + * \brief iupmatrix control + * attributes set and get. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_GETSET_H +#define __IUPMAT_GETSET_H + +#ifdef __cplusplus +extern "C" { +#endif + +void iupMatrixCellSetValue(Ihandle* ih, int lin, int col, const char* value); +char* iupMatrixCellGetValue(Ihandle* ih, int lin, int col); + +void iupMatrixCellSetFlag(Ihandle* ih, int lin, int col, unsigned char attr, int set); + +void iupMatrixPrepareDrawData(Ihandle* ih); +char* iupMatrixGetFgColor(Ihandle* ih, int lin, int col); +char* iupMatrixGetBgColor(Ihandle* ih, int lin, int col); +char* iupMatrixGetFont (Ihandle* ih, int lin, int col); +void iupMatrixGetBgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b); +void iupMatrixGetFgRGB(Ihandle* ih, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b); + +void iupMatrixCellUpdateValue(Ihandle* ih); + +char* iupMatrixGetSize(Ihandle* ih, int index, int m, int pixels); + +int iupMatrixCheckCellPos(Ihandle* ih, int lin, int col); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_key.c b/iup/srccontrols/matrix/iupmat_key.c new file mode 100755 index 0000000..ae9ed55 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_key.c @@ -0,0 +1,229 @@ +/** \file + * \brief iupmatrix control + * keyboard control + * + * See Copyright Notice in "iup.h" + */ + +/**************************************************************************/ +/* Functions to control keys in the matrix and in the text edition */ +/**************************************************************************/ + +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupkey.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_scroll.h" +#include "iupmat_focus.h" +#include "iupmat_aux.h" +#include "iupmat_getset.h" +#include "iupmat_key.h" +#include "iupmat_mark.h" +#include "iupmat_edit.h" +#include "iupmat_draw.h" + + +int iupMatrixProcessKeyPress(Ihandle* ih, int c) +{ + int ret = IUP_IGNORE; /* default for processed keys */ + + /* If the focus is not visible, a scroll is done for that the focus to be visible */ + if (!iupMatrixAuxIsCellFullVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)) + iupMatrixScrollToVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell); + + switch (c) + { + case K_cHOME: + case K_sHOME: + case K_HOME: + if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyHome(ih); + ih->data->homekeycount++; + iupMatrixAuxCallEnterCellCb(ih); + break; + + case K_cEND: + case K_sEND: + case K_END: + if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyEnd(ih); + ih->data->endkeycount++; + iupMatrixAuxCallEnterCellCb(ih); + break; + + case K_sTAB: + case K_TAB: + return IUP_CONTINUE; /* do not redraw */ + + case K_cLEFT: + case K_sLEFT: + case K_LEFT: + if (iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyLeft(ih); + iupMatrixAuxCallEnterCellCb(ih); + break; + + case K_cRIGHT: + case K_sRIGHT: + case K_RIGHT: + if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyRight(ih); + iupMatrixAuxCallEnterCellCb(ih); + break; + + case K_cUP: + case K_sUP: + case K_UP: + if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyUp(ih); + iupMatrixAuxCallEnterCellCb(ih); + break ; + + case K_cDOWN: + case K_sDOWN: + case K_DOWN: + if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyDown(ih); + iupMatrixAuxCallEnterCellCb(ih); + break; + + case K_sPGUP: + case K_PGUP: + if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyPgUp(ih); + iupMatrixAuxCallEnterCellCb(ih); + break; + + case K_sPGDN: + case K_PGDN: + if(iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + break; + iupMatrixScrollKeyPgDown(ih); + iupMatrixAuxCallEnterCellCb(ih); + break; + + case K_F2: + case K_SP: + case K_CR: + case K_sCR: + if (iupMatrixEditShow(ih)) + return IUP_IGNORE; /* do not redraw */ + break; + + case K_sDEL: + case K_DEL: + { + int lin, col; + char str[100]; + IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); + + iupMatrixPrepareDrawData(ih); + + for(lin = 1; lin < ih->data->lines.num; lin++) + { + for(col = 1; col < ih->data->columns.num; col++) + { + if (iupMatrixMarkCellGet(ih, lin, col, mark_cb, str)) + { + if (iupMatrixAuxCallEditionCbLinCol(ih, lin, col, 1, 1) != IUP_IGNORE) + { + IFniis value_edit_cb; + + iupMatrixCellSetValue(ih, lin, col, NULL); + + value_edit_cb = (IFniis)IupGetCallback(ih, "VALUE_EDIT_CB"); + if (value_edit_cb) + value_edit_cb(ih, lin, col, NULL); + + iupMatrixDrawCells(ih, lin, col, lin, col); + } + } + } + } + break; + } + default: + /* if a valid character is pressed enter edition mode */ + if (iup_isprint(c)) + { + if (iupMatrixEditShow(ih)) + { + if (ih->data->datah == ih->data->texth) + { + char value[2] = {0,0}; + value[0] = (char)c; + IupStoreAttribute(ih->data->datah, "VALUE", value); + IupSetAttribute(ih->data->datah, "CARET", "2"); + } + return IUP_IGNORE; /* do not redraw */ + } + } + ret = IUP_DEFAULT; /* unprocessed keys */ + break; + } + + iupMatrixDrawUpdate(ih); + return ret; +} + +void iupMatrixKeyResetHomeEndCount(Ihandle* ih) +{ + ih->data->homekeycount = 0; + ih->data->endkeycount = 0; +} + +int iupMatrixKeyPress_CB(Ihandle* ih, int c, int press) +{ + int oldc = c; + IFniiiis cb; + + if (!iupMatrixIsValid(ih, 1)) + return IUP_DEFAULT; + + if (!press) + return IUP_DEFAULT; + + cb = (IFniiiis)IupGetCallback(ih, "ACTION_CB"); + if (cb) + { + if (iup_isprint(c)) + { + char value[2]={0,0}; + value[0] = (char)c; + c = cb(ih, c, ih->data->lines.focus_cell, ih->data->columns.focus_cell, 0, value); + } + else + { + c = cb(ih, c, ih->data->lines.focus_cell, ih->data->columns.focus_cell, 0, + iupMatrixCellGetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)); + } + + if (c == IUP_IGNORE || c == IUP_CLOSE || c == IUP_CONTINUE) + return c; + else if (c == IUP_DEFAULT) + c = oldc; + } + + if (c != K_HOME && c != K_sHOME) + ih->data->homekeycount = 0; + if (c != K_END && c != K_sEND) + ih->data->endkeycount = 0; + + return iupMatrixProcessKeyPress(ih, c); +} diff --git a/iup/srccontrols/matrix/iupmat_key.h b/iup/srccontrols/matrix/iupmat_key.h new file mode 100755 index 0000000..1062dd0 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_key.h @@ -0,0 +1,23 @@ +/** \file + * \brief iupmatrix. keyboard control. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_KEY_H +#define __IUPMAT_KEY_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixKeyPress_CB(Ihandle* ih, int c, int press); +int iupMatrixProcessKeyPress(Ihandle* ih, int c); + +void iupMatrixKeyResetHomeEndCount(Ihandle* ih); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_mark.c b/iup/srccontrols/matrix/iupmat_mark.c new file mode 100755 index 0000000..99aad32 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_mark.c @@ -0,0 +1,720 @@ +/** \file + * \brief iupmatrix control + * cell selection + * + * See Copyright Notice in "iup.h" + */ + +/**************************************************************************/ +/* Functions to cell selection (mark) */ +/**************************************************************************/ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_mark.h" +#include "iupmat_getset.h" +#include "iupmat_draw.h" + + +static void iMatrixMarkLinSet(Ihandle* ih, int lin, int mark) +{ + /* called when MARKMODE=LIN */ + if (mark==-1) + mark = !(ih->data->lines.flags[lin] & IUPMAT_MARK); + + if (mark) + ih->data->lines.flags[lin] |= IUPMAT_MARK; + else + ih->data->lines.flags[lin] &= ~IUPMAT_MARK; +} + +static void iMatrixMarkColSet(Ihandle* ih, int col, int mark) +{ + /* called when MARKMODE=COL */ + if (mark==-1) + mark = !(ih->data->columns.flags[col] & IUPMAT_MARK); + + if (mark) + ih->data->columns.flags[col] |= IUPMAT_MARK; + else + ih->data->columns.flags[col] &= ~IUPMAT_MARK; +} + +static void iMatrixMarkCellSet(Ihandle* ih, int lin, int col, int mark, IFniii markedit_cb, IFnii mark_cb, char* str) +{ + /* called only when MARKMODE=CELL */ + if (mark == -1) + mark = !iupMatrixMarkCellGet(ih, lin, col, mark_cb, str); + + if (ih->data->callback_mode) + { + if (markedit_cb) + markedit_cb(ih, lin, col, mark); + else + { + sprintf(str, "MARK%d:%d", lin, col); + if (mark) + iupAttribSetStr(ih, str, "1"); + else + iupAttribSetStr(ih, str, NULL); + } + } + else + { + if (mark) + ih->data->cells[lin][col].flags |= IUPMAT_MARK; + else + ih->data->cells[lin][col].flags &= ~IUPMAT_MARK; + } +} + +int iupMatrixMarkCellGet(Ihandle* ih, int lin, int col, IFnii mark_cb, char* str) +{ + /* called independent from MARKMODE */ + + if (ih->data->mark_mode == IMAT_MARK_NO) + return 0; + + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + if (ih->data->callback_mode) + { + if (mark_cb) + return mark_cb(ih, lin, col); + else + { + int mark = 0; + char* value; + sprintf(str, "MARK%d:%d", lin, col); + value = iupAttribGet(ih, str); + iupStrToInt(value, &mark); + return mark; + } + } + else + return ih->data->cells[lin][col].flags & IUPMAT_MARK; + } + else + { + if (ih->data->lines.flags[lin] & IUPMAT_MARK || ih->data->columns.flags[col] & IUPMAT_MARK) + return 1; + else + return 0; + } +} + +static void iMatrixMarkItem(Ihandle* ih, int lin1, int col1, int mark, IFniii markedit_cb, IFnii mark_cb, char* str) +{ + int lin, col; + + if (ih->data->mark_full1 == IMAT_PROCESS_LIN) + { + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + for (col = 1; col < ih->data->columns.num; col++) + iMatrixMarkCellSet(ih, lin1, col, mark, markedit_cb, mark_cb, str); + } + else + { + iMatrixMarkLinSet(ih, lin1, mark); + iupMatrixDrawLineTitle(ih, lin1, lin1); + } + + iupMatrixDrawCells(ih, lin1, 1, lin1, ih->data->columns.num-1); + } + else if (ih->data->mark_full1 == IMAT_PROCESS_COL) + { + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + for(lin = 1; lin < ih->data->lines.num; lin++) + iMatrixMarkCellSet(ih, lin, col1, mark, markedit_cb, mark_cb, str); + } + else + { + iMatrixMarkColSet(ih, col1, mark); + iupMatrixDrawColumnTitle(ih, col1, col1); + } + + iupMatrixDrawCells(ih, 1, col1, ih->data->lines.num-1, col1); + } + else if (ih->data->mark_mode == IMAT_MARK_CELL) + { + iMatrixMarkCellSet(ih, lin1, col1, mark, markedit_cb, mark_cb, str); + iupMatrixDrawCells(ih, lin1, col1, lin1, col1); + } +} + +static void iMatrixMarkBlock(Ihandle* ih, int lin1, int col1, int lin2, int col2, int mark, IFniii markedit_cb, IFnii mark_cb, char* str) +{ + int lin, col; + + if (lin1 > lin2) {int t = lin1; lin1 = lin2; lin2 = t;} + if (col1 > col2) {int t = col1; col1 = col2; col2 = t;} + + if (ih->data->mark_full1 == IMAT_PROCESS_LIN) + { + for(lin=lin1; lin<=lin2; lin++) + iMatrixMarkItem(ih, lin, 0, mark, markedit_cb, mark_cb, str); + } + else if(ih->data->mark_full1 == IMAT_PROCESS_COL) + { + for(col=col1; col<=col2; col++) + iMatrixMarkItem(ih, 0, col, mark, markedit_cb, mark_cb, str); + } + else if (ih->data->mark_mode == IMAT_MARK_CELL) + { + for(lin=lin1; lin<=lin2; lin++) + { + for(col=col1; col<=col2; col++) + iMatrixMarkItem(ih, lin, col, mark, markedit_cb, mark_cb, str); + } + } +} + +void iupMatrixMarkMouseBlock(Ihandle* ih, int lin2, int col2) +{ + /* called only when "shift" is pressed and MARKMULTIPLE=YES */ + IFniii markedit_cb = NULL; + IFnii mark_cb = NULL; + char str[100]; + + iupMatrixPrepareDrawData(ih); + + ih->data->mark_full2 = 0; + + if (lin2 == 0 && col2 == 0) + return; + /* If it was pointing for a column title... */ + else if (lin2 == 0) + { + if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) || + ih->data->mark_mode & IMAT_MARK_COL) + ih->data->mark_full2 = IMAT_PROCESS_COL; + } + /* If it was pointing for a line title... */ + else if (col2 == 0) + { + if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) || + ih->data->mark_mode & IMAT_MARK_LIN) + ih->data->mark_full2 = IMAT_PROCESS_LIN; + } + + /* if new block is not the same, does nothing */ + if (ih->data->mark_full1 != ih->data->mark_full2) + return; + + if (ih->data->mark_mode == IMAT_MARK_CELL && ih->data->callback_mode) + { + markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB"); + mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); + } + + /* Unmark previous block */ + if (ih->data->mark_lin1 != -1 && ih->data->mark_lin2 != -1 && + ih->data->mark_col1 != -1 && ih->data->mark_col2 != -1) + iMatrixMarkBlock(ih, ih->data->mark_lin1, ih->data->mark_col1, ih->data->mark_lin2, ih->data->mark_col2, 0, markedit_cb, mark_cb, str); + + ih->data->mark_lin2 = lin2; + ih->data->mark_col2 = col2; + + /* Unmark new block */ + iMatrixMarkBlock(ih, ih->data->mark_lin1, ih->data->mark_col1, ih->data->mark_lin2, ih->data->mark_col2, 1, markedit_cb, mark_cb, str); +} + +void iupMatrixMarkMouseReset(Ihandle* ih) +{ + ih->data->mark_lin1 = -1; + ih->data->mark_col1 = -1; + ih->data->mark_lin2 = -1; + ih->data->mark_col2 = -1; + + ih->data->mark_full1 = 0; + ih->data->mark_full2 = 0; +} + +void iupMatrixMarkMouseItem(Ihandle* ih, int ctrl, int lin1, int col1) +{ + int mark = 1, mark_full_all, lin, col; + IFniii markedit_cb = NULL; + IFnii mark_cb = NULL; + char str[100]; + + iupMatrixMarkMouseReset(ih); + iupMatrixPrepareDrawData(ih); + + if (!ih->data->mark_multiple || ih->data->mark_continuous || !ctrl) + { + iupMatrixMarkClearAll(ih, 1); + iupMatrixDraw(ih, 0); + } + else + mark = -1; /* toggle mark state */ + + ih->data->mark_full1 = 0; + mark_full_all = 0; + + if (lin1 == 0 && col1 == 0) + { + if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) || + ih->data->mark_mode == IMAT_MARK_COL || + ih->data->mark_mode == IMAT_MARK_LIN) + mark_full_all = 1; + } + /* If it was pointing for a column title... */ + else if (lin1 == 0) + { + if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) || + ih->data->mark_mode & IMAT_MARK_COL) + ih->data->mark_full1 = IMAT_PROCESS_COL; + } + /* If it was pointing for a line title... */ + else if (col1 == 0) + { + if ((ih->data->mark_mode == IMAT_MARK_CELL && ih->data->mark_multiple) || + ih->data->mark_mode & IMAT_MARK_LIN) + ih->data->mark_full1 = IMAT_PROCESS_LIN; + } + + if (ih->data->mark_mode == IMAT_MARK_CELL && ih->data->callback_mode) + { + markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB"); + mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); + } + + if (mark_full_all) + { + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + char str[100]; + for (col = 1; col < ih->data->columns.num; col++) + { + for(lin = 1; lin < ih->data->lines.num; lin++) + iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, mark_cb, str); + } + } + else if (ih->data->mark_mode == IMAT_MARK_LIN) + { + for(lin = 1; lin < ih->data->lines.num; lin++) + iMatrixMarkLinSet(ih, lin, mark); + + iupMatrixDrawLineTitle(ih, 1, ih->data->lines.num-1); + } + else if (ih->data->mark_mode == IMAT_MARK_COL) + { + for (col = 1; col < ih->data->columns.num; col++) + iMatrixMarkColSet(ih, col, mark); + + iupMatrixDrawColumnTitle(ih, 1, ih->data->columns.num-1); + } + + iupMatrixDrawCells(ih, 1, 1, ih->data->lines.num-1, ih->data->columns.num-1); + } + else + iMatrixMarkItem(ih, lin1, col1, mark, markedit_cb, mark_cb, str); + + ih->data->mark_lin1 = lin1; + ih->data->mark_col1 = col1; +} + +static void iMatrixMarkAllLinCol(ImatLinColData *p, int mark) +{ + int i; + for(i = 1; i < p->num; i++) + { + if (mark) + p->flags[i] |= IUPMAT_MARK; + else + p->flags[i] &= ~IUPMAT_MARK; + } +} + +void iupMatrixMarkClearAll(Ihandle* ih, int check) +{ + /* "!check" is used to clear all marks independent from MARKMODE */ + + if (ih->data->mark_mode == IMAT_MARK_CELL || !check) + { + int lin, col; + IFniii markedit_cb = NULL; + char str[100]; + + if (check) + markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB"); + + for(lin = 1; lin < ih->data->lines.num; lin++) + { + for(col = 1; col < ih->data->columns.num; col++) + iMatrixMarkCellSet(ih, lin, col, 0, markedit_cb, NULL, str); + } + } + + if (ih->data->mark_mode & IMAT_MARK_LIN || !check) + iMatrixMarkAllLinCol(&(ih->data->lines), 0); + + if (ih->data->mark_mode & IMAT_MARK_COL || !check) + iMatrixMarkAllLinCol(&(ih->data->columns), 0); +} + +int iupMatrixColumnIsMarked(Ihandle* ih, int col) +{ + if (col == 0 || /* Line titles are never marked... */ + !(ih->data->mark_mode & IMAT_MARK_COL)) + return 0; + + return ih->data->columns.flags[col] & IUPMAT_MARK; +} + +int iupMatrixLineIsMarked(Ihandle* ih, int lin) +{ + if (lin == 0 || /* Column titles are never marked... */ + !(ih->data->mark_mode & IMAT_MARK_LIN)) + return 0; + + return ih->data->lines.flags[lin] & IUPMAT_MARK; +} + +int iupMatrixSetMarkedAttrib(Ihandle* ih, const char* value) +{ + int lin, col, mark; + char str[100]; + IFniii markedit_cb; + + if (ih->data->mark_mode == IMAT_MARK_NO) + return 0; + + if (!value) + iupMatrixMarkClearAll(ih, 1); + else if (*value == 'C' || *value == 'c') /* columns */ + { + if (ih->data->mark_mode == IMAT_MARK_LIN) + return 0; + + value++; /* skip C mark */ + if ((int)strlen(value) != ih->data->columns.num-1) + return 0; + + markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB"); + + for(col = 1; col < ih->data->columns.num; col++) + { + if (*value++ == '1') + mark = 1; + else + mark = 0; + + /* mark all the cells for that column */ + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + for(lin = 1; lin < ih->data->lines.num; lin++) + iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, NULL, str); + } + else + iMatrixMarkColSet(ih, col, mark); + } + + if (ih->data->mark_mode & IMAT_MARK_LIN) + iMatrixMarkAllLinCol(&(ih->data->lines), 0); + } + else if (*value == 'L' || *value == 'l') /* lines */ + { + if (ih->data->mark_mode == IMAT_MARK_COL) + return 0; + + value++; /* skip L mark */ + if ((int)strlen(value) != ih->data->lines.num-1) + return 0; + + markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB"); + + for(lin = 1; lin < ih->data->lines.num; lin++) + { + if (*value++ == '1') + mark = 1; + else + mark = 0; + + /* Mark all the cells for that line */ + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + for(col = 1; col < ih->data->columns.num; col++) + iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, NULL, str); + } + else + iMatrixMarkLinSet(ih, lin, mark); + } + + if (ih->data->mark_mode & IMAT_MARK_COL) + iMatrixMarkAllLinCol(&(ih->data->columns), 0); + } + else if (ih->data->mark_mode == IMAT_MARK_CELL) /* cells */ + { + if ((int)strlen(value) != (ih->data->lines.num-1)*(ih->data->columns.num-1)) + return 0; + + markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB"); + + for(lin = 1; lin < ih->data->lines.num; lin++) + { + for(col = 1; col < ih->data->columns.num; col++) + { + if (*value++ == '1') + mark = 1; + else + mark = 0; + + iMatrixMarkCellSet(ih, lin, col, mark, markedit_cb, NULL, str); + } + } + } + + if (ih->handle) + iupMatrixDraw(ih, 1); + + return 0; +} + +char* iupMatrixGetMarkedAttrib(Ihandle* ih) +{ + int lin, col, size; + IFnii mark_cb; + char str[100]; + char* p, *value = NULL; + int exist_mark = 0; /* Show if there is someone marked */ + + if (ih->data->mark_mode == IMAT_MARK_NO) + return NULL; + + mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); + + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + size = (ih->data->lines.num-1) * (ih->data->columns.num-1) + 1; + value = iupStrGetMemory(size); + p = value; + + for(lin = 1; lin < ih->data->lines.num; lin++) + { + for(col = 1; col < ih->data->columns.num; col++) + { + if (iupMatrixMarkCellGet(ih, lin, col, mark_cb, str)) + { + exist_mark = 1; + *p++ = '1'; + } + else + *p++ = '0'; + } + } + *p = 0; + } + else + { + int marked_lines = 0, marked_cols = 0; + + if (ih->data->mark_mode == IMAT_MARK_LINCOL) /* must find which format to return */ + { + /* look for a marked column */ + for(col = 1; col < ih->data->columns.num; col++) + { + if (ih->data->columns.flags[col] & IUPMAT_MARK) + { + marked_cols = 1; /* at least one column is marked */ + break; + } + } + + if (!marked_cols) + marked_lines = 1; + } + else if (ih->data->mark_mode == IMAT_MARK_LIN) + marked_lines = 1; + else if (ih->data->mark_mode == IMAT_MARK_COL) + marked_cols = 1; + + if (marked_lines) + { + size = 1 + (ih->data->lines.num-1) + 1; + value = iupStrGetMemory(size); + p = value; + + *p++ = 'L'; + + for(lin = 1; lin < ih->data->lines.num; lin++) + { + if (ih->data->lines.flags[lin] & IUPMAT_MARK) + { + exist_mark = 1; + *p++ = '1'; + } + else + *p++ = '0'; + } + *p = 0; + } + else if (marked_cols) + { + size = 1 + (ih->data->columns.num-1) + 1; + value = iupStrGetMemory(size); + p = value; + + *p++ = 'C'; + + for(col = 1; col < ih->data->columns.num; col++) + { + if (ih->data->columns.flags[col] & IUPMAT_MARK) + { + exist_mark = 1; + *p++ = '1'; + } + else + *p++ = '0'; + } + *p = 0; + } + } + + return exist_mark? value: NULL; +} + +int iupMatrixSetMarkAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int lin = 0, col = 0; + + if (ih->data->mark_mode == IMAT_MARK_NO) + return 0; + + if (iupStrToIntInt(name_id, &lin, &col, ':') == 2) + { + if (!iupMatrixCheckCellPos(ih, lin, col)) + return 0; + + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + int mark; + + if (lin == 0 || col == 0) /* title can NOT have a mark */ + return 0; + + mark = iupStrBoolean(value); + + if (ih->data->callback_mode) + { + IFniii markedit_cb = (IFniii)IupGetCallback(ih, "MARKEDIT_CB"); + if (markedit_cb) + markedit_cb(ih, lin, col, mark); + else if (mark) + return 1; /* store the attribute */ + } + else + { + if (mark) + ih->data->cells[lin][col].flags |= IUPMAT_MARK; + else + ih->data->cells[lin][col].flags &= ~IUPMAT_MARK; + } + + if (ih->handle) + { + /* This assumes that the matrix has been draw completely previously */ + iupMatrixPrepareDrawData(ih); + iupMatrixDrawCells(ih, lin, col, lin, col); + } + } + else + { + int mark = iupStrBoolean(value); + + if (ih->data->mark_mode & IMAT_MARK_LIN && lin!=0) + { + if (mark) + ih->data->lines.flags[lin] |= IUPMAT_MARK; + else + ih->data->lines.flags[lin] &= ~IUPMAT_MARK; + } + + if (ih->data->mark_mode & IMAT_MARK_COL && col!=0) + { + if (mark) + ih->data->columns.flags[col] |= IUPMAT_MARK; + else + ih->data->columns.flags[col] &= ~IUPMAT_MARK; + } + + if (ih->handle) + { + /* This assumes that the matrix has been draw completely previously */ + iupMatrixPrepareDrawData(ih); + iupMatrixDrawCells(ih, lin, col, lin, col); + } + } + } + + return 0; +} + +char* iupMatrixGetMarkAttrib(Ihandle* ih, const char* name_id) +{ + int lin = 0, col = 0; + + if (ih->data->mark_mode == IMAT_MARK_NO) + return "0"; + + if (iupStrToIntInt(name_id, &lin, &col, ':') == 2) + { + if (!iupMatrixCheckCellPos(ih, lin, col)) + return NULL; + + if (ih->data->mark_mode == IMAT_MARK_CELL) + { + if (lin == 0 || col == 0) /* title can NOT have a mark */ + return NULL; + + if (ih->data->callback_mode) + { + IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); + if (mark_cb) + { + if (mark_cb(ih, lin, col)) + return "1"; + else + return "0"; + } + else + return NULL; /* let check the hash table */ + } + else + { + if (ih->data->cells[lin][col].flags & IUPMAT_MARK) + return "1"; + else + return "0"; + } + } + else + { + if (ih->data->mark_mode & IMAT_MARK_LIN && lin!=0 && ih->data->lines.flags[lin] & IUPMAT_MARK) + return "1"; + + if (ih->data->mark_mode & IMAT_MARK_COL && col!=0 && ih->data->columns.flags[col] & IUPMAT_MARK) + return "1"; + + return "0"; + } + } + + return NULL; +} diff --git a/iup/srccontrols/matrix/iupmat_mark.h b/iup/srccontrols/matrix/iupmat_mark.h new file mode 100755 index 0000000..819916e --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_mark.h @@ -0,0 +1,42 @@ +/** \file + * \brief iupmatrix. cell selection. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_MARK_H +#define __IUPMAT_MARK_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Used to mark (or not mark) cells */ +#define IMAT_MARK_NO 0 +#define IMAT_MARK_LIN 1 +#define IMAT_MARK_COL 2 +#define IMAT_MARK_LINCOL 3 +#define IMAT_MARK_CELL 4 + +int iupMatrixSetMarkedAttrib(Ihandle* ih, const char* value); +char* iupMatrixGetMarkedAttrib(Ihandle* ih); +char* iupMatrixGetMarkAttrib(Ihandle* ih, const char* name_id); +int iupMatrixSetMarkAttrib(Ihandle* ih, const char* name_id, const char* value); + +void iupMatrixMarkClearAll(Ihandle* ih, int check); + +int iupMatrixMarkCellGet(Ihandle* ih, int lin, int col, IFnii mark_cb, char* str); + +int iupMatrixColumnIsMarked(Ihandle* ih, int col); +int iupMatrixLineIsMarked (Ihandle* ih, int lin); + +void iupMatrixMarkMouseBlock(Ihandle* ih, int lin2, int col2); +void iupMatrixMarkMouseItem(Ihandle* ih, int ctrl, int lin1, int col1); +void iupMatrixMarkMouseReset(Ihandle* ih); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_mem.c b/iup/srccontrols/matrix/iupmat_mem.c new file mode 100755 index 0000000..eebea7a --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_mem.c @@ -0,0 +1,319 @@ +/** \file + * \brief iupmatrix control memory allocation + * + * See Copyright Notice in "iup.h" + */ + +/**************************************************************************/ +/* Functions to allocate memory */ +/**************************************************************************/ + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_mem.h" + + +static void iMatrixGetInitialValues(Ihandle* ih) +{ + int lin, col; + char* value; + char attr[100]; + + for (lin=0; lindata->lines.num; lin++) + { + for (col=0; coldata->columns.num; col++) + { + sprintf(attr, "%d:%d", lin, col); + value = iupAttribGet(ih, attr); + if (value) + { + /* get the initial value and remove it from the hash table */ + + if (*value) + ih->data->cells[lin][col].value = iupStrDup(value); + + iupAttribSetStr(ih, attr, NULL); + } + } + } +} + +void iupMatrixMemAlloc(Ihandle* ih) +{ + ih->data->lines.num_alloc = ih->data->lines.num; + if (ih->data->lines.num_alloc == 1) + ih->data->lines.num_alloc = 5; + + ih->data->columns.num_alloc = ih->data->columns.num; + if (ih->data->columns.num_alloc == 1) + ih->data->columns.num_alloc = 5; + + if (!ih->data->callback_mode) + { + int lin; + + ih->data->cells = (ImatCell**)calloc(ih->data->lines.num_alloc, sizeof(ImatCell*)); + for (lin = 0; lin < ih->data->lines.num_alloc; lin++) + ih->data->cells[lin] = (ImatCell*)calloc(ih->data->columns.num_alloc, sizeof(ImatCell)); + + iMatrixGetInitialValues(ih); + } + + ih->data->lines.flags = (unsigned char*)calloc(ih->data->lines.num_alloc, sizeof(unsigned char)); + ih->data->columns.flags = (unsigned char*)calloc(ih->data->columns.num_alloc, sizeof(unsigned char)); + ih->data->lines.sizes = (int*)calloc(ih->data->lines.num_alloc, sizeof(int)); + ih->data->columns.sizes = (int*)calloc(ih->data->columns.num_alloc, sizeof(int)); +} + +void iupMatrixMemRelease(Ihandle* ih) +{ + if (ih->data->cells) + { + int lin, col; + for (lin = 0; lin < ih->data->lines.num_alloc; lin++) + { + for (col = 0; col < ih->data->columns.num_alloc; col++) + { + ImatCell* cell = &(ih->data->cells[lin][col]); + if (cell->value) + { + free(cell->value); + cell->value = NULL; + } + } + free(ih->data->cells[lin]); + ih->data->cells[lin] = NULL; + } + free(ih->data->cells); + ih->data->cells = NULL; + } + + if (ih->data->columns.flags) + { + free(ih->data->columns.flags); + ih->data->columns.flags = NULL; + } + + if (ih->data->lines.flags) + { + free(ih->data->lines.flags); + ih->data->lines.flags = NULL; + } + + if (ih->data->columns.sizes) + { + free(ih->data->columns.sizes); + ih->data->columns.sizes = NULL; + } + + if (ih->data->lines.sizes) + { + free(ih->data->lines.sizes); + ih->data->lines.sizes = NULL; + } +} + +void iupMatrixMemReAllocLines(Ihandle* ih, int old_num, int num, int base) +{ + int lin, col, end, diff_num, shift_num; + + /* base is the first line where the change started */ + + /* If it doesn't have enough lines allocated, then allocate more space */ + if (num > ih->data->lines.num_alloc) /* this also implicates that num>old_num */ + { + int old_alloc = ih->data->lines.num_alloc; + ih->data->lines.num_alloc = num; + + if (!ih->data->callback_mode) + { + ih->data->cells = (ImatCell**)realloc(ih->data->cells, ih->data->lines.num_alloc*sizeof(ImatCell*)); + + /* new space are allocated at the end, later we need to move the old data and clear the available space */ + for(lin = old_alloc; lin < num; lin++) + ih->data->cells[lin] = (ImatCell*)calloc(ih->data->columns.num_alloc, sizeof(ImatCell)); + } + + ih->data->lines.sizes = (int*)realloc(ih->data->lines.sizes, ih->data->lines.num_alloc*sizeof(int)); + ih->data->lines.flags = (unsigned char*)realloc(ih->data->lines.flags, ih->data->lines.num_alloc*sizeof(unsigned char)); + } + + if (old_num==num) + return; + + if (num>old_num) /* ADD */ + { + diff_num = num-old_num; /* size of the openned space */ + shift_num = old_num-base; /* size of the data to be moved (base maximum is old_num) */ + end = base+diff_num; + + /* shift the old data, opening space for new data, from base to end */ + /* do it in reverse order to avoid overlapping */ + if (shift_num) + { + if (!ih->data->callback_mode) + for (lin = shift_num-1; lin >= 0; lin--) /* all columns, shift_num lines */ + memmove(ih->data->cells[lin+end], ih->data->cells[lin+base], ih->data->columns.num_alloc*sizeof(ImatCell)); + memmove(ih->data->lines.sizes+end, ih->data->lines.sizes+base, shift_num*sizeof(int)); + memmove(ih->data->lines.flags+end, ih->data->lines.flags+base, shift_num*sizeof(unsigned char)); + } + + /* then clear the new space starting at base */ + if (!ih->data->callback_mode) + for (lin = 0; lin < diff_num; lin++) /* all columns, diff_num lines */ + memset(ih->data->cells[lin+base], 0, ih->data->columns.num_alloc*sizeof(ImatCell)); + memset(ih->data->lines.sizes+base, 0, diff_num*sizeof(int)); + memset(ih->data->lines.flags+base, 0, diff_num*sizeof(unsigned char)); + } + else /* DEL */ + { + diff_num = old_num-num; /* size of the openned space */ + shift_num = num-base; /* size of the data to be moved */ + end = base+diff_num; + + /* release memory from the opened space */ + if (!ih->data->callback_mode) + { + for(lin = base; lin < end; lin++) /* all columns, base-end lines */ + { + for (col = 0; col < ih->data->columns.num_alloc; col++) + { + ImatCell* cell = &(ih->data->cells[lin][col]); + if (cell->value) + { + free(cell->value); + cell->value = NULL; + } + cell->flags = 0; + } + } + } + + /* move the old data to opened space from end to base */ + if (shift_num) + { + if (!ih->data->callback_mode) + for (lin = 0; lin < shift_num; lin++) /* all columns, shift_num lines */ + memmove(ih->data->cells[lin+base], ih->data->cells[lin+end], ih->data->columns.num_alloc*sizeof(ImatCell)); + memmove(ih->data->lines.sizes+base, ih->data->lines.sizes+end, shift_num*sizeof(int)); + memmove(ih->data->lines.flags+base, ih->data->lines.flags+end, shift_num*sizeof(unsigned char)); + } + + /* then clear the remaining space starting at num */ + if (!ih->data->callback_mode) + for (lin = 0; lin < diff_num; lin++) /* all columns, diff_num lines */ + memset(ih->data->cells[lin+num], 0, ih->data->columns.num_alloc*sizeof(ImatCell)); + memset(ih->data->lines.sizes+num, 0, diff_num*sizeof(int)); + memset(ih->data->lines.flags+num, 0, diff_num*sizeof(unsigned char)); + } +} + +void iupMatrixMemReAllocColumns(Ihandle* ih, int old_num, int num, int base) +{ + int lin, col, end, diff_num, shift_num; + + /* base is the first column where the change started */ + + /* If it doesn't have enough columns allocated, then allocate more space */ + if (num > ih->data->columns.num_alloc) /* this also implicates that also num>old_num */ + { + ih->data->columns.num_alloc = num; + + /* new space are allocated at the end, later we need to move the old data and clear the available space */ + + if (!ih->data->callback_mode) + { + for(lin = 0; lin < ih->data->lines.num_alloc; lin++) + ih->data->cells[lin] = (ImatCell*)realloc(ih->data->cells[lin], ih->data->columns.num_alloc*sizeof(ImatCell)); + } + + ih->data->columns.sizes = (int*)realloc(ih->data->columns.sizes, ih->data->columns.num_alloc*sizeof(int)); + ih->data->columns.flags = (unsigned char*)realloc(ih->data->columns.flags, ih->data->columns.num_alloc*sizeof(unsigned char)); + } + + if (old_num==num) + return; + + if (num>old_num) /* ADD */ + { + /* even if (old_num-base)>(num-old_num) memmove will correctly copy the memory */ + /* then clear the openned space starting at base */ + + diff_num = num-old_num; /* size of the openned space */ + shift_num = old_num-base; /* size of the data to be moved (base maximum is old_num) */ + end = base+diff_num; + + /* shift the old data, opening space for new data, from base to end */ + if (shift_num) + { + if (!ih->data->callback_mode) + for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, shift_num columns */ + memmove(ih->data->cells[lin]+end, ih->data->cells[lin]+base, shift_num*sizeof(ImatCell)); + memmove(ih->data->columns.sizes+end, ih->data->columns.sizes+base, shift_num*sizeof(int)); + memmove(ih->data->columns.flags+end, ih->data->columns.flags+base, shift_num*sizeof(unsigned char)); + } + + /* then clear the openned space starting at base */ + if (!ih->data->callback_mode) + for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, diff_num columns */ + memset(ih->data->cells[lin]+base, 0, diff_num*sizeof(ImatCell)); + memset(ih->data->columns.sizes+base, 0, diff_num*sizeof(int)); + memset(ih->data->columns.flags+base, 0, diff_num*sizeof(unsigned char)); + } + else /* DEL */ + { + diff_num = old_num-num; /* size of the openned space */ + shift_num = num-base; /* size of the data to be moved */ + end = base+diff_num; + + /* release memory from the opened space */ + if (!ih->data->callback_mode) + { + for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, base-end columns */ + { + for(col = base; col < end; col++) + { + ImatCell* cell = &(ih->data->cells[lin][col]); + if (cell->value) + { + free(cell->value); + cell->value = NULL; + } + cell->flags = 0; + } + } + } + + /* move the old data to opened space from end to base */ + /* even if (num-base)>(old_num-num) memmove will correctly copy the memory */ + if (shift_num) + { + if (!ih->data->callback_mode) + for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, shift_num columns */ + memmove(ih->data->cells[lin]+base, ih->data->cells[lin]+end, shift_num*sizeof(ImatCell)); + memmove(ih->data->columns.sizes+base, ih->data->columns.sizes+end, shift_num*sizeof(int)); + memmove(ih->data->columns.flags+base, ih->data->columns.flags+end, shift_num*sizeof(unsigned char)); + } + + /* then clear the remaining space starting at num */ + if (!ih->data->callback_mode) + for (lin = 0; lin < ih->data->lines.num_alloc; lin++) /* all lines, diff_num columns */ + memset(ih->data->cells[lin]+num, 0, diff_num*sizeof(ImatCell)); + memset(ih->data->columns.sizes+num, 0, diff_num*sizeof(int)); + memset(ih->data->columns.flags+num, 0, diff_num*sizeof(unsigned char)); + } +} diff --git a/iup/srccontrols/matrix/iupmat_mem.h b/iup/srccontrols/matrix/iupmat_mem.h new file mode 100755 index 0000000..05a047b --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_mem.h @@ -0,0 +1,24 @@ +/** \file + * \brief iupmatrix control + * memory allocation. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_MEM_H +#define __IUPMAT_MEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +void iupMatrixMemAlloc(Ihandle* ih); +void iupMatrixMemRelease(Ihandle* ih); +void iupMatrixMemReAllocLines (Ihandle* ih, int old_num, int num, int base); +void iupMatrixMemReAllocColumns(Ihandle* ih, int old_num, int num, int base); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_mouse.c b/iup/srccontrols/matrix/iupmat_mouse.c new file mode 100755 index 0000000..33b5fe7 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_mouse.c @@ -0,0 +1,212 @@ +/** \file + * \brief iupmatrix control + * mouse events + * + * See Copyright Notice in "iup.h" + */ + +/**************************************************************************/ +/* Functions to handle mouse events */ +/**************************************************************************/ + +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_colres.h" +#include "iupmat_aux.h" +#include "iupmat_focus.h" +#include "iupmat_mouse.h" +#include "iupmat_key.h" +#include "iupmat_mark.h" +#include "iupmat_edit.h" +#include "iupmat_draw.h" +#include "iupmat_scroll.h" + + +#define IMAT_DRAG_SCROLL_DELTA 5 + +static void iMatrixMouseCallMoveCb(Ihandle* ih, int lin, int col) +{ + IFnii cb = (IFnii)IupGetCallback(ih, "MOUSEMOVE_CB"); + if (cb) + cb(ih, lin, col); +} + +static int iMatrixMouseCallClickCb(Ihandle* ih, int press, int lin, int col, char* r) +{ + IFniis cb; + + if (press) + cb = (IFniis)IupGetCallback(ih, "CLICK_CB"); + else + cb = (IFniis)IupGetCallback(ih, "RELEASE_CB"); + + if (cb) + return cb(ih, lin, col, r); + + return IUP_DEFAULT; +} + +static void iMatrixMouseLeftPress(Ihandle* ih, int lin, int col, int shift, int ctrl, int dclick) +{ + if (dclick) + { + iupMatrixMarkMouseReset(ih); + + if (lin==0 || col==0) + return; + + /* if a double click NOT in the current cell */ + if (lin != ih->data->lines.focus_cell || col != ih->data->columns.focus_cell) + { + /* leave the previous cell if the matrix previously had the focus */ + if (ih->data->has_focus && iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + return; + + iupMatrixFocusSet(ih, lin, col); + + iupMatrixAuxCallEnterCellCb(ih); + } + + if (iupMatrixEditShow(ih)) + { + if(ih->data->datah == ih->data->droph) + IupSetAttribute(ih->data->datah, "SHOWDROPDOWN", "YES"); + + if (iupStrEqualNoCase(IupGetGlobal("DRIVER"), "Motif")) + if(atoi(IupGetGlobal("MOTIFNUMBER")) < 2203) /* since OpenMotif version 2.2.3 this is not necessary */ + iupAttribSetStr(ih, "_IUPMAT_DOUBLE_CLICK", "1"); + } + } + else /* single click */ + { + if (shift && ih->data->mark_multiple && ih->data->mark_mode != IMAT_MARK_NO) + { + iupMatrixMarkMouseBlock(ih, lin, col); + } + else + { + ih->data->leftpressed = 1; + + if (lin>0 && col>0) + { + if (iupMatrixAuxCallLeaveCellCb(ih) == IUP_IGNORE) + return; + + iupMatrixFocusSet(ih, lin, col); + + /* process mark before EnterCell */ + if (ih->data->mark_mode != IMAT_MARK_NO) + iupMatrixMarkMouseItem(ih, ctrl, lin, col); + + iupMatrixAuxCallEnterCellCb(ih); + } + else + { + /* only process marks if at titles */ + if (ih->data->mark_mode != IMAT_MARK_NO) + iupMatrixMarkMouseItem(ih, ctrl, lin, col); + } + } + } +} + +int iupMatrixMouseButton_CB(Ihandle* ih, int b, int press, int x, int y, char* r) +{ + int lin=-1, col=-1; + + if (!iupMatrixIsValid(ih, 0)) + return IUP_DEFAULT; + + /* reset press state */ + ih->data->leftpressed = 0; + + if (press) + { + /* The edit Focus callback is not called when the user clicks in the parent canvas. + so we have to compensate that. */ + iupMatrixEditForceHidden(ih); + ih->data->has_focus = 1; + } + + iupMatrixAuxGetLinColFromXY(ih, x, y, &lin, &col); + + if (b == IUP_BUTTON1) + { + if (press) + { + iupMatrixKeyResetHomeEndCount(ih); + + if (iupMatrixColResStart(ih, x, y)) + return IUP_DEFAULT; /* Resize of the width a of a column was started */ + + if (lin!=-1 && col!=-1) + iMatrixMouseLeftPress(ih, lin, col, isshift(r), iscontrol(r), isdouble(r)); + } + else + { + if (iupMatrixColResIsResizing(ih)) /* If it was made a column resize, finish it */ + iupMatrixColResFinish(ih, x); + } + } + else + iupMatrixMarkMouseReset(ih); + + if (lin!=-1 && col!=-1) + { + if (iMatrixMouseCallClickCb(ih, press, lin, col, r) == IUP_IGNORE) + return IUP_DEFAULT; + } + + iupMatrixDrawUpdate(ih); + return IUP_DEFAULT; +} + +int iupMatrixMouseMove_CB(Ihandle* ih, int x, int y) +{ + int lin, col; + + if (!iupMatrixIsValid(ih, 0)) + return IUP_DEFAULT; + + if (ih->data->leftpressed && ih->data->mark_multiple && ih->data->mark_mode != IMAT_MARK_NO) + { + if ((x < ih->data->columns.sizes[0] || x < IMAT_DRAG_SCROLL_DELTA) && (ih->data->columns.first > 1)) + iupMatrixScrollLeft(ih); + else if ((x > ih->data->w - IMAT_DRAG_SCROLL_DELTA) && (ih->data->columns.last < ih->data->columns.num-1)) + iupMatrixScrollRight(ih); + + if ((y < ih->data->lines.sizes[0] || y < IMAT_DRAG_SCROLL_DELTA) && (ih->data->lines.first > 1)) + iupMatrixScrollUp(ih); + else if ((y > ih->data->h - IMAT_DRAG_SCROLL_DELTA) && (ih->data->lines.last < ih->data->lines.num-1)) + iupMatrixScrollDown(ih); + + if (iupMatrixAuxGetLinColFromXY(ih, x, y, &lin, &col)) + { + iupMatrixMarkMouseBlock(ih, lin, col); + iupMatrixDrawUpdate(ih); + + iMatrixMouseCallMoveCb(ih, lin, col); + } + return IUP_DEFAULT; + } + else if(iupMatrixColResIsResizing(ih)) /* Make a resize in a column size */ + iupMatrixColResMove(ih, x); + else /* Change cursor when it is passed on a join involving column titles */ + iupMatrixColResCheckChangeCursor(ih, x, y); + + if (iupMatrixAuxGetLinColFromXY(ih, x, y, &lin, &col)) + iMatrixMouseCallMoveCb(ih, lin, col); + + return IUP_DEFAULT; +} diff --git a/iup/srccontrols/matrix/iupmat_mouse.h b/iup/srccontrols/matrix/iupmat_mouse.h new file mode 100755 index 0000000..17a09ec --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_mouse.h @@ -0,0 +1,22 @@ +/** \file + * \brief iMatrixrix control + * mouse events. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_MOUSE_H +#define __IUPMAT_MOUSE_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixMouseButton_CB (Ihandle* ih, int b, int press, int x, int y, char* r); +int iupMatrixMouseMove_CB (Ihandle* ih, int x, int y); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_numlc.c b/iup/srccontrols/matrix/iupmat_numlc.c new file mode 100755 index 0000000..e48720a --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_numlc.c @@ -0,0 +1,495 @@ +/** \file + * \brief iupmatrix control + * change number of columns or lines + * + * See Copyright Notice in "iup.h" + */ + +/**************************************************************************/ +/* Functions to change the number of lines and columns of the matrix, */ +/* after it has been created. */ +/**************************************************************************/ + +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_edit.h" +#include "iupmat_mem.h" +#include "iupmat_numlc.h" +#include "iupmat_draw.h" + + +static void iMatrixUpdateLineAttributes(Ihandle* ih, int base, int count, int add) +{ +#define IMAT_NUM_ATTRIB_LINE 6 +#define IMAT_ATTRIB_LINE_ONLY 3 + char* attrib_format[IMAT_NUM_ATTRIB_LINE] = { + "BGCOLOR%d:*", + "FGCOLOR%d:*", + "FONT%d:*", + "BGCOLOR%d:%d", + "FGCOLOR%d:%d", + "FONT%d:%d"}; + char* attrib = iupStrGetMemory(100); + int a, lin, col; + char* value; + + if (add) /* ADD */ + { + /* copy the attributes of the moved cells, from base+count to num */ + /* do it in reverse order to avoid overlapping */ + /* then clear the new space starting from base to base+count */ + + for(a = 0; a < IMAT_NUM_ATTRIB_LINE; a++) + { + for(lin = ih->data->lines.num-1; lin >= base+count; lin--) + { + /* Update the line attributes */ + if (a < IMAT_ATTRIB_LINE_ONLY) + { + sprintf(attrib, attrib_format[a], lin-count); + value = iupAttribGet(ih, attrib); + sprintf(attrib, attrib_format[a], lin); + iupAttribStoreStr(ih, attrib, value); + } + /* Update the cell attribute */ + else for(col = 0; col < ih->data->columns.num; col++) + { + sprintf(attrib, attrib_format[a], lin-count, col); + value = iupAttribGet(ih, attrib); + sprintf(attrib, attrib_format[a], lin, col); + iupAttribStoreStr(ih, attrib, value); + } + } + + for(lin = base; lin < base+count; lin++) + { + if (a < IMAT_ATTRIB_LINE_ONLY) + { + sprintf(attrib, attrib_format[a], lin); + iupAttribSetStr(ih, attrib, NULL); + } + else for(col = 0; col < ih->data->columns.num; col++) + { + sprintf(attrib, attrib_format[a], lin, col); + iupAttribSetStr(ih, attrib, NULL); + } + } + } + } + else /* DEL */ + { + /* copy the attributes of the moved cells from base+count to base */ + /* then clear the remaining space starting at num */ + + for(a = 0; a < IMAT_NUM_ATTRIB_LINE; a++) + { + for(lin = base; lin < ih->data->lines.num; lin++) + { + /* Update the line attributes */ + if (a < IMAT_ATTRIB_LINE_ONLY) + { + sprintf(attrib, attrib_format[a], lin+count); + value = iupAttribGet(ih, attrib); + sprintf(attrib, attrib_format[a], lin); + iupAttribStoreStr(ih, attrib, value); + } + /* Update each cell attribute */ + else for(col = 0; col < ih->data->columns.num; col++) + { + sprintf(attrib, attrib_format[a], lin+count, col); + value = iupAttribGet(ih, attrib); + sprintf(attrib, attrib_format[a], lin, col); + iupAttribStoreStr(ih, attrib, value); + } + } + + for(lin = ih->data->lines.num; lin < ih->data->lines.num+count; lin++) + { + if (a < IMAT_ATTRIB_LINE_ONLY) + { + sprintf(attrib, attrib_format[a], lin); + iupAttribSetStr(ih, attrib, NULL); + } + else for(col = 0; col < ih->data->columns.num; col++) + { + sprintf(attrib, attrib_format[a], lin, col); + iupAttribSetStr(ih, attrib, NULL); + } + } + } + } +} + +static void iMatrixUpdateColumnAttributes(Ihandle* ih, int base, int count, int add) +{ +#define IMAT_NUM_ATTRIB_COL 7 +#define IMAT_ATTRIB_COL_ONLY 4 + char* attrib_format[IMAT_NUM_ATTRIB_COL] = { + "ALIGNMENT%d", + "BGCOLOR*:%d", + "FGCOLOR*:%d", + "FONT*:%d", + "BGCOLOR%d:%d", + "FGCOLOR%d:%d", + "FONT%d:%d"}; + char* attrib = iupStrGetMemory(100); + int a, col, lin; + char* value; + + if (add) /* ADD */ + { + /* update the attributes of the moved cells, from base+count to num */ + /* do it in reverse order to avoid overlapping */ + /* then clear the new space starting from base to base+count */ + + for(a = 0; a < IMAT_NUM_ATTRIB_COL; a++) + { + for(col = ih->data->columns.num-1; col >= base+count; col--) + { + /* Update the column attributes */ + if (a < IMAT_ATTRIB_COL_ONLY) + { + sprintf(attrib, attrib_format[a], col-count); + value = iupAttribGet(ih, attrib); + sprintf(attrib,attrib_format[a],col); + iupAttribStoreStr(ih, attrib, value); + } + /* Update the cell attributes */ + else for(lin = 0; lin < ih->data->lines.num; lin++) + { + sprintf(attrib, attrib_format[a], lin, col-count); + value = iupAttribGet(ih, attrib); + sprintf(attrib, attrib_format[a], lin, col); + iupAttribStoreStr(ih, attrib, value); + } + } + + for(col = base; col < base+count; col++) + { + if (a < IMAT_ATTRIB_COL_ONLY) + { + sprintf(attrib, attrib_format[a], col); + iupAttribSetStr(ih, attrib, NULL); + } + else for(lin = 0; lin < ih->data->lines.num; lin++) + { + sprintf(attrib, attrib_format[a], lin, col); + iupAttribSetStr(ih, attrib, NULL); + } + } + } + } + else /* DEL */ + { + /* copy the attributes of the moved cells from base+count to base */ + /* then clear the remaining space starting at num */ + + for(a = 0; a < IMAT_NUM_ATTRIB_COL; a++) + { + for(col = base; col < ih->data->columns.num; col++) + { + /* Update the column attributes */ + if (a < IMAT_ATTRIB_COL_ONLY) + { + sprintf(attrib, attrib_format[a], col+count); + value = iupAttribGet(ih, attrib); + sprintf(attrib, attrib_format[a], col); + iupAttribStoreStr(ih, attrib, value); + } + /* Update the cell attributes */ + else for(lin = 0; lin < ih->data->lines.num; lin++) + { + sprintf(attrib, attrib_format[a], lin, col+count); + value = iupAttribGet(ih, attrib); + sprintf(attrib, attrib_format[a], lin, col); + iupAttribStoreStr(ih, attrib, value); + } + } + + for(col = ih->data->columns.num; col < ih->data->columns.num+count; col++) + { + if (a < IMAT_ATTRIB_COL_ONLY) + { + sprintf(attrib, attrib_format[a], col); + iupAttribSetStr(ih, attrib, NULL); + } + else for(lin = 0; lin < ih->data->lines.num; lin++) + { + sprintf(attrib, attrib_format[a], lin, col); + iupAttribSetStr(ih, attrib, NULL); + } + } + } + } +} + +static int iMatrixGetStartEnd(const char* value, int *base, int *count, int max, int del) +{ + int ret; + + if (!value) + return 0; + + *base = 0; + *count = 1; + + ret = sscanf(value, "%d-%d", base, count); + if (ret <= 0 || ret > 2) + return 0; + if (ret == 1) + *count = 1; + + if (*count <= 0) + return 0; + + if (del) + { + if (*base <= 0) /* the first valid element is always 1 */ + *base = 1; + + /* when del, base can be at the last element */ + if (*base > max-1) + *base = max-1; + + /* when del, count must be inside the existant range */ + if (*base + *count > max) + *count = max - *base; + } + else + { + (*base)++; /* add after the given index, so increment to position the base */ + + if (*base <= 0) /* the first valid element is always 1 */ + *base = 1; + + /* when add, base can be just after the last element but not more */ + if (*base > max) + *base = max; + + /* when add, count can be any positive value */ + } + + return 1; +} + + +/**************************************************************************/ +/* Exported functions */ +/**************************************************************************/ + +int iupMatrixSetAddLinAttrib(Ihandle* ih, const char* value) +{ + int base, count, lines_num = ih->data->lines.num; + + if (!ih->handle) /* do not store the action before map */ + return 0; + + if (!iMatrixGetStartEnd(value, &base, &count, lines_num, 0)) + return 0; + + /* if the focus cell is after the inserted area */ + if (ih->data->lines.focus_cell >= base) + { + /* leave of the edition mode */ + iupMatrixEditForceHidden(ih); + + /* move it to the same cell */ + ih->data->lines.focus_cell += count; + } + + iupMatrixMemReAllocLines(ih, lines_num, lines_num+count, base); + + ih->data->lines.num += count; + ih->data->need_calcsize = 1; + + if (base < lines_num) /* If before the last line. */ + iMatrixUpdateLineAttributes(ih, base, count, 1); + + iupMatrixDraw(ih, 1); + return 0; +} + +int iupMatrixSetDelLinAttrib(Ihandle* ih, const char* value) +{ + int base, count, lines_num = ih->data->lines.num; + + if (!ih->handle) /* do not store the action before map */ + return 0; + + if (!iMatrixGetStartEnd(value, &base, &count, lines_num, 1)) + return 0; + + /* if the focus cell is after the removed area */ + if (ih->data->lines.focus_cell >= base) + { + /* leave of the edition mode */ + iupMatrixEditForceHidden(ih); + + /* if the focus cell is inside the removed area */ + if (ih->data->lines.focus_cell <= base+count-1) + ih->data->lines.focus_cell = base; /* move it to the first existant cell */ + else + ih->data->lines.focus_cell -= count; /* move it to the same cell */ + } + + iupMatrixMemReAllocLines(ih, lines_num, lines_num-count, base); + + ih->data->lines.num -= count; + ih->data->need_calcsize = 1; + + if (ih->data->lines.focus_cell >= ih->data->lines.num) + ih->data->lines.focus_cell = ih->data->lines.num-1; + if (ih->data->lines.focus_cell <= 0) + ih->data->lines.focus_cell = 1; + + if (base < lines_num) /* If before the last line. (always true when deleting) */ + iMatrixUpdateLineAttributes(ih, base, count, 0); + + iupMatrixDraw(ih, 1); + return 0; +} + +int iupMatrixSetAddColAttrib(Ihandle* ih, const char* value) +{ + int base, count, columns_num = ih->data->columns.num; + + if (!ih->handle) /* do not store the action before map */ + return 0; + + if (!iMatrixGetStartEnd(value, &base, &count, columns_num, 0)) + return 0; + + /* if the focus cell is after the inserted area */ + if (ih->data->columns.focus_cell >= base) + { + /* leave the edition mode */ + iupMatrixEditForceHidden(ih); + + /* move it to the same cell */ + ih->data->columns.focus_cell += count; + } + + iupMatrixMemReAllocColumns(ih, columns_num, columns_num+count, base); + + ih->data->columns.num += count; + ih->data->need_calcsize = 1; + + if (base < columns_num) /* If before the last column. */ + iMatrixUpdateColumnAttributes(ih, base, count, 1); + + iupMatrixDraw(ih, 1); + return 0; +} + +int iupMatrixSetDelColAttrib(Ihandle* ih, const char* value) +{ + int base, count, columns_num = ih->data->columns.num; + + if (!ih->handle) /* do not store the action before map */ + return 0; + + if (!iMatrixGetStartEnd(value, &base, &count, columns_num, 1)) + return 0; + + /* if the focus cell is after the removed area */ + if (ih->data->columns.focus_cell >= base) + { + /* leave the edition mode */ + iupMatrixEditForceHidden(ih); + + /* if the focus cell is inside the removed area */ + if (ih->data->columns.focus_cell <= base+count-1) + ih->data->columns.focus_cell = base; /* move it to the first existant cell */ + else + ih->data->columns.focus_cell -= count; /* move it to the same cell */ + } + + iupMatrixMemReAllocColumns(ih, columns_num, columns_num-count, base); + + ih->data->columns.num -= count; + ih->data->need_calcsize = 1; + + if (ih->data->columns.focus_cell >= ih->data->columns.num) + ih->data->columns.focus_cell = ih->data->columns.num-1; + if (ih->data->columns.focus_cell <= 0) + ih->data->columns.focus_cell = 1; + + if (base < columns_num) /* If before the last column. (always true when deleting) */ + iMatrixUpdateColumnAttributes(ih, base, count, 0); + + iupMatrixDraw(ih, 1); + return 0; +} + +int iupMatrixSetNumLinAttrib(Ihandle* ih, const char* value) +{ + int num = 0; + if (iupStrToInt(value, &num)) + { + if (num < 0) num = 0; + + num++; /* add room for title line */ + + /* can be set before map */ + if (ih->handle) + { + int base; /* base is after the end */ + if (num >= ih->data->lines.num) /* add or alloc */ + base = ih->data->lines.num; + else + base = num; + iupMatrixMemReAllocLines(ih, ih->data->lines.num, num, base); + } + + ih->data->lines.num = num; + ih->data->need_calcsize = 1; + + if (ih->handle) + iupMatrixDraw(ih, 1); + } + + return 0; +} + +int iupMatrixSetNumColAttrib(Ihandle* ih, const char* value) +{ + int num = 0; + if (iupStrToInt(value, &num)) + { + if (num < 0) num = 0; + + num++; /* add room for title column */ + + /* can be set before map */ + if (ih->handle) + { + int base; /* base is after the end */ + if (num >= ih->data->columns.num) /* add or alloc */ + base = ih->data->columns.num; + else + base = num; + iupMatrixMemReAllocColumns(ih, ih->data->columns.num, num, base); + } + + ih->data->columns.num = num; + ih->data->need_calcsize = 1; + + if (ih->handle) + iupMatrixDraw(ih, 1); + } + + return 0; +} diff --git a/iup/srccontrols/matrix/iupmat_numlc.h b/iup/srccontrols/matrix/iupmat_numlc.h new file mode 100755 index 0000000..df5e16f --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_numlc.h @@ -0,0 +1,27 @@ +/** \file + * \brief iupmatrix. change number of collumns or lines. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_NUMLC_H +#define __IUPMAT_NUMLC_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixSetAddLinAttrib(Ihandle* ih, const char* value); +int iupMatrixSetDelLinAttrib(Ihandle* ih, const char* value); +int iupMatrixSetAddColAttrib(Ihandle* ih, const char* value); +int iupMatrixSetDelColAttrib(Ihandle* ih, const char* value); + +int iupMatrixSetNumLinAttrib(Ihandle* ih, const char* value); +int iupMatrixSetNumColAttrib(Ihandle* ih, const char* value); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmat_scroll.c b/iup/srccontrols/matrix/iupmat_scroll.c new file mode 100755 index 0000000..24bbef2 --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_scroll.c @@ -0,0 +1,495 @@ +/** \file + * \brief iupmatrix control + * scrolling + * + * See Copyright Notice in "iup.h" + */ + +#include "iup.h" +#include "iupcbs.h" + +#include + +#include "iup_object.h" +#include "iup_stdcontrols.h" + +#include "iupmat_def.h" +#include "iupmat_scroll.h" +#include "iupmat_focus.h" +#include "iupmat_aux.h" +#include "iupmat_edit.h" +#include "iupmat_draw.h" + + +/* Macros used by "dir" parameter of the iMatrixScrollLine and iMatrixScrollColumn functions */ +#define IMAT_SCROLL_LEFT 0 +#define IMAT_SCROLL_RIGHT 1 +#define IMAT_SCROLL_UP 2 +#define IMAT_SCROLL_DOWN 3 + + +/**************************************************************************/ +/* Private functions */ +/**************************************************************************/ + + +static int iMatrixScrollIsFullVisibleLast(ImatLinColData *p) +{ + int i, sum = 0; + + for(i = p->first; i <= p->last; i++) + sum += p->sizes[i]; + + if (sum > p->visible_size) + return 0; + else + return 1; +} + +/* Scroll columns/lines in the left/top side of the matriz until the last column/line is FULLY visible. + -> m : Define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] */ +static void iMatrixScrollToVisible(Ihandle* ih, int m, int index) +{ + ImatLinColData* p; + + if (m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + if (index < p->first) + { + p->first = index; + return; + } + else if (index > p->last) + { + /* Increment the first column/line until the index is visible */ + while(index > p->last && p->last != (p->num - 1)) + { + p->first++; + iupMatrixAuxUpdateLast(p); + } + } + + if (index == p->last) + { + /* must increment util the last is fully visible */ + while(index == p->last && p->last != (p->num - 1) && !iMatrixScrollIsFullVisibleLast(p)) + { + p->first++; + iupMatrixAuxUpdateLast(p); + } + } +} + +/* Callback to report to the user which visualization area of + the matrix changed. */ +static void iMatrixScrollCallScrollTopCb(Ihandle* ih) +{ + IFnii cb = (IFnii)IupGetCallback(ih, "SCROLLTOP_CB"); + if (cb) + cb(ih, ih->data->lines.first, ih->data->columns.first); +} + +static int iMatrixScrollGetNextNonEmpty(Ihandle* ih, int m, int index) +{ + ImatLinColData* p; + + if (m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + while(index < p->num && p->sizes[index] == 0) + index++; + + if (index > p->num-1) + { + if (p->num == 1) + return 1; + else + return p->num-1; + } + else + return index; +} + +static int iMatrixScrollGetPrevNonEmpty(Ihandle* ih, int m, int index) +{ + ImatLinColData* p; + + if (m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + while(index > 0 && p->sizes[index] == 0) + index--; + + if (index < 1) + return 1; + else + return index; +} + +static void iMatrixScrollSetFocusScrollToVisible(Ihandle* ih, int m, int index) +{ + if (m == IMAT_PROCESS_COL) + iupMatrixFocusSet(ih, ih->data->lines.focus_cell, index); + else + iupMatrixFocusSet(ih, index, ih->data->columns.focus_cell); + + /* set for both because current focus maybe hidden */ + iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell); + iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell); +} + +/**************************************************************************/ +/* Exported functions */ +/**************************************************************************/ + + +/* Move using the cells of matrix. + Receive as a parameter a pointer to a function that will make the work, + in fact. This is done to avoid a test to each of the manipulation cursor + functions, verifying if it is necessary to call or not the scroll + callback. This is only done here. + -> func - pointer to the function that will make the movement + -> mode - parameter passed to func, specify if the movement request is of + the scrollbar or the keyboard + -> pos - parameter passed to func, that will be the handle position function + of the scrollbar, returning the scrollbar thumb position... + if func is other function, this parameter will be ignored + -> m - parameter passed to func, specify which is the mode of operation: + lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] +*/ +void iupMatrixScrollMoveCursor(iupMatrixScrollMoveF func, Ihandle* ih, int mode, float pos, int m) +{ + int old_lines_first = ih->data->lines.first; + int old_columns_first = ih->data->columns.first; + + iupMatrixEditForceHidden(ih); + + func(ih, mode, pos, m); + + if (ih->data->lines.first != old_lines_first || ih->data->columns.first != old_columns_first) + { + if (ih->data->columns.first != old_columns_first) + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL); + + if (ih->data->lines.first != old_lines_first) + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN); + + iMatrixScrollCallScrollTopCb(ih); + + iupMatrixDraw(ih, 0); + } +} + +void iupMatrixScrollToVisible(Ihandle* ih, int lin, int col) +{ + int old_lines_first = ih->data->lines.first; + int old_columns_first = ih->data->columns.first; + + iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, col); + iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, lin); + + if (ih->data->lines.first != old_lines_first || ih->data->columns.first != old_columns_first) + { + if (ih->data->columns.first != old_columns_first) + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL); + + if (ih->data->lines.first != old_lines_first) + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN); + + iMatrixScrollCallScrollTopCb(ih); + + iupMatrixDraw(ih, 1); + } +} + +/* This function is called when the "home" key is pressed. + In the first time, go to the beginning of the line. + In the second time, go to the beginning of the page. + In the third time, go to the beginning of the matrix. + -> mode and pos : DO NOT USED. +*/ +void iupMatrixScrollHome(Ihandle* ih, int unused_mode, float unused_pos, int unused_m) +{ + (void)unused_m; + (void)unused_mode; + (void)unused_pos; + + /* called only for mode==IMAT_SCROLLKEY */ + + if(ih->data->homekeycount == 0) /* go to the beginning of the line */ + { + ih->data->columns.first = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_COL, 1); + iMatrixScrollSetFocusScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.first); + } + else if(ih->data->homekeycount == 1) /* go to the beginning of the visible page */ + { + iupMatrixFocusSet(ih, ih->data->lines.first, ih->data->columns.first); + + /* set for both because current focus maybe hidden */ + iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell); + iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell); + } + else if(ih->data->homekeycount == 2) /* go to the beginning of the matrix 1:1 */ + { + ih->data->columns.first = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_COL, 1); + ih->data->lines.first = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_LIN, 1); + + iupMatrixFocusSet(ih, ih->data->lines.first, ih->data->columns.first); + + /* set for both because current focus maybe hidden */ + iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell); + iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell); + } +} + +/* This function is called when the "end" key is pressed. + In the first time, go to the end of the line. + In the second time, go to the end of the page. + In the third time, go to the end of the matrix. + -> mode and pos : DO NOT USED. +*/ +void iupMatrixScrollEnd(Ihandle* ih, int unused_mode, float unused_pos, int unused_m) +{ + (void)unused_m; + (void)unused_mode; + (void)unused_pos; + + /* called only for mode==IMAT_SCROLLKEY */ + + if(ih->data->endkeycount == 0) /* go to the end of the line */ + { + int last_col = iMatrixScrollGetPrevNonEmpty(ih, IMAT_PROCESS_COL, ih->data->columns.num-1); + iMatrixScrollSetFocusScrollToVisible(ih, IMAT_PROCESS_COL, last_col); + } + else if(ih->data->endkeycount == 1) /* go to the end of the visible page */ + { + iupMatrixFocusSet(ih, ih->data->lines.last, ih->data->columns.last); + + /* set for both because current focus maybe hidden */ + iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell); + iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell); + } + else if(ih->data->endkeycount == 2) /* go to the end of the matrix */ + { + int last_col = iMatrixScrollGetPrevNonEmpty(ih, IMAT_PROCESS_COL, ih->data->columns.num-1); + int last_lin = iMatrixScrollGetPrevNonEmpty(ih, IMAT_PROCESS_LIN, ih->data->lines.num-1); + + iupMatrixFocusSet(ih, last_lin, last_col); + + /* set for both because current focus maybe hidden */ + iMatrixScrollToVisible(ih, IMAT_PROCESS_COL, ih->data->columns.focus_cell); + iMatrixScrollToVisible(ih, IMAT_PROCESS_LIN, ih->data->lines.focus_cell); + } +} + +/* This function is called to move a cell to the left or up. + -> mode : indicate if the command was from the keyboard or the scrollbar. If scrollbar, + do not change the focus. + -> pos : DO NOT USED + -> m : define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] +*/ +void iupMatrixScrollLeftUp(Ihandle* ih, int mode, float pos, int m) +{ + ImatLinColData* p; + (void)pos; + + if(m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + if (mode == IMAT_SCROLLKEY) + { + int next = iMatrixScrollGetPrevNonEmpty(ih, m, p->focus_cell-1); + iMatrixScrollSetFocusScrollToVisible(ih, m, next); + } + else /* IMAT_SCROLLBAR */ + { + p->first = iMatrixScrollGetPrevNonEmpty(ih, m, p->first-1); + } +} + +/* This function is called to move a cell to the right or down. + -> mode : indicate if the command from the keyboard or the scrollbar. If scrollbar, + do not change the focus. + -> pos : DO NOT USED + -> m : define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] +*/ +void iupMatrixScrollRightDown(Ihandle* ih, int mode, float pos, int m) +{ + ImatLinColData* p; + (void)pos; + + if(m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + if (mode == IMAT_SCROLLKEY) + { + int next = iMatrixScrollGetNextNonEmpty(ih, m, p->focus_cell+1); + iMatrixScrollSetFocusScrollToVisible(ih, m, next); + } + else /* IMAT_SCROLLBAR */ + { + p->first = iMatrixScrollGetNextNonEmpty(ih, m, p->first+1); + } +} + +/* This function is called to move a page to the left or up. + -> mode : indicate if the command was from the keyboard or the scrollbar. If scrollbar, + do not change the focus. + -> pos : DO NOT USED + -> m : define the mode of operation: lines (PgLeft) or columns (PgUp) [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] +*/ +void iupMatrixScrollPgLeftUp(Ihandle* ih, int mode, float pos, int m) +{ + ImatLinColData* p; + (void)pos; + + if(m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + if (mode == IMAT_SCROLLKEY) + { + int next = iMatrixScrollGetPrevNonEmpty(ih, m, p->focus_cell - (p->last - p->first)); + iMatrixScrollSetFocusScrollToVisible(ih, m, next); + } + else /* IMAT_SCROLLBAR */ + { + p->first = iMatrixScrollGetPrevNonEmpty(ih, m, p->first - (p->last - p->first)); + } +} + +/* This function is called to move a page to the right or down. + -> mode : indicate if the command was from the keyboard or the scrollbar. If scrollbar, + do not change the focus. + -> pos : DO NOT USED + -> m : define the mode of operation: lines (PgDown) or columns (PgRight) [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] +*/ +void iupMatrixScrollPgRightDown(Ihandle* ih, int mode, float pos, int m) +{ + ImatLinColData* p; + (void)pos; + + if(m == IMAT_PROCESS_LIN) + p = &(ih->data->lines); + else + p = &(ih->data->columns); + + if (mode == IMAT_SCROLLKEY) + { + int next = iMatrixScrollGetNextNonEmpty(ih, IMAT_PROCESS_COL, p->focus_cell + (p->last - p->first)); + iMatrixScrollSetFocusScrollToVisible(ih, m, next); + } + else /* IMAT_SCROLLBAR */ + { + p->first = iMatrixScrollGetPrevNonEmpty(ih, m, p->first + (p->last - p->first)); + } +} + +void iupMatrixScrollCr(Ihandle* ih, int unused_mode, float unused_pos, int unused_m) +{ + int oldlin = ih->data->lines.focus_cell; + int oldcol = ih->data->columns.focus_cell; + (void)unused_m; + (void)unused_mode; + (void)unused_pos; + + /* called only for mode==IMAT_SCROLLKEY */ + + /* try the normal processing of next cell down */ + iupMatrixScrollRightDown(ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN); + + if(ih->data->lines.focus_cell == oldlin && ih->data->columns.focus_cell == oldcol) + { + /* If focus was not changed, it was because it is in the last line of the column. + Go to the next column of the same line. */ + iupMatrixScrollRightDown(ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_COL); + } +} + +/* This function is called when a drag is performed in the scrollbar. + -> x : scrollbar thumb position, value between 0 and 1 + -> mode : DO NOT USED + -> m : define the mode of operation: lines or columns [IMAT_PROCESS_LIN|IMAT_PROCESS_COL] +*/ +void iupMatrixScrollPos(Ihandle* ih, int mode, float pos, int m) +{ + int scroll_pos, index, vp; + float d; + ImatLinColData* p; + (void)mode; + + if (m == IMAT_PROCESS_LIN) + { + p = &(ih->data->lines); + d = IupGetFloat(ih, "DY"); + } + else + { + p = &(ih->data->columns); + d = IupGetFloat(ih, "DX"); + } + + if (p->num == 1) + { + p->first = 1; + return; + } + + scroll_pos = (int)(pos * p->total_size + 0.5); + + vp = 0; + for(index = 1; index < p->num; index++) + { + vp += p->sizes[index]; + if (vp > scroll_pos) + break; + } + + if (index == p->num) + { + if (p->num == 1) + index = 1; + else + index = p->num-1; + } + + p->first = index; +} + +int iupMatrixScroll_CB(Ihandle* ih, int action, float x, float y) +{ + if (!iupMatrixIsValid(ih, 0)) + return IUP_DEFAULT; + + switch(action) + { + case IUP_SBUP : iupMatrixScrollUp(ih); break; + case IUP_SBDN : iupMatrixScrollDown(ih); break; + case IUP_SBPGUP : iupMatrixScrollPgUp(ih); break; + case IUP_SBPGDN : iupMatrixScrollPgDown(ih); break; + case IUP_SBRIGHT : iupMatrixScrollRight(ih); break; + case IUP_SBLEFT : iupMatrixScrollLeft(ih); break; + case IUP_SBPGRIGHT : iupMatrixScrollPgRight(ih); break; + case IUP_SBPGLEFT : iupMatrixScrollPgLeft(ih); break; + case IUP_SBPOSV : iupMatrixScrollPosVer(ih,y); break; + case IUP_SBPOSH : iupMatrixScrollPosHor(ih,x); break; + case IUP_SBDRAGV : iupMatrixScrollPosVer(ih,y); break; + case IUP_SBDRAGH : iupMatrixScrollPosHor(ih,x); break; + } + + iupMatrixDrawUpdate(ih); + + return IUP_DEFAULT; +} diff --git a/iup/srccontrols/matrix/iupmat_scroll.h b/iup/srccontrols/matrix/iupmat_scroll.h new file mode 100755 index 0000000..582442b --- /dev/null +++ b/iup/srccontrols/matrix/iupmat_scroll.h @@ -0,0 +1,69 @@ +/** \file + * \brief iupmatrix control + * scrolling. + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IUPMAT_SCROLL_H +#define __IUPMAT_SCROLL_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupMatrixScroll_CB(Ihandle* ih, int action, float x, float y); + +void iupMatrixScrollToVisible(Ihandle* ih, int lin, int col); + +typedef void (*iupMatrixScrollMoveF)(Ihandle* ih, int mode, float pos, int m); +void iupMatrixScrollMoveCursor(iupMatrixScrollMoveF func, Ihandle* ih, int mode, float pos, int m); + +/* Used only by the macros bellow */ +void iupMatrixScrollHome (Ihandle* ih, int, float, int); +void iupMatrixScrollEnd (Ihandle* ih, int, float, int); +void iupMatrixScrollLeftUp (Ihandle* ih, int, float, int); +void iupMatrixScrollRightDown (Ihandle* ih, int, float, int); +void iupMatrixScrollPgLeftUp (Ihandle* ih, int, float, int); +void iupMatrixScrollPgRightDown(Ihandle* ih, int, float, int); +void iupMatrixScrollPos (Ihandle* ih, int, float, int); +void iupMatrixScrollCr (Ihandle* ih, int, float, int); + +/* Mode used to "walk" inside the matrix. + It shows if the movement request was from the scrollbar or from a key. + Possible values for the "mode" parameter of the iupMatrixScrollMoveCursor function. + */ +#define IMAT_SCROLLBAR 0 +#define IMAT_SCROLLKEY 1 + +/* Macros to help during the call of iupMatrixScrollMoveCursor function */ + +/* used in the keyboard processing module */ +#define iupMatrixScrollKeyHome(ih) iupMatrixScrollMoveCursor(iupMatrixScrollHome , ih, IMAT_SCROLLKEY, 0, 0) +#define iupMatrixScrollKeyEnd(ih) iupMatrixScrollMoveCursor(iupMatrixScrollEnd , ih, IMAT_SCROLLKEY, 0, 0) +#define iupMatrixScrollKeyPgUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgLeftUp , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollKeyPgDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgRightDown, ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollKeyDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollKeyRight(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_COL) +#define iupMatrixScrollKeyUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollKeyLeft(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLKEY, 0, IMAT_PROCESS_COL) +#define iupMatrixScrollKeyCr(ih) iupMatrixScrollMoveCursor(iupMatrixScrollCr , ih, IMAT_SCROLLKEY, 0, 0) + +/* Used by the scrollbar callback only */ +#define iupMatrixScrollUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollLeft(ih) iupMatrixScrollMoveCursor(iupMatrixScrollLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL) +#define iupMatrixScrollDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollRight(ih) iupMatrixScrollMoveCursor(iupMatrixScrollRightDown , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL) +#define iupMatrixScrollPgUp(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollPgLeft(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgLeftUp , ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL) +#define iupMatrixScrollPgDown(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgRightDown, ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_LIN) +#define iupMatrixScrollPgRight(ih) iupMatrixScrollMoveCursor(iupMatrixScrollPgRightDown, ih, IMAT_SCROLLBAR, 0, IMAT_PROCESS_COL) +#define iupMatrixScrollPosVer(ih, y) iupMatrixScrollMoveCursor(iupMatrixScrollPos , ih, IMAT_SCROLLBAR, y, IMAT_PROCESS_LIN) +#define iupMatrixScrollPosHor(ih, x) iupMatrixScrollMoveCursor(iupMatrixScrollPos , ih, IMAT_SCROLLBAR, x, IMAT_PROCESS_COL) + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srccontrols/matrix/iupmatrix.c b/iup/srccontrols/matrix/iupmatrix.c new file mode 100755 index 0000000..20d618d --- /dev/null +++ b/iup/srccontrols/matrix/iupmatrix.c @@ -0,0 +1,980 @@ +/** \file + * \brief IupMatrix control core + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupcontrols.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_drvfont.h" +#include "iup_stdcontrols.h" +#include "iup_controls.h" +#include "iup_register.h" + +#include "iupmat_def.h" +#include "iupmat_getset.h" +#include "iupmat_scroll.h" +#include "iupmat_aux.h" +#include "iupmat_mem.h" +#include "iupmat_mouse.h" +#include "iupmat_focus.h" +#include "iupmat_key.h" +#include "iupmat_numlc.h" +#include "iupmat_colres.h" +#include "iupmat_mark.h" +#include "iupmat_edit.h" +#include "iupmat_draw.h" + + +int iupMatrixIsValid(Ihandle* ih, int check_cells) +{ + if (!ih->data->cddbuffer) + return 0; + if (check_cells && ((ih->data->columns.num == 0) || (ih->data->lines.num == 0))) + return 0; + return 1; +} + +static int iMatrixSetOriginAttrib(Ihandle* ih, const char* value) +{ + int lin = -1, col = -1; + + /* Get the parameters. The '*' indicates that want to keep the table in + the same line or column */ + if (iupStrToIntInt(value, &lin, &col, ':') != 2) + { + if (lin != -1) + col = ih->data->columns.first; + else if (col != -1) + lin = ih->data->lines.first; + else + return 0; + } + + /* Check if the cell exists */ + if (!iupMatrixCheckCellPos(ih, lin, col)) + return 0; + + /* Can not be a title */ + if((lin < 1) || (col < 1)) + return 0; + + ih->data->columns.first = col; + ih->data->lines.first = lin; + + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_COL); + iupMatrixAuxUpdateVisiblePos(ih, IMAT_PROCESS_LIN); + + iupMatrixDraw(ih, 1); + return 0; +} + +static int iMatrixSetShowAttrib(Ihandle* ih, const char* value) +{ + int lin = -1, col = -1; + + /* Get the parameters. The '*' indicates that want to keep the table in + the same line or column */ + if (iupStrToIntInt(value, &lin, &col, ':') != 2) + { + if (lin != -1) + col = ih->data->columns.first; + else if (col != -1) + lin = ih->data->lines.first; + else + return 0; + } + + /* Check if the cell exists */ + if (!iupMatrixCheckCellPos(ih, lin, col)) + return 0; + + /* Can not be a title */ + if((lin < 1) || (col < 1)) + return 0; + + if (!iupMatrixAuxIsCellFullVisible(ih, lin, col)) + iupMatrixScrollToVisible(ih, lin, col); + + return 0; +} + +static char* iMatrixGetOriginAttrib(Ihandle* ih) +{ + char* val = iupStrGetMemory(100); + sprintf(val, "%d:%d", ih->data->lines.first, ih->data->columns.first); + return val; +} + +static int iMatrixSetFocusCellAttrib(Ihandle* ih, const char* value) +{ + int lin = 0, col = 0; + if (iupStrToIntInt(value, &lin, &col, ':') == 2) + { + if (!iupMatrixCheckCellPos(ih, lin, col)) + return 0; + + if (lin <= 0 || col <= 0) /* title can NOT have the focus */ + return 0; + if (lin >= ih->data->lines.num || col >= ih->data->columns.num) + return 0; + + iupMatrixFocusSet(ih, lin, col); + + if (ih->data->cddbuffer) + iupMatrixDrawUpdate(ih); + } + + return 0; +} + +static char* iMatrixGetFocusCellAttrib(Ihandle* ih) +{ + char* str = iupStrGetMemory(100); + sprintf(str, "%d:%d", ih->data->lines.focus_cell, ih->data->columns.focus_cell); + return str; +} + +static int iMatrixSetUseTitleSizeAttrib(Ihandle* ih, const char* value) +{ + /* can be set only before map */ + if (ih->handle) + return 0; + + if (iupStrBoolean(value)) + ih->data->use_title_size = 1; + else + ih->data->use_title_size = 0; + + return 0; +} + +static char* iMatrixGetUseTitleSizeAttrib(Ihandle* ih) +{ + if (ih->data->use_title_size) + return "YES"; + else + return "NO"; +} + +static int iMatrixSetValueAttrib(Ihandle* ih, const char* value) +{ + if (IupGetInt(ih->data->datah, "VISIBLE")) + IupStoreAttribute(ih->data->datah, "VALUE", value); + else + iupMatrixCellSetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, value); + return 0; +} + +static char* iMatrixGetValueAttrib(Ihandle* ih) +{ + if (IupGetInt(ih->data->datah, "VISIBLE")) + return iupMatrixEditGetValue(ih); + else + return iupMatrixCellGetValue(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell); +} + +static int iMatrixSetCaretAttrib(Ihandle* ih, const char* value) +{ + IupStoreAttribute(ih->data->texth, "CARET", value); + return 1; +} + +static char* iMatrixGetCaretAttrib(Ihandle* ih) +{ + return IupGetAttribute(ih->data->texth, "CARET"); +} + +static int iMatrixSetSelectionAttrib(Ihandle* ih, const char* value) +{ + IupStoreAttribute(ih->data->texth, "SELECTION", value); + return 1; +} + +static char* iMatrixGetSelectionAttrib(Ihandle* ih) +{ + return IupGetAttribute(ih->data->texth, "SELECTION"); +} + +static int iMatrixSetMultilineAttrib(Ihandle* ih, const char* value) +{ + IupStoreAttribute(ih->data->texth, "MULTILINE", value); + if (iupStrBoolean(value)) + IupSetAttribute(ih->data->texth, "SCROLLBAR", "NO"); + return 1; +} + +static char* iMatrixGetMultilineAttrib(Ihandle* ih) +{ + return IupGetAttribute(ih->data->texth, "MULTILINE"); +} + +static char* iMatrixGetNumLinAttrib(Ihandle* ih) +{ + char* num = iupStrGetMemory(100); + sprintf(num, "%d", ih->data->lines.num-1); + return num; +} + +static char* iMatrixGetNumColAttrib(Ihandle* ih) +{ + char* num = iupStrGetMemory(100); + sprintf(num, "%d", ih->data->columns.num-1); + return num; +} + +static int iMatrixSetMarkModeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "CELL")) + ih->data->mark_mode = IMAT_MARK_CELL; + else if (iupStrEqualNoCase(value, "LIN")) + ih->data->mark_mode = IMAT_MARK_LIN; + else if (iupStrEqualNoCase(value, "COL")) + ih->data->mark_mode = IMAT_MARK_COL; + else if(iupStrEqualNoCase(value, "LINCOL")) + ih->data->mark_mode = IMAT_MARK_LINCOL; + else + ih->data->mark_mode = IMAT_MARK_NO; + + if (ih->handle) + { + iupMatrixMarkClearAll(ih, 0); + iupMatrixDraw(ih, 1); + } + return 0; +} + +static char* iMatrixGetMarkModeAttrib(Ihandle* ih) +{ + char* mark2str[] = {"NO", "LIN", "COL", "LINCOL", "CELL"}; + return mark2str[ih->data->mark_mode]; +} + +static int iMatrixSetMarkAreaAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "NOT_CONTINUOUS")) + ih->data->mark_continuous = 0; + else + ih->data->mark_continuous = 1; + + if (ih->handle) + { + iupMatrixMarkClearAll(ih, 0); + iupMatrixDraw(ih, 1); + } + return 0; +} + +static char* iMatrixGetMarkAreaAttrib(Ihandle* ih) +{ + if (ih->data->mark_continuous) + return "CONTINUOUS"; + else + return "NOT_CONTINUOUS"; +} + +static int iMatrixSetMarkMultipleAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + ih->data->mark_multiple = 1; + else + ih->data->mark_multiple = 0; + + if (ih->handle) + { + iupMatrixMarkClearAll(ih, 0); + iupMatrixDraw(ih, 1); + } + return 0; +} + +static char* iMatrixGetMarkMultipleAttrib(Ihandle* ih) +{ + if (ih->data->mark_multiple) + return "YES"; + else + return "NO"; +} + +static int iMatrixSetEditModeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + iupMatrixEditShow(ih); + else + { + iupMatrixEditHide(ih); + iupMatrixDrawUpdate(ih); + } + return 1; +} + +static char* iMatrixGetEditModeAttrib(Ihandle* ih) +{ + if (iupMatrixEditIsVisible(ih)) + return "YES"; + else + return "NO"; +} + +static int iMatrixSetActiveAttrib(Ihandle* ih, const char* value) +{ + iupBaseSetActiveAttrib(ih, value); + iupMatrixDraw(ih, 1); + return 0; +} + +static int iMatrixSetWidthAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int col = 0; + if (iupStrToInt(name_id, &col)) + { + (void)value; + ih->data->need_calcsize = 1; + IupUpdate(ih); + } + return 1; +} + +static char* iMatrixGetWidthAttrib(Ihandle* ih, const char* name_id) +{ + int col; + if (iupStrToInt(name_id, &col)) + return iupMatrixGetSize(ih, col, IMAT_PROCESS_COL, 0); + return NULL; +} + +static int iMatrixSetHeightAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int lin = 0; + if (iupStrToInt(name_id, &lin)) + { + (void)value; + ih->data->need_calcsize = 1; + IupUpdate(ih); + } + return 1; +} + +static char* iMatrixGetHeightAttrib(Ihandle* ih, const char* name_id) +{ + int lin; + if (iupStrToInt(name_id, &lin)) + return iupMatrixGetSize(ih, lin, IMAT_PROCESS_LIN, 0); + return NULL; +} + +static int iMatrixSetRasterWidthAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int col = 0; + if (iupStrToInt(name_id, &col)) + { + (void)value; + ih->data->need_calcsize = 1; + IupUpdate(ih); + } + return 1; +} + +static char* iMatrixGetRasterWidthAttrib(Ihandle* ih, const char* name_id) +{ + int col; + if (iupStrToInt(name_id, &col)) + return iupMatrixGetSize(ih, col, IMAT_PROCESS_COL, 1); + return NULL; +} + +static int iMatrixSetRasterHeightAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int lin = 0; + if (iupStrToInt(name_id, &lin)) + { + (void)value; + ih->data->need_calcsize = 1; + IupUpdate(ih); + } + return 1; +} + +static char* iMatrixGetRasterHeightAttrib(Ihandle* ih, const char* name_id) +{ + int lin; + if (iupStrToInt(name_id, &lin)) + return iupMatrixGetSize(ih, lin, IMAT_PROCESS_LIN, 1); + return NULL; +} + +static char* iMatrixGetAlignmentAttrib(Ihandle* ih, const char* name_id) +{ + char* align; + char str[50]; + sprintf(str, "ALIGNMENT%s", name_id); + align = iupAttribGet(ih, str); + if (!align) + { + int col; + if (iupStrToInt(name_id, &col)) + { + if (col == 0) + return "ALEFT"; + else + return "ACENTER"; + } + } + + return NULL; +} + +static int iMatrixSetIdValueAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + int lin = 0, col = 0; + if (iupStrToIntInt(name_id, &lin, &col, ':') == 2) + { + if (iupMatrixCheckCellPos(ih, lin, col)) + iupMatrixCellSetValue(ih, lin, col, value); + } + return 0; +} + +static char* iMatrixGetIdValueAttrib(Ihandle* ih, const char* name_id) +{ + int lin, col; + if (iupStrToIntInt(name_id, &lin, &col, ':') == 2) + { + if (iupMatrixCheckCellPos(ih, lin, col)) + return iupMatrixCellGetValue(ih, lin, col); + } + return NULL; +} + +static int iMatrixSetFlagsAttrib(Ihandle* ih, const char* name_id, const char* value, unsigned char attr) +{ + if (name_id[0]==0) + return 1; + if (name_id[0]=='*' && name_id[1]==':') + { + int col; + name_id += 2; /* skip '*' and ':' */ + if (iupStrToInt(name_id, &col)) + iupMatrixCellSetFlag(ih, -1, col, attr, value!=NULL); + } + else if (name_id[strlen(name_id)-1]=='*') + { + int lin; + if (iupStrToInt(name_id, &lin)) + iupMatrixCellSetFlag(ih, lin, -1, attr, value!=NULL); + } + else + { + int lin, col; + if (iupStrToIntInt(name_id, &lin, &col, ':') == 2) + iupMatrixCellSetFlag(ih, lin, col, attr, value!=NULL); + } + return 1; +} + +static int iMatrixSetBgColorAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_BGCOLOR); +} + +static int iMatrixSetFgColorAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FGCOLOR); +} + +static int iMatrixSetFontAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FONT); +} + +static int iMatrixSetFrameHorizColorAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + ih->data->checkframecolor = value!=NULL; + return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FRAMEHCOLOR); +} + +static int iMatrixSetFrameVertColorAttrib(Ihandle* ih, const char* name_id, const char* value) +{ + ih->data->checkframecolor = value!=NULL; + return iMatrixSetFlagsAttrib(ih, name_id, value, IUPMAT_FRAMEVCOLOR); +} + +static char* iMatrixGetFontAttrib(Ihandle* ih, const char* name_id) +{ + if (name_id[0]==0) + return iupGetFontAttrib(ih); + return NULL; +} + +static char* iMatrixGetBgColorAttrib(Ihandle* ih, const char* name_id) +{ + if (name_id[0]==0) + { + /* check the hash table */ + char *color = iupAttribGet(ih, "BGCOLOR"); + + /* If not defined return the default for normal cells */ + if (!color) + color = IupGetGlobal("TXTBGCOLOR"); + + return color; + } + return NULL; +} + +static char* iMatrixGetNumColVisibleAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(50); + sprintf(buffer, "%d", ih->data->columns.last - ih->data->columns.first); + return buffer; +} + +static char* iMatrixGetNumLinVisibleAttrib(Ihandle* ih) +{ + char* buffer = iupStrGetMemory(50); + sprintf(buffer, "%d", ih->data->lines.last - ih->data->lines.first); + return buffer; +} + +static char* iMatrixGetMaskDataAttrib(Ihandle* ih) +{ + /* Used only by the OLD iupmask API */ + if (IupGetInt(ih->data->datah, "VISIBLE")) + return IupGetAttribute(ih->data->datah,"OLD_MASK_DATA"); + else + return NULL; +} + + +/*****************************************************************************/ +/* Callbacks registered to the Canvas */ +/*****************************************************************************/ + + +static int iMatrixResize_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(ih->data->cdcanvas); + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + } + + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + /* update size */ + cdCanvasActivate(ih->data->cddbuffer); + cdCanvasGetSize(ih->data->cddbuffer, &ih->data->w, &ih->data->h, NULL, NULL); + + iupMatrixEditForceHidden(ih); + + ih->data->need_calcsize = 1; + iupMatrixDraw(ih, 0); + + return IUP_DEFAULT; +} + +static int iMatrixRedraw_CB(Ihandle* ih) +{ + if (!ih->data->cddbuffer) + return IUP_DEFAULT; + + if (!ih->data->first_redraw) + { + ih->data->first_redraw = 1; + iupMatrixDraw(ih, 0); + } + + iupMatrixDrawUpdate(ih); + + return IUP_DEFAULT; +} + + +/***************************************************************************/ + + +static int iMatrixCreateMethod(Ihandle* ih, void **params) +{ + if (params && params[0]) + { + char* action_cb = (char*)params[0]; + iupAttribStoreStr(ih, "ACTION_CB", action_cb); + } + + /* free the data allocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "SCROLLBAR", "YES"); + iupAttribSetStr(ih, "BORDER", "NO"); + iupAttribSetStr(ih, "CURSOR", "IupMatrixCrossCursor"); + + /* IupCanvas callbacks */ + IupSetCallback(ih, "ACTION", (Icallback)iMatrixRedraw_CB); + IupSetCallback(ih, "RESIZE_CB", (Icallback)iMatrixResize_CB); + IupSetCallback(ih, "BUTTON_CB", (Icallback)iupMatrixMouseButton_CB); + IupSetCallback(ih, "MOTION_CB", (Icallback)iupMatrixMouseMove_CB); + IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iupMatrixKeyPress_CB); + IupSetCallback(ih, "FOCUS_CB", (Icallback)iupMatrixFocus_CB); + IupSetCallback(ih, "SCROLL_CB", (Icallback)iupMatrixScroll_CB); + + /* Create the edit fields */ + iupMatrixEditCreate(ih); + + /* defaults */ + ih->data->datah = ih->data->texth; + ih->data->mark_continuous = 1; + ih->data->columns.num = 1; + ih->data->lines.num = 1; + ih->data->need_calcsize = 1; + ih->data->lines.first = 1; + ih->data->columns.first = 1; + ih->data->lines.focus_cell = 1; + ih->data->columns.focus_cell = 1; + ih->data->mark_lin1 = -1; + ih->data->mark_col1 = -1; + ih->data->mark_lin2 = -1; + ih->data->mark_col2 = -1; + ih->data->use_title_size = 0; + + return IUP_NOERROR; +} + +static int iMatrixMapMethod(Ihandle* ih) +{ + ih->data->cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + ih->data->cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->cdcanvas); + + if (IupGetCallback(ih, "VALUE_CB")) + { + ih->data->callback_mode = 1; + + if (!IupGetCallback(ih, "VALUE_EDIT_CB")) + iupAttribSetStr(ih, "READONLY", "YES"); + } + + iupMatrixMemAlloc(ih); + + return IUP_NOERROR; +} + +static void iMatrixUnMapMethod(Ihandle* ih) +{ + if(ih->data->cddbuffer) + { + cdKillCanvas(ih->data->cddbuffer); + ih->data->cddbuffer = NULL; + } + + if(ih->data->cdcanvas) + { + cdKillCanvas(ih->data->cdcanvas); + ih->data->cdcanvas = NULL; + } + + iupMatrixMemRelease(ih); +} + +static int iMatrixGetNaturalWidth(Ihandle* ih) +{ + int width = 0, num, col; + + num = iupAttribGetInt(ih, "NUMCOL_VISIBLE")+1; /* include the title column */ + + if (iupAttribGetInt(ih, "NUMCOL_VISIBLE_LAST")) + { + int start = ih->data->columns.num - (num-1); /* title is computed apart */ + if (start<1) start=1; + width += iupMatrixAuxGetColumnWidth(ih, 0); /* compute title */ + for(col = start; col < ih->data->columns.num; col++) + width += iupMatrixAuxGetColumnWidth(ih, col); + } + else + { + if (num > ih->data->columns.num) + num = ih->data->columns.num; + for(col = 0; col < num; col++) + width += iupMatrixAuxGetColumnWidth(ih, col); + } + + return width; +} + +static int iMatrixGetNaturalHeight(Ihandle* ih) +{ + int height = 0, num, lin; + + num = iupAttribGetInt(ih, "NUMLIN_VISIBLE")+1; /* include the title line */ + + if (iupAttribGetInt(ih, "NUMLIN_VISIBLE_LAST")) + { + int start = ih->data->lines.num - (num-1); /* title is computed apart */ + if (start<1) start=1; + height += iupMatrixAuxGetLineHeight(ih, 0); /* compute title */ + for(lin = start; lin < ih->data->lines.num; lin++) + height += iupMatrixAuxGetLineHeight(ih, lin); + } + else + { + if (num > ih->data->lines.num) + num = ih->data->lines.num; + for(lin = 0; lin < num; lin++) + height += iupMatrixAuxGetLineHeight(ih, lin); + } + + return height; +} + +static void iMatrixComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + int natural_w = 0, natural_h = 0; + (void)expand; /* unset if not a container */ + + if (!ih->handle) + ih->data->canvas.sb = iupBaseGetScrollbar(ih); + + /* add scrollbar */ + if (ih->data->canvas.sb) + { + int sb_size = iupdrvGetScrollbarSize(); + if (ih->data->canvas.sb & IUP_SB_HORIZ) + natural_w += sb_size; + if (ih->data->canvas.sb & IUP_SB_VERT) + natural_h += sb_size; + } + + *w = natural_w + iMatrixGetNaturalWidth(ih); + *h = natural_h + iMatrixGetNaturalHeight(ih); +} + +static void iMatrixCreateCursor(void) +{ + Ihandle *imgcursor; + unsigned char matrx_img_cur_excel[15*15] = + { + 0,0,0,0,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 1,1,1,1,1,2,2,2,2,1,1,1,1,1,0, + 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1, + 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1, + 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1, + 1,1,1,1,1,2,2,2,2,1,1,1,1,1,1, + 0,1,1,1,1,2,2,2,2,1,1,1,1,1,1, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0, + 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }; + + imgcursor = IupImage(15, 15, matrx_img_cur_excel); + IupSetAttribute(imgcursor, "0", "BGCOLOR"); + IupSetAttribute(imgcursor, "1", "0 0 0"); + IupSetAttribute(imgcursor, "2", "255 255 255"); + IupSetAttribute(imgcursor, "HOTSPOT", "7:7"); /* Centered Hotspot */ + IupSetHandle("IupMatrixCrossCursor", imgcursor); + IupSetHandle("matrx_img_cur_excel", imgcursor); /* for backward compatibility */ +} + +Iclass* iupMatrixGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "matrix"; + ic->format = "A"; /* one optional callback name */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */ + + /* Class functions */ + ic->Create = iMatrixCreateMethod; + ic->Map = iMatrixMapMethod; + ic->UnMap = iMatrixUnMapMethod; + ic->ComputeNaturalSize = iMatrixComputeNaturalSizeMethod; + + /* Do not need to set base attributes because they are inherited from IupCanvas */ + + /* IupMatrix Callbacks */ + /* --- Interaction --- */ + iupClassRegisterCallback(ic, "ACTION_CB", "iiiis"); + iupClassRegisterCallback(ic, "CLICK_CB", "iis"); + iupClassRegisterCallback(ic, "RELEASE_CB", "iis"); + iupClassRegisterCallback(ic, "MOUSEMOVE_CB", "ii"); + iupClassRegisterCallback(ic, "ENTERITEM_CB", "ii"); + iupClassRegisterCallback(ic, "LEAVEITEM_CB", "ii"); + iupClassRegisterCallback(ic, "SCROLLTOP_CB", "ii"); + /* --- Drawing --- */ + iupClassRegisterCallback(ic, "BGCOLOR_CB", "iiIII"); + iupClassRegisterCallback(ic, "FGCOLOR_CB", "iiIII"); + iupClassRegisterCallback(ic, "FONT_CB", "ii=s"); + iupClassRegisterCallback(ic, "DRAW_CB", "iiiiii"); + iupClassRegisterCallback(ic, "DROPCHECK_CB", "ii"); + /* --- Editing --- */ + iupClassRegisterCallback(ic, "DROP_CB", "nii"); + iupClassRegisterCallback(ic, "DROPSELECT_CB", "iinsii"); + iupClassRegisterCallback(ic, "EDITION_CB", "iii"); + /* --- Callback Mode --- */ + iupClassRegisterCallback(ic, "VALUE_CB", "ii=s"); + iupClassRegisterCallback(ic, "VALUE_EDIT_CB", "iis"); + iupClassRegisterCallback(ic, "MARK_CB", "ii"); + iupClassRegisterCallback(ic, "MARKEDIT_CB", "iii"); + + /* IupMatrix Attributes - CELL */ + iupClassRegisterAttributeId(ic, "IDVALUE", iMatrixGetIdValueAttrib, iMatrixSetIdValueAttrib, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FOCUS_CELL", iMatrixGetFocusCellAttrib, iMatrixSetFocusCellAttrib, IUPAF_SAMEASSYSTEM, "1:1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); /* can be NOT mapped */ + iupClassRegisterAttribute(ic, "VALUE", iMatrixGetValueAttrib, iMatrixSetValueAttrib, NULL, NULL, IUPAF_NO_DEFAULTVALUE|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "FGCOLOR", NULL, iMatrixSetFgColorAttrib, IUPAF_NOT_MAPPED); + iupClassRegisterAttributeId(ic, "FONT", iMatrixGetFontAttrib, iMatrixSetFontAttrib, IUPAF_NOT_MAPPED); + iupClassRegisterAttributeId(ic, "FRAMEHORIZCOLOR", NULL, iMatrixSetFrameHorizColorAttrib, IUPAF_NOT_MAPPED); + iupClassRegisterAttributeId(ic, "FRAMEVERTCOLOR", NULL, iMatrixSetFrameVertColorAttrib, IUPAF_NOT_MAPPED); + + /* IupMatrix Attributes - COLUMN */ + iupClassRegisterAttributeId(ic, "ALIGNMENT", iMatrixGetAlignmentAttrib, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "SORTSIGN", NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupMatrix Attributes - SIZE */ + iupClassRegisterAttribute(ic, "NUMLIN", iMatrixGetNumLinAttrib, iupMatrixSetNumLinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NUMCOL", iMatrixGetNumColAttrib, iupMatrixSetNumColAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NUMLIN_VISIBLE", iMatrixGetNumLinVisibleAttrib, NULL, IUPAF_SAMEASSYSTEM, "3", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NUMCOL_VISIBLE", iMatrixGetNumColVisibleAttrib, NULL, IUPAF_SAMEASSYSTEM, "4", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NUMLIN_VISIBLE_LAST", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "NUMCOL_VISIBLE_LAST", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "WIDTHDEF", NULL, NULL, IUPAF_SAMEASSYSTEM, "80", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HEIGHTDEF", NULL, NULL, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "WIDTH", iMatrixGetWidthAttrib, iMatrixSetWidthAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "HEIGHT", iMatrixGetHeightAttrib, iMatrixSetHeightAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "RASTERWIDTH", iMatrixGetRasterWidthAttrib, iMatrixSetRasterWidthAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "RASTERHEIGHT", iMatrixGetRasterHeightAttrib, iMatrixSetRasterHeightAttrib, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupMatrix Attributes - MARK */ + iupClassRegisterAttribute(ic, "MARKED", iupMatrixGetMarkedAttrib, iupMatrixSetMarkedAttrib, NULL, NULL, IUPAF_NO_INHERIT); /* noticed that MARKED must be mapped */ + iupClassRegisterAttributeId(ic, "MARK", iupMatrixGetMarkAttrib, iupMatrixSetMarkAttrib, IUPAF_NO_INHERIT); /* noticed that for MARK the matrix must be mapped */ + iupClassRegisterAttribute(ic, "MARK_MODE", iMatrixGetMarkModeAttrib, iMatrixSetMarkModeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARKMODE", iMatrixGetMarkModeAttrib, iMatrixSetMarkModeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AREA", iMatrixGetMarkAreaAttrib, iMatrixSetMarkAreaAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARKAREA", iMatrixGetMarkAreaAttrib, iMatrixSetMarkAreaAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MULTIPLE", iMatrixGetMarkMultipleAttrib, iMatrixSetMarkMultipleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARKMULTIPLE", iMatrixGetMarkMultipleAttrib, iMatrixSetMarkMultipleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupMatrix Attributes - ACTION (only mapped) */ + iupClassRegisterAttribute(ic, "ADDLIN", NULL, iupMatrixSetAddLinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DELLIN", NULL, iupMatrixSetDelLinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ADDCOL", NULL, iupMatrixSetAddColAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DELCOL", NULL, iupMatrixSetDelColAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "ORIGIN", iMatrixGetOriginAttrib, iMatrixSetOriginAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SHOW", NULL, iMatrixSetShowAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "EDIT_MODE", iMatrixGetEditModeAttrib, iMatrixSetEditModeAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "REDRAW", NULL, iupMatrixDrawSetRedrawAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + /* IupMatrix Attributes - EDITION */ + iupClassRegisterAttribute(ic, "CARET", iMatrixGetCaretAttrib, iMatrixSetCaretAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "SELECTION", iMatrixGetSelectionAttrib, iMatrixSetSelectionAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MULTILINE", iMatrixGetMultilineAttrib, iMatrixSetMultilineAttrib, NULL, NULL, IUPAF_NO_INHERIT); + iupClassRegisterAttributeId(ic, "MASK", NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* IupMatrix Attributes - GENERAL */ + iupClassRegisterAttribute(ic, "USETITLESIZE", iMatrixGetUseTitleSizeAttrib, iMatrixSetUseTitleSizeAttrib, IUPAF_SAMEASSYSTEM, "NO", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "FRAMECOLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "100 100 100", IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "READONLY", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "RESIZEMATRIX", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "HIDEFOCUS", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + /* Overwrite IupCanvas Attributes */ + iupClassRegisterAttribute(ic, "ACTIVE", iupBaseGetActiveAttrib, iMatrixSetActiveAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_DEFAULT); + iupClassRegisterAttributeId(ic, "BGCOLOR", iMatrixGetBgColorAttrib, iMatrixSetBgColorAttrib, IUPAF_NOT_MAPPED); + + /* IupMatrix Attributes - MASK */ + iupClassRegisterAttribute(ic, "OLD_MASK_DATA", iMatrixGetMaskDataAttrib, NULL, NULL, NULL, IUPAF_NO_STRING|IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + if (!IupGetHandle("IupMatrixCrossCursor")) + iMatrixCreateCursor(); + + return ic; +} + + +/*****************************************************************************************************/ + + +Ihandle* IupMatrix(const char* action) +{ + void *params[2]; + params[0] = (void*)action; + params[1] = NULL; + return IupCreatev("matrix", params); +} + +void IupMatSetAttribute(Ihandle* ih, const char* a, int l, int c, char* v) +{ + char* attr = iupStrGetMemory(100); + sprintf(attr, "%s%d:%d", a, l, c); + IupSetAttribute(ih, attr, v); +} + +void IupMatStoreAttribute(Ihandle* ih, const char* a, int l, int c, char* v) +{ + char* attr = iupStrGetMemory(100); + sprintf(attr, "%s%d:%d", a, l, c); + IupStoreAttribute(ih, attr, v); +} + +char* IupMatGetAttribute(Ihandle* ih, const char* a, int l, int c) +{ + char* attr = iupStrGetMemory(100); + sprintf(attr, "%s%d:%d", a, l, c); + return IupGetAttribute(ih, attr); +} + +int IupMatGetInt(Ihandle* ih, const char* a, int l, int c) +{ + char* attr = iupStrGetMemory(100); + sprintf(attr, "%s%d:%d", a, l, c); + return IupGetInt(ih, attr); +} + +float IupMatGetFloat(Ihandle* ih, const char* a, int l, int c) +{ + char* attr = iupStrGetMemory(100); + sprintf(attr, "%s%d:%d", a, l, c); + return IupGetFloat(ih, attr); +} + +void IupMatSetfAttribute(Ihandle* ih, const char* a, int l, int c, char* f, ...) +{ + static char v[SHRT_MAX]; + char* attr = iupStrGetMemory(100); + va_list arglist; + sprintf(attr, "%s%d:%d", a, l, c); + va_start(arglist, f); + vsprintf(v, f, arglist); + va_end(arglist); + IupStoreAttribute(ih, attr, v); +} diff --git a/iup/srcgl/Makefile b/iup/srcgl/Makefile new file mode 100755 index 0000000..882d0d2 --- /dev/null +++ b/iup/srcgl/Makefile @@ -0,0 +1,6 @@ + +.PHONY: do_all iupgl +do_all: iupgl + +iupgl: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak diff --git a/iup/srcgl/config.mak b/iup/srcgl/config.mak new file mode 100755 index 0000000..49599a5 --- /dev/null +++ b/iup/srcgl/config.mak @@ -0,0 +1,20 @@ +PROJNAME = iup +LIBNAME = iupgl +OPT = YES + +ifdef DBG + DEFINES += IUP_ASSERT +endif + +INCLUDES = ../include ../src +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup + +USE_OPENGL = Yes + +ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + SRC = iup_glcanvas_win.c +else + SRC = iup_glcanvas_x.c + USE_X11 = Yes +endif diff --git a/iup/srcgl/iup_glcanvas_win.c b/iup/srcgl/iup_glcanvas_win.c new file mode 100755 index 0000000..06cb66b --- /dev/null +++ b/iup/srcgl/iup_glcanvas_win.c @@ -0,0 +1,411 @@ +/** \file + * \brief iupgl control for Windows + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupgl.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" +#include "iup_assert.h" +#include "iup_register.h" + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + HWND window; + HDC device; + HGLRC context; + HPALETTE palette; + int is_owned_dc; +}; + +static int wGLCanvasDefaultResize_CB(Ihandle *ih, int width, int height) +{ + IupGLMakeCurrent(ih); + glViewport(0,0,width,height); + return IUP_DEFAULT; +} + +static int wGLCanvasCreateMethod(Ihandle* ih, void** params) +{ + (void)params; + free(ih->data); /* allocated by the iCanvasCreateMethod of IupCanvas */ + ih->data = iupALLOCCTRLDATA(); + IupSetCallback(ih, "RESIZE_CB", (Icallback)wGLCanvasDefaultResize_CB); + return IUP_NOERROR; +} + +static int wGLCreateContext(Ihandle* ih) +{ + Ihandle* ih_shared; + int number; + int isIndex = 0; + int pixelFormat; + PIXELFORMATDESCRIPTOR test_pfd; + PIXELFORMATDESCRIPTOR pfd = { + sizeof(PIXELFORMATDESCRIPTOR), /* size of this pfd */ + 1, /* version number */ + PFD_DRAW_TO_WINDOW | /* support window */ + PFD_SUPPORT_OPENGL, /* support OpenGL */ + PFD_TYPE_RGBA, /* RGBA type */ + 24, /* 24-bit color depth */ + 0, 0, 0, 0, 0, 0, /* color bits ignored */ + 0, /* no alpha buffer */ + 0, /* shift bit ignored */ + 0, /* no accumulation buffer */ + 0, 0, 0, 0, /* accum bits ignored */ + 16, /* 32-bit z-buffer */ + 0, /* no stencil buffer */ + 0, /* no auxiliary buffer */ + PFD_MAIN_PLANE, /* main layer */ + 0, /* reserved */ + 0, 0, 0 /* layer masks ignored */ + }; + + /* the IupCanvas is already mapped, just initialize the OpenGL context */ + + /* double or single buffer */ + if (iupStrEqualNoCase(iupAttribGetStr(ih,"BUFFER"), "DOUBLE")) + pfd.dwFlags |= PFD_DOUBLEBUFFER; + + /* stereo */ + if (iupAttribGetBoolean(ih,"STEREO")) + pfd.dwFlags |= PFD_STEREO; + + /* rgba or index */ + if (iupStrEqualNoCase(iupAttribGetStr(ih,"COLOR"), "INDEX")) + { + isIndex = 1; + pfd.iPixelType = PFD_TYPE_COLORINDEX; + pfd.cColorBits = 8; /* assume 8 bits when indexed */ + number = iupAttribGetInt(ih,"BUFFER_SIZE"); + if (number > 0) pfd.cColorBits = (BYTE)number; + } + + /* red, green, blue bits */ + number = iupAttribGetInt(ih,"RED_SIZE"); + if (number > 0) pfd.cRedBits = (BYTE)number; + pfd.cRedShift = 0; + + number = iupAttribGetInt(ih,"GREEN_SIZE"); + if (number > 0) pfd.cGreenBits = (BYTE)number; + pfd.cGreenShift = pfd.cRedBits; + + number = iupAttribGetInt(ih,"BLUE_SIZE"); + if (number > 0) pfd.cBlueBits = (BYTE)number; + pfd.cBlueShift = pfd.cRedBits + pfd.cGreenBits; + + number = iupAttribGetInt(ih,"ALPHA_SIZE"); + if (number > 0) pfd.cAlphaBits = (BYTE)number; + pfd.cAlphaShift = pfd.cRedBits + pfd.cGreenBits + pfd.cBlueBits; + + /* depth and stencil size */ + number = iupAttribGetInt(ih,"DEPTH_SIZE"); + if (number > 0) pfd.cDepthBits = (BYTE)number; + + /* stencil */ + number = iupAttribGetInt(ih,"STENCIL_SIZE"); + if (number > 0) pfd.cStencilBits = (BYTE)number; + + /* red, green, blue accumulation bits */ + number = iupAttribGetInt(ih,"ACCUM_RED_SIZE"); + if (number > 0) pfd.cAccumRedBits = (BYTE)number; + + number = iupAttribGetInt(ih,"ACCUM_GREEN_SIZE"); + if (number > 0) pfd.cAccumGreenBits = (BYTE)number; + + number = iupAttribGetInt(ih,"ACCUM_BLUE_SIZE"); + if (number > 0) pfd.cAccumBlueBits = (BYTE)number; + + number = iupAttribGetInt(ih,"ACCUM_ALPHA_SIZE"); + if (number > 0) pfd.cAccumAlphaBits = (BYTE)number; + + pfd.cAccumBits = pfd.cAccumRedBits + pfd.cAccumGreenBits + pfd.cAccumBlueBits + pfd.cAccumAlphaBits; + + /* get a device context */ + { + LONG style = GetClassLong(ih->data->window, GCL_STYLE); + ih->data->is_owned_dc = (int) ((style & CS_OWNDC) || (style & CS_CLASSDC)); + } + + ih->data->device = GetDC(ih->data->window); + iupAttribSetStr(ih, "VISUAL", (char*)ih->data->device); + + /* choose pixel format */ + pixelFormat = ChoosePixelFormat(ih->data->device, &pfd); + if (pixelFormat == 0) + { + iupAttribSetStr(ih, "ERROR", "No appropriate pixel format."); + return IUP_NOERROR; + } + SetPixelFormat(ih->data->device,pixelFormat,&pfd); + + /* create rendering context */ + ih->data->context = wglCreateContext(ih->data->device); + if (!ih->data->context) + { + iupAttribSetStr(ih, "ERROR", "Could not create a rendering context."); + return IUP_NOERROR; + } + iupAttribSetStr(ih, "CONTEXT", (char*)ih->data->context); + + ih_shared = IupGetAttributeHandle(ih, "SHAREDCONTEXT"); + if (ih_shared && iupStrEqual(ih_shared->iclass->name, "glcanvas")) /* must be an IupGLCanvas */ + wglShareLists(ih_shared->data->context, ih->data->context); + + DescribePixelFormat(ih->data->device, pixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &test_pfd); + if ((pfd.dwFlags & PFD_STEREO) && !(test_pfd.dwFlags & PFD_STEREO)) + { + iupAttribSetStr(ih, "ERROR", "Stereo not available."); + return IUP_NOERROR; + } + + /* create colormap for index mode */ + if (isIndex) + { + if (!ih->data->palette) + { + LOGPALETTE lp = {0x300,1,{255,255,255,PC_NOCOLLAPSE}}; /* set first color as white */ + ih->data->palette = CreatePalette(&lp); + ResizePalette(ih->data->palette,1<data->palette); + } + + SelectPalette(ih->data->device,ih->data->palette,FALSE); + RealizePalette(ih->data->device); + } + + return IUP_NOERROR; +} + +static int wGLCanvasMapMethod(Ihandle* ih) +{ + /* get a device context */ + ih->data->window = (HWND)iupAttribGet(ih, "HWND"); /* check first in the hash table, can be defined by the IupFileDlg */ + if (!ih->data->window) + ih->data->window = (HWND)IupGetAttribute(ih, "HWND"); /* works for Win32 and GTK, only after mapping the IupCanvas */ + if (!ih->data->window) + return IUP_NOERROR; + + { + LONG style = GetClassLong(ih->data->window, GCL_STYLE); + ih->data->is_owned_dc = (int) ((style & CS_OWNDC) || (style & CS_CLASSDC)); + } + + return wGLCreateContext(ih); +} + +static void wGLCanvasUnMapMethod(Ihandle* ih) +{ + if (ih->data->context) + { + if (ih->data->context == wglGetCurrentContext()) + wglMakeCurrent(NULL, NULL); + + wglDeleteContext(ih->data->context); + } + + if (ih->data->palette) + DeleteObject((HGDIOBJ)ih->data->palette); + + if (ih->data->device) + ReleaseDC(ih->data->window, ih->data->device); +} + +static int wGLCanvasSetRefreshContextAttrib(Ihandle* ih, const char* value) +{ + if (!ih->data->is_owned_dc) + { + if (ih->data->context) + { + if (ih->data->context == wglGetCurrentContext()) + wglMakeCurrent(NULL, NULL); + + wglDeleteContext(ih->data->context); + } + + if (ih->data->device) + ReleaseDC(ih->data->window, ih->data->device); + + wGLCreateContext(ih); + } + + (void)value; + return 0; +} + +static Iclass* wGlCanvasGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "glcanvas"; + ic->format = "A"; /* one optional callback name */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + ic->Create = wGLCanvasCreateMethod; + ic->Map = wGLCanvasMapMethod; + ic->UnMap = wGLCanvasUnMapMethod; + + iupClassRegisterAttribute(ic, "BUFFER", NULL, NULL, IUPAF_SAMEASSYSTEM, "SINGLE", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "COLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "RGBA", IUPAF_DEFAULT); + + iupClassRegisterAttribute(ic, "CONTEXT", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "VISUAL", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "COLORMAP", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING); + + iupClassRegisterAttribute(ic, "REFRESHCONTEXT", NULL, wGLCanvasSetRefreshContextAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + + return ic; +} + +/******************************************* Exported functions */ + +void IupGLCanvasOpen(void) +{ + if (!IupGetGlobal("_IUP_GLCANVAS_OPEN")) + { + iupRegisterClass(wGlCanvasGetClass()); + IupSetGlobal("_IUP_GLCANVAS_OPEN", "1"); + } +} + +Ihandle* IupGLCanvas(const char *action) +{ + void *params[2]; + params[0] = (void*)action; + params[1] = NULL; + return IupCreatev("glcanvas", params); +} + +int IupGLIsCurrent(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return 0; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return 0; + + /* must be mapped */ + if (!ih->data->window) + return 0; + + if (ih->data->context == wglGetCurrentContext()) + return 1; + + return 0; +} + +void IupGLMakeCurrent(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + wglMakeCurrent(ih->data->device, ih->data->context); +} + +void IupGLSwapBuffers(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + SwapBuffers(ih->data->device); +} + +void IupGLPalette(Ihandle* ih, int index, float r, float g, float b) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + /* must have a palette */ + if (ih->data->palette) + { + PALETTEENTRY entry; + entry.peRed = (BYTE)(r*255); + entry.peGreen = (BYTE)(g*255); + entry.peBlue = (BYTE)(b*255); + entry.peFlags = PC_NOCOLLAPSE; + SetPaletteEntries(ih->data->palette,index,1,&entry); + UnrealizeObject(ih->data->device); + SelectPalette(ih->data->device,ih->data->palette,FALSE); + RealizePalette(ih->data->device); + } +} + +void IupGLUseFont(Ihandle* ih, int first, int count, int list_base) +{ + HFONT old_font, font; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + font = (HFONT)IupGetAttribute(ih, "HFONT"); + if (font) + { + old_font = SelectObject(ih->data->device, font); + wglUseFontBitmaps(ih->data->device, first, count, list_base); + SelectObject(ih->data->device, old_font); + } +} + +void IupGLWait(int gl) +{ + if (gl) + glFinish(); + else + GdiFlush(); +} diff --git a/iup/srcgl/iup_glcanvas_x.c b/iup/srcgl/iup_glcanvas_x.c new file mode 100755 index 0000000..adddeb1 --- /dev/null +++ b/iup/srcgl/iup_glcanvas_x.c @@ -0,0 +1,448 @@ +/** \file + * \brief iupgl control for X11 + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iupgl.h" + +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_stdcontrols.h" +#include "iup_assert.h" +#include "iup_register.h" + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + Display* display; + Drawable window; + + Colormap colormap; + XVisualInfo *vinfo; + GLXContext context; +}; + +static int xGLCanvasDefaultResize(Ihandle *ih, int width, int height) +{ + IupGLMakeCurrent(ih); + glViewport(0,0,width,height); + return IUP_DEFAULT; +} + +static int xGLCanvasCreateMethod(Ihandle* ih, void** params) +{ + (void)params; + free(ih->data); /* allocated by the iCanvasCreateMethod of IupCanvas */ + ih->data = iupALLOCCTRLDATA(); + IupSetCallback(ih, "RESIZE_CB", (Icallback)xGLCanvasDefaultResize); + return IUP_NOERROR; +} + +static void xGLCanvasGetVisual(Ihandle* ih) +{ + int erb, evb, number; + int n = 0; + int alist[40]; + + if (!ih->data->display) + ih->data->display = (Display*)IupGetGlobal("XDISPLAY"); /* works for Motif and GTK, can be called before mapped */ + if (!ih->data->display) + return; + + /* double or single buffer */ + if (iupStrEqualNoCase(iupAttribGetStr(ih,"BUFFER"), "DOUBLE")) + { + alist[n++] = GLX_DOUBLEBUFFER; + } + + /* stereo */ + if (iupAttribGetBoolean(ih,"STEREO")) + { + alist[n++] = GLX_STEREO; + } + + /* rgba or index */ + if (iupStrEqualNoCase(iupAttribGetStr(ih,"COLOR"), "INDEX")) + { + /* buffer size (for index mode) */ + number = iupAttribGetInt(ih,"BUFFER_SIZE"); + if (number > 0) + { + alist[n++] = GLX_BUFFER_SIZE; + alist[n++] = number; + } + } + else + { + alist[n++] = GLX_RGBA; /* assume rgba as default */ + } + + /* red, green, blue bits */ + number = iupAttribGetInt(ih,"RED_SIZE"); + if (number > 0) + { + alist[n++] = GLX_RED_SIZE; + alist[n++] = number; + } + + number = iupAttribGetInt(ih,"GREEN_SIZE"); + if (number > 0) + { + alist[n++] = GLX_GREEN_SIZE; + alist[n++] = number; + } + + number = iupAttribGetInt(ih,"BLUE_SIZE"); + if (number > 0) + { + alist[n++] = GLX_BLUE_SIZE; + alist[n++] = number; + } + + number = iupAttribGetInt(ih,"ALPHA_SIZE"); + if (number > 0) + { + alist[n++] = GLX_ALPHA_SIZE; + alist[n++] = number; + } + + /* depth and stencil size */ + number = iupAttribGetInt(ih,"DEPTH_SIZE"); + if (number > 0) + { + alist[n++] = GLX_DEPTH_SIZE; + alist[n++] = number; + } + + number = iupAttribGetInt(ih,"STENCIL_SIZE"); + if (number > 0) + { + alist[n++] = GLX_STENCIL_SIZE; + alist[n++] = number; + } + + /* red, green, blue accumulation bits */ + number = iupAttribGetInt(ih,"ACCUM_RED_SIZE"); + if (number > 0) + { + alist[n++] = GLX_ACCUM_RED_SIZE; + alist[n++] = number; + } + + number = iupAttribGetInt(ih,"ACCUM_GREEN_SIZE"); + if (number > 0) + { + alist[n++] = GLX_ACCUM_GREEN_SIZE; + alist[n++] = number; + } + + number = iupAttribGetInt(ih,"ACCUM_BLUE_SIZE"); + if (number > 0) + { + alist[n++] = GLX_ACCUM_BLUE_SIZE; + alist[n++] = number; + } + + number = iupAttribGetInt(ih,"ACCUM_ALPHA_SIZE"); + if (number > 0) + { + alist[n++] = GLX_ACCUM_ALPHA_SIZE; + alist[n++] = number; + } + alist[n++] = None; + + /* check out X extension */ + if (!glXQueryExtension(ih->data->display, &erb, &evb)) + { + iupAttribSetStr(ih, "ERROR", "X server has no OpenGL GLX extension"); + return; + } + + /* choose visual */ + ih->data->vinfo = glXChooseVisual(ih->data->display, DefaultScreen(ih->data->display), alist); + if (!ih->data->vinfo) + iupAttribSetStr(ih, "ERROR", "No appropriate visual"); +} + +static char* xGLCanvasGetVisualAttrib(Ihandle *ih) +{ + /* This must be available before mapping, because IupCanvas uses it during map in GTK and Motif. */ + if (ih->data->vinfo) + return (char*)ih->data->vinfo->visual; + + xGLCanvasGetVisual(ih); + + if (ih->data->vinfo) + return (char*)ih->data->vinfo->visual; + + return NULL; +} + +static int xGLCanvasMapMethod(Ihandle* ih) +{ + GLXContext shared_context = NULL; + Ihandle* ih_shared; + + /* the IupCanvas is already mapped, just initialize the OpenGL context */ + + if (!xGLCanvasGetVisualAttrib(ih)) + return IUP_NOERROR; /* do not abort mapping */ + + ih->data->window = (XID)iupAttribGet(ih, "XWINDOW"); /* check first in the hash table, can be defined by the IupFileDlg */ + if (!ih->data->window) + ih->data->window = (XID)IupGetAttribute(ih, "XWINDOW"); /* works for Motif and GTK, only after mapping the IupCanvas */ + if (!ih->data->window) + return IUP_NOERROR; + + ih_shared = IupGetAttributeHandle(ih, "SHAREDCONTEXT"); + if (ih_shared && iupStrEqual(ih_shared->iclass->name, "glcanvas")) /* must be an IupGLCanvas */ + shared_context = ih_shared->data->context; + + /* create rendering context */ + ih->data->context = glXCreateContext(ih->data->display, ih->data->vinfo, shared_context, GL_TRUE); + if (!ih->data->context) + { + iupAttribSetStr(ih, "ERROR", "Could not create a rendering context"); + return IUP_NOERROR; + } + iupAttribSetStr(ih, "CONTEXT", (char*)ih->data->context); + + /* create colormap for index mode */ + if (iupStrEqualNoCase(iupAttribGetStr(ih,"COLOR"), "INDEX") && + ih->data->vinfo->class != StaticColor && ih->data->vinfo->class != StaticGray) + { + ih->data->colormap = XCreateColormap(ih->data->display, RootWindow(ih->data->display, DefaultScreen(ih->data->display)), ih->data->vinfo->visual, AllocAll); + iupAttribSetStr(ih, "COLORMAP", (char*)ih->data->colormap); + } + + if (ih->data->colormap != None) + IupGLPalette(ih,0,1,1,1); /* set first color as white */ + + return IUP_NOERROR; +} + +static void xGLCanvasUnMapMethod(Ihandle* ih) +{ + if (ih->data->context) + { + if (ih->data->context == glXGetCurrentContext()) + glXMakeCurrent(ih->data->display, None, NULL); + + glXDestroyContext(ih->data->display, ih->data->context); + } + + if (ih->data->colormap != None) + XFreeColormap(ih->data->display, ih->data->colormap); + + if (ih->data->vinfo) + XFree(ih->data->vinfo); +} + +static Iclass* xGlCanvasGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "glcanvas"; + ic->format = "A"; /* one optional callback name */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + ic->Create = xGLCanvasCreateMethod; + ic->Map = xGLCanvasMapMethod; + ic->UnMap = xGLCanvasUnMapMethod; + + iupClassRegisterAttribute(ic, "BUFFER", NULL, NULL, IUPAF_SAMEASSYSTEM, "SINGLE", IUPAF_DEFAULT); + iupClassRegisterAttribute(ic, "COLOR", NULL, NULL, IUPAF_SAMEASSYSTEM, "RGBA", IUPAF_DEFAULT); + + iupClassRegisterAttribute(ic, "CONTEXT", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING); + iupClassRegisterAttribute(ic, "VISUAL", xGLCanvasGetVisualAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING|IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "COLORMAP", NULL, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NO_STRING); + + return ic; +} + + +/******************************************* Exported functions */ + +void IupGLCanvasOpen(void) +{ + if (!IupGetGlobal("_IUP_GLCANVAS_OPEN")) + { + iupRegisterClass(xGlCanvasGetClass()); + IupSetGlobal("_IUP_GLCANVAS_OPEN", "1"); + } +} + +Ihandle* IupGLCanvas(const char *action) +{ + void *params[2]; + params[0] = (void*)action; + params[1] = NULL; + return IupCreatev("glcanvas", params); +} + +int IupGLIsCurrent(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return 0; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return 0; + + /* must be mapped */ + if (!ih->data->window) + return 0; + + if (ih->data->context == glXGetCurrentContext()) + return 1; + + return 0; +} + +void IupGLMakeCurrent(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + glXMakeCurrent(ih->data->display, ih->data->window, ih->data->context); + glXWaitX(); +} + +void IupGLSwapBuffers(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + glXSwapBuffers(ih->data->display, ih->data->window); +} + +static int xGLCanvasIgnoreError(Display *param1, XErrorEvent *param2) +{ + (void)param1; + (void)param2; + return 0; +} + +void IupGLPalette(Ihandle* ih, int index, float r, float g, float b) +{ + XColor color; + int rShift, gShift, bShift; + XVisualInfo *vinfo; + XErrorHandler old_handler; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + /* must have a colormap */ + if (ih->data->colormap == None) + return; + + /* code fragment based on the toolkit library provided with OpenGL */ + old_handler = XSetErrorHandler(xGLCanvasIgnoreError); + + vinfo = ih->data->vinfo; + switch (vinfo->class) + { + case DirectColor: + rShift = ffs((unsigned int)vinfo->red_mask) - 1; + gShift = ffs((unsigned int)vinfo->green_mask) - 1; + bShift = ffs((unsigned int)vinfo->blue_mask) - 1; + color.pixel = ((index << rShift) & vinfo->red_mask) | + ((index << gShift) & vinfo->green_mask) | + ((index << bShift) & vinfo->blue_mask); + color.red = (unsigned short)(r * 65535.0 + 0.5); + color.green = (unsigned short)(g * 65535.0 + 0.5); + color.blue = (unsigned short)(b * 65535.0 + 0.5); + color.flags = DoRed | DoGreen | DoBlue; + XStoreColor(ih->data->display, ih->data->colormap, &color); + break; + case GrayScale: + case PseudoColor: + if (index < vinfo->colormap_size) + { + color.pixel = index; + color.red = (unsigned short)(r * 65535.0 + 0.5); + color.green = (unsigned short)(g * 65535.0 + 0.5); + color.blue = (unsigned short)(b * 65535.0 + 0.5); + color.flags = DoRed | DoGreen | DoBlue; + XStoreColor(ih->data->display, ih->data->colormap, &color); + } + break; + } + + XSync(ih->data->display, 0); + XSetErrorHandler(old_handler); +} + +void IupGLUseFont(Ihandle* ih, int first, int count, int list_base) +{ + Font font; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + /* must be an IupGLCanvas */ + if (!iupStrEqual(ih->iclass->name, "glcanvas")) + return; + + /* must be mapped */ + if (!ih->data->window) + return; + + font = (Font)IupGetAttribute(ih, "XFONTID"); + if (font) + glXUseXFont(font, first, count, list_base); +} + +void IupGLWait(int gl) +{ + if (gl) + glXWaitGL(); + else + glXWaitX(); +} diff --git a/iup/srcgl/iupgl.def b/iup/srcgl/iupgl.def new file mode 100755 index 0000000..d82a1b1 --- /dev/null +++ b/iup/srcgl/iupgl.def @@ -0,0 +1,9 @@ +EXPORTS +IupGLCanvasOpen +IupGLCanvas +IupGLMakeCurrent +IupGLSwapBuffers +IupGLPalette +IupGLIsCurrent +IupGLUseFont +IupGLWait diff --git a/iup/srcgl/iupgl.dep b/iup/srcgl/iupgl.dep new file mode 100644 index 0000000..52fbcfa --- /dev/null +++ b/iup/srcgl/iupgl.dep @@ -0,0 +1,5 @@ +$(OBJDIR)/iup_glcanvas_x.o: iup_glcanvas_x.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../include/iupgl.h \ + ../src/iup_object.h ../src/iup_class.h ../src/iup_table.h \ + ../src/iup_classbase.h ../src/iup_attrib.h ../src/iup_str.h \ + ../src/iup_stdcontrols.h ../src/iup_assert.h ../src/iup_register.h diff --git a/iup/srcgl/make_uname b/iup/srcgl/make_uname new file mode 100755 index 0000000..cc4b881 --- /dev/null +++ b/iup/srcgl/make_uname @@ -0,0 +1,3 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/srcgl/make_uname.bat b/iup/srcgl/make_uname.bat new file mode 100755 index 0000000..f0a0722 --- /dev/null +++ b/iup/srcgl/make_uname.bat @@ -0,0 +1,4 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 diff --git a/iup/srcim/Makefile b/iup/srcim/Makefile new file mode 100755 index 0000000..933ded1 --- /dev/null +++ b/iup/srcim/Makefile @@ -0,0 +1,6 @@ + +.PHONY: do_all iupim +do_all: iupim + +iupim: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak diff --git a/iup/srcim/config.mak b/iup/srcim/config.mak new file mode 100755 index 0000000..8feb290 --- /dev/null +++ b/iup/srcim/config.mak @@ -0,0 +1,15 @@ +PROJNAME = iup +LIBNAME = iupim +OPT = YES + +USE_IM = Yes + +ifdef DBG + DEFINES += IUP_ASSERT +endif + +INCLUDES = ../include ../src +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup + +SRC = iup_im.c diff --git a/iup/srcim/iup_im.c b/iup/srcim/iup_im.c new file mode 100755 index 0000000..c26a3ff --- /dev/null +++ b/iup/srcim/iup_im.c @@ -0,0 +1,306 @@ +/** \file + * \brief iupim utilities + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupim.h" + +#include +#include +#include + +#include "iup_object.h" +#include "iup_assert.h" +#include "iup_str.h" +#include "iup_image.h" + + +static void PrintError(int error) +{ + char* lang = IupGetLanguage(); + char* msg; + if (iupStrEqualNoCase(lang, "ENGLISH")) + { + switch (error) + { + case IM_ERR_OPEN: + msg = "Error Opening File.\n"; + break; + case IM_ERR_MEM: + msg = "Insuficient memory.\n"; + break; + case IM_ERR_ACCESS: + msg = "Error Accessing File.\n"; + break; + case IM_ERR_DATA: + msg = "Image type not Suported.\n"; + break; + case IM_ERR_FORMAT: + msg = "Invalid Format.\n"; + break; + case IM_ERR_COMPRESS: + msg = "Invalid or unsupported compression.\n"; + break; + default: + msg = "Unknown Error.\n"; + } + } + else + { + switch (error) + { + case IM_ERR_OPEN: + msg = "Erro Abrindo Arquivo.\n"; + break; + case IM_ERR_MEM: + msg = "Memória Insuficiente.\n"; + break; + case IM_ERR_ACCESS: + msg = "Erro Acessando Arquivo.\n"; + break; + case IM_ERR_DATA: + msg = "Tipo de Imagem não Suportado.\n"; + break; + case IM_ERR_FORMAT: + msg = "Formato Inválido.\n"; + break; + case IM_ERR_COMPRESS: + msg = "Compressão Inválida ou não Suportada.\n"; + break; + default: + msg = "Erro Desconhecido.\n"; + } + } + + IupMessage("Error", msg); +} + +Ihandle* IupLoadImage(const char* file_name) +{ + long palette[256]; + int i, error, width, height, color_mode, flags, + data_type, palette_count, has_alpha = 0; + Ihandle* iup_image = NULL; + const unsigned char* transp_index; + void* image_data = NULL; + imCounterCallback old_callback; + imFile* ifile; + + iupASSERT(file_name); + if (!file_name) + return NULL; + + old_callback = imCounterSetCallback(NULL, NULL); + + ifile = imFileOpen(file_name, &error); + if (error) + goto load_finish; + + error = imFileReadImageInfo(ifile, 0, &width, &height, &color_mode, &data_type); + if (error) + goto load_finish; + + flags = IM_TOPDOWN; + flags |= IM_PACKED; + if (imColorModeHasAlpha(color_mode)) + { + has_alpha = 1; + flags |= IM_ALPHA; + } + + color_mode = imColorModeToBitmap(color_mode); + data_type = IM_BYTE; + + image_data = malloc(imImageDataSize(width, height, flags|color_mode, data_type)); + if (!image_data) + goto load_finish; + + error = imFileReadImageData(ifile, image_data, 1, flags); + if (error) + goto load_finish; + + if (color_mode == IM_RGB) + { + if (has_alpha) + iup_image = IupImageRGBA(width, height, (unsigned char*)image_data); + else + iup_image = IupImageRGB(width, height, (unsigned char*)image_data); + palette_count = 0; + } + else + { + imFileGetPalette(ifile, palette, &palette_count); + iup_image = IupImage(width, height, (unsigned char*)image_data); + } + + for (i = 0; i < palette_count; i++) + { + char attr[6], color[30]; + unsigned char r, g, b; + + sprintf(attr, "%d", i); + imColorDecode(&r, &g, &b, palette[i]); + sprintf(color, "%d %d %d", (int)r, (int)g, (int)b); + + IupStoreAttribute(iup_image, attr, color); + } + + transp_index = imFileGetAttribute(ifile, "TransparencyIndex", NULL, NULL); + if (transp_index) + { + char attr[6]; + sprintf(attr, "%d", (int)(*transp_index)); + IupSetAttribute(iup_image, attr, "BGCOLOR"); + } + +load_finish: + imCounterSetCallback(NULL, old_callback); + if (ifile) imFileClose(ifile); + if (image_data) free(image_data); + if (error) PrintError(error); + return iup_image; +} + +int IupSaveImage(Ihandle* ih, const char* file_name, const char* format) +{ + int width, height, i, bpp; + unsigned char* data; + int error; + long palette[256]; + imFile* ifile; + + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return 0; + + iupASSERT(file_name); + if (!file_name) + return 0; + + ifile = imFileNew(file_name, format, &error); + if (!ifile) + { + PrintError(error); + return 0; + } + + data = (unsigned char*)IupGetAttribute(ih, "WID"); + + width = IupGetInt(ih, "WIDTH"); + height = IupGetInt(ih, "HEIGHT"); + bpp = IupGetInt(ih, "BPP"); + + if (bpp == 24) + error = imFileWriteImageInfo(ifile, width, height, IM_RGB|IM_TOPDOWN|IM_PACKED, IM_BYTE); + else if (bpp == 32) + error = imFileWriteImageInfo(ifile, width, height, IM_RGB|IM_TOPDOWN|IM_PACKED|IM_ALPHA, IM_BYTE); + else /* bpp == 8 */ + { + for(i = 0; i < 256; i++) + { + unsigned int r, g, b; + char str[20]; + char* color; + + sprintf(str, "%d", i); + color = IupGetAttribute(ih, str); + if (!color) + break; + + if (strcmp(color, "BGCOLOR") == 0) + { + unsigned char transp_index = (unsigned char)i; + imFileSetAttribute(ifile, "TransparencyIndex", IM_BYTE, 1, &transp_index); + palette[i] = imColorEncode(0, 0, 0); + } + else + { + sscanf(color, "%d %d %d", &r, &g, &b); + palette[i] = imColorEncode((unsigned char)r, (unsigned char)g, (unsigned char)b); + } + } + + imFileSetPalette(ifile, palette, i); + + error = imFileWriteImageInfo(ifile, width, height, IM_MAP|IM_TOPDOWN, IM_BYTE); + } + + if (error == IM_ERR_NONE) + error = imFileWriteImageData(ifile, data); + + imFileClose(ifile); + + if (error) + PrintError(error); + + return error == IM_ERR_NONE? 1: 0; +} + +/******************************************************************************/ + +static void iInitColors(iupColor* colors, int count, long* palette) +{ + int i; + for (i=0; i< count; i++) + { + imColorDecode(&(colors[i].r), &(colors[i].g), &(colors[i].b), palette[i]); + colors[i].a = 0; + } +} + +static void iInitPalette(long* palette, int count, iupColor* colors) +{ + int i; + for (i=0; i< count; i++) + { + palette[i] = imColorEncode(colors[i].r, colors[i].g, colors[i].b); + } +} + +void* IupGetImageNativeHandle(imImage* image) +{ + int bpp = image->depth*8; + iupColor colors[256]; + iInitColors(colors, image->palette_count, image->palette); + if (image->has_alpha && bpp == 24) + bpp = 32; + return iupdrvImageCreateImageRaw(image->width, image->height, bpp, colors, image->palette_count, image->data[0]); +} + +imImage* IupGetNativeHandleImage(void* handle) +{ + int width, height, bpp; + iupColor colors[256]; + int colors_count = 0; + if (iupdrvImageGetRawInfo(handle, &width, &height, &bpp, colors, &colors_count)) + { + imImage* image = imImageCreate(width, height, bpp>8? IM_RGB: IM_MAP, IM_BYTE); + if (image) + { + if (bpp==32) + imImageAddAlpha(image); + + if (bpp<=8 && colors_count) + { + long* palette = (long*)malloc(256*sizeof(long)); + iInitPalette(palette, colors_count, colors); + imImageSetPalette(image, palette, colors_count); + } + + iupdrvImageGetRawData(handle, image->data[0]); + + return image; + } + + iupdrvImageDestroy(handle, IUPIMAGE_IMAGE); + } + return NULL; +} diff --git a/iup/srcim/iupim.def b/iup/srcim/iupim.def new file mode 100755 index 0000000..1014c9b --- /dev/null +++ b/iup/srcim/iupim.def @@ -0,0 +1,3 @@ +EXPORTS +IupLoadImage +IupSaveImage diff --git a/iup/srcim/iupim.dep b/iup/srcim/iupim.dep new file mode 100644 index 0000000..c19b469 --- /dev/null +++ b/iup/srcim/iupim.dep @@ -0,0 +1,7 @@ +$(OBJDIR)/iup_im.o: iup_im.c ../../im/include/im.h ../../im/include/old_im.h \ + ../../im/include/im_convert.h ../../im/include/im_image.h \ + ../../im/include/im_counter.h ../../im/include/im_util.h \ + ../../im/include/im_image.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupim.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_table.h ../src/iup_classbase.h \ + ../src/iup_assert.h ../src/iup_str.h ../src/iup_image.h diff --git a/iup/srcim/make_uname b/iup/srcim/make_uname new file mode 100755 index 0000000..cc4b881 --- /dev/null +++ b/iup/srcim/make_uname @@ -0,0 +1,3 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/srcim/make_uname.bat b/iup/srcim/make_uname.bat new file mode 100755 index 0000000..f0a0722 --- /dev/null +++ b/iup/srcim/make_uname.bat @@ -0,0 +1,4 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 diff --git a/iup/srcimglib/Makefile b/iup/srcimglib/Makefile new file mode 100755 index 0000000..261537a --- /dev/null +++ b/iup/srcimglib/Makefile @@ -0,0 +1,6 @@ + +.PHONY: do_all iupimglib +do_all: iupimglib + +iupimglib: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak diff --git a/iup/srcimglib/config.mak b/iup/srcimglib/config.mak new file mode 100755 index 0000000..01cfefb --- /dev/null +++ b/iup/srcimglib/config.mak @@ -0,0 +1,14 @@ +PROJNAME = iup +LIBNAME = iupimglib +#OPT = YES + +INCLUDES = ../include ../src + +SRC = iup_image_library.c + +LIBS = iup +LDIR = ../lib/$(TEC_UNAME) + +ifneq ($(findstring AIX, $(TEC_UNAME)), ) + DEFINES += IUP_IMGLIB_DUMMY +endif diff --git a/iup/srcimglib/iup_image_library.c b/iup/srcimglib/iup_image_library.c new file mode 100755 index 0000000..0202b13 --- /dev/null +++ b/iup/srcimglib/iup_image_library.c @@ -0,0 +1,403 @@ +/** \file + * \brief initializes iupdial, iupgauge, iuptabs, iupcb, iupgc and iupval controls. + * + * See Copyright Notice in iup.h + */ + +#include + +#include "iup.h" + +#include "iup_str.h" +#include "iup_image.h" + +/* GTK and Win32 share the same library in Windows */ +/* GTK and Motif share the same library in UNIX */ + +#ifndef IUP_IMGLIB_DUMMY +#ifdef WIN32 +#include "iup_imglib_bitmaps.h" /* Used only by the Win32 driver in Windows */ +#endif +#ifndef WIN32 +#include "iup_imglib_bitmaps8.h" /* Used only by the Motif driver in UNIX */ +#endif +#include "iup_imglib_bitmapsgtk.h" /* Used only by the GTK driver in UNIX or Windows */ +#ifndef WIN32 +#include "iup_imglib_icons8.h" /* Used only by the Motif driver in UNIX */ +#include "iup_imglib_logos8.h" /* Used only by the Motif driver in UNIX */ +#endif +#include "iup_imglib_icons.h" +#include "iup_imglib_logos.h" +#endif + +void IupImageLibOpen(void) +{ +#ifndef IUP_IMGLIB_DUMMY + int motif=0, win32=0, gtk=0; + char* driver; + + if (IupGetGlobal("_IUP_IMAGELIB_OPEN")) + return; + + driver = IupGetGlobal("DRIVER"); + if (iupStrEqualNoCase(driver, "GTK")) + gtk = 1; + else if (iupStrEqualNoCase(driver, "Motif")) + motif = 1; + else if (iupStrEqualNoCase(driver, "Win32")) + win32 = 1; + + IupSetGlobal("_IUP_IMAGELIB_OPEN", "1"); + + /**************** Bitmaps *****************/ + +#ifndef WIN32 + if (motif) + { + iupImageStockSet("IUP_ActionCancel", load_image_ActionCancel8, 0); + iupImageStockSet("IUP_ActionOk", load_image_ActionOk8, 0); + iupImageStockSet("IUP_ArrowDown", load_image_ArrowDown8, 0); + iupImageStockSet("IUP_ArrowLeft", load_image_ArrowLeft8, 0); + iupImageStockSet("IUP_ArrowRight", load_image_ArrowRight8, 0); + iupImageStockSet("IUP_ArrowUp", load_image_ArrowUp8, 0); + iupImageStockSet("IUP_EditCopy", load_image_EditCopy8, 0); + iupImageStockSet("IUP_EditCut", load_image_EditCut8, 0); + iupImageStockSet("IUP_EditErase", load_image_EditErase8, 0); + iupImageStockSet("IUP_EditFind", load_image_EditFind8, 0); + iupImageStockSet("IUP_EditPaste", load_image_EditPaste8, 0); + iupImageStockSet("IUP_EditRedo", load_image_EditRedo8, 0); + iupImageStockSet("IUP_EditUndo", load_image_EditUndo8, 0); + iupImageStockSet("IUP_FileClose", load_image_FileClose8, 0); + iupImageStockSet("IUP_FileCloseAll", load_image_FileCloseAll8, 0); + iupImageStockSet("IUP_FileNew", load_image_FileNew8, 0); + iupImageStockSet("IUP_FileOpen", load_image_FileOpen8, 0); + iupImageStockSet("IUP_FileProperties", load_image_FileProperties8, 0); + iupImageStockSet("IUP_FileSave", load_image_FileSave8, 0); + iupImageStockSet("IUP_FileSaveAll", load_image_FileSaveAll8, 0); + iupImageStockSet("IUP_FileText", load_image_FileText8, 0); + iupImageStockSet("IUP_FontBold", load_image_FontBold8, 0); + iupImageStockSet("IUP_FontDialog", load_image_FontDialog8, 0); + iupImageStockSet("IUP_FontItalic", load_image_FontItalic8, 0); + iupImageStockSet("IUP_MediaForward", load_image_MediaForward8, 0); + iupImageStockSet("IUP_MediaGotoBegin", load_image_MediaGoToBegin8, 0); + iupImageStockSet("IUP_MediaGoToEnd", load_image_MediaGoToEnd8, 0); + iupImageStockSet("IUP_MediaPause", load_image_MediaPause8, 0); + iupImageStockSet("IUP_MediaPlay", load_image_MediaPlay8, 0); + iupImageStockSet("IUP_MediaRecord", load_image_MediaRecord8, 0); + iupImageStockSet("IUP_MediaReverse", load_image_MediaReverse8, 0); + iupImageStockSet("IUP_MediaRewind", load_image_MediaRewind8, 0); + iupImageStockSet("IUP_MediaStop", load_image_MediaStop8, 0); + iupImageStockSet("IUP_MessageError", load_image_MessageError8, 0); + iupImageStockSet("IUP_MessageHelp", load_image_MessageHelp8, 0); + iupImageStockSet("IUP_MessageInfo", load_image_MessageInfo8, 0); + iupImageStockSet("IUP_NavigateHome", load_image_NavigateHome8, 0); + iupImageStockSet("IUP_NavigateRefresh", load_image_NavigateRefresh8, 0); + iupImageStockSet("IUP_Print", load_image_Print8, 0); + iupImageStockSet("IUP_PrintPreview", load_image_PrintPreview8, 0); + iupImageStockSet("IUP_ToolsColor", load_image_ToolsColor8, 0); + iupImageStockSet("IUP_ToolsSettings", load_image_ToolsSettings8, 0); + iupImageStockSet("IUP_ToolsSortAscend", load_image_ToolsSortAscend8, 0); + iupImageStockSet("IUP_ToolsSortDescend", load_image_ToolsSortDescend8, 0); + iupImageStockSet("IUP_ViewFullScreen", load_image_ViewFullScreen8, 0); + iupImageStockSet("IUP_WindowsCascade", load_image_WindowsCascade8, 0); + iupImageStockSet("IUP_WindowsTile", load_image_WindowsTile8, 0); + iupImageStockSet("IUP_Zoom", load_image_Zoom8, 0); + iupImageStockSet("IUP_ZoomActualSize", load_image_ZoomActualSize8, 0); + iupImageStockSet("IUP_ZoomIn", load_image_ZoomIn8, 0); + iupImageStockSet("IUP_ZoomOut", load_image_ZoomOut8, 0); + iupImageStockSet("IUP_ZoomSelection", load_image_ZoomSelection8, 0); + } +#endif + +#ifdef WIN32 + if (win32) + { + iupImageStockSet("IUP_ActionCancel", load_image_ActionCancel, 0); + iupImageStockSet("IUP_ActionOk", load_image_ActionOk, 0); + iupImageStockSet("IUP_ArrowDown", load_image_ArrowDown, 0); + iupImageStockSet("IUP_ArrowLeft", load_image_ArrowLeft, 0); + iupImageStockSet("IUP_ArrowRight", load_image_ArrowRight, 0); + iupImageStockSet("IUP_ArrowUp", load_image_ArrowUp, 0); + iupImageStockSet("IUP_EditCopy", load_image_EditCopy, 0); + iupImageStockSet("IUP_EditCut", load_image_EditCut, 0); + iupImageStockSet("IUP_EditErase", load_image_EditErase, 0); + iupImageStockSet("IUP_EditFind", load_image_EditFind, 0); + iupImageStockSet("IUP_EditPaste", load_image_EditPaste, 0); + iupImageStockSet("IUP_EditRedo", load_image_EditRedo, 0); + iupImageStockSet("IUP_EditUndo", load_image_EditUndo, 0); + iupImageStockSet("IUP_FileClose", load_image_FileClose, 0); + iupImageStockSet("IUP_FileCloseAll", load_image_FileCloseAll, 0); + iupImageStockSet("IUP_FileNew", load_image_FileNew, 0); + iupImageStockSet("IUP_FileOpen", load_image_FileOpen, 0); + iupImageStockSet("IUP_FileProperties", load_image_FileProperties, 0); + iupImageStockSet("IUP_FileSave", load_image_FileSave, 0); + iupImageStockSet("IUP_FileSaveAll", load_image_FileSaveAll, 0); + iupImageStockSet("IUP_FileText", load_image_FileText, 0); + iupImageStockSet("IUP_FontBold", load_image_FontBold, 0); + iupImageStockSet("IUP_FontDialog", load_image_FontDialog, 0); + iupImageStockSet("IUP_FontItalic", load_image_FontItalic, 0); + iupImageStockSet("IUP_MediaForward", load_image_MediaForward, 0); + iupImageStockSet("IUP_MediaGotoBegin", load_image_MediaGoToBegin, 0); + iupImageStockSet("IUP_MediaGoToEnd", load_image_MediaGoToEnd, 0); + iupImageStockSet("IUP_MediaPause", load_image_MediaPause, 0); + iupImageStockSet("IUP_MediaPlay", load_image_MediaPlay, 0); + iupImageStockSet("IUP_MediaRecord", load_image_MediaRecord, 0); + iupImageStockSet("IUP_MediaReverse", load_image_MediaReverse, 0); + iupImageStockSet("IUP_MediaRewind", load_image_MediaRewind, 0); + iupImageStockSet("IUP_MediaStop", load_image_MediaStop, 0); + iupImageStockSet("IUP_MessageError", load_image_MessageError, 0); + iupImageStockSet("IUP_MessageHelp", load_image_MessageHelp, 0); + iupImageStockSet("IUP_MessageInfo", load_image_MessageInfo, 0); + iupImageStockSet("IUP_NavigateHome", load_image_NavigateHome, 0); + iupImageStockSet("IUP_NavigateRefresh", load_image_NavigateRefresh, 0); + iupImageStockSet("IUP_Print", load_image_Print, 0); + iupImageStockSet("IUP_PrintPreview", load_image_PrintPreview, 0); + iupImageStockSet("IUP_ToolsColor", load_image_ToolsColor, 0); + iupImageStockSet("IUP_ToolsSettings", load_image_ToolsSettings, 0); + iupImageStockSet("IUP_ToolsSortAscend", load_image_ToolsSortAscend, 0); + iupImageStockSet("IUP_ToolsSortDescend", load_image_ToolsSortDescend, 0); + iupImageStockSet("IUP_ViewFullScreen", load_image_ViewFullScreen, 0); + iupImageStockSet("IUP_WindowsCascade", load_image_WindowsCascade, 0); + iupImageStockSet("IUP_WindowsTile", load_image_WindowsTile, 0); + iupImageStockSet("IUP_Zoom", load_image_Zoom, 0); + iupImageStockSet("IUP_ZoomActualSize", load_image_ZoomActualSize, 0); + iupImageStockSet("IUP_ZoomIn", load_image_ZoomIn, 0); + iupImageStockSet("IUP_ZoomOut", load_image_ZoomOut, 0); + iupImageStockSet("IUP_ZoomSelection", load_image_ZoomSelection, 0); + } +#endif + + if (gtk) + { + iupImageStockSet("IUP_ActionCancel", 0, "gtk-cancel"); + iupImageStockSet("IUP_ActionOk", 0, "gtk-apply"); + iupImageStockSet("IUP_ArrowDown", 0, "gtk-go-down"); + iupImageStockSet("IUP_ArrowLeft", 0, "gtk-go-back-ltr"); + iupImageStockSet("IUP_ArrowRight", 0, "gtk-go-forward-ltr"); + iupImageStockSet("IUP_ArrowUp", 0, "gtk-go-up"); + iupImageStockSet("IUP_EditCopy", 0, "gtk-copy"); + iupImageStockSet("IUP_EditCut", 0, "gtk-cut"); + iupImageStockSet("IUP_EditErase", 0, "gtk-close"); + iupImageStockSet("IUP_EditFind", 0, "gtk-find"); + iupImageStockSet("IUP_EditPaste", 0, "gtk-paste"); + iupImageStockSet("IUP_EditRedo", 0, "gtk-redo-ltr"); + iupImageStockSet("IUP_EditUndo", 0, "gtk-undo-ltr"); + iupImageStockSet("IUP_FileClose", load_image_iupgtk_close, 0); + iupImageStockSet("IUP_FileCloseAll", load_image_iupgtk_close_all, 0); + iupImageStockSet("IUP_FileNew", 0, "gtk-new"); + iupImageStockSet("IUP_FileOpen", 0, "gtk-open"); + iupImageStockSet("IUP_FileProperties", 0, "gtk-properties"); + iupImageStockSet("IUP_FileSave", 0, "gtk-save"); + iupImageStockSet("IUP_FileSaveAll", load_image_iupgtk_save_all, 0); + iupImageStockSet("IUP_FileText", load_image_iupgtk_text, 0); + iupImageStockSet("IUP_FontBold", 0, "gtk-bold"); + iupImageStockSet("IUP_FontDialog", 0, "gtk-font"); + iupImageStockSet("IUP_FontItalic", 0, "gtk-italic"); + iupImageStockSet("IUP_MediaForward", 0, "gtk-media-forward-ltr"); + iupImageStockSet("IUP_MediaGotoBegin", 0, "gtk-media-previous-ltr"); + iupImageStockSet("IUP_MediaGoToEnd", 0, "gtk-media-next-ltr"); + iupImageStockSet("IUP_MediaPause", 0, "gtk-media-pause"); + iupImageStockSet("IUP_MediaPlay", 0, "gtk-media-play-ltr"); + iupImageStockSet("IUP_MediaRecord", 0, "gtk-media-record"); + iupImageStockSet("IUP_MediaReverse", 0, "gtk-media-play-rtl"); + iupImageStockSet("IUP_MediaRewind", 0, "gtk-media-rewind-ltr"); + iupImageStockSet("IUP_MediaStop", 0, "gtk-media-stop"); + iupImageStockSet("IUP_MessageError", 0, "gtk-stop"); + iupImageStockSet("IUP_MessageHelp", 0, "gtk-help"); + iupImageStockSet("IUP_MessageInfo", 0, "gtk-info"); + iupImageStockSet("IUP_NavigateHome", 0, "gtk-home"); + iupImageStockSet("IUP_NavigateRefresh", 0, "gtk-refresh"); + iupImageStockSet("IUP_Print", 0, "gtk-print"); + iupImageStockSet("IUP_PrintPreview", 0, "gtk-print-preview"); + iupImageStockSet("IUP_ToolsColor", 0, "gtk-select-color"); + iupImageStockSet("IUP_ToolsSettings", 0, "gtk-preferences"); + iupImageStockSet("IUP_ToolsSortAscend", 0, "gtk-sort-ascending"); + iupImageStockSet("IUP_ToolsSortDescend", 0, "gtk-sort-descending"); + iupImageStockSet("IUP_ViewFullScreen", 0, "gtk-fullscreen"); + iupImageStockSet("IUP_WindowsCascade", load_image_iupgtk_cascade, 0); + iupImageStockSet("IUP_WindowsTile", load_image_iupgtk_tile, 0); + iupImageStockSet("IUP_Zoom", load_image_iupgtk_zoom, 0); + iupImageStockSet("IUP_ZoomActualSize", 0, "gtk-zoom-100"); + iupImageStockSet("IUP_ZoomIn", 0, "gtk-zoom-in"); + iupImageStockSet("IUP_ZoomOut", 0, "gtk-zoom-out"); + iupImageStockSet("IUP_ZoomSelection", 0, "gtk-zoom-fit"); + } + + /***************** Icons *****************/ + +#ifndef WIN32 + if (motif) + { + iupImageStockSet("IUP_Tecgraf", load_image_Tecgraf8, 0); + iupImageStockSet("IUP_PUC-Rio", load_image_PUC_Rio8, 0); + iupImageStockSet("IUP_BR", load_image_BR8, 0); + iupImageStockSet("IUP_Lua", load_image_Lua8, 0); + iupImageStockSet("IUP_TecgrafPUC-Rio", load_image_TecgrafPUC_Rio8, 0); + iupImageStockSet("IUP_Petrobras", load_image_Petrobras8, 0); + } + else +#endif + { + iupImageStockSet("IUP_Tecgraf", load_image_Tecgraf, 0); + iupImageStockSet("IUP_PUC-Rio", load_image_PUC_Rio, 0); + iupImageStockSet("IUP_BR", load_image_BR, 0); + iupImageStockSet("IUP_Lua", load_image_Lua, 0); + iupImageStockSet("IUP_TecgrafPUC-Rio", load_image_TecgrafPUC_Rio, 0); + iupImageStockSet("IUP_Petrobras", load_image_Petrobras, 0); + } + + /***************** Logos *****************/ + +#ifndef WIN32 + if (motif) + { + iupImageStockSet("IUP_LogoTecgraf", load_image_LogoTecgraf8, 0); + iupImageStockSet("IUP_LogoPUC-Rio", load_image_LogoPUC_Rio8, 0); + iupImageStockSet("IUP_LogoBR", load_image_LogoBR8, 0); + iupImageStockSet("IUP_LogoLua", load_image_LogoLua8, 0); + iupImageStockSet("IUP_LogoTecgrafPUC-Rio", load_image_LogoTecgrafPUC_Rio8, 0); + iupImageStockSet("IUP_LogoPetrobras", load_image_LogoPetrobras8, 0); + } + else +#endif + { + iupImageStockSet("IUP_LogoTecgraf", load_image_LogoTecgraf, 0); + iupImageStockSet("IUP_LogoPUC-Rio", load_image_LogoPUC_Rio, 0); + iupImageStockSet("IUP_LogoBR", load_image_LogoBR, 0); + iupImageStockSet("IUP_LogoLua", load_image_LogoLua, 0); + iupImageStockSet("IUP_LogoTecgrafPUC-Rio", load_image_LogoTecgrafPUC_Rio, 0); + iupImageStockSet("IUP_LogoPetrobras", load_image_LogoPetrobras, 0); + } + +#ifdef WIN32 + if (win32) + { + iupImageStockSet("IUP_DeviceCamera", load_image_DeviceCamera, 0); + iupImageStockSet("IUP_DeviceCD", load_image_DeviceCD, 0); + iupImageStockSet("IUP_DeviceCellPhone", load_image_DeviceCellPhone, 0); + iupImageStockSet("IUP_DeviceComputer", load_image_DeviceComputer, 0); + iupImageStockSet("IUP_DeviceFax", load_image_DeviceFax, 0); + iupImageStockSet("IUP_DeviceMP3", load_image_DeviceMP3, 0); + iupImageStockSet("IUP_DeviceNetwork", load_image_DeviceNetwork, 0); + iupImageStockSet("IUP_DevicePDA", load_image_DevicePDA, 0); + iupImageStockSet("IUP_DevicePrinter", load_image_DevicePrinter, 0); + iupImageStockSet("IUP_DeviceScanner", load_image_DeviceScanner, 0); + iupImageStockSet("IUP_DeviceSound", load_image_DeviceSound, 0); + iupImageStockSet("IUP_DeviceVideo", load_image_DeviceVideo, 0); + + iupImageStockSet("IUP_LogoMessageError", load_image_LogoMessageError, 0); + iupImageStockSet("IUP_LogoMessageHelp", load_image_LogoMessageHelp, 0); + iupImageStockSet("IUP_LogoMessageInfo", load_image_LogoMessageInfo, 0); + iupImageStockSet("IUP_LogoMessageSecurity", load_image_LogoMessageSecurity, 0); + iupImageStockSet("IUP_LogoMessageWarning", load_image_LogoMessageWarning, 0); + } +#endif + + if (gtk) + { + iupImageStockSet("IUP_LogoMessageError", 0, "gtk-dialog-error"); + iupImageStockSet("IUP_LogoMessageHelp", 0, "gtk-dialog-question"); + iupImageStockSet("IUP_LogoMessageInfo", 0, "gtk-dialog-info"); + iupImageStockSet("IUP_LogoMessageSecurity", 0, "gtk-dialog-authentication"); + iupImageStockSet("IUP_LogoMessageWarning", 0, "gtk-dialog-warning"); + } +#endif +} + +void iupImageLibLoadAll(void) +{ +#ifndef IUP_IMGLIB_DUMMY + /* Bitmaps */ + iupImageStockLoad("IUP_ActionCancel"); + iupImageStockLoad("IUP_ActionOk"); + iupImageStockLoad("IUP_ArrowDown"); + iupImageStockLoad("IUP_ArrowLeft"); + iupImageStockLoad("IUP_ArrowRight"); + iupImageStockLoad("IUP_ArrowUp"); + iupImageStockLoad("IUP_EditCopy"); + iupImageStockLoad("IUP_EditCut"); + iupImageStockLoad("IUP_EditErase"); + iupImageStockLoad("IUP_EditFind"); + iupImageStockLoad("IUP_EditPaste"); + iupImageStockLoad("IUP_EditRedo"); + iupImageStockLoad("IUP_EditUndo"); + iupImageStockLoad("IUP_FileClose"); + iupImageStockLoad("IUP_FileCloseAll"); + iupImageStockLoad("IUP_FileNew"); + iupImageStockLoad("IUP_FileOpen"); + iupImageStockLoad("IUP_FileProperties"); + iupImageStockLoad("IUP_FileSave"); + iupImageStockLoad("IUP_FileSaveAll"); + iupImageStockLoad("IUP_FileText"); + iupImageStockLoad("IUP_FontBold"); + iupImageStockLoad("IUP_FontDialog"); + iupImageStockLoad("IUP_FontItalic"); + iupImageStockLoad("IUP_MediaForward"); + iupImageStockLoad("IUP_MediaGotoBegin"); + iupImageStockLoad("IUP_MediaGoToEnd"); + iupImageStockLoad("IUP_MediaPause"); + iupImageStockLoad("IUP_MediaPlay"); + iupImageStockLoad("IUP_MediaRecord"); + iupImageStockLoad("IUP_MediaReverse"); + iupImageStockLoad("IUP_MediaRewind"); + iupImageStockLoad("IUP_MediaStop"); + iupImageStockLoad("IUP_MessageError"); + iupImageStockLoad("IUP_MessageHelp"); + iupImageStockLoad("IUP_MessageInfo"); + iupImageStockLoad("IUP_NavigateHome"); + iupImageStockLoad("IUP_NavigateRefresh"); + iupImageStockLoad("IUP_Print"); + iupImageStockLoad("IUP_PrintPreview"); + iupImageStockLoad("IUP_ToolsColor"); + iupImageStockLoad("IUP_ToolsSettings"); + iupImageStockLoad("IUP_ToolsSortAscend"); + iupImageStockLoad("IUP_ToolsSortDescend"); + iupImageStockLoad("IUP_ViewFullScreen"); + iupImageStockLoad("IUP_WindowsCascade"); + iupImageStockLoad("IUP_WindowsTile"); + iupImageStockLoad("IUP_Zoom"); + iupImageStockLoad("IUP_ZoomActualSize"); + iupImageStockLoad("IUP_ZoomIn"); + iupImageStockLoad("IUP_ZoomOut"); + iupImageStockLoad("IUP_ZoomSelection"); + + /* Icons */ + iupImageStockLoad("IUP_Tecgraf"); + iupImageStockLoad("IUP_PUC-Rio"); + iupImageStockLoad("IUP_BR"); + iupImageStockLoad("IUP_Lua"); + iupImageStockLoad("IUP_TecgrafPUC-Rio"); + iupImageStockLoad("IUP_Petrobras"); + + /* Logos */ + iupImageStockLoad("IUP_LogoTecgraf"); + iupImageStockLoad("IUP_LogoPUC-Rio"); + iupImageStockLoad("IUP_LogoBR"); + iupImageStockLoad("IUP_LogoLua"); + iupImageStockLoad("IUP_LogoTecgrafPUC-Rio"); + iupImageStockLoad("IUP_LogoPetrobras"); + +#ifdef WIN32 + /* Logos - Win32 Only */ + iupImageStockLoad("IUP_DeviceCamera"); + iupImageStockLoad("IUP_DeviceCD"); + iupImageStockLoad("IUP_DeviceCellPhone"); + iupImageStockLoad("IUP_DeviceComputer"); + iupImageStockLoad("IUP_DeviceFax"); + iupImageStockLoad("IUP_DeviceMP3"); + iupImageStockLoad("IUP_DeviceNetwork"); + iupImageStockLoad("IUP_DevicePDA"); + iupImageStockLoad("IUP_DevicePrinter"); + iupImageStockLoad("IUP_DeviceScanner"); + iupImageStockLoad("IUP_DeviceSound"); + iupImageStockLoad("IUP_DeviceVideo"); +#endif + + /* Logos - GTK and Win32 Only */ + iupImageStockLoad("IUP_LogoMessageError"); + iupImageStockLoad("IUP_LogoMessageHelp"); + iupImageStockLoad("IUP_LogoMessageInfo"); + iupImageStockLoad("IUP_LogoMessageSecurity"); + iupImageStockLoad("IUP_LogoMessageWarning"); +#endif +} diff --git a/iup/srcimglib/iup_imglib_bitmaps.h b/iup/srcimglib/iup_imglib_bitmaps.h new file mode 100755 index 0000000..41577d6 --- /dev/null +++ b/iup/srcimglib/iup_imglib_bitmaps.h @@ -0,0 +1,1248 @@ +static Ihandle* load_image_FileSave(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 183, 182, 245, 255, 183, 182, 245, 255, 179, 178, 243, 255, 174, 173, 241, 255, 168, 167, 238, 255, 162, 161, 234, 255, 155, 154, 231, 255, 148, 147, 228, 255, 143, 142, 224, 255, 136, 135, 221, 255, 129, 128, 218, 255, 123, 122, 214, 255, 117, 116, 211, 255, 112, 111, 209, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 179, 178, 243, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 75, 88, 190, 255, 89, 88, 176, 255, 89, 88, 176, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 173, 172, 240, 255, 190, 189, 255, 255, 138, 137, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 63, 82, 184, 255, 51, 51, 103, 255, 86, 85, 170, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 167, 166, 237, 255, 190, 189, 255, 255, 129, 128, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 52, 77, 179, 255, 122, 121, 223, 255, 83, 82, 164, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 159, 158, 233, 255, 190, 189, 255, 255, 119, 118, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 40, 71, 173, 255, 114, 113, 215, 255, 80, 79, 159, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 152, 151, 229, 255, 190, 189, 255, 255, 110, 109, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 28, 65, 167, 255, 103, 103, 204, 255, 77, 77, 154, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 146, 145, 226, 255, 190, 189, 255, 255, 103, 102, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 189, 202, 225, 255, 17, 59, 161, 255, 92, 93, 194, 255, 74, 74, 148, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 139, 138, 223, 255, 188, 187, 255, 255, 183, 182, 255, 255, 96, 99, 201, 255, 86, 94, 196, 255, 75, 88, 190, 255, 63, 82, 184, 255, 52, 77, 179, 255, 40, 71, 173, 255, 28, 65, 167, 255, 17, 59, 161, 255, 92, 93, 193, 255, 84, 86, 186, 255, 71, 71, 143, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 132, 131, 219, 255, 180, 179, 255, 255, 174, 173, 255, 255, 164, 163, 252, 255, 143, 142, 244, 255, 135, 134, 236, 255, 129, 128, 230, 255, 122, 121, 223, 255, 114, 113, 215, 255, 108, 107, 209, 255, 92, 93, 193, 255, 84, 86, 186, 255, 76, 80, 178, 255, 68, 68, 137, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 124, 123, 215, 255, 170, 169, 255, 255, 160, 159, 251, 255, 148, 147, 245, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 82, 98, 118, 255, 91, 106, 125, 255, 84, 86, 186, 255, 76, 79, 178, 255, 68, 73, 170, 255, 65, 65, 131, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 118, 117, 212, 255, 160, 159, 255, 255, 145, 144, 245, 255, 135, 134, 236, 255, 75, 91, 113, 255, 0, 0, 0, 255, 52, 60, 71, 255, 206, 217, 233, 255, 212, 221, 236, 255, 103, 116, 133, 255, 67, 75, 174, 255, 68, 73, 170, 255, 60, 66, 163, 255, 62, 62, 125, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 112, 111, 209, 255, 154, 153, 255, 255, 135, 134, 236, 255, 129, 128, 230, 255, 75, 91, 113, 255, 52, 60, 71, 255, 104, 120, 141, 255, 216, 224, 237, 255, 224, 231, 241, 255, 115, 127, 143, 255, 53, 65, 163, 255, 60, 66, 162, 255, 53, 61, 156, 255, 60, 59, 120, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 108, 107, 207, 255, 143, 142, 243, 255, 129, 128, 230, 255, 36, 68, 170, 255, 33, 50, 71, 255, 171, 180, 195, 255, 179, 187, 198, 255, 188, 193, 202, 255, 196, 200, 206, 255, 72, 77, 86, 255, 51, 62, 158, 255, 54, 61, 156, 255, 49, 57, 152, 255, 57, 57, 114, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 108, 107, 207, 84, 101, 100, 195, 255, 86, 85, 170, 255, 83, 82, 164, 255, 80, 79, 159, 255, 77, 77, 154, 255, 74, 74, 148, 255, 71, 71, 143, 255, 68, 68, 137, 255, 65, 65, 131, 255, 60, 59, 120, 255, 60, 59, 120, 255, 57, 57, 114, 255, 55, 54, 110, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_NavigateHome(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 84, 77, 68, 255, 84, 77, 68, 95, 255, 255, 255, 0, 121, 55, 44, 255, 121, 55, 44, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 223, 175, 44, 255, 218, 167, 33, 255, 84, 77, 68, 255, 84, 77, 68, 57, 121, 55, 44, 255, 89, 40, 32, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 107, 91, 75, 255, 224, 167, 20, 255, 84, 77, 68, 255, 108, 49, 39, 255, 74, 33, 26, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 184, 185, 188, 255, 167, 171, 178, 255, 96, 81, 68, 255, 217, 157, 10, 255, 84, 77, 68, 255, 59, 26, 20, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 189, 189, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 187, 192, 255, 83, 70, 58, 255, 208, 148, 7, 255, 84, 77, 68, 255, 84, 77, 68, 60, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 100, 95, 83, 57, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 189, 189, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 186, 192, 255, 72, 60, 51, 255, 204, 144, 5, 255, 84, 77, 68, 255, 84, 77, 68, 60, 255, 255, 255, 0, + 255, 255, 255, 0, 100, 95, 83, 255, 239, 179, 18, 255, 111, 94, 78, 255, 189, 189, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 253, 255, 241, 244, 250, 255, 181, 184, 192, 255, 68, 57, 48, 255, 205, 143, 0, 255, 84, 77, 68, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 100, 95, 83, 63, 64, 55, 45, 255, 192, 192, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 253, 255, 241, 244, 250, 255, 231, 236, 246, 255, 220, 228, 242, 255, 162, 166, 175, 255, 39, 33, 28, 255, 84, 77, 68, 96, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 82, 93, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 164, 143, 255, 168, 159, 138, 255, 163, 153, 130, 255, 157, 145, 122, 255, 220, 228, 242, 255, 209, 219, 238, 255, 173, 183, 199, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 77, 87, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 159, 138, 255, 240, 179, 14, 255, 236, 175, 12, 255, 111, 94, 78, 255, 209, 219, 238, 255, 198, 209, 233, 255, 166, 178, 198, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 73, 84, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 253, 255, 163, 153, 130, 255, 234, 172, 11, 255, 227, 166, 9, 255, 100, 84, 70, 255, 198, 209, 233, 255, 187, 201, 229, 255, 160, 174, 198, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 71, 81, 95, 255, 255, 255, 255, 255, 249, 250, 253, 255, 241, 244, 250, 255, 157, 145, 122, 255, 224, 163, 8, 255, 138, 120, 85, 255, 81, 68, 56, 255, 187, 201, 229, 255, 177, 193, 225, 255, 154, 170, 197, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 68, 78, 93, 255, 249, 250, 253, 255, 191, 195, 202, 255, 186, 191, 201, 255, 151, 137, 113, 255, 214, 153, 4, 255, 209, 147, 2, 255, 67, 57, 46, 255, 158, 173, 198, 255, 153, 170, 197, 255, 150, 167, 196, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 67, 77, 91, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 31, 42, 57, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MessageHelp(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 218, 240, 182, 209, 220, 241, 255, 208, 219, 239, 255, 209, 219, 239, 255, 209, 220, 239, 255, 208, 219, 241, 255, 194, 205, 226, 158, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 208, 219, 241, 92, 211, 220, 241, 255, 228, 232, 245, 255, 253, 252, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 252, 255, 224, 230, 243, 255, 210, 221, 241, 255, 110, 117, 129, 67, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 204, 218, 240, 93, 214, 223, 240, 255, 255, 255, 255, 255, 251, 255, 255, 255, 198, 243, 255, 255, 168, 221, 254, 255, 152, 207, 252, 255, 145, 201, 255, 255, 169, 212, 255, 255, 248, 254, 255, 255, 255, 255, 252, 255, 212, 223, 241, 255, 69, 73, 82, 79, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 212, 222, 241, 255, 255, 255, 255, 255, 206, 233, 255, 255, 112, 178, 255, 255, 135, 175, 236, 255, 223, 226, 236, 255, 244, 240, 235, 255, 224, 228, 241, 255, 120, 164, 246, 255, 77, 140, 254, 255, 202, 222, 255, 255, 255, 255, 253, 255, 210, 221, 240, 255, 0, 0, 0, 54, 0, 0, 0, 2, + 207, 218, 240, 193, 239, 241, 246, 255, 219, 234, 255, 255, 73, 138, 255, 255, 92, 135, 222, 255, 255, 255, 238, 255, 253, 252, 254, 255, 161, 185, 231, 255, 255, 255, 250, 255, 254, 249, 243, 255, 60, 114, 224, 255, 53, 112, 230, 255, 238, 243, 255, 255, 224, 231, 244, 255, 110, 117, 129, 182, 0, 0, 0, 31, + 212, 222, 241, 255, 255, 255, 255, 255, 106, 152, 245, 255, 42, 102, 226, 255, 109, 139, 200, 255, 227, 234, 240, 255, 81, 126, 215, 255, 0, 48, 189, 255, 126, 156, 215, 255, 255, 255, 255, 255, 101, 140, 218, 255, 20, 83, 209, 255, 118, 154, 226, 255, 254, 253, 254, 255, 188, 198, 217, 241, 0, 0, 0, 84, + 215, 224, 241, 255, 230, 237, 251, 255, 50, 106, 219, 255, 51, 104, 211, 255, 40, 94, 202, 255, 33, 88, 201, 255, 25, 84, 201, 255, 16, 75, 193, 255, 198, 208, 226, 255, 255, 255, 255, 255, 63, 112, 208, 255, 32, 90, 205, 255, 56, 106, 206, 255, 251, 251, 252, 255, 211, 222, 239, 254, 0, 0, 0, 105, + 217, 225, 242, 255, 202, 216, 243, 255, 34, 91, 205, 255, 50, 102, 207, 255, 47, 100, 204, 255, 43, 96, 204, 255, 31, 85, 196, 255, 168, 181, 207, 255, 255, 255, 255, 255, 122, 156, 224, 255, 26, 83, 199, 255, 43, 96, 205, 255, 41, 94, 198, 255, 237, 241, 245, 255, 213, 223, 240, 254, 0, 0, 0, 173, + 216, 225, 243, 255, 214, 222, 242, 255, 30, 86, 197, 255, 50, 102, 206, 255, 49, 101, 204, 255, 33, 90, 204, 255, 105, 134, 194, 255, 255, 255, 255, 255, 145, 173, 232, 255, 15, 74, 196, 255, 45, 98, 204, 255, 40, 95, 203, 255, 43, 94, 195, 255, 241, 242, 243, 255, 214, 224, 242, 254, 0, 0, 0, 177, + 215, 224, 243, 255, 251, 250, 248, 255, 50, 98, 197, 255, 38, 92, 202, 255, 51, 103, 206, 255, 35, 91, 203, 255, 105, 137, 202, 255, 223, 231, 247, 255, 56, 107, 208, 255, 35, 90, 202, 255, 49, 101, 205, 255, 27, 83, 195, 255, 80, 120, 199, 255, 253, 252, 248, 255, 196, 205, 224, 248, 0, 0, 0, 175, + 207, 217, 238, 225, 249, 250, 250, 255, 144, 168, 216, 255, 13, 72, 189, 255, 46, 98, 205, 255, 41, 96, 205, 255, 58, 107, 203, 255, 104, 142, 216, 255, 41, 94, 202, 255, 45, 98, 204, 255, 41, 93, 201, 255, 16, 71, 185, 255, 189, 201, 224, 255, 232, 237, 246, 255, 128, 135, 149, 218, 0, 0, 0, 157, + 134, 143, 159, 50, 215, 225, 242, 255, 255, 255, 248, 255, 88, 125, 199, 255, 12, 69, 187, 255, 19, 78, 198, 255, 149, 164, 194, 255, 255, 255, 255, 255, 111, 146, 217, 255, 15, 74, 193, 255, 11, 69, 184, 255, 128, 154, 206, 255, 255, 255, 248, 255, 214, 224, 242, 255, 0, 0, 0, 168, 0, 0, 0, 102, + 0, 0, 0, 3, 179, 189, 208, 169, 226, 234, 245, 255, 255, 255, 244, 255, 128, 154, 207, 255, 21, 76, 183, 255, 60, 100, 185, 255, 154, 175, 217, 255, 35, 88, 192, 255, 36, 86, 185, 255, 159, 175, 213, 255, 255, 255, 247, 255, 217, 226, 244, 255, 70, 75, 83, 200, 0, 0, 0, 140, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 0, 15, 160, 169, 188, 186, 216, 227, 244, 255, 251, 250, 248, 255, 226, 226, 228, 255, 162, 177, 207, 255, 150, 171, 212, 255, 187, 198, 221, 255, 240, 241, 236, 255, 242, 243, 246, 255, 214, 225, 242, 255, 93, 98, 108, 206, 0, 0, 0, 148, 0, 0, 0, 69, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 78, 83, 92, 124, 196, 205, 225, 242, 215, 225, 243, 255, 217, 227, 244, 255, 218, 227, 244, 255, 216, 226, 243, 255, 215, 225, 243, 255, 171, 181, 198, 237, 16, 17, 19, 178, 0, 0, 0, 144, 0, 0, 0, 77, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 62, 0, 0, 0, 105, 0, 0, 0, 176, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 105, 0, 0, 0, 105, 0, 0, 0, 46, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaStop(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 179, 253, 255, 138, 176, 250, 255, 134, 173, 246, 255, 129, 168, 243, 255, 125, 163, 239, 255, 120, 158, 234, 255, 116, 155, 231, 255, 112, 151, 227, 255, 110, 149, 226, 242, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 176, 250, 255, 213, 225, 252, 255, 212, 226, 251, 255, 198, 216, 250, 255, 185, 205, 249, 255, 179, 202, 249, 255, 172, 198, 249, 255, 157, 187, 245, 255, 45, 85, 170, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 134, 173, 246, 255, 218, 229, 251, 255, 202, 218, 251, 255, 179, 202, 249, 255, 168, 194, 248, 255, 152, 182, 246, 255, 145, 179, 243, 255, 135, 163, 220, 255, 37, 78, 162, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 129, 168, 243, 255, 211, 225, 251, 255, 186, 206, 249, 255, 165, 191, 248, 255, 148, 179, 243, 255, 133, 168, 242, 255, 122, 159, 235, 255, 108, 141, 208, 255, 30, 70, 154, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 163, 239, 255, 200, 215, 251, 255, 173, 199, 248, 255, 152, 183, 247, 255, 136, 171, 242, 255, 122, 159, 237, 255, 109, 148, 230, 255, 85, 119, 190, 255, 22, 62, 146, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 120, 158, 234, 255, 187, 208, 249, 255, 161, 189, 248, 255, 144, 176, 244, 255, 121, 159, 239, 255, 104, 146, 230, 255, 89, 132, 220, 255, 72, 107, 180, 255, 15, 54, 139, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 116, 155, 231, 255, 175, 201, 249, 255, 148, 181, 245, 255, 126, 163, 237, 255, 108, 149, 230, 255, 89, 133, 218, 255, 78, 121, 206, 255, 67, 101, 172, 255, 9, 48, 133, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 112, 151, 227, 255, 160, 188, 243, 255, 131, 161, 215, 255, 109, 141, 206, 255, 89, 124, 193, 255, 72, 107, 175, 255, 64, 98, 167, 255, 55, 88, 155, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 110, 149, 226, 242, 57, 98, 182, 255, 51, 92, 176, 255, 42, 83, 167, 255, 32, 72, 157, 255, 22, 62, 146, 255, 13, 52, 137, 255, 6, 45, 130, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FontItalic(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 32, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 84, 0, 0, 0, 255, 5, 4, 5, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 84, 0, 0, 0, 255, 5, 4, 5, 96, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 81, 0, 0, 0, 255, 5, 4, 5, 105, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 34, 0, 0, 0, 255, 0, 0, 0, 255, 5, 4, 5, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FontDialog(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 115, 179, 70, 80, 113, 178, 191, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 133, 190, 255, 81, 113, 177, 255, 134, 161, 214, 84, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 78, 111, 175, 21, 77, 109, 172, 255, 77, 108, 174, 255, 61, 94, 157, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 70, 104, 170, 155, 65, 99, 167, 155, 56, 92, 161, 255, 51, 80, 143, 255, 51, 80, 142, 79, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 65, 98, 166, 244, 58, 93, 161, 21, 54, 86, 150, 203, 50, 79, 142, 255, 48, 78, 139, 216, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 69, 102, 165, 97, 62, 93, 161, 200, 255, 255, 255, 0, 53, 87, 154, 70, 52, 85, 149, 255, 46, 76, 137, 254, 46, 76, 136, 68, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 65, 97, 161, 213, 57, 90, 155, 42, 255, 255, 255, 0, 255, 255, 255, 0, 51, 85, 147, 234, 46, 76, 137, 255, 45, 73, 133, 186, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 94, 157, 35, 58, 91, 154, 255, 49, 80, 143, 208, 46, 75, 135, 213, 48, 79, 142, 213, 46, 78, 141, 244, 44, 73, 133, 255, 34, 59, 108, 253, 33, 58, 106, 36, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 61, 92, 155, 177, 54, 86, 150, 190, 39, 63, 114, 52, 36, 60, 109, 58, 41, 66, 120, 58, 41, 70, 129, 42, 41, 69, 128, 255, 36, 60, 112, 255, 34, 59, 108, 177, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 62, 92, 152, 11, 51, 84, 150, 244, 41, 67, 120, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 39, 65, 120, 148, 33, 58, 106, 255, 32, 56, 104, 237, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 56, 87, 150, 26, 50, 82, 146, 183, 41, 69, 124, 245, 64, 84, 117, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 35, 62, 116, 88, 31, 54, 98, 255, 35, 60, 112, 255, 36, 61, 112, 255, 33, 56, 103, 240, 32, 54, 102, 11, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 47, 78, 139, 21, 41, 69, 124, 42, 34, 58, 105, 42, 31, 52, 96, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 34, 60, 112, 21, 29, 52, 96, 42, 25, 43, 81, 42, 23, 41, 77, 42, 25, 44, 82, 42, 29, 51, 96, 11, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FileText(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 156, 171, 192, 255, 53, 73, 99, 255, 122, 139, 162, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 251, 252, 254, 255, 149, 164, 185, 255, 186, 197, 212, 255, 53, 73, 99, 255, 122, 139, 162, 169, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 251, 251, 254, 255, 248, 249, 253, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 182, 204, 255, 255, 255, 255, 255, 50, 106, 216, 255, 48, 102, 208, 255, 45, 96, 196, 255, 42, 89, 183, 255, 40, 82, 168, 255, 243, 246, 252, 255, 239, 244, 251, 255, 147, 162, 183, 255, 147, 162, 183, 255, 54, 74, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 255, 255, 249, 251, 253, 255, 246, 249, 253, 255, 242, 245, 252, 255, 238, 242, 251, 255, 234, 239, 251, 255, 230, 236, 249, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 158, 174, 195, 255, 254, 254, 254, 255, 50, 106, 216, 255, 48, 102, 208, 255, 46, 96, 196, 255, 43, 89, 183, 255, 39, 82, 167, 255, 37, 75, 153, 255, 34, 69, 142, 255, 223, 232, 248, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 154, 169, 190, 255, 251, 252, 254, 255, 248, 249, 253, 255, 244, 247, 253, 255, 240, 244, 252, 255, 237, 241, 251, 255, 232, 238, 250, 255, 228, 234, 248, 255, 223, 231, 247, 255, 218, 226, 246, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 165, 186, 255, 246, 249, 253, 255, 50, 106, 216, 255, 48, 102, 208, 255, 45, 96, 196, 255, 43, 89, 183, 255, 40, 82, 168, 255, 36, 75, 154, 255, 34, 69, 142, 255, 211, 223, 245, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 243, 246, 252, 255, 238, 242, 251, 255, 234, 239, 251, 255, 230, 235, 249, 255, 225, 232, 249, 255, 219, 229, 247, 255, 215, 225, 246, 255, 211, 222, 244, 255, 205, 218, 243, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 237, 242, 251, 255, 50, 106, 216, 255, 49, 101, 208, 255, 45, 96, 196, 255, 43, 89, 183, 255, 40, 81, 167, 255, 37, 75, 154, 255, 34, 69, 142, 255, 199, 213, 243, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 232, 238, 249, 255, 227, 234, 248, 255, 222, 230, 248, 255, 217, 227, 247, 255, 213, 223, 245, 255, 208, 219, 245, 255, 203, 216, 243, 255, 198, 213, 242, 255, 194, 209, 241, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 226, 233, 249, 255, 221, 230, 248, 255, 216, 226, 247, 255, 211, 222, 245, 255, 206, 219, 244, 255, 202, 215, 243, 255, 197, 212, 242, 255, 193, 208, 241, 255, 188, 205, 240, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 220, 229, 247, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_PrintPreview(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 164, 185, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 167, 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 250, 246, 255, 193, 197, 193, 255, 151, 159, 161, 255, 132, 141, 145, 255, 136, 145, 149, 255, 60, 77, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 246, 255, 178, 184, 184, 255, 188, 194, 196, 255, 231, 235, 236, 255, 226, 232, 235, 255, 164, 174, 178, 255, 99, 108, 117, 255, 93, 108, 122, 16, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 196, 195, 255, 185, 191, 194, 255, 255, 255, 255, 255, 251, 252, 255, 255, 243, 247, 253, 255, 230, 238, 252, 255, 147, 158, 170, 255, 89, 97, 103, 135, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 158, 161, 255, 229, 233, 235, 255, 251, 252, 255, 255, 243, 247, 253, 255, 232, 240, 251, 255, 217, 229, 250, 255, 179, 195, 216, 255, 88, 92, 92, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 151, 154, 255, 228, 233, 237, 255, 243, 247, 253, 255, 232, 239, 252, 255, 217, 229, 249, 255, 200, 217, 247, 255, 153, 173, 200, 255, 83, 86, 86, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 178, 179, 255, 178, 185, 191, 255, 231, 239, 251, 255, 217, 230, 250, 255, 199, 218, 247, 255, 181, 205, 244, 255, 109, 119, 127, 255, 88, 90, 90, 151, 145, 133, 117, 132, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 222, 223, 223, 255, 139, 143, 147, 255, 157, 168, 180, 255, 176, 195, 215, 255, 152, 174, 200, 255, 109, 118, 127, 255, 87, 89, 85, 255, 168, 144, 93, 255, 178, 152, 111, 254, 145, 133, 117, 132, 255, 255, 255, 0, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 212, 215, 215, 255, 146, 151, 151, 255, 103, 106, 108, 255, 98, 100, 102, 255, 91, 87, 81, 255, 147, 115, 67, 255, 231, 160, 71, 255, 253, 198, 97, 255, 161, 142, 114, 254, 145, 133, 117, 78, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 133, 134, 140, 255, 104, 77, 52, 255, 208, 127, 53, 255, 228, 152, 65, 255, 237, 179, 87, 255, 118, 103, 79, 255, + 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 70, 74, 84, 255, 103, 76, 51, 255, 189, 119, 56, 255, 102, 72, 45, 255, 89, 76, 55, 81, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 77, 52, 84, 60, 49, 39, 255, 72, 58, 37, 84, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_Zoom(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 146, 158, 176, 4, 217, 222, 227, 75, 182, 192, 203, 154, 151, 164, 182, 195, 136, 151, 170, 217, 116, 132, 154, 229, 124, 141, 163, 190, 160, 178, 213, 78, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 186, 194, 207, 128, 149, 161, 178, 208, 177, 189, 200, 247, 187, 203, 214, 255, 187, 212, 222, 255, 152, 178, 195, 255, 118, 144, 165, 255, 82, 104, 132, 236, 86, 109, 135, 92, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 84, 104, 134, 26, 146, 158, 176, 201, 189, 198, 209, 253, 234, 244, 246, 255, 230, 246, 249, 255, 222, 242, 246, 255, 206, 234, 244, 255, 178, 212, 229, 255, 128, 158, 181, 255, 70, 91, 119, 250, 69, 88, 115, 36, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 189, 196, 207, 158, 164, 176, 190, 243, 227, 235, 240, 255, 244, 250, 251, 255, 241, 249, 251, 255, 234, 245, 250, 255, 215, 237, 245, 255, 191, 223, 241, 255, 164, 203, 230, 255, 104, 133, 158, 255, 61, 82, 111, 130, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 148, 160, 178, 213, 182, 196, 207, 255, 234, 245, 249, 255, 243, 250, 252, 255, 244, 251, 252, 255, 238, 246, 251, 255, 218, 237, 246, 255, 193, 222, 240, 255, 169, 207, 236, 255, 125, 162, 192, 255, 60, 81, 112, 239, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 113, 129, 151, 255, 196, 218, 227, 255, 222, 241, 247, 255, 235, 246, 250, 255, 238, 248, 251, 255, 230, 243, 249, 255, 211, 233, 244, 255, 190, 220, 239, 255, 165, 202, 231, 255, 130, 166, 204, 255, 63, 84, 114, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 128, 143, 165, 221, 164, 188, 205, 255, 204, 232, 244, 255, 215, 238, 246, 255, 218, 239, 247, 255, 210, 234, 244, 255, 197, 226, 242, 255, 179, 213, 236, 255, 157, 195, 227, 255, 114, 148, 181, 255, 56, 76, 108, 206, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 127, 142, 163, 162, 125, 150, 173, 247, 186, 223, 242, 255, 193, 225, 243, 255, 193, 225, 242, 255, 187, 222, 240, 255, 178, 216, 237, 255, 163, 203, 231, 255, 135, 173, 211, 255, 87, 115, 146, 255, 86, 95, 102, 244, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 105, 122, 149, 20, 83, 102, 130, 241, 139, 171, 193, 255, 170, 209, 236, 255, 174, 210, 238, 255, 167, 207, 236, 255, 158, 199, 231, 255, 138, 178, 216, 255, 98, 129, 161, 255, 66, 86, 114, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 84, 104, 134, 70, 77, 98, 129, 245, 101, 129, 157, 255, 126, 162, 191, 255, 135, 173, 208, 255, 115, 149, 180, 255, 89, 117, 147, 255, 64, 84, 110, 255, 145, 128, 79, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 84, 104, 134, 49, 120, 141, 173, 155, 66, 88, 117, 200, 59, 80, 112, 243, 67, 88, 119, 255, 87, 108, 143, 225, 75, 77, 73, 117, 66, 52, 45, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 87, 76, 43, 1, 255, 255, 255, 0, 79, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 79, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 87, 76, 43, 2, 255, 255, 255, 0, 79, 80, 77, 82, 79, 80, 77, 255, 179, 141, 50, 255, 116, 102, 67, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 79, 80, 77, 58, 79, 80, 77, 202, 79, 80, 77, 81, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ZoomSelection(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 158, 203, 28, 194, 201, 211, 127, 150, 163, 181, 195, 129, 144, 164, 221, 120, 137, 159, 203, 160, 176, 212, 78, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 29, 36, 45, 9, 169, 178, 194, 176, 184, 195, 206, 241, 201, 217, 226, 255, 189, 214, 224, 255, 149, 177, 195, 255, 97, 121, 148, 242, 179, 185, 194, 255, 8, 9, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 154, 165, 183, 114, 176, 187, 199, 237, 232, 239, 243, 255, 237, 248, 250, 255, 224, 241, 247, 255, 195, 225, 240, 255, 152, 188, 214, 255, 65, 84, 106, 255, 21, 28, 38, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 148, 160, 178, 213, 199, 212, 221, 255, 240, 248, 251, 255, 244, 251, 252, 255, 231, 243, 249, 255, 201, 227, 242, 255, 169, 207, 236, 255, 100, 132, 161, 255, 20, 27, 38, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 118, 134, 155, 244, 196, 218, 228, 255, 224, 242, 248, 255, 231, 245, 250, 255, 218, 237, 246, 255, 193, 222, 240, 255, 162, 200, 230, 255, 105, 136, 169, 255, 20, 27, 38, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 163, 174, 189, 255, 153, 180, 199, 255, 198, 228, 244, 255, 201, 230, 244, 255, 191, 224, 240, 255, 174, 211, 235, 255, 142, 180, 216, 255, 94, 118, 143, 255, 25, 30, 35, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 127, 153, 21, 101, 124, 151, 246, 160, 196, 222, 255, 174, 210, 238, 255, 164, 204, 234, 255, 145, 185, 221, 255, 98, 129, 161, 255, 99, 106, 109, 255, 55, 49, 34, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 80, 103, 91, 98, 122, 152, 208, 106, 137, 166, 237, 106, 137, 171, 252, 92, 119, 150, 248, 67, 81, 97, 209, 154, 133, 80, 255, 202, 178, 109, 255, 55, 49, 34, 85, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 12, 15, 5, 36, 43, 54, 40, 22, 29, 39, 67, 20, 28, 38, 83, 27, 34, 45, 79, 25, 26, 24, 39, 88, 82, 66, 178, 181, 150, 71, 255, 214, 193, 123, 255, 73, 65, 44, 113, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 26, 28, 79, 80, 77, 197, 198, 151, 43, 255, 214, 193, 123, 255, 55, 49, 33, 85, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, 1, 34, 35, 34, 36, 79, 80, 78, 189, 132, 112, 63, 224, 35, 32, 23, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 19, 26, 26, 26, 54, 9, 9, 8, 9}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ZoomOut(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 127, 127, 191, 4, 217, 220, 227, 75, 182, 192, 203, 154, 150, 163, 181, 195, 136, 150, 170, 217, 115, 132, 153, 229, 123, 140, 162, 190, 160, 176, 212, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 185, 193, 207, 128, 149, 160, 177, 208, 176, 188, 200, 247, 187, 203, 214, 255, 187, 212, 222, 255, 152, 178, 195, 255, 118, 144, 165, 255, 82, 103, 131, 236, 85, 108, 135, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 107, 137, 26, 145, 158, 176, 201, 189, 197, 208, 253, 234, 244, 246, 255, 230, 246, 249, 255, 222, 242, 246, 255, 206, 234, 244, 255, 178, 212, 229, 255, 128, 158, 181, 255, 70, 90, 119, 250, 70, 84, 113, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 188, 195, 206, 158, 163, 176, 189, 243, 227, 235, 240, 255, 244, 250, 251, 255, 241, 249, 251, 255, 234, 245, 250, 255, 215, 237, 245, 255, 191, 223, 241, 255, 164, 203, 230, 255, 104, 133, 158, 255, 60, 82, 111, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 160, 178, 213, 182, 196, 207, 255, 234, 245, 249, 255, 243, 250, 252, 255, 244, 251, 252, 255, 238, 246, 251, 255, 218, 237, 246, 255, 193, 222, 240, 255, 169, 207, 236, 255, 125, 162, 192, 255, 59, 81, 112, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 113, 129, 151, 255, 196, 218, 227, 255, 222, 241, 247, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 165, 202, 231, 255, 130, 166, 204, 255, 63, 84, 114, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 143, 164, 221, 164, 188, 205, 255, 204, 232, 244, 255, 215, 238, 246, 255, 218, 239, 247, 255, 210, 234, 244, 255, 197, 226, 242, 255, 179, 213, 236, 255, 157, 195, 227, 255, 114, 148, 181, 255, 55, 75, 107, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 127, 141, 163, 162, 124, 149, 173, 247, 186, 223, 242, 255, 193, 225, 243, 255, 193, 225, 242, 255, 187, 222, 240, 255, 178, 216, 237, 255, 163, 203, 231, 255, 135, 173, 211, 255, 87, 115, 146, 255, 85, 95, 102, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 127, 153, 20, 82, 101, 130, 241, 139, 171, 193, 255, 170, 209, 236, 255, 174, 210, 238, 255, 167, 207, 236, 255, 158, 199, 231, 255, 138, 178, 216, 255, 98, 129, 161, 255, 66, 86, 114, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 105, 134, 70, 77, 97, 129, 245, 101, 129, 157, 255, 126, 162, 191, 255, 135, 173, 208, 255, 115, 149, 180, 255, 89, 117, 147, 255, 64, 84, 110, 255, 145, 128, 79, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 104, 135, 49, 120, 141, 172, 155, 66, 87, 117, 200, 58, 79, 112, 243, 67, 88, 119, 255, 87, 107, 142, 225, 74, 76, 71, 117, 66, 52, 45, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 2, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 179, 141, 50, 255, 116, 102, 67, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 58, 79, 79, 77, 202, 78, 78, 75, 81, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_EditCut(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 178, 191, 139, 155, 166, 178, 228, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 47, 220, 224, 229, 238, 123, 133, 148, 176, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 157, 172, 52, 140, 150, 163, 254, 122, 133, 153, 25, 255, 255, 255, 0, 246, 247, 248, 133, 171, 178, 188, 254, 100, 108, 122, 92, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 146, 155, 169, 250, 147, 156, 171, 163, 255, 255, 255, 15, 230, 232, 236, 233, 102, 111, 124, 254, 22, 18, 14, 33, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 177, 190, 242, 138, 147, 161, 249, 200, 204, 209, 128, 193, 198, 206, 251, 86, 95, 107, 253, 22, 18, 14, 27, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 161, 170, 184, 179, 139, 148, 162, 254, 141, 150, 161, 191, 119, 129, 142, 254, 76, 82, 91, 234, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 137, 145, 161, 65, 116, 128, 142, 254, 99, 110, 126, 254, 85, 93, 105, 253, 70, 75, 82, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 110, 132, 238, 86, 96, 113, 255, 84, 102, 134, 252, 79, 96, 132, 88, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 91, 136, 238, 45, 88, 137, 235, 179, 84, 131, 224, 249, 75, 118, 202, 173, 76, 119, 205, 251, 78, 122, 211, 247, 76, 117, 203, 159, 70, 107, 185, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 88, 135, 234, 49, 89, 140, 238, 243, 83, 128, 220, 247, 59, 91, 158, 244, 53, 82, 142, 221, 70, 110, 190, 236, 79, 123, 213, 255, 69, 107, 185, 255, 58, 92, 159, 144, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 86, 135, 231, 176, 86, 134, 229, 255, 65, 102, 176, 255, 53, 82, 142, 248, 53, 82, 141, 180, 75, 116, 202, 250, 79, 121, 213, 24, 66, 104, 178, 96, 52, 83, 143, 250, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 132, 226, 250, 82, 129, 222, 49, 66, 101, 178, 48, 51, 80, 139, 250, 53, 82, 141, 18, 80, 123, 213, 250, 77, 120, 205, 48, 56, 88, 150, 107, 43, 64, 106, 251, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 83, 130, 222, 250, 79, 118, 210, 48, 62, 99, 172, 98, 49, 76, 132, 250, 255, 255, 255, 0, 75, 116, 199, 205, 62, 98, 170, 255, 41, 60, 99, 255, 28, 31, 41, 244, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 78, 121, 209, 206, 63, 98, 171, 255, 51, 80, 138, 255, 39, 54, 87, 227, 22, 18, 14, 3, 63, 100, 172, 89, 42, 59, 96, 238, 39, 55, 88, 239, 51, 79, 135, 104, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 67, 104, 180, 88, 54, 84, 146, 227, 40, 58, 93, 238, 49, 74, 124, 110, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FileProperties(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 172, 164, 143, 57, 172, 164, 143, 255, 169, 161, 140, 255, 165, 156, 136, 255, 160, 150, 131, 255, 154, 144, 126, 255, 150, 139, 122, 255, 150, 139, 122, 122, 156, 184, 153, 255, 166, 193, 174, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 172, 164, 143, 57, 172, 164, 143, 255, 246, 225, 131, 255, 246, 225, 131, 255, 246, 225, 131, 255, 244, 219, 119, 255, 242, 210, 101, 255, 207, 178, 95, 255, 150, 139, 122, 255, 166, 193, 174, 255, 154, 211, 147, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 172, 164, 143, 57, 172, 164, 143, 255, 246, 225, 131, 255, 114, 91, 64, 255, 246, 225, 131, 255, 244, 219, 119, 255, 242, 210, 101, 255, 239, 201, 80, 255, 235, 191, 59, 255, 233, 182, 41, 255, 131, 165, 118, 255, 120, 192, 93, 255, + 167, 182, 204, 255, 167, 182, 204, 255, 166, 181, 202, 255, 166, 176, 189, 255, 172, 164, 143, 255, 246, 225, 131, 255, 112, 97, 75, 255, 246, 225, 131, 255, 115, 89, 60, 255, 242, 210, 101, 255, 239, 201, 80, 255, 235, 191, 59, 255, 228, 178, 39, 255, 214, 163, 28, 255, 110, 149, 100, 255, 108, 180, 83, 255, + 166, 181, 203, 255, 254, 254, 254, 255, 234, 234, 228, 255, 172, 164, 143, 255, 246, 225, 131, 255, 112, 97, 75, 255, 226, 205, 122, 255, 111, 97, 76, 255, 242, 210, 101, 255, 113, 93, 69, 255, 223, 178, 50, 255, 200, 153, 29, 255, 179, 136, 26, 255, 109, 83, 31, 255, 88, 132, 79, 255, 100, 172, 76, 255, + 165, 179, 201, 255, 254, 254, 254, 255, 172, 164, 143, 255, 229, 211, 134, 255, 112, 97, 75, 255, 189, 184, 175, 255, 112, 97, 74, 255, 222, 193, 97, 255, 111, 97, 76, 255, 233, 182, 41, 255, 51, 39, 21, 255, 58, 44, 16, 255, 53, 41, 23, 255, 44, 34, 20, 145, 67, 116, 61, 255, 97, 167, 75, 255, + 162, 177, 199, 255, 252, 253, 254, 255, 233, 233, 226, 255, 132, 117, 94, 255, 227, 227, 223, 255, 246, 255, 255, 255, 201, 200, 194, 255, 112, 97, 74, 255, 214, 169, 46, 255, 71, 53, 35, 255, 153, 163, 175, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 67, 116, 61, 114, 76, 130, 65, 255, + 160, 176, 197, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 239, 250, 253, 255, 197, 196, 193, 255, 114, 92, 65, 255, 205, 222, 242, 255, 192, 211, 238, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 67, 116, 61, 15, + 158, 174, 195, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 246, 255, 255, 255, 239, 249, 253, 255, 229, 242, 250, 255, 217, 232, 246, 255, 205, 222, 243, 255, 192, 211, 238, 255, 178, 200, 234, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 156, 170, 192, 255, 246, 255, 255, 255, 156, 166, 183, 255, 152, 163, 182, 255, 239, 249, 253, 255, 144, 156, 179, 255, 141, 153, 178, 255, 139, 152, 177, 255, 139, 152, 177, 255, 139, 152, 177, 255, 165, 190, 230, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 153, 168, 190, 255, 246, 255, 255, 255, 246, 255, 255, 255, 239, 250, 253, 255, 229, 242, 250, 255, 218, 232, 246, 255, 205, 222, 242, 255, 192, 211, 238, 255, 178, 200, 234, 255, 166, 190, 230, 255, 154, 180, 227, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 152, 166, 188, 255, 246, 255, 255, 255, 156, 165, 184, 255, 152, 162, 182, 255, 218, 232, 246, 255, 144, 157, 179, 255, 141, 154, 178, 255, 139, 152, 177, 255, 139, 152, 177, 255, 139, 152, 177, 255, 144, 173, 223, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 150, 165, 186, 255, 239, 250, 252, 255, 230, 242, 250, 255, 218, 233, 246, 255, 205, 222, 242, 255, 191, 211, 238, 255, 178, 200, 234, 255, 165, 190, 230, 255, 154, 180, 226, 255, 144, 173, 223, 255, 137, 167, 221, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 149, 163, 185, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ArrowUp(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 159, 184, 146, 255, 69, 85, 68, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 180, 206, 166, 255, 213, 241, 198, 255, 86, 104, 82, 255, 73, 90, 71, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 215, 244, 199, 255, 197, 238, 175, 255, 129, 166, 111, 255, 80, 97, 77, 255, 73, 90, 71, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 215, 244, 199, 255, 191, 235, 168, 255, 173, 225, 146, 255, 165, 218, 139, 255, 117, 154, 101, 255, 100, 117, 95, 255, 44, 54, 43, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 166, 192, 152, 255, 208, 240, 190, 255, 191, 235, 168, 255, 171, 224, 145, 255, 163, 216, 137, 255, 141, 189, 118, 255, 123, 171, 104, 255, 92, 128, 79, 255, 53, 64, 51, 255, 44, 54, 43, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 193, 153, 255, 90, 108, 86, 255, 75, 91, 72, 255, 71, 87, 69, 255, 185, 224, 166, 255, 149, 202, 126, 255, 121, 168, 102, 255, 60, 73, 58, 255, 53, 64, 51, 255, 50, 61, 49, 255, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 169, 136, 255, 174, 213, 157, 255, 134, 187, 112, 255, 107, 155, 90, 255, 53, 64, 51, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 162, 131, 255, 162, 202, 147, 255, 118, 172, 99, 255, 93, 142, 78, 255, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 156, 127, 255, 151, 192, 137, 255, 91, 139, 75, 255, 80, 129, 67, 255, 35, 43, 34, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 151, 123, 255, 60, 73, 58, 255, 53, 64, 51, 255, 44, 54, 43, 255, 28, 34, 27, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ArrowDown(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 162, 188, 149, 255, 156, 180, 144, 255, 147, 170, 137, 255, 140, 161, 130, 255, 132, 152, 124, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 201, 241, 180, 255, 198, 239, 177, 255, 190, 233, 169, 255, 35, 43, 34, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 170, 137, 255, 196, 238, 174, 255, 173, 226, 147, 255, 134, 179, 115, 255, 44, 54, 43, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 140, 161, 130, 255, 191, 234, 170, 255, 163, 216, 139, 255, 125, 170, 106, 255, 53, 64, 51, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 147, 170, 137, 255, 140, 161, 130, 255, 132, 152, 124, 255, 185, 228, 164, 255, 152, 205, 129, 255, 116, 160, 98, 255, 60, 73, 58, 255, 127, 146, 120, 255, 127, 146, 120, 255, 127, 146, 120, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 166, 192, 152, 72, 132, 151, 123, 255, 184, 225, 165, 255, 187, 229, 168, 255, 182, 224, 163, 255, 140, 193, 118, 255, 106, 151, 90, 255, 96, 141, 81, 255, 78, 119, 67, 255, 28, 34, 27, 255, 44, 54, 43, 51, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 176, 141, 100, 132, 151, 123, 255, 150, 199, 128, 255, 140, 193, 118, 255, 128, 181, 108, 255, 116, 170, 98, 255, 78, 119, 67, 255, 28, 34, 27, 255, 37, 45, 36, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 176, 141, 100, 132, 151, 123, 255, 128, 178, 109, 255, 116, 170, 98, 255, 78, 119, 67, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 176, 141, 100, 132, 151, 123, 255, 100, 146, 86, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 153, 177, 141, 99, 103, 118, 96, 255, 53, 65, 52, 82, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ViewFullScreen(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 166, 181, 203, 255, 165, 180, 202, 255, 164, 179, 201, 255, 163, 178, 200, 255, 162, 177, 199, 255, 161, 176, 197, 255, 159, 174, 196, 255, 158, 173, 195, 255, 157, 172, 193, 255, 155, 170, 192, 255, 154, 169, 190, 255, 153, 168, 189, 255, 152, 167, 188, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 166, 181, 203, 255, 254, 255, 253, 255, 253, 254, 253, 255, 251, 253, 253, 255, 249, 252, 253, 255, 247, 251, 253, 255, 245, 249, 253, 255, 243, 247, 253, 255, 240, 246, 254, 255, 238, 244, 254, 255, 235, 242, 254, 255, 232, 240, 254, 255, 230, 239, 254, 255, 227, 237, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 165, 180, 202, 255, 253, 254, 253, 255, 135, 159, 206, 255, 120, 147, 200, 255, 111, 140, 199, 255, 109, 139, 200, 255, 102, 134, 200, 255, 90, 126, 198, 255, 79, 119, 196, 255, 71, 113, 195, 255, 63, 107, 195, 255, 57, 103, 196, 255, 69, 116, 204, 255, 224, 235, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 164, 179, 201, 255, 251, 253, 253, 255, 116, 143, 199, 255, 206, 223, 255, 255, 200, 219, 255, 255, 192, 214, 255, 255, 183, 209, 254, 255, 174, 202, 253, 255, 165, 195, 253, 255, 155, 189, 252, 255, 145, 182, 251, 255, 135, 175, 250, 255, 64, 120, 228, 255, 221, 233, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 163, 178, 200, 255, 249, 252, 253, 255, 114, 142, 198, 255, 201, 220, 255, 255, 232, 240, 255, 255, 229, 238, 255, 255, 224, 236, 255, 255, 165, 195, 253, 255, 155, 189, 252, 255, 145, 182, 251, 255, 136, 175, 250, 255, 114, 156, 240, 255, 58, 116, 227, 255, 219, 231, 254, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 162, 177, 199, 255, 247, 251, 253, 255, 114, 142, 198, 255, 194, 215, 255, 255, 184, 209, 254, 255, 175, 203, 253, 255, 166, 196, 253, 255, 156, 189, 252, 255, 145, 181, 251, 255, 132, 171, 247, 255, 119, 160, 242, 255, 106, 148, 236, 255, 57, 115, 227, 255, 216, 230, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 161, 176, 197, 255, 245, 249, 253, 255, 114, 142, 198, 255, 185, 210, 254, 255, 225, 236, 255, 255, 221, 233, 255, 255, 217, 231, 255, 255, 213, 228, 255, 255, 209, 225, 255, 255, 204, 221, 255, 255, 200, 219, 255, 255, 98, 140, 229, 255, 57, 115, 227, 255, 214, 228, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 159, 174, 196, 255, 243, 247, 253, 255, 114, 142, 198, 255, 177, 204, 253, 255, 167, 197, 253, 255, 157, 190, 252, 255, 143, 179, 249, 255, 131, 170, 246, 255, 120, 161, 243, 255, 111, 152, 237, 255, 102, 142, 230, 255, 90, 130, 222, 255, 57, 114, 226, 255, 212, 226, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 158, 173, 195, 255, 240, 246, 254, 255, 114, 142, 198, 255, 168, 197, 253, 255, 217, 231, 255, 255, 214, 228, 255, 255, 209, 225, 255, 255, 204, 221, 255, 255, 200, 219, 255, 255, 194, 213, 255, 255, 188, 208, 255, 255, 83, 121, 214, 255, 57, 114, 226, 255, 210, 225, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 157, 172, 193, 255, 238, 244, 254, 255, 116, 144, 199, 255, 158, 191, 252, 255, 136, 173, 243, 255, 127, 167, 243, 255, 115, 157, 240, 255, 106, 149, 236, 255, 98, 140, 229, 255, 90, 130, 222, 255, 83, 121, 214, 255, 75, 112, 205, 255, 58, 115, 226, 255, 208, 224, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 155, 170, 192, 255, 235, 242, 254, 255, 125, 151, 203, 255, 127, 157, 219, 255, 128, 163, 234, 255, 119, 157, 233, 255, 109, 151, 232, 255, 99, 144, 231, 255, 89, 136, 230, 255, 79, 130, 229, 255, 70, 124, 228, 255, 63, 120, 228, 255, 74, 126, 229, 255, 206, 223, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 154, 169, 190, 255, 232, 240, 254, 255, 230, 239, 254, 255, 227, 237, 254, 255, 224, 235, 254, 255, 221, 233, 254, 255, 219, 231, 254, 255, 216, 230, 255, 255, 214, 228, 255, 255, 212, 226, 255, 255, 210, 225, 255, 255, 208, 224, 255, 255, 206, 223, 255, 255, 205, 222, 255, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaGoToEnd(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 53, 96, 140, 228, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 95, 147, 237, 63, 96, 140, 228, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 128, 158, 231, 250, 93, 136, 225, 236, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 96, 139, 222, 255, 94, 144, 235, 74, 96, 140, 228, 6, 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 170, 196, 239, 255, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 148, 229, 255, 158, 191, 251, 255, 82, 128, 217, 253, 96, 140, 228, 107, 96, 140, 228, 6, 255, 255, 255, 0, 104, 148, 229, 255, 161, 190, 240, 255, 83, 128, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 255, 155, 190, 250, 255, 137, 181, 253, 255, 70, 117, 211, 255, 96, 140, 228, 110, 96, 140, 228, 6, 96, 140, 228, 255, 150, 180, 239, 255, 79, 123, 208, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 89, 138, 226, 255, 148, 182, 250, 255, 116, 165, 253, 255, 96, 151, 253, 255, 60, 109, 205, 255, 96, 140, 228, 110, 89, 138, 226, 255, 141, 171, 240, 255, 74, 117, 200, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 81, 131, 225, 255, 133, 173, 239, 255, 96, 151, 253, 255, 51, 116, 244, 255, 27, 91, 214, 255, 51, 89, 166, 255, 81, 131, 225, 255, 126, 159, 238, 255, 68, 111, 192, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 72, 122, 223, 255, 116, 157, 238, 255, 51, 116, 244, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 171, 136, 72, 122, 223, 255, 111, 150, 236, 255, 63, 104, 183, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 63, 117, 221, 255, 81, 132, 230, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 169, 127, 255, 255, 255, 0, 63, 117, 221, 255, 107, 147, 235, 255, 56, 96, 175, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 60, 112, 212, 255, 33, 68, 140, 255, 27, 76, 169, 106, 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 101, 143, 235, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 119, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 86, 132, 233, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 27, 76, 172, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 78, 123, 225, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 75, 173, 132, 27, 75, 168, 6, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 62, 106, 211, 250, 36, 72, 144, 255, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ArrowLeft(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 167, 193, 153, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 166, 192, 152, 255, 90, 108, 86, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 208, 240, 190, 255, 75, 91, 72, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 174, 200, 160, 255, 215, 244, 199, 255, 191, 235, 168, 255, 71, 87, 69, 255, 147, 169, 136, 255, 141, 162, 131, 255, 137, 156, 127, 255, 132, 151, 123, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 192, 152, 72, 180, 206, 166, 255, 215, 244, 199, 255, 191, 235, 168, 255, 171, 224, 145, 255, 185, 224, 166, 255, 174, 213, 157, 255, 162, 202, 147, 255, 151, 192, 137, 255, 60, 73, 58, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 184, 146, 255, 213, 241, 198, 255, 197, 238, 175, 255, 173, 225, 146, 255, 163, 216, 137, 255, 149, 202, 126, 255, 134, 187, 112, 255, 118, 172, 99, 255, 91, 139, 75, 255, 53, 64, 51, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 85, 68, 57, 86, 104, 82, 255, 129, 166, 111, 255, 165, 218, 139, 255, 141, 189, 118, 255, 121, 168, 102, 255, 107, 155, 90, 255, 93, 142, 78, 255, 80, 129, 67, 255, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 90, 71, 51, 80, 97, 77, 255, 117, 154, 101, 255, 123, 171, 104, 255, 60, 73, 58, 255, 53, 64, 51, 255, 44, 54, 43, 255, 35, 43, 34, 255, 28, 34, 27, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 90, 71, 51, 100, 117, 95, 255, 92, 128, 79, 255, 53, 64, 51, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 54, 43, 51, 53, 64, 51, 255, 50, 61, 49, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 54, 43, 51, 44, 54, 43, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ActionCancel(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 109, 238, 209, 210, 255, 222, 157, 161, 255, 217, 135, 138, 255, 215, 132, 136, 255, 209, 122, 128, 255, 210, 140, 146, 255, 231, 196, 199, 255, 236, 206, 209, 109, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 0, 229, 181, 183, 255, 224, 139, 141, 255, 239, 163, 161, 255, 241, 161, 159, 255, 239, 143, 145, 255, 226, 120, 124, 255, 205, 97, 103, 255, 192, 92, 100, 255, 218, 163, 167, 255, 236, 206, 209, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 236, 206, 209, 0, 222, 153, 156, 255, 235, 156, 155, 255, 254, 213, 201, 255, 255, 214, 203, 255, 255, 181, 177, 255, 251, 148, 151, 255, 236, 122, 127, 255, 224, 110, 115, 255, 213, 100, 105, 255, 194, 86, 93, 255, 202, 125, 131, 255, 236, 206, 209, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 227, 173, 175, 255, 237, 159, 157, 255, 255, 230, 215, 255, 248, 211, 196, 255, 245, 173, 167, 255, 250, 159, 157, 255, 240, 131, 134, 255, 228, 115, 119, 255, 214, 99, 104, 255, 201, 85, 90, 255, 205, 94, 98, 255, 192, 83, 89, 255, 202, 128, 134, 255, 236, 206, 209, 109, 255, 255, 255, 0, + 236, 206, 209, 109, 222, 134, 135, 255, 255, 223, 209, 255, 243, 203, 192, 255, 209, 134, 135, 255, 206, 115, 119, 255, 224, 119, 119, 255, 228, 116, 119, 255, 211, 92, 96, 255, 198, 96, 101, 255, 208, 138, 144, 255, 196, 97, 102, 255, 197, 87, 92, 255, 185, 77, 84, 255, 223, 175, 179, 255, 255, 255, 255, 0, + 217, 154, 158, 255, 238, 173, 167, 255, 253, 217, 200, 255, 223, 151, 149, 255, 235, 211, 215, 255, 241, 223, 224, 255, 203, 109, 114, 255, 196, 74, 80, 255, 195, 88, 94, 255, 231, 193, 196, 255, 255, 255, 255, 255, 217, 160, 164, 255, 193, 80, 85, 255, 192, 82, 88, 255, 190, 100, 106, 255, 236, 206, 209, 109, + 201, 114, 120, 255, 247, 178, 171, 255, 255, 186, 175, 255, 242, 157, 153, 255, 247, 202, 203, 255, 255, 254, 254, 255, 242, 219, 220, 255, 200, 118, 123, 255, 232, 194, 197, 255, 255, 255, 255, 255, 241, 205, 206, 255, 209, 106, 110, 255, 197, 84, 88, 255, 192, 83, 89, 255, 184, 80, 88, 255, 231, 196, 199, 255, + 200, 103, 108, 255, 252, 159, 157, 255, 253, 158, 154, 255, 239, 131, 130, 255, 225, 113, 115, 255, 232, 173, 177, 255, 252, 249, 249, 255, 254, 252, 253, 255, 254, 255, 255, 255, 235, 192, 194, 255, 207, 94, 100, 255, 201, 80, 85, 255, 198, 87, 92, 255, 192, 83, 89, 255, 184, 82, 89, 255, 222, 175, 179, 255, + 198, 95, 103, 255, 241, 130, 134, 255, 240, 130, 131, 255, 228, 117, 119, 255, 208, 83, 90, 255, 198, 91, 97, 255, 240, 218, 218, 255, 255, 255, 255, 255, 252, 251, 251, 255, 205, 121, 126, 255, 192, 67, 73, 255, 202, 86, 91, 255, 197, 86, 91, 255, 190, 83, 89, 255, 184, 82, 89, 255, 221, 173, 177, 255, + 197, 105, 112, 255, 219, 107, 113, 255, 227, 114, 118, 255, 211, 93, 98, 255, 197, 90, 97, 255, 223, 181, 183, 255, 251, 243, 244, 255, 242, 213, 215, 255, 252, 244, 244, 255, 242, 224, 226, 255, 204, 124, 128, 255, 192, 73, 80, 255, 195, 84, 89, 255, 188, 82, 88, 255, 183, 79, 87, 255, 222, 177, 181, 255, + 216, 158, 163, 255, 198, 87, 94, 255, 216, 101, 106, 255, 210, 112, 118, 255, 231, 199, 201, 255, 255, 255, 255, 255, 235, 188, 190, 255, 206, 92, 97, 255, 221, 142, 146, 255, 253, 245, 244, 255, 247, 238, 239, 255, 218, 156, 160, 255, 192, 82, 87, 255, 185, 78, 84, 255, 184, 84, 91, 255, 237, 212, 214, 255, + 236, 206, 209, 109, 191, 93, 101, 255, 202, 87, 94, 255, 217, 131, 135, 255, 251, 241, 241, 255, 236, 191, 193, 255, 204, 92, 96, 255, 200, 75, 80, 255, 200, 74, 79, 255, 215, 129, 133, 255, 251, 241, 240, 255, 233, 196, 197, 255, 187, 79, 83, 255, 180, 72, 78, 255, 202, 124, 131, 255, 236, 206, 209, 109, + 255, 255, 255, 0, 227, 185, 189, 255, 186, 76, 82, 255, 203, 97, 100, 255, 211, 120, 124, 255, 203, 99, 104, 255, 197, 79, 85, 255, 200, 88, 93, 255, 198, 83, 88, 255, 194, 78, 83, 255, 204, 116, 119, 255, 197, 102, 107, 255, 182, 76, 81, 255, 183, 83, 91, 255, 236, 206, 209, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 236, 206, 209, 0, 218, 165, 169, 255, 182, 73, 79, 255, 190, 78, 83, 255, 194, 83, 88, 255, 195, 87, 90, 255, 194, 85, 89, 255, 193, 84, 88, 255, 191, 83, 87, 255, 185, 75, 80, 255, 181, 73, 78, 255, 179, 76, 83, 255, 226, 182, 186, 255, 236, 206, 209, 109, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 0, 229, 191, 194, 255, 192, 101, 108, 255, 180, 72, 80, 255, 185, 77, 82, 255, 186, 79, 85, 255, 185, 78, 83, 255, 181, 75, 81, 255, 177, 70, 77, 255, 191, 101, 107, 255, 230, 192, 195, 255, 236, 206, 209, 0, 236, 206, 209, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 236, 206, 209, 0, 236, 206, 209, 109, 228, 187, 191, 255, 205, 136, 141, 255, 195, 113, 120, 255, 196, 114, 121, 255, 204, 133, 138, 255, 225, 181, 185, 255, 236, 206, 209, 109, 255, 255, 255, 151, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_Print(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 185, 207, 4, 171, 187, 209, 115, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 174, 190, 212, 255, 173, 189, 211, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 185, 207, 114, 206, 211, 227, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 225, 230, 239, 255, 171, 183, 200, 255, 76, 95, 121, 254, 75, 94, 120, 38, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 169, 185, 207, 27, 169, 185, 207, 255, 253, 253, 254, 255, 235, 238, 242, 255, 194, 203, 215, 255, 194, 203, 215, 255, 176, 187, 202, 255, 168, 179, 198, 255, 203, 212, 226, 255, 92, 110, 134, 255, 76, 95, 121, 239, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 163, 180, 203, 156, 223, 229, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 241, 243, 248, 255, 213, 220, 232, 255, 173, 185, 202, 255, 75, 94, 120, 254, 75, 94, 120, 107, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 155, 173, 198, 48, 155, 173, 198, 255, 252, 253, 254, 255, 226, 231, 236, 255, 194, 203, 215, 255, 194, 203, 215, 255, 176, 187, 202, 255, 183, 194, 210, 255, 202, 211, 225, 255, 89, 106, 132, 255, 79, 97, 123, 248, 140, 155, 177, 255, 147, 162, 183, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 125, 142, 167, 90, 155, 173, 198, 255, 189, 202, 217, 255, 255, 255, 255, 255, 249, 250, 252, 255, 249, 250, 252, 255, 241, 243, 248, 255, 231, 236, 244, 255, 217, 224, 236, 255, 154, 168, 187, 255, 77, 96, 122, 255, 127, 143, 165, 255, 157, 173, 197, 255, 77, 97, 123, 255, 255, 255, 255, 0, + 118, 137, 163, 79, 134, 151, 176, 229, 161, 179, 204, 255, 153, 169, 194, 255, 163, 178, 201, 255, 146, 161, 185, 255, 129, 145, 169, 255, 113, 130, 155, 255, 96, 114, 139, 255, 81, 99, 125, 255, 74, 93, 119, 255, 90, 108, 133, 255, 144, 159, 180, 255, 116, 132, 155, 255, 74, 94, 120, 255, 255, 255, 255, 0, + 141, 160, 186, 255, 242, 244, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 253, 255, 246, 248, 251, 255, 241, 243, 248, 255, 234, 238, 246, 255, 228, 233, 243, 255, 123, 138, 161, 255, 102, 119, 143, 255, 77, 97, 122, 255, 255, 255, 255, 0, + 132, 150, 174, 255, 179, 192, 208, 255, 175, 187, 203, 255, 161, 174, 191, 255, 148, 162, 181, 255, 134, 149, 170, 255, 122, 138, 159, 255, 110, 126, 149, 255, 98, 115, 139, 255, 88, 106, 130, 255, 80, 98, 123, 255, 72, 91, 116, 255, 109, 126, 149, 255, 89, 107, 131, 255, 64, 84, 110, 255, 255, 255, 255, 0, + 127, 144, 170, 255, 227, 230, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 245, 249, 255, 225, 231, 241, 255, 10, 255, 0, 255, 10, 255, 0, 255, 2, 161, 0, 255, 96, 113, 137, 255, 76, 94, 119, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 126, 142, 168, 239, 210, 216, 224, 255, 250, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 252, 255, 255, 237, 243, 251, 255, 216, 227, 245, 255, 197, 213, 238, 255, 10, 255, 0, 255, 180, 255, 0, 255, 2, 161, 0, 255, 83, 101, 125, 255, 62, 82, 107, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 127, 140, 161, 133, 140, 154, 173, 246, 226, 235, 248, 255, 238, 244, 254, 255, 230, 240, 254, 255, 220, 232, 253, 255, 200, 219, 247, 255, 181, 205, 243, 255, 165, 194, 239, 255, 2, 161, 0, 255, 2, 161, 0, 255, 2, 161, 0, 255, 69, 88, 113, 255, 53, 73, 99, 255, 53, 73, 99, 176, 255, 255, 255, 0, + 104, 116, 135, 60, 122, 136, 159, 237, 190, 205, 227, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 26, 255, 255, 255, 0, + 255, 255, 255, 0, 116, 132, 156, 63, 82, 102, 127, 255, 78, 98, 124, 255, 75, 95, 121, 255, 72, 92, 118, 255, 68, 88, 114, 255, 65, 85, 111, 255, 61, 81, 107, 255, 58, 78, 104, 255, 55, 75, 101, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 105, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaPause(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 179, 253, 255, 138, 176, 250, 255, 110, 149, 226, 242, 255, 255, 255, 0, 141, 179, 253, 255, 138, 176, 250, 255, 110, 149, 226, 242, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 176, 250, 255, 213, 225, 252, 255, 45, 85, 170, 255, 255, 255, 255, 0, 138, 176, 250, 255, 213, 225, 252, 255, 45, 85, 170, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 134, 173, 246, 255, 218, 229, 251, 255, 37, 78, 162, 255, 255, 255, 255, 0, 134, 173, 246, 255, 218, 229, 251, 255, 37, 78, 162, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 129, 168, 243, 255, 211, 225, 251, 255, 30, 70, 154, 255, 255, 255, 255, 0, 129, 168, 243, 255, 211, 225, 251, 255, 30, 70, 154, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 163, 239, 255, 200, 215, 251, 255, 22, 62, 146, 255, 255, 255, 255, 0, 125, 163, 239, 255, 200, 215, 251, 255, 22, 62, 146, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 120, 158, 234, 255, 187, 208, 249, 255, 15, 54, 139, 255, 255, 255, 255, 0, 120, 158, 234, 255, 187, 208, 249, 255, 15, 54, 139, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 116, 155, 231, 255, 175, 201, 249, 255, 9, 48, 133, 255, 255, 255, 255, 0, 116, 155, 231, 255, 175, 201, 249, 255, 9, 48, 133, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 112, 151, 227, 255, 160, 188, 243, 255, 5, 44, 129, 255, 255, 255, 255, 0, 112, 151, 227, 255, 160, 188, 243, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 110, 149, 226, 242, 6, 45, 130, 255, 5, 44, 129, 255, 255, 255, 255, 0, 110, 149, 226, 242, 6, 45, 130, 255, 5, 44, 129, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FileClose(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 103, 147, 255, 133, 148, 164, 67, 129, 145, 166, 255, 120, 137, 161, 255, 135, 149, 170, 255, 123, 140, 160, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 103, 147, 255, 96, 116, 149, 255, 83, 105, 141, 92, 0, 0, 0, 0, 109, 121, 158, 21, 130, 145, 166, 255, 117, 132, 159, 85, 0, 0, 0, 0, + 182, 169, 136, 143, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 182, 169, 136, 143, 0, 0, 0, 0, 76, 103, 147, 255, 76, 103, 147, 255, 76, 103, 147, 255, 0, 0, 0, 0, 0, 0, 0, 0, 106, 123, 152, 77, 84, 107, 141, 255, 0, 0, 0, 0, + 172, 164, 143, 255, 236, 228, 178, 255, 248, 237, 182, 255, 248, 237, 182, 255, 246, 236, 169, 255, 243, 225, 146, 255, 170, 161, 141, 255, 176, 164, 132, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 170, 161, 141, 255, 170, 161, 141, 255, 170, 161, 141, 255, 170, 161, 141, 255, 170, 161, 141, 255, 168, 159, 139, 255, 166, 156, 137, 255, 166, 155, 137, 255, 164, 154, 135, 255, 163, 153, 134, 255, 160, 150, 132, 255, 160, 150, 132, 255, 160, 149, 131, 255, 160, 149, 131, 255, 143, 132, 117, 255, 0, 0, 0, 0, + 168, 160, 139, 255, 249, 240, 190, 255, 249, 240, 190, 255, 249, 240, 190, 255, 249, 240, 190, 255, 248, 242, 180, 255, 251, 236, 170, 255, 251, 233, 160, 255, 252, 229, 149, 255, 252, 223, 138, 255, 251, 216, 127, 255, 248, 210, 116, 255, 244, 202, 104, 255, 241, 192, 93, 255, 122, 112, 99, 255, 0, 0, 0, 0, + 166, 156, 137, 255, 249, 240, 190, 255, 248, 237, 182, 255, 248, 237, 182, 255, 247, 240, 171, 255, 250, 236, 162, 255, 251, 230, 149, 255, 252, 225, 137, 255, 252, 220, 125, 255, 250, 211, 111, 255, 247, 204, 99, 255, 243, 195, 85, 255, 239, 185, 73, 255, 207, 153, 25, 255, 122, 112, 99, 255, 0, 0, 0, 0, + 163, 153, 134, 255, 249, 240, 190, 255, 248, 237, 182, 255, 250, 238, 176, 255, 250, 235, 164, 255, 251, 230, 149, 255, 252, 225, 137, 255, 252, 220, 125, 255, 249, 213, 113, 255, 247, 205, 101, 255, 243, 196, 88, 255, 239, 185, 73, 255, 231, 169, 53, 255, 199, 143, 12, 255, 107, 99, 87, 255, 0, 0, 0, 0, + 159, 149, 131, 255, 249, 240, 190, 255, 247, 240, 171, 255, 251, 236, 165, 255, 251, 231, 152, 255, 252, 225, 137, 255, 251, 221, 127, 255, 249, 213, 113, 255, 247, 205, 101, 255, 243, 196, 88, 255, 240, 187, 75, 255, 236, 178, 61, 255, 227, 164, 44, 255, 191, 138, 12, 255, 92, 83, 73, 255, 0, 0, 0, 0, + 156, 145, 128, 255, 248, 237, 182, 255, 251, 236, 170, 255, 251, 232, 155, 255, 252, 227, 143, 255, 251, 221, 129, 255, 249, 213, 113, 255, 247, 206, 104, 255, 244, 197, 91, 255, 240, 188, 77, 255, 236, 178, 61, 255, 232, 169, 50, 255, 226, 158, 36, 255, 180, 130, 16, 255, 75, 67, 59, 255, 0, 0, 0, 0, + 152, 142, 125, 255, 246, 234, 176, 255, 251, 233, 159, 255, 252, 228, 146, 255, 251, 221, 129, 255, 250, 214, 117, 255, 247, 206, 104, 255, 244, 198, 93, 255, 240, 188, 77, 255, 236, 180, 65, 255, 232, 170, 53, 255, 230, 163, 42, 255, 220, 150, 29, 255, 169, 124, 21, 255, 59, 52, 45, 255, 0, 0, 0, 0, + 149, 138, 122, 255, 246, 232, 170, 255, 252, 229, 149, 255, 251, 223, 132, 255, 250, 214, 117, 255, 247, 208, 106, 255, 244, 198, 93, 255, 240, 190, 80, 255, 236, 180, 65, 255, 232, 170, 53, 255, 230, 164, 43, 255, 223, 154, 32, 255, 215, 144, 22, 255, 159, 119, 27, 255, 45, 39, 32, 255, 0, 0, 0, 0, + 146, 135, 119, 255, 240, 223, 162, 255, 234, 205, 112, 255, 226, 184, 73, 255, 219, 174, 55, 255, 217, 169, 45, 255, 210, 161, 38, 255, 199, 152, 33, 255, 188, 142, 32, 255, 174, 131, 30, 255, 171, 127, 25, 255, 169, 124, 21, 255, 159, 119, 27, 255, 150, 114, 31, 255, 33, 28, 22, 255, 0, 0, 0, 0, + 143, 132, 117, 255, 133, 122, 108, 255, 119, 109, 96, 255, 102, 93, 81, 255, 84, 76, 66, 255, 65, 58, 49, 255, 48, 42, 35, 255, 33, 28, 22, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 24, 19, 14, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ToolsSortAscend(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 79, 123, 202, 24, 72, 112, 191, 245, 58, 96, 163, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 73, 114, 193, 170, 69, 107, 183, 255, 58, 88, 151, 117, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 70, 109, 185, 222, 67, 102, 175, 225, 51, 83, 140, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 71, 112, 192, 66, 69, 107, 183, 247, 60, 93, 157, 40, 51, 80, 137, 255, 58, 89, 152, 80, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 69, 107, 183, 203, 66, 101, 174, 218, 54, 86, 146, 150, 52, 82, 139, 244, 55, 86, 147, 193, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 69, 107, 183, 3, 69, 106, 183, 241, 69, 107, 183, 24, 255, 255, 255, 0, 57, 90, 153, 77, 51, 79, 136, 255, 55, 90, 150, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 68, 106, 182, 198, 55, 85, 145, 248, 57, 87, 147, 100, 58, 86, 152, 10, 51, 79, 137, 239, 51, 79, 136, 255, 51, 79, 135, 209, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 149, 88, 111, 173, 149, 85, 105, 185, 151, 91, 114, 157, 149, 90, 112, 186, 145, 71, 77, 209, 140, 51, 41, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 147, 73, 81, 182, 255, 255, 255, 0, 155, 89, 100, 23, 149, 73, 76, 232, 125, 46, 37, 222, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 151, 70, 70, 22, 255, 255, 255, 0, 153, 82, 95, 153, 126, 47, 37, 255, 128, 47, 39, 86, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 129, 0, 0, 0, 75, 0, 0, 0, 255, 0, 0, 0, 69, 0, 0, 0, 138, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 156, 88, 107, 67, 146, 71, 77, 255, 126, 47, 38, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 66, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 149, 91, 114, 224, 138, 52, 41, 232, 133, 55, 44, 23, 255, 255, 255, 0, 148, 65, 65, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 180, 0, 0, 0, 255, 0, 0, 0, 198, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 152, 87, 107, 141, 143, 63, 62, 255, 136, 50, 40, 101, 255, 255, 255, 0, 146, 73, 61, 21, 138, 51, 40, 165, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 66, 255, 255, 255, 0, 255, 255, 255, 0, + 148, 71, 77, 43, 136, 51, 41, 244, 119, 44, 34, 245, 125, 46, 38, 155, 131, 49, 38, 168, 121, 45, 36, 234, 123, 45, 36, 157, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaReverse(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 2, 95, 147, 237, 36, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 61, 92, 138, 224, 250, 165, 191, 255, 255, 79, 123, 208, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 63, 88, 135, 223, 255, 165, 191, 255, 255, 105, 154, 255, 255, 74, 117, 200, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 63, 85, 133, 222, 255, 165, 191, 255, 255, 133, 174, 255, 255, 79, 137, 253, 255, 68, 111, 192, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 64, 114, 205, 66, 83, 132, 221, 255, 162, 189, 255, 255, 136, 174, 255, 255, 104, 156, 249, 255, 62, 126, 249, 255, 63, 104, 183, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 171, 81, 62, 115, 219, 255, 103, 156, 251, 255, 79, 138, 246, 255, 44, 113, 238, 255, 56, 96, 175, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 169, 74, 47, 100, 207, 255, 52, 114, 232, 255, 36, 106, 242, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 169, 60, 48, 98, 200, 255, 29, 102, 245, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 106, 58, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 172, 77, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 75, 168, 3, 26, 75, 173, 78, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_EditUndo(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 180, 246, 92, 147, 179, 245, 184, 158, 187, 245, 226, 167, 193, 245, 196, 169, 193, 245, 148, 170, 194, 245, 26, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 142, 176, 245, 184, 142, 176, 245, 252, 139, 174, 245, 231, 129, 168, 244, 227, 127, 164, 244, 220, 157, 185, 245, 227, 170, 194, 245, 242, 170, 194, 245, 26, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 139, 170, 234, 255, 166, 200, 245, 48, 255, 255, 255, 0, 139, 174, 245, 166, 143, 177, 246, 251, 101, 146, 238, 236, 68, 112, 200, 251, 59, 101, 183, 252, 55, 96, 180, 247, 71, 120, 221, 241, 153, 183, 245, 236, 170, 194, 245, 217, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 170, 194, 245, 9, 129, 164, 233, 255, 158, 192, 245, 213, 127, 168, 245, 128, 144, 178, 246, 252, 94, 140, 231, 254, 69, 112, 199, 255, 62, 104, 187, 250, 53, 93, 172, 199, 68, 111, 181, 225, 57, 95, 167, 252, 86, 136, 238, 249, 165, 192, 245, 223, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 115, 153, 231, 255, 106, 154, 243, 255, 113, 156, 244, 255, 89, 140, 241, 232, 58, 99, 180, 253, 56, 97, 176, 248, 53, 93, 169, 111, 255, 255, 255, 0, 80, 125, 183, 36, 49, 88, 163, 232, 69, 119, 219, 239, 128, 165, 244, 188, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 98, 142, 230, 255, 75, 130, 236, 255, 91, 141, 243, 255, 118, 156, 236, 255, 40, 75, 146, 171, 52, 92, 168, 65, 255, 255, 255, 0, 255, 255, 255, 0, 32, 64, 126, 3, 62, 106, 194, 251, 69, 118, 220, 235, 128, 169, 244, 194, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 82, 131, 229, 255, 54, 115, 223, 255, 73, 130, 234, 255, 106, 154, 243, 255, 97, 140, 226, 255, 126, 163, 237, 57, 255, 255, 255, 0, 255, 255, 255, 0, 32, 64, 126, 5, 62, 105, 194, 253, 74, 126, 230, 246, 131, 169, 244, 180, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 66, 120, 227, 255, 64, 114, 214, 255, 58, 105, 199, 255, 52, 95, 182, 255, 49, 90, 173, 255, 40, 76, 149, 255, 255, 255, 255, 0, 255, 255, 255, 0, 54, 94, 175, 34, 61, 105, 193, 254, 80, 132, 235, 253, 112, 151, 227, 117, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 170, 194, 245, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 39, 74, 146, 71, 69, 118, 219, 252, 102, 147, 239, 254, 141, 176, 245, 6, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 100, 190, 209, 84, 136, 240, 254, 86, 126, 207, 109, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 94, 142, 239, 34, 64, 111, 208, 92, 79, 132, 240, 254, 78, 121, 212, 246, 42, 80, 155, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 72, 123, 227, 67, 79, 132, 242, 250, 72, 116, 209, 249, 51, 90, 170, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 90, 141, 243, 89, 67, 116, 214, 129, 53, 92, 174, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ToolsSettings(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 48, 0, 0, 0, 4, 132, 132, 191, 128, 132, 132, 191, 255, 119, 119, 171, 125, 0, 0, 0, 10, 132, 132, 191, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 16, 132, 132, 191, 207, 132, 132, 191, 255, 97, 97, 141, 109, 129, 129, 187, 197, 132, 132, 191, 255, 113, 113, 162, 227, 86, 86, 124, 148, 132, 132, 191, 255, 129, 129, 185, 215, 55, 55, 80, 38, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 132, 132, 191, 226, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 123, 123, 175, 242, 0, 0, 0, 124, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, + 132, 132, 191, 16, 132, 132, 191, 207, 125, 125, 182, 166, 131, 131, 187, 228, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 121, 121, 173, 247, 97, 97, 141, 215, 129, 129, 187, 214, 62, 62, 90, 34, 0, 0, 0, 1, + 132, 132, 189, 113, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 85, 85, 121, 226, 10, 10, 15, 186, 0, 0, 0, 169, 23, 23, 33, 178, 86, 86, 125, 218, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 83, 83, 119, 178, 0, 0, 0, 37, + 85, 85, 121, 25, 113, 113, 164, 185, 132, 132, 191, 255, 132, 132, 191, 255, 77, 77, 109, 222, 0, 0, 0, 169, 0, 0, 0, 103, 0, 0, 0, 43, 0, 0, 0, 28, 0, 0, 0, 49, 94, 94, 135, 180, 132, 132, 191, 255, 132, 132, 191, 255, 93, 93, 133, 228, 10, 10, 15, 170, 0, 0, 0, 79, + 132, 132, 191, 128, 127, 127, 182, 202, 132, 132, 191, 255, 125, 125, 182, 250, 0, 0, 0, 178, 0, 0, 0, 96, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 54, 54, 78, 39, 132, 132, 191, 255, 132, 132, 191, 255, 107, 107, 155, 237, 89, 89, 128, 191, 0, 0, 0, 45, + 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 107, 107, 155, 237, 0, 0, 0, 155, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 127, 127, 182, 202, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 0, 0, 0, 103, + 125, 125, 182, 183, 116, 116, 169, 235, 132, 132, 191, 255, 127, 127, 182, 251, 0, 0, 0, 140, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 240, 132, 132, 191, 255, 113, 113, 162, 242, 99, 99, 144, 232, 0, 0, 0, 172, + 0, 0, 0, 16, 99, 99, 144, 191, 132, 132, 191, 255, 132, 132, 191, 255, 75, 75, 108, 199, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 191, 112, 132, 132, 191, 255, 132, 132, 191, 255, 77, 77, 109, 220, 0, 0, 0, 154, 0, 0, 0, 125, + 132, 132, 191, 96, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 93, 93, 133, 162, 0, 0, 0, 21, 0, 0, 0, 0, 132, 132, 191, 16, 132, 132, 191, 128, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 77, 77, 109, 168, 0, 0, 0, 37, + 89, 89, 128, 24, 132, 132, 189, 243, 115, 115, 166, 238, 113, 113, 162, 242, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 125, 125, 182, 200, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 129, 129, 185, 249, 111, 111, 162, 243, 127, 127, 182, 251, 10, 10, 15, 169, 0, 0, 0, 70, + 0, 0, 0, 1, 0, 0, 0, 37, 0, 0, 0, 134, 119, 119, 171, 234, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 132, 132, 191, 255, 111, 111, 162, 243, 0, 0, 0, 176, 0, 0, 0, 146, 0, 0, 0, 134, 0, 0, 0, 39, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 22, 131, 131, 187, 228, 132, 132, 191, 255, 77, 77, 109, 221, 113, 113, 164, 241, 132, 132, 191, 255, 113, 113, 162, 242, 85, 85, 121, 225, 132, 132, 191, 255, 121, 121, 173, 246, 0, 0, 0, 145, 0, 0, 0, 39, 0, 0, 0, 22, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 63, 63, 92, 167, 0, 0, 0, 160, 105, 105, 150, 202, 132, 132, 191, 255, 85, 85, 121, 223, 0, 0, 0, 152, 64, 64, 92, 163, 0, 0, 0, 161, 0, 0, 0, 127, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 61, 0, 0, 0, 34, 0, 0, 0, 118, 0, 0, 0, 172, 0, 0, 0, 110, 0, 0, 0, 34, 0, 0, 0, 61, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FileSaveAll(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 165, 164, 221, 255, 161, 161, 218, 255, 154, 153, 216, 255, 148, 147, 212, 255, 140, 139, 208, 255, 131, 130, 204, 255, 123, 122, 199, 255, 115, 115, 196, 255, 108, 106, 192, 255, 94, 92, 175, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 161, 161, 218, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 247, 251, 255, 135, 138, 214, 255, 116, 116, 162, 255, 87, 86, 169, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 165, 164, 221, 255, 161, 161, 218, 255, 154, 153, 216, 255, 148, 147, 212, 255, 140, 139, 208, 255, 131, 130, 204, 255, 123, 122, 199, 255, 117, 117, 197, 255, 113, 111, 194, 255, 101, 99, 178, 255, 116, 117, 178, 255, 86, 85, 168, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 161, 161, 218, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 247, 250, 255, 157, 159, 222, 255, 114, 114, 160, 255, 80, 79, 158, 255, 108, 110, 194, 255, 82, 81, 163, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 165, 164, 221, 255, 161, 161, 218, 255, 154, 153, 216, 255, 148, 147, 212, 255, 140, 139, 208, 255, 131, 130, 204, 255, 123, 122, 199, 255, 115, 115, 196, 255, 110, 108, 191, 255, 97, 95, 180, 255, 95, 96, 168, 255, 80, 79, 158, 255, 97, 101, 186, 255, 79, 78, 156, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 161, 161, 218, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 244, 249, 255, 96, 99, 201, 255, 65, 65, 127, 255, 85, 84, 168, 255, 109, 112, 196, 255, 78, 77, 155, 255, 86, 92, 178, 255, 74, 73, 148, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 155, 153, 216, 255, 185, 184, 251, 255, 134, 133, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 244, 249, 255, 222, 229, 240, 255, 80, 91, 193, 255, 92, 93, 166, 255, 81, 80, 159, 255, 98, 102, 188, 255, 75, 74, 150, 255, 77, 83, 171, 255, 70, 69, 139, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 148, 146, 212, 255, 178, 178, 247, 255, 116, 115, 217, 255, 255, 255, 255, 255, 242, 244, 249, 255, 222, 228, 240, 255, 203, 212, 231, 255, 57, 79, 181, 255, 108, 110, 194, 255, 78, 77, 155, 255, 87, 93, 180, 255, 72, 71, 143, 255, 68, 75, 166, 255, 66, 65, 131, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 140, 139, 208, 255, 170, 171, 240, 255, 115, 117, 210, 255, 96, 99, 201, 255, 80, 90, 193, 255, 56, 79, 181, 255, 33, 67, 169, 255, 42, 72, 172, 255, 97, 101, 186, 255, 75, 74, 150, 255, 78, 84, 173, 255, 68, 67, 136, 255, 61, 68, 160, 255, 61, 60, 122, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 132, 131, 204, 255, 161, 162, 234, 255, 152, 153, 227, 255, 141, 143, 219, 255, 130, 133, 212, 255, 120, 123, 203, 255, 108, 113, 196, 255, 98, 103, 188, 255, 86, 92, 178, 255, 72, 71, 143, 255, 68, 75, 167, 255, 65, 64, 129, 255, 58, 57, 116, 255, 58, 57, 116, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 123, 122, 199, 255, 152, 153, 227, 255, 142, 143, 220, 255, 64, 77, 96, 255, 64, 77, 96, 255, 64, 77, 96, 255, 70, 83, 100, 255, 70, 83, 100, 255, 77, 83, 171, 255, 68, 67, 136, 255, 61, 68, 161, 255, 61, 60, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 115, 115, 196, 255, 142, 143, 219, 255, 130, 133, 212, 255, 64, 77, 96, 255, 92, 99, 106, 255, 165, 174, 182, 255, 199, 207, 209, 255, 72, 85, 103, 255, 68, 75, 166, 255, 65, 64, 128, 255, 58, 57, 116, 255, 58, 57, 116, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 107, 107, 192, 255, 131, 134, 211, 255, 76, 95, 187, 255, 60, 71, 82, 255, 120, 126, 134, 255, 207, 212, 219, 255, 175, 182, 183, 255, 61, 66, 73, 255, 61, 68, 160, 255, 61, 60, 121, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 102, 101, 189, 101, 89, 88, 176, 239, 89, 88, 176, 255, 85, 85, 169, 255, 80, 80, 160, 255, 76, 74, 149, 255, 69, 68, 137, 255, 63, 63, 126, 255, 58, 57, 116, 255, 58, 57, 116, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MessageInfo(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 153, 222, 50, 123, 163, 226, 126, 127, 167, 234, 151, 118, 160, 234, 145, 100, 144, 218, 134, 106, 139, 198, 109, 121, 143, 185, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 149, 217, 1, 114, 159, 223, 109, 141, 179, 231, 204, 196, 220, 246, 254, 218, 231, 249, 255, 224, 234, 252, 255, 222, 231, 246, 255, 192, 205, 226, 255, 138, 159, 196, 203, 83, 111, 160, 129, 98, 124, 168, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 144, 213, 3, 114, 156, 222, 129, 169, 199, 236, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 245, 252, 255, 239, 245, 251, 255, 255, 255, 255, 255, 241, 244, 248, 255, 167, 182, 205, 255, 80, 108, 154, 189, 90, 116, 160, 22, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 147, 212, 89, 146, 179, 226, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 237, 246, 255, 57, 109, 199, 255, 52, 102, 187, 255, 235, 238, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 157, 172, 195, 255, 74, 102, 149, 172, 88, 114, 157, 12, 0, 0, 0, 0, + 100, 138, 202, 16, 119, 154, 208, 190, 222, 231, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 251, 253, 255, 133, 162, 213, 255, 133, 160, 209, 255, 248, 249, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 100, 123, 161, 251, 75, 104, 149, 87, 0, 0, 0, 0, + 99, 134, 194, 87, 139, 162, 203, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 234, 246, 255, 208, 219, 235, 255, 228, 235, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 249, 249, 255, 255, 255, 247, 255, 185, 191, 203, 255, 74, 102, 148, 194, 0, 0, 0, 0, + 88, 121, 177, 121, 148, 169, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 193, 223, 255, 47, 93, 185, 255, 79, 116, 188, 255, 233, 237, 243, 255, 255, 255, 255, 255, 252, 251, 252, 255, 252, 248, 243, 255, 216, 214, 217, 255, 82, 107, 150, 229, 0, 0, 0, 0, + 87, 121, 181, 105, 151, 171, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 216, 232, 255, 55, 90, 194, 255, 63, 98, 183, 255, 227, 235, 238, 255, 255, 255, 255, 255, 253, 253, 252, 255, 247, 245, 241, 255, 228, 224, 222, 255, 85, 111, 152, 228, 0, 0, 0, 0, + 91, 125, 184, 91, 141, 164, 203, 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 220, 234, 255, 60, 91, 188, 255, 72, 103, 181, 255, 232, 239, 241, 255, 255, 255, 255, 255, 251, 252, 252, 255, 243, 241, 236, 255, 216, 216, 215, 255, 82, 108, 151, 233, 0, 0, 0, 0, + 110, 138, 184, 63, 128, 150, 190, 243, 250, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 225, 237, 255, 59, 82, 185, 255, 76, 100, 181, 255, 243, 249, 246, 255, 255, 255, 255, 255, 242, 243, 243, 255, 246, 242, 233, 255, 184, 188, 196, 255, 71, 100, 147, 214, 0, 0, 0, 0, + 138, 159, 195, 10, 116, 140, 181, 189, 185, 196, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 212, 234, 255, 23, 50, 170, 255, 38, 66, 165, 255, 227, 237, 242, 255, 255, 255, 255, 255, 237, 235, 233, 255, 246, 241, 228, 255, 105, 126, 159, 255, 71, 100, 147, 137, 0, 0, 0, 0, + 0, 0, 0, 0, 114, 139, 181, 63, 122, 144, 182, 243, 241, 245, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 183, 216, 255, 41, 79, 165, 255, 44, 80, 162, 255, 173, 188, 215, 255, 255, 252, 241, 255, 255, 247, 232, 255, 167, 174, 186, 255, 66, 95, 143, 217, 85, 111, 155, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 109, 133, 174, 96, 136, 153, 183, 250, 228, 232, 232, 255, 255, 255, 250, 255, 253, 249, 243, 255, 244, 249, 238, 255, 244, 244, 236, 255, 243, 237, 232, 255, 249, 242, 228, 255, 177, 181, 190, 255, 72, 100, 145, 239, 73, 101, 148, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 115, 158, 74, 94, 120, 159, 210, 126, 144, 172, 255, 201, 205, 209, 255, 247, 243, 229, 255, 240, 236, 224, 255, 191, 194, 198, 255, 117, 134, 164, 254, 72, 99, 145, 198, 75, 103, 148, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 104, 151, 30, 74, 101, 148, 123, 59, 90, 140, 195, 45, 78, 131, 200, 47, 80, 133, 198, 65, 94, 142, 175, 75, 102, 147, 92, 70, 98, 145, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ZoomActualSize(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 164, 185, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 167, 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 250, 246, 255, 193, 197, 193, 255, 151, 159, 161, 255, 132, 141, 145, 255, 136, 145, 149, 255, 60, 77, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 246, 255, 178, 184, 184, 255, 188, 194, 196, 255, 231, 235, 236, 255, 226, 232, 235, 255, 164, 174, 178, 255, 99, 108, 117, 255, 93, 108, 122, 16, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 196, 195, 255, 185, 191, 194, 255, 255, 255, 255, 255, 251, 252, 255, 255, 243, 247, 253, 255, 230, 238, 252, 255, 147, 158, 170, 255, 89, 97, 103, 135, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 158, 161, 255, 229, 233, 235, 255, 251, 252, 255, 255, 243, 247, 253, 255, 232, 240, 251, 255, 217, 229, 250, 255, 179, 195, 216, 255, 88, 92, 92, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 151, 154, 255, 228, 233, 237, 255, 243, 247, 253, 255, 232, 239, 252, 255, 217, 229, 249, 255, 200, 217, 247, 255, 153, 173, 200, 255, 83, 86, 86, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 178, 179, 255, 178, 185, 191, 255, 231, 239, 251, 255, 217, 230, 250, 255, 199, 218, 247, 255, 181, 205, 244, 255, 109, 119, 127, 255, 88, 90, 90, 151, 145, 133, 117, 132, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 222, 223, 223, 255, 139, 143, 147, 255, 157, 168, 180, 255, 176, 195, 215, 255, 152, 174, 200, 255, 109, 118, 127, 255, 87, 89, 85, 255, 168, 144, 93, 255, 178, 152, 111, 254, 145, 133, 117, 132, 255, 255, 255, 0, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 212, 215, 215, 255, 146, 151, 151, 255, 103, 106, 108, 255, 98, 100, 102, 255, 91, 87, 81, 255, 147, 115, 67, 255, 231, 160, 71, 255, 253, 198, 97, 255, 161, 142, 114, 254, 145, 133, 117, 78, + 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 133, 134, 140, 255, 104, 77, 52, 255, 208, 127, 53, 255, 228, 152, 65, 255, 237, 179, 87, 255, 118, 103, 79, 255, + 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 70, 74, 84, 255, 103, 76, 51, 255, 189, 119, 56, 255, 102, 72, 45, 255, 89, 76, 55, 81, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 77, 52, 84, 60, 49, 39, 255, 72, 58, 37, 84, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_WindowsCascade(void) +{ + unsigned char imgdata[] = { + 148, 159, 197, 255, 140, 155, 170, 255, 121, 144, 177, 255, 90, 121, 193, 255, 79, 112, 174, 255, 71, 99, 170, 255, 62, 88, 153, 255, 59, 88, 152, 255, 60, 90, 154, 255, 59, 78, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 143, 153, 170, 255, 133, 172, 251, 255, 101, 145, 237, 255, 86, 130, 226, 255, 79, 125, 223, 255, 70, 116, 219, 255, 64, 110, 217, 255, 56, 105, 212, 255, 54, 105, 217, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 142, 155, 171, 255, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 249, 254, 255, 255, 240, 249, 252, 255, 241, 253, 254, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 140, 153, 171, 255, 255, 254, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 248, 249, 255, 255, 240, 243, 252, 255, 230, 237, 252, 255, 221, 232, 253, 255, 223, 237, 255, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 141, 154, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 159, 197, 255, 140, 155, 170, 255, 121, 144, 177, 255, 90, 121, 193, 255, 79, 112, 174, 255, 71, 99, 170, 255, 62, 88, 153, 255, 59, 88, 152, 255, 60, 90, 154, 255, 59, 78, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 144, 152, 172, 255, 254, 255, 255, 255, 255, 255, 255, 255, 143, 153, 170, 255, 133, 172, 251, 255, 101, 145, 237, 255, 86, 130, 226, 255, 79, 125, 223, 255, 70, 116, 219, 255, 64, 110, 217, 255, 56, 105, 212, 255, 54, 105, 217, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 141, 154, 172, 255, 255, 255, 255, 255, 255, 255, 253, 255, 142, 155, 171, 255, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 249, 254, 255, 255, 240, 249, 252, 255, 241, 253, 254, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 125, 135, 145, 255, 80, 80, 82, 255, 81, 84, 89, 255, 140, 153, 171, 255, 255, 254, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 248, 249, 255, 255, 240, 243, 252, 255, 230, 237, 252, 255, 221, 232, 253, 255, 223, 237, 255, 255, 65, 75, 87, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 159, 197, 255, 140, 155, 170, 255, 121, 144, 177, 255, 90, 121, 193, 255, 79, 112, 174, 255, 71, 99, 170, 255, 62, 88, 153, 255, 59, 88, 152, 255, 60, 90, 154, 255, 59, 78, 122, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 144, 152, 172, 255, 254, 255, 255, 255, 255, 255, 255, 255, 143, 153, 170, 255, 133, 172, 251, 255, 101, 145, 237, 255, 86, 130, 226, 255, 79, 125, 223, 255, 70, 116, 219, 255, 64, 110, 217, 255, 56, 105, 212, 255, 54, 105, 217, 255, 65, 75, 87, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 172, 255, 255, 255, 255, 255, 255, 255, 253, 255, 142, 155, 171, 255, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 249, 254, 255, 255, 240, 249, 252, 255, 241, 253, 254, 255, 65, 75, 87, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 135, 145, 255, 80, 80, 82, 255, 81, 84, 89, 255, 140, 153, 171, 255, 255, 254, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 248, 249, 255, 255, 240, 243, 252, 255, 230, 237, 252, 255, 221, 232, 253, 255, 223, 237, 255, 255, 65, 75, 87, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 255, 255, 242, 246, 254, 255, 236, 241, 252, 255, 226, 236, 252, 255, 214, 227, 249, 255, 213, 231, 254, 255, 65, 75, 87, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 144, 152, 172, 255, 254, 255, 255, 255, 255, 255, 255, 255, 244, 248, 254, 255, 237, 242, 255, 255, 227, 235, 252, 255, 217, 230, 252, 255, 206, 224, 252, 255, 207, 226, 255, 255, 65, 75, 87, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 141, 154, 172, 255, 255, 255, 255, 255, 255, 255, 253, 255, 247, 253, 255, 255, 237, 248, 255, 255, 224, 241, 254, 255, 213, 234, 253, 255, 204, 229, 252, 255, 207, 234, 255, 255, 65, 75, 87, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 125, 135, 145, 255, 80, 80, 82, 255, 81, 84, 89, 255, 77, 82, 88, 255, 73, 80, 88, 255, 71, 78, 88, 255, 68, 76, 87, 255, 64, 74, 86, 255, 66, 76, 88, 255, 58, 65, 75, 255}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_EditCopy(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 178, 194, 216, 255, 178, 194, 216, 255, 174, 191, 212, 255, 174, 191, 212, 255, 169, 184, 206, 255, 163, 178, 200, 255, 139, 155, 178, 73, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 177, 199, 255, 102, 130, 165, 255, 54, 74, 100, 48, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 175, 190, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 150, 166, 187, 255, 186, 197, 212, 255, 91, 114, 143, 255, 54, 74, 100, 48, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 169, 185, 207, 255, 255, 255, 255, 255, 186, 218, 255, 255, 174, 208, 255, 255, 210, 222, 240, 255, 147, 162, 183, 255, 174, 196, 240, 255, 171, 194, 239, 255, 170, 193, 239, 255, 160, 185, 239, 255, 146, 176, 237, 255, 146, 176, 237, 255, 95, 141, 230, 60, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 163, 178, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 240, 242, 248, 255, 230, 234, 243, 255, 174, 196, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 133, 167, 235, 255, 53, 101, 197, 255, 53, 101, 197, 60, 255, 255, 255, 0, 255, 255, 255, 0, + 156, 171, 193, 255, 255, 255, 255, 255, 159, 197, 250, 255, 142, 184, 240, 255, 129, 174, 229, 255, 115, 161, 222, 255, 166, 189, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 154, 234, 255, 178, 201, 240, 255, 43, 87, 177, 255, 43, 87, 177, 60, 255, 255, 255, 0, + 151, 166, 187, 255, 252, 253, 254, 255, 245, 246, 251, 255, 235, 239, 246, 255, 224, 230, 241, 255, 214, 222, 236, 255, 156, 181, 231, 255, 255, 255, 255, 255, 138, 174, 252, 255, 138, 174, 252, 255, 210, 219, 241, 255, 96, 142, 231, 255, 42, 87, 179, 255, 41, 84, 172, 255, 39, 80, 164, 255, 255, 255, 255, 0, + 147, 162, 183, 255, 247, 248, 251, 255, 129, 174, 229, 255, 115, 161, 222, 255, 110, 156, 218, 255, 104, 151, 213, 255, 144, 170, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 244, 251, 255, 219, 228, 247, 255, 197, 211, 242, 255, 154, 174, 204, 255, 37, 77, 157, 255, 255, 255, 255, 0, + 147, 162, 183, 255, 240, 243, 248, 255, 215, 223, 234, 255, 207, 217, 230, 255, 199, 210, 225, 255, 191, 203, 221, 255, 130, 159, 216, 255, 255, 255, 255, 255, 127, 167, 243, 255, 110, 151, 231, 255, 92, 140, 218, 255, 81, 131, 209, 255, 81, 131, 209, 255, 154, 174, 202, 255, 37, 74, 152, 255, 255, 255, 255, 0, + 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 115, 146, 209, 255, 255, 255, 255, 255, 251, 253, 254, 255, 234, 239, 251, 255, 211, 222, 245, 255, 190, 206, 240, 255, 175, 195, 237, 255, 153, 172, 199, 255, 35, 71, 146, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 100, 133, 201, 255, 255, 255, 255, 255, 92, 140, 218, 255, 81, 131, 209, 255, 81, 131, 209, 255, 81, 131, 209, 255, 81, 131, 209, 255, 152, 171, 198, 255, 34, 69, 142, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 121, 193, 255, 246, 249, 253, 255, 156, 176, 206, 255, 155, 175, 204, 255, 154, 173, 202, 255, 153, 172, 199, 255, 152, 171, 198, 255, 151, 169, 196, 255, 33, 67, 137, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 71, 110, 186, 255, 41, 84, 170, 255, 41, 84, 170, 255, 39, 80, 162, 255, 37, 76, 155, 255, 35, 72, 150, 255, 34, 70, 143, 255, 33, 67, 138, 255, 32, 65, 134, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FileOpen(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 133, 148, 164, 67, 129, 145, 166, 255, 120, 137, 161, 255, 135, 149, 170, 255, 123, 140, 160, 124, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 116, 149, 255, 83, 105, 141, 92, 255, 255, 255, 0, 109, 121, 158, 21, 130, 145, 166, 255, 117, 132, 159, 85, 95, 116, 148, 255, + 172, 164, 143, 87, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 182, 169, 136, 141, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 106, 123, 152, 77, 84, 107, 141, 255, 79, 105, 144, 255, + 172, 164, 143, 255, 218, 210, 160, 255, 247, 240, 171, 255, 247, 240, 171, 255, 249, 238, 166, 255, 251, 235, 159, 255, 170, 161, 141, 255, 176, 164, 132, 130, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 83, 106, 142, 255, 79, 104, 145, 255, 76, 103, 147, 255, + 171, 162, 142, 255, 246, 238, 167, 255, 247, 240, 171, 255, 249, 238, 166, 255, 251, 235, 159, 255, 253, 232, 152, 255, 251, 212, 113, 255, 167, 158, 137, 255, 163, 153, 134, 255, 159, 148, 130, 255, 154, 144, 126, 255, 151, 140, 122, 255, 147, 136, 119, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 168, 160, 139, 255, 246, 234, 160, 255, 249, 238, 166, 255, 251, 235, 159, 255, 254, 232, 152, 255, 255, 218, 122, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 147, 136, 119, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 165, 156, 136, 255, 243, 230, 154, 255, 251, 235, 159, 255, 254, 232, 152, 255, 185, 172, 139, 255, 185, 172, 139, 255, 183, 170, 138, 255, 179, 166, 136, 255, 175, 163, 134, 255, 170, 159, 131, 255, 166, 154, 129, 255, 161, 149, 127, 255, 157, 145, 124, 255, 153, 142, 122, 255, 149, 139, 121, 255, 147, 136, 119, 255, + 163, 154, 134, 255, 242, 225, 146, 255, 253, 232, 152, 255, 222, 196, 128, 255, 176, 167, 142, 255, 253, 222, 129, 255, 255, 224, 132, 255, 255, 224, 132, 255, 255, 224, 132, 255, 255, 224, 132, 255, 255, 223, 129, 255, 255, 221, 123, 255, 255, 216, 116, 255, 255, 214, 107, 255, 209, 169, 86, 255, 111, 98, 78, 162, + 159, 149, 131, 255, 241, 220, 137, 255, 255, 226, 140, 255, 177, 168, 141, 255, 199, 186, 140, 255, 255, 216, 116, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 212, 103, 255, 255, 208, 95, 255, 255, 205, 84, 255, 252, 197, 75, 255, 247, 187, 65, 255, 219, 162, 46, 255, 108, 94, 71, 241, 111, 98, 78, 43, + 156, 145, 128, 255, 239, 215, 129, 255, 224, 197, 125, 255, 176, 166, 140, 255, 254, 221, 128, 255, 255, 211, 104, 255, 255, 212, 103, 255, 255, 209, 98, 255, 255, 205, 88, 255, 252, 199, 78, 255, 247, 190, 70, 255, 242, 182, 59, 255, 236, 172, 49, 255, 129, 105, 37, 255, 89, 68, 20, 144, 255, 255, 255, 0, + 152, 142, 125, 255, 236, 210, 121, 255, 173, 164, 139, 255, 206, 194, 137, 255, 255, 216, 113, 255, 255, 211, 101, 255, 255, 206, 92, 255, 254, 201, 81, 255, 250, 193, 73, 255, 245, 185, 63, 255, 238, 176, 52, 255, 233, 168, 41, 255, 205, 133, 16, 255, 91, 75, 34, 255, 52, 39, 14, 39, 255, 255, 255, 0, + 149, 138, 122, 255, 211, 190, 126, 255, 174, 164, 138, 255, 255, 220, 126, 255, 255, 207, 95, 255, 255, 203, 85, 255, 250, 196, 76, 255, 245, 188, 65, 255, 240, 179, 55, 255, 235, 170, 46, 255, 229, 160, 36, 255, 212, 140, 19, 255, 128, 103, 35, 255, 48, 42, 27, 180, 255, 255, 255, 0, 255, 255, 255, 0, + 146, 135, 119, 255, 171, 161, 137, 255, 212, 178, 106, 255, 205, 143, 0, 255, 205, 143, 0, 255, 205, 143, 0, 255, 199, 140, 4, 255, 190, 136, 8, 255, 180, 130, 15, 255, 169, 124, 21, 255, 159, 119, 27, 255, 150, 114, 31, 255, 91, 74, 33, 254, 55, 48, 30, 74, 255, 255, 255, 0, 255, 255, 255, 0, + 143, 132, 117, 255, 143, 128, 102, 255, 135, 121, 96, 255, 123, 110, 87, 255, 111, 98, 78, 255, 97, 86, 68, 255, 82, 72, 57, 255, 67, 58, 46, 255, 53, 46, 37, 255, 41, 34, 27, 255, 30, 25, 20, 255, 22, 18, 14, 255, 24, 19, 14, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FileNew(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 103, 248, 255, 255, 84, 216, 255, 155, 0, 255, 255, 211, 0, 255, 255, 254, 79, 223, 255, 255, 88, 250, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 216, 13, 178, 250, 121, 0, 255, 255, 255, 149, 255, 255, 180, 0, 255, 255, 214, 0, 255, 255, 255, 149, 255, 250, 121, 0, 255, 255, 245, 61, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 219, 11, 205, 255, 255, 149, 255, 250, 121, 0, 255, 255, 160, 0, 255, 255, 177, 0, 255, 250, 121, 0, 255, 255, 255, 149, 255, 240, 217, 59, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 250, 140, 0, 255, 255, 149, 0, 255, 255, 145, 0, 255, 255, 255, 255, 255, 255, 255, 168, 255, 255, 180, 0, 255, 255, 154, 0, 255, 255, 168, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 214, 0, 251, 255, 231, 19, 254, 255, 146, 0, 255, 255, 211, 0, 255, 255, 222, 5, 255, 255, 191, 0, 255, 255, 248, 49, 255, 255, 227, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 164, 185, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 252, 76, 203, 255, 255, 149, 255, 250, 121, 0, 255, 255, 168, 0, 255, 255, 180, 0, 255, 250, 121, 0, 255, 255, 255, 149, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 162, 183, 255, 54, 74, 100, 255, 54, 74, 100, 255, 54, 74, 100, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 244, 62, 193, 250, 121, 0, 255, 255, 255, 149, 255, 255, 157, 0, 255, 255, 220, 2, 255, 255, 255, 149, 255, 250, 121, 0, 255, 255, 255, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 253, 255, 147, 162, 183, 255, 147, 162, 183, 255, 54, 74, 100, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 237, 44, 124, 255, 219, 14, 150, 255, 174, 0, 255, 255, 228, 31, 255, 255, 237, 121, 255, 255, 244, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 245, 247, 250, 255, 233, 237, 245, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 242, 245, 249, 255, 230, 235, 244, 255, 218, 225, 238, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 248, 251, 255, 235, 239, 246, 255, 223, 229, 240, 255, 211, 219, 235, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 253, 255, 240, 243, 248, 255, 227, 233, 242, 255, 216, 223, 237, 255, 203, 213, 231, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 245, 247, 250, 255, 233, 237, 245, 255, 220, 227, 239, 255, 209, 217, 234, 255, 196, 207, 228, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 213, 221, 236, 255, 201, 211, 230, 255, 189, 202, 225, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaRecord(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 64, 199, 99, 68, 153, 199, 99, 68, 224, 197, 98, 67, 224, 194, 96, 66, 153, 191, 94, 65, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 64, 207, 109, 79, 210, 229, 144, 116, 255, 241, 159, 133, 255, 233, 135, 105, 255, 205, 99, 65, 255, 181, 83, 56, 209, 175, 84, 59, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 153, 229, 144, 116, 255, 255, 197, 178, 255, 250, 180, 157, 255, 242, 151, 122, 255, 230, 115, 77, 255, 188, 76, 43, 255, 156, 72, 52, 153, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 199, 99, 68, 224, 241, 159, 133, 255, 250, 180, 157, 255, 247, 169, 144, 255, 240, 143, 112, 255, 228, 109, 69, 255, 202, 72, 31, 255, 135, 59, 45, 224, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 197, 98, 67, 224, 233, 135, 105, 255, 242, 151, 122, 255, 240, 143, 112, 255, 232, 122, 85, 255, 222, 92, 50, 255, 196, 64, 22, 255, 114, 46, 37, 224, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 194, 96, 66, 153, 205, 99, 65, 255, 230, 115, 77, 255, 228, 109, 69, 255, 222, 92, 50, 255, 214, 71, 24, 255, 153, 48, 20, 255, 95, 34, 30, 153, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 191, 94, 65, 64, 181, 83, 56, 209, 188, 76, 43, 255, 202, 72, 31, 255, 196, 64, 22, 255, 153, 48, 20, 255, 100, 31, 23, 209, 78, 24, 24, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 175, 84, 59, 64, 156, 72, 52, 153, 135, 59, 45, 224, 114, 46, 37, 224, 95, 34, 30, 153, 78, 24, 24, 64, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ActionOk(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 220, 233, 218, 174, 146, 193, 139, 255, 107, 173, 96, 255, 107, 179, 96, 255, 114, 186, 102, 255, 114, 185, 103, 255, 104, 175, 92, 255, 99, 164, 89, 255, 148, 192, 142, 255, 220, 233, 218, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 197, 222, 193, 255, 111, 175, 99, 255, 158, 211, 147, 255, 200, 249, 188, 255, 189, 254, 177, 255, 173, 243, 162, 255, 159, 228, 147, 255, 149, 219, 137, 255, 137, 207, 127, 255, 110, 180, 98, 255, 78, 149, 67, 255, 178, 208, 173, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 199, 223, 195, 255, 117, 182, 106, 255, 198, 242, 186, 255, 212, 255, 200, 255, 186, 253, 174, 255, 167, 237, 154, 255, 152, 223, 140, 255, 142, 213, 132, 255, 137, 207, 125, 255, 132, 201, 121, 255, 130, 201, 119, 255, 119, 187, 106, 255, 69, 142, 58, 255, 170, 202, 165, 255, 255, 255, 255, 0, + 220, 233, 218, 174, 121, 182, 111, 255, 201, 245, 189, 255, 209, 255, 197, 255, 180, 250, 169, 255, 161, 232, 149, 255, 145, 215, 134, 255, 136, 207, 124, 255, 130, 201, 118, 255, 128, 199, 116, 255, 123, 194, 112, 255, 102, 175, 90, 255, 111, 183, 98, 255, 107, 178, 96, 255, 64, 135, 53, 255, 220, 233, 218, 174, + 181, 213, 176, 255, 149, 208, 137, 255, 210, 255, 198, 255, 182, 251, 170, 255, 159, 230, 148, 255, 142, 212, 130, 255, 131, 201, 119, 255, 126, 196, 114, 255, 123, 193, 110, 255, 120, 192, 109, 255, 85, 160, 72, 255, 142, 186, 134, 255, 178, 216, 172, 255, 112, 179, 100, 255, 84, 155, 73, 255, 116, 168, 109, 255, + 114, 178, 105, 255, 190, 247, 178, 255, 187, 254, 175, 255, 162, 232, 150, 255, 144, 214, 132, 255, 130, 201, 118, 255, 123, 194, 111, 255, 119, 191, 109, 255, 118, 189, 106, 255, 81, 157, 70, 255, 129, 178, 121, 255, 252, 253, 252, 255, 249, 252, 248, 255, 123, 183, 114, 255, 91, 162, 80, 255, 76, 144, 66, 255, + 112, 185, 101, 255, 183, 252, 171, 255, 168, 238, 156, 255, 145, 216, 134, 255, 117, 190, 104, 255, 122, 193, 110, 255, 119, 190, 108, 255, 117, 189, 107, 255, 84, 158, 72, 255, 124, 175, 116, 255, 244, 248, 243, 255, 250, 252, 250, 255, 153, 200, 145, 255, 93, 165, 81, 255, 91, 162, 81, 255, 64, 138, 53, 255, + 118, 189, 107, 255, 176, 245, 165, 255, 152, 223, 140, 255, 149, 214, 138, 255, 145, 192, 137, 255, 90, 162, 78, 255, 120, 191, 108, 255, 85, 160, 73, 255, 121, 173, 112, 255, 248, 251, 247, 255, 255, 255, 255, 255, 155, 200, 147, 255, 86, 163, 74, 255, 90, 162, 79, 255, 90, 160, 79, 255, 67, 140, 56, 255, + 111, 181, 100, 255, 162, 232, 150, 255, 136, 209, 124, 255, 205, 236, 200, 255, 251, 252, 251, 255, 130, 177, 122, 255, 71, 148, 59, 255, 120, 172, 111, 255, 246, 249, 246, 255, 254, 254, 254, 255, 155, 202, 150, 255, 86, 162, 73, 255, 90, 162, 79, 255, 87, 158, 77, 255, 85, 156, 75, 255, 65, 138, 55, 255, + 100, 172, 88, 255, 145, 215, 133, 255, 132, 203, 121, 255, 143, 203, 134, 255, 242, 249, 240, 255, 246, 249, 245, 255, 131, 177, 123, 255, 246, 250, 245, 255, 255, 255, 255, 255, 156, 201, 149, 255, 83, 160, 71, 255, 90, 163, 78, 255, 87, 158, 75, 255, 83, 154, 72, 255, 80, 151, 70, 255, 61, 134, 50, 255, + 126, 180, 118, 255, 130, 200, 118, 255, 131, 200, 119, 255, 112, 186, 99, 255, 146, 200, 137, 255, 248, 251, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 157, 201, 150, 255, 82, 160, 70, 255, 89, 162, 78, 255, 87, 159, 77, 255, 83, 154, 72, 255, 79, 150, 69, 255, 76, 146, 65, 255, 73, 140, 63, 255, + 187, 214, 182, 255, 102, 174, 91, 255, 125, 194, 113, 255, 116, 185, 104, 255, 98, 175, 86, 255, 159, 205, 152, 255, 229, 240, 227, 255, 135, 189, 126, 255, 83, 159, 71, 255, 90, 161, 77, 255, 87, 158, 75, 255, 84, 154, 72, 255, 79, 150, 68, 255, 78, 147, 66, 255, 64, 135, 53, 255, 146, 186, 140, 255, + 220, 233, 218, 174, 87, 151, 77, 255, 100, 171, 88, 255, 111, 181, 99, 255, 105, 175, 93, 255, 93, 168, 81, 255, 100, 169, 90, 255, 84, 158, 72, 255, 88, 160, 77, 255, 85, 156, 73, 255, 81, 153, 71, 255, 78, 149, 68, 255, 76, 147, 66, 255, 71, 141, 60, 255, 55, 128, 45, 255, 220, 233, 218, 174, + 255, 255, 255, 0, 182, 210, 178, 255, 65, 137, 54, 255, 93, 163, 82, 255, 102, 171, 90, 255, 96, 166, 85, 255, 90, 160, 77, 255, 88, 159, 77, 255, 84, 155, 73, 255, 81, 152, 71, 255, 78, 148, 67, 255, 76, 146, 66, 255, 70, 140, 60, 255, 50, 124, 39, 255, 144, 184, 138, 255, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 186, 212, 182, 255, 78, 144, 69, 255, 69, 142, 58, 255, 78, 149, 66, 255, 82, 152, 71, 255, 85, 155, 75, 255, 82, 152, 71, 255, 77, 147, 66, 255, 71, 141, 61, 255, 58, 131, 47, 255, 53, 126, 43, 255, 147, 186, 142, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 220, 233, 218, 174, 172, 203, 167, 255, 102, 159, 94, 255, 56, 129, 45, 255, 58, 130, 47, 255, 59, 133, 49, 255, 58, 130, 47, 255, 61, 132, 51, 255, 107, 161, 99, 255, 220, 233, 218, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MessageError(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 11, 11, 13, 248, 25, 24, 72, 250, 52, 51, 148, 254, 82, 82, 188, 251, 56, 56, 163, 252, 22, 22, 93, 201, 7, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 9, 8, 36, 252, 45, 45, 177, 254, 99, 99, 246, 255, 135, 135, 255, 255, 146, 146, 255, 255, 118, 118, 255, 255, 83, 83, 255, 240, 44, 44, 210, 118, 9, 9, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 245, 13, 12, 64, 253, 53, 53, 230, 255, 110, 110, 255, 255, 145, 145, 255, 255, 147, 147, 255, 255, 132, 132, 255, 255, 118, 118, 255, 255, 103, 103, 255, 255, 81, 81, 255, 251, 47, 47, 253, 115, 10, 10, 136, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 242, 5, 5, 41, 251, 42, 42, 231, 255, 83, 83, 255, 239, 104, 104, 255, 249, 87, 87, 255, 255, 56, 56, 255, 253, 37, 37, 255, 255, 41, 41, 255, 252, 56, 56, 255, 235, 66, 66, 255, 255, 50, 50, 255, 233, 31, 31, 255, 86, 6, 6, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 233, 4, 4, 12, 236, 21, 21, 175, 255, 50, 50, 255, 237, 82, 82, 255, 194, 179, 179, 255, 202, 119, 119, 255, 234, 0, 0, 255, 236, 0, 0, 255, 232, 0, 0, 255, 180, 82, 82, 255, 176, 173, 173, 255, 225, 77, 77, 255, 237, 24, 24, 255, 174, 15, 15, 245, 13, 0, 0, 73, 0, 0, 0, 0, + 227, 6, 6, 69, 228, 26, 26, 242, 251, 34, 34, 255, 233, 63, 63, 255, 229, 220, 220, 255, 238, 253, 253, 255, 197, 115, 115, 255, 215, 3, 3, 255, 176, 81, 81, 255, 214, 227, 227, 255, 254, 255, 255, 255, 229, 97, 97, 255, 219, 8, 8, 255, 202, 15, 15, 255, 81, 4, 4, 178, 0, 0, 0, 0, + 212, 11, 11, 147, 216, 20, 20, 255, 234, 23, 23, 255, 241, 11, 11, 255, 219, 67, 67, 255, 234, 228, 228, 255, 245, 253, 253, 255, 212, 186, 186, 255, 232, 234, 234, 255, 255, 254, 254, 255, 229, 99, 99, 255, 215, 3, 3, 255, 207, 10, 10, 255, 195, 10, 10, 255, 111, 5, 5, 226, 0, 0, 0, 0, + 195, 11, 11, 188, 201, 12, 12, 255, 216, 13, 13, 255, 220, 11, 11, 255, 214, 0, 0, 255, 206, 61, 60, 255, 237, 239, 238, 255, 255, 255, 255, 255, 253, 255, 255, 255, 219, 88, 88, 255, 202, 0, 0, 255, 203, 3, 3, 255, 197, 6, 6, 255, 184, 6, 6, 255, 113, 4, 4, 241, 0, 0, 0, 0, + 186, 8, 7, 171, 187, 8, 8, 255, 200, 7, 7, 255, 209, 5, 5, 255, 200, 0, 0, 255, 182, 83, 83, 255, 237, 242, 242, 255, 255, 255, 255, 255, 252, 255, 255, 255, 201, 117, 117, 255, 190, 0, 0, 255, 195, 1, 1, 255, 184, 3, 3, 255, 172, 3, 3, 255, 103, 3, 3, 242, 0, 0, 0, 0, + 194, 3, 3, 105, 176, 5, 5, 253, 185, 3, 3, 255, 194, 0, 0, 255, 167, 76, 76, 255, 217, 230, 230, 255, 255, 252, 252, 255, 230, 158, 158, 255, 244, 233, 232, 255, 241, 255, 255, 255, 185, 117, 117, 255, 177, 6, 6, 255, 171, 1, 1, 255, 160, 2, 2, 255, 81, 2, 1, 237, 0, 0, 0, 0, + 140, 1, 1, 34, 157, 3, 3, 217, 171, 0, 0, 255, 163, 40, 40, 255, 210, 222, 222, 255, 255, 254, 254, 255, 212, 100, 100, 255, 179, 0, 0, 255, 192, 70, 70, 255, 236, 231, 231, 255, 247, 255, 255, 255, 183, 94, 94, 255, 154, 0, 0, 255, 135, 2, 2, 255, 29, 1, 0, 209, 0, 0, 0, 0, + 0, 0, 0, 0, 93, 1, 1, 112, 163, 1, 1, 255, 158, 8, 8, 255, 212, 153, 153, 255, 208, 104, 104, 255, 172, 0, 0, 255, 174, 0, 0, 255, 169, 0, 0, 255, 184, 72, 72, 255, 227, 183, 183, 255, 165, 39, 39, 255, 140, 0, 0, 255, 82, 1, 1, 255, 0, 0, 0, 142, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 2, 99, 1, 1, 165, 150, 0, 0, 255, 151, 0, 0, 255, 155, 0, 0, 255, 159, 0, 0, 255, 160, 0, 0, 255, 157, 0, 0, 255, 151, 0, 0, 255, 143, 0, 0, 255, 136, 0, 0, 255, 98, 0, 0, 255, 11, 0, 0, 201, 0, 0, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 78, 1, 1, 159, 132, 0, 0, 255, 142, 0, 0, 255, 142, 0, 0, 255, 143, 0, 0, 255, 140, 0, 0, 255, 136, 0, 0, 255, 129, 0, 0, 255, 84, 1, 1, 255, 11, 0, 0, 203, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 33, 0, 0, 110, 78, 1, 1, 212, 96, 0, 0, 250, 101, 0, 0, 255, 96, 0, 0, 255, 79, 0, 0, 255, 43, 0, 0, 233, 1, 0, 0, 157, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 77, 0, 0, 0, 109, 0, 0, 0, 114, 0, 0, 0, 100, 0, 0, 0, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_EditPaste(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 195, 179, 134, 255, 189, 173, 130, 255, 176, 159, 121, 255, 111, 96, 75, 51, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 172, 164, 143, 115, 172, 164, 143, 255, 172, 164, 143, 255, 172, 164, 143, 255, 159, 141, 91, 255, 239, 232, 165, 255, 244, 232, 155, 255, 226, 213, 140, 255, 118, 102, 70, 255, 143, 133, 115, 255, 149, 138, 122, 255, 145, 133, 117, 255, 145, 133, 117, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 172, 164, 143, 255, 247, 240, 171, 255, 249, 241, 170, 255, 247, 239, 166, 255, 162, 151, 115, 255, 245, 236, 161, 255, 118, 103, 79, 212, 214, 197, 120, 255, 124, 108, 76, 255, 120, 97, 52, 255, 232, 195, 95, 255, 236, 182, 34, 255, 111, 94, 78, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 172, 164, 143, 255, 249, 241, 170, 255, 249, 241, 168, 255, 150, 134, 93, 255, 207, 198, 140, 255, 240, 228, 147, 255, 231, 213, 122, 255, 222, 198, 98, 255, 178, 154, 79, 255, 103, 90, 62, 255, 165, 125, 28, 255, 205, 143, 0, 255, 105, 89, 75, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 170, 161, 141, 255, 249, 241, 170, 255, 249, 240, 167, 255, 138, 125, 94, 255, 127, 115, 88, 255, 122, 109, 86, 255, 119, 105, 82, 255, 115, 102, 79, 255, 112, 97, 76, 255, 104, 90, 68, 255, 144, 111, 35, 255, 205, 143, 0, 255, 88, 74, 62, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 166, 158, 138, 255, 248, 240, 169, 255, 248, 234, 153, 255, 245, 227, 136, 255, 234, 209, 109, 255, 212, 161, 19, 255, 212, 161, 19, 255, 211, 160, 18, 255, 207, 151, 13, 255, 202, 145, 7, 255, 205, 143, 0, 255, 205, 143, 0, 255, 68, 57, 48, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 162, 153, 134, 255, 246, 234, 159, 255, 246, 225, 131, 255, 245, 216, 107, 255, 244, 206, 83, 255, 240, 179, 14, 255, 142, 160, 182, 255, 136, 153, 176, 255, 128, 146, 169, 255, 120, 138, 162, 255, 112, 130, 154, 255, 103, 121, 145, 255, 94, 113, 137, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 158, 148, 130, 255, 243, 226, 145, 255, 244, 213, 102, 255, 243, 203, 76, 255, 242, 194, 50, 255, 233, 175, 21, 255, 136, 153, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 252, 255, 239, 241, 247, 255, 225, 231, 239, 255, 86, 104, 129, 255, 77, 96, 122, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 154, 142, 126, 255, 240, 217, 131, 255, 242, 201, 70, 255, 242, 191, 45, 255, 241, 183, 22, 255, 226, 160, 0, 255, 128, 146, 169, 255, 255, 255, 255, 255, 158, 174, 195, 255, 158, 174, 195, 255, 153, 168, 189, 255, 211, 220, 232, 255, 77, 96, 122, 255, 186, 197, 212, 255, 71, 82, 97, 255, 255, 255, 255, 0, + 148, 137, 121, 255, 237, 208, 116, 255, 241, 189, 40, 255, 240, 181, 17, 255, 234, 171, 7, 255, 220, 157, 0, 255, 120, 138, 162, 255, 250, 251, 253, 255, 238, 242, 247, 255, 225, 230, 239, 255, 211, 219, 232, 255, 198, 208, 224, 255, 74, 90, 112, 255, 70, 82, 97, 255, 66, 72, 80, 255, 62, 61, 63, 255, + 144, 132, 117, 255, 234, 200, 104, 255, 240, 181, 16, 255, 235, 172, 8, 255, 227, 164, 3, 255, 212, 150, 0, 255, 111, 130, 154, 255, 239, 241, 247, 255, 158, 174, 195, 255, 158, 174, 195, 255, 152, 168, 189, 255, 147, 162, 183, 255, 178, 191, 212, 255, 147, 162, 183, 255, 147, 162, 183, 255, 56, 47, 38, 255, + 139, 127, 113, 255, 236, 182, 34, 255, 205, 143, 0, 255, 205, 143, 0, 255, 205, 143, 0, 255, 205, 143, 0, 255, 102, 121, 145, 255, 225, 230, 239, 255, 211, 219, 232, 255, 198, 208, 224, 255, 188, 198, 218, 255, 178, 191, 212, 255, 171, 185, 207, 255, 168, 182, 204, 255, 147, 162, 183, 255, 56, 47, 38, 255, + 139, 127, 113, 69, 142, 126, 100, 255, 111, 94, 79, 255, 97, 82, 69, 255, 77, 65, 55, 255, 56, 47, 38, 255, 94, 113, 137, 255, 211, 220, 232, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 56, 47, 38, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 85, 104, 129, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, 56, 47, 38, 255, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FileCloseAll(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 76, 103, 147, 255, 133, 148, 164, 67, 129, 145, 166, 255, 120, 137, 161, 255, 135, 149, 170, 255, 123, 140, 160, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 76, 103, 147, 255, 96, 116, 149, 255, 83, 105, 141, 92, 0, 0, 0, 0, 109, 121, 158, 21, 130, 145, 166, 255, 117, 132, 159, 85, 0, 0, 0, 0, + 0, 0, 0, 0, 171, 162, 142, 255, 171, 162, 142, 255, 171, 162, 142, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 103, 147, 255, 76, 103, 147, 255, 76, 103, 147, 255, 0, 0, 0, 0, 0, 0, 0, 0, 106, 123, 152, 77, 130, 145, 166, 255, 0, 0, 0, 0, + 171, 162, 142, 255, 236, 228, 178, 255, 248, 238, 182, 255, 243, 225, 146, 255, 171, 162, 142, 255, 171, 162, 141, 100, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 84, 107, 141, 255, 255, 255, 255, 0, + 171, 162, 142, 255, 170, 161, 141, 255, 169, 160, 140, 255, 168, 159, 139, 255, 168, 158, 139, 255, 170, 160, 141, 255, 164, 154, 135, 255, 163, 152, 134, 255, 162, 151, 133, 255, 161, 150, 132, 255, 146, 135, 118, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 107, 141, 255, 0, 0, 0, 0, + 171, 162, 142, 255, 255, 247, 194, 255, 250, 241, 189, 255, 250, 242, 187, 255, 251, 242, 175, 255, 253, 235, 162, 255, 254, 230, 146, 255, 254, 222, 132, 255, 253, 215, 119, 255, 250, 199, 87, 255, 141, 123, 93, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 168, 159, 140, 255, 255, 246, 192, 255, 248, 238, 180, 255, 248, 238, 168, 255, 251, 232, 152, 255, 171, 162, 142, 255, 171, 162, 142, 255, 171, 162, 142, 255, 247, 200, 92, 255, 207, 153, 25, 255, 128, 111, 76, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 164, 155, 136, 255, 255, 247, 188, 255, 250, 238, 169, 255, 251, 232, 156, 255, 171, 162, 142, 255, 236, 228, 178, 255, 248, 238, 182, 255, 243, 225, 146, 255, 171, 162, 142, 255, 187, 153, 71, 255, 109, 93, 62, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 159, 150, 132, 255, 255, 244, 182, 255, 251, 233, 159, 255, 252, 227, 143, 255, 171, 162, 142, 255, 170, 161, 141, 255, 169, 160, 140, 255, 168, 159, 139, 255, 168, 158, 139, 255, 170, 160, 141, 255, 164, 154, 135, 255, 163, 152, 134, 255, 162, 151, 133, 255, 161, 150, 132, 255, 146, 135, 118, 73, 0, 0, 0, 0, + 155, 144, 127, 255, 255, 242, 173, 255, 254, 231, 150, 255, 253, 223, 132, 255, 171, 162, 142, 255, 255, 247, 194, 255, 250, 241, 189, 255, 250, 242, 187, 255, 251, 242, 175, 255, 253, 235, 162, 255, 254, 230, 146, 255, 254, 222, 132, 255, 253, 215, 119, 255, 250, 199, 87, 255, 141, 123, 93, 255, 0, 0, 0, 0, + 150, 139, 123, 255, 255, 238, 159, 255, 234, 205, 112, 255, 226, 196, 104, 255, 168, 159, 140, 255, 255, 246, 192, 255, 248, 238, 180, 255, 248, 238, 168, 255, 251, 232, 152, 255, 252, 225, 136, 255, 251, 218, 119, 255, 249, 208, 105, 255, 247, 200, 92, 255, 207, 153, 25, 255, 128, 111, 76, 251, 0, 0, 0, 0, + 146, 135, 119, 255, 147, 134, 110, 251, 126, 111, 82, 251, 105, 90, 60, 251, 164, 155, 136, 255, 255, 247, 188, 255, 250, 238, 169, 255, 251, 232, 156, 255, 252, 226, 139, 255, 251, 218, 122, 255, 248, 209, 106, 255, 244, 198, 91, 255, 243, 189, 77, 255, 198, 147, 26, 255, 109, 93, 62, 251, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 150, 132, 255, 255, 244, 182, 255, 251, 233, 159, 255, 252, 227, 143, 255, 251, 219, 125, 255, 249, 210, 110, 255, 245, 199, 93, 255, 240, 188, 76, 255, 240, 179, 60, 255, 186, 138, 27, 255, 89, 75, 50, 251, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 144, 127, 255, 255, 242, 173, 255, 254, 231, 150, 255, 253, 223, 132, 255, 251, 214, 116, 255, 248, 203, 99, 255, 244, 191, 80, 255, 240, 180, 62, 255, 241, 171, 47, 255, 171, 129, 29, 255, 69, 58, 37, 251, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 139, 123, 255, 255, 238, 159, 255, 234, 205, 112, 255, 226, 196, 104, 255, 214, 183, 92, 255, 199, 168, 79, 255, 185, 151, 64, 255, 170, 136, 51, 255, 158, 123, 39, 255, 159, 120, 30, 255, 55, 46, 26, 251, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 135, 119, 255, 147, 134, 110, 251, 126, 111, 82, 251, 105, 90, 60, 251, 85, 72, 42, 251, 66, 53, 27, 251, 50, 39, 15, 251, 46, 35, 15, 251, 45, 35, 14, 251, 46, 36, 16, 251, 28, 22, 15, 247, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaRewind(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 2, 95, 147, 237, 36, 87, 135, 224, 255, 96, 140, 228, 2, 95, 147, 237, 36, 87, 135, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 96, 140, 228, 61, 92, 138, 224, 250, 164, 190, 254, 255, 83, 127, 212, 255, 92, 138, 224, 250, 165, 191, 255, 255, 79, 123, 208, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 96, 140, 228, 63, 88, 135, 223, 255, 164, 190, 254, 255, 102, 150, 248, 255, 88, 135, 223, 255, 165, 191, 255, 255, 105, 154, 255, 255, 74, 117, 200, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 96, 140, 228, 63, 85, 133, 222, 255, 164, 190, 254, 255, 123, 165, 248, 255, 85, 133, 222, 255, 165, 191, 255, 255, 133, 174, 255, 255, 79, 137, 253, 255, 68, 111, 192, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 114, 205, 66, 83, 132, 221, 255, 162, 189, 255, 255, 117, 158, 242, 255, 83, 132, 221, 255, 162, 189, 255, 255, 136, 174, 255, 255, 104, 156, 249, 255, 62, 126, 249, 255, 63, 104, 183, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 171, 81, 62, 115, 219, 255, 103, 156, 251, 255, 62, 118, 222, 255, 62, 115, 219, 255, 103, 156, 251, 255, 79, 138, 246, 255, 44, 113, 238, 255, 56, 96, 175, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 169, 74, 47, 100, 207, 255, 52, 114, 232, 255, 33, 97, 220, 255, 47, 100, 207, 255, 52, 114, 232, 255, 36, 106, 242, 255, 51, 89, 166, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 169, 60, 48, 98, 200, 255, 29, 102, 245, 255, 40, 81, 160, 255, 48, 98, 200, 255, 29, 102, 245, 255, 45, 83, 158, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 106, 58, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 76, 172, 77, 36, 72, 144, 255, 0, 0, 0, 0, 27, 76, 172, 77, 36, 72, 144, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 75, 168, 3, 26, 75, 173, 78, 0, 0, 0, 0, 27, 75, 168, 3, 26, 75, 173, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ZoomIn(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 127, 127, 191, 4, 217, 220, 227, 75, 182, 192, 203, 154, 150, 163, 181, 195, 136, 150, 170, 217, 115, 132, 153, 229, 123, 140, 162, 190, 160, 176, 212, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 185, 193, 207, 128, 149, 160, 177, 208, 176, 188, 200, 247, 187, 203, 214, 255, 187, 212, 222, 255, 152, 178, 195, 255, 118, 144, 165, 255, 82, 103, 131, 236, 85, 108, 135, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 107, 137, 26, 145, 158, 176, 201, 189, 197, 208, 253, 234, 244, 246, 255, 230, 246, 249, 255, 222, 242, 246, 255, 206, 234, 244, 255, 178, 212, 229, 255, 128, 158, 181, 255, 70, 90, 119, 250, 70, 84, 113, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 188, 195, 206, 158, 163, 176, 189, 243, 227, 235, 240, 255, 244, 250, 251, 255, 241, 249, 251, 255, 0, 0, 0, 255, 215, 237, 245, 255, 191, 223, 241, 255, 164, 203, 230, 255, 104, 133, 158, 255, 60, 82, 111, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 160, 178, 213, 182, 196, 207, 255, 234, 245, 249, 255, 243, 250, 252, 255, 244, 251, 252, 255, 0, 0, 0, 255, 218, 237, 246, 255, 193, 222, 240, 255, 169, 207, 236, 255, 125, 162, 192, 255, 59, 81, 112, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 113, 129, 151, 255, 196, 218, 227, 255, 222, 241, 247, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 165, 202, 231, 255, 130, 166, 204, 255, 63, 84, 114, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 143, 164, 221, 164, 188, 205, 255, 204, 232, 244, 255, 215, 238, 246, 255, 218, 239, 247, 255, 0, 0, 0, 255, 197, 226, 242, 255, 179, 213, 236, 255, 157, 195, 227, 255, 114, 148, 181, 255, 55, 75, 107, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 127, 141, 163, 162, 124, 149, 173, 247, 186, 223, 242, 255, 193, 225, 243, 255, 193, 225, 242, 255, 0, 0, 0, 255, 178, 216, 237, 255, 163, 203, 231, 255, 135, 173, 211, 255, 87, 115, 146, 255, 85, 95, 102, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 127, 153, 20, 82, 101, 130, 241, 139, 171, 193, 255, 170, 209, 236, 255, 174, 210, 238, 255, 167, 207, 236, 255, 158, 199, 231, 255, 138, 178, 216, 255, 98, 129, 161, 255, 66, 86, 114, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 105, 134, 70, 77, 97, 129, 245, 101, 129, 157, 255, 126, 162, 191, 255, 135, 173, 208, 255, 115, 149, 180, 255, 89, 117, 147, 255, 64, 84, 110, 255, 145, 128, 79, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 104, 135, 49, 120, 141, 172, 155, 66, 87, 117, 200, 58, 79, 112, 243, 67, 88, 119, 255, 87, 107, 142, 225, 74, 76, 71, 117, 66, 52, 45, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 198, 151, 43, 255, 239, 216, 135, 255, 165, 147, 100, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 2, 0, 0, 0, 0, 77, 80, 77, 82, 79, 80, 77, 255, 179, 141, 50, 255, 116, 102, 67, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 58, 79, 79, 77, 202, 78, 78, 75, 81, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ArrowRight(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 166, 192, 152, 72, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 170, 137, 255, 132, 151, 123, 255, 153, 176, 141, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 140, 161, 130, 255, 184, 225, 165, 255, 132, 151, 123, 255, 153, 176, 141, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 162, 188, 149, 255, 156, 180, 144, 255, 147, 170, 137, 255, 140, 161, 130, 255, 132, 152, 124, 255, 187, 229, 168, 255, 150, 199, 128, 255, 132, 151, 123, 255, 153, 176, 141, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 156, 180, 144, 255, 201, 241, 180, 255, 196, 238, 174, 255, 191, 234, 170, 255, 185, 228, 164, 255, 182, 224, 163, 255, 140, 193, 118, 255, 128, 178, 109, 255, 132, 151, 123, 255, 153, 177, 141, 99, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 170, 137, 255, 198, 239, 177, 255, 173, 226, 147, 255, 163, 216, 139, 255, 152, 205, 129, 255, 140, 193, 118, 255, 128, 181, 108, 255, 116, 170, 98, 255, 100, 146, 86, 255, 103, 118, 96, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 140, 161, 130, 255, 190, 233, 169, 255, 134, 179, 115, 255, 125, 170, 106, 255, 116, 160, 98, 255, 106, 151, 90, 255, 116, 170, 98, 255, 78, 119, 67, 255, 28, 34, 27, 255, 53, 65, 52, 82, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 132, 152, 124, 255, 35, 43, 34, 255, 44, 54, 43, 255, 53, 64, 51, 255, 60, 73, 58, 255, 96, 141, 81, 255, 78, 119, 67, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 127, 146, 120, 255, 78, 119, 67, 255, 28, 34, 27, 255, 54, 66, 53, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 127, 146, 120, 255, 28, 34, 27, 255, 37, 45, 36, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 127, 146, 120, 255, 44, 54, 43, 51, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_EditFind(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 159, 193, 223, 113, 137, 178, 234, 54, 85, 142, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 138, 159, 193, 191, 113, 137, 178, 234, 54, 85, 142, 221, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 59, 90, 147, 171, 241, 244, 249, 255, 12, 49, 117, 226, 21, 57, 124, 2, 255, 255, 255, 0, 21, 57, 124, 2, 59, 90, 147, 171, 241, 244, 249, 255, 12, 49, 117, 226, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 138, 159, 193, 191, 122, 145, 183, 255, 79, 107, 157, 255, 48, 79, 139, 255, 42, 74, 134, 235, 255, 255, 255, 0, 145, 165, 196, 255, 122, 145, 183, 255, 79, 107, 157, 255, 48, 79, 139, 255, 42, 74, 134, 235, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 127, 150, 186, 255, 248, 249, 251, 255, 177, 195, 222, 255, 117, 145, 195, 255, 33, 68, 133, 255, 8, 46, 118, 1, 127, 150, 186, 255, 248, 249, 251, 255, 178, 196, 223, 255, 135, 162, 208, 255, 36, 70, 134, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 120, 143, 181, 18, 127, 149, 185, 255, 99, 126, 172, 255, 73, 102, 155, 255, 45, 79, 140, 255, 59, 90, 148, 255, 54, 88, 150, 218, 99, 123, 168, 255, 112, 137, 178, 255, 87, 114, 163, 255, 40, 74, 135, 255, 33, 68, 132, 255, 99, 125, 170, 18, 255, 255, 255, 0, 255, 255, 255, 0, + 138, 159, 193, 5, 124, 146, 185, 255, 234, 240, 247, 255, 240, 246, 253, 255, 196, 213, 240, 255, 95, 127, 181, 255, 38, 72, 135, 255, 16, 53, 123, 202, 118, 141, 178, 255, 255, 255, 255, 255, 243, 246, 251, 255, 193, 210, 238, 255, 86, 118, 173, 255, 36, 71, 135, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 138, 159, 193, 123, 114, 137, 176, 255, 255, 255, 255, 255, 199, 210, 231, 255, 139, 162, 203, 255, 77, 108, 166, 255, 23, 60, 126, 255, 118, 141, 178, 120, 118, 141, 178, 255, 210, 217, 230, 255, 205, 216, 236, 255, 137, 160, 202, 255, 85, 118, 172, 255, 24, 59, 124, 255, 116, 140, 181, 126, 255, 255, 255, 0, + 139, 158, 189, 239, 108, 133, 176, 255, 78, 107, 159, 255, 49, 83, 145, 255, 41, 73, 135, 255, 38, 70, 132, 255, 23, 57, 124, 255, 16, 53, 123, 223, 112, 135, 174, 255, 78, 107, 159, 255, 49, 84, 145, 255, 41, 75, 138, 255, 28, 61, 124, 255, 20, 55, 119, 255, 55, 87, 144, 249, 255, 255, 255, 0, + 134, 154, 189, 255, 253, 253, 254, 255, 225, 232, 245, 255, 184, 200, 228, 255, 132, 158, 205, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 255, 229, 232, 241, 255, 223, 226, 235, 255, 175, 191, 221, 255, 108, 137, 188, 255, 41, 74, 134, 255, 255, 255, 255, 0, + 123, 145, 182, 255, 250, 250, 252, 255, 184, 200, 227, 255, 140, 163, 205, 255, 95, 128, 185, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 255, 229, 232, 241, 255, 223, 226, 235, 255, 175, 191, 221, 255, 108, 137, 188, 255, 41, 74, 134, 255, 255, 255, 255, 0, + 123, 145, 182, 255, 250, 250, 252, 255, 184, 200, 227, 255, 140, 163, 205, 255, 95, 128, 185, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 255, 229, 232, 241, 255, 223, 226, 235, 255, 175, 191, 221, 255, 108, 137, 188, 255, 41, 74, 134, 255, 255, 255, 255, 0, + 123, 145, 182, 255, 250, 250, 252, 255, 184, 200, 227, 255, 140, 163, 205, 255, 95, 128, 185, 255, 32, 64, 126, 255, 255, 255, 255, 0, 255, 255, 255, 0, 98, 126, 171, 9, 98, 126, 171, 255, 226, 230, 239, 255, 186, 198, 224, 255, 147, 169, 208, 255, 83, 117, 175, 255, 39, 73, 135, 255, 255, 255, 255, 0, + 97, 121, 160, 214, 90, 119, 164, 255, 63, 95, 149, 255, 57, 88, 143, 255, 57, 87, 142, 255, 31, 63, 126, 232, 32, 64, 126, 12, 255, 255, 255, 0, 98, 126, 171, 6, 98, 126, 171, 235, 74, 102, 151, 225, 78, 108, 158, 255, 60, 91, 146, 255, 49, 81, 138, 255, 13, 48, 113, 238, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 2, 255, 255, 255, 0, 147, 162, 183, 5, 87, 112, 160, 7, 87, 112, 160, 13, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaForward(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 28, 96, 140, 228, 2, 0, 0, 0, 0, 96, 140, 228, 28, 96, 140, 228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 154, 231, 255, 95, 147, 237, 34, 96, 140, 228, 2, 113, 154, 231, 255, 95, 147, 237, 34, 96, 140, 228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 153, 230, 255, 96, 139, 222, 255, 94, 144, 235, 40, 108, 152, 229, 255, 96, 139, 222, 255, 94, 144, 235, 40, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 148, 229, 255, 158, 191, 251, 255, 82, 128, 217, 235, 102, 146, 228, 255, 157, 190, 250, 255, 82, 128, 217, 235, 96, 140, 228, 61, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 140, 228, 255, 155, 190, 250, 255, 137, 181, 253, 255, 70, 117, 211, 255, 140, 177, 244, 255, 136, 180, 252, 255, 70, 117, 211, 255, 96, 140, 228, 63, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 138, 226, 255, 148, 182, 250, 255, 116, 165, 253, 255, 96, 151, 253, 255, 60, 109, 205, 255, 111, 158, 246, 255, 96, 150, 252, 255, 60, 109, 205, 255, 96, 140, 228, 63, 96, 140, 228, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 131, 225, 255, 133, 173, 239, 255, 96, 151, 253, 255, 51, 116, 244, 255, 27, 91, 214, 255, 51, 89, 166, 255, 55, 115, 229, 255, 27, 91, 214, 255, 51, 89, 166, 255, 64, 114, 205, 95, 96, 140, 228, 3, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 122, 223, 255, 116, 157, 238, 255, 51, 116, 244, 255, 27, 91, 214, 255, 33, 68, 140, 255, 43, 103, 220, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 171, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 117, 221, 255, 81, 132, 230, 255, 27, 91, 214, 255, 33, 68, 140, 255, 65, 115, 212, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 169, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 110, 220, 255, 60, 112, 212, 255, 33, 68, 140, 255, 49, 102, 208, 255, 60, 112, 212, 255, 33, 68, 140, 255, 27, 76, 169, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 69, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 102, 216, 255, 27, 76, 172, 77, 0, 0, 0, 0, 44, 102, 216, 255, 27, 76, 172, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 75, 173, 78, 27, 75, 168, 3, 0, 0, 0, 0, 26, 75, 173, 78, 27, 75, 168, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_WindowsTile(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 127, 161, 233, 255, 108, 148, 231, 255, 88, 135, 229, 255, 70, 123, 228, 255, 57, 114, 226, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 139, 170, 234, 255, 254, 255, 255, 255, 144, 181, 251, 255, 132, 171, 249, 255, 119, 162, 246, 255, 106, 153, 245, 255, 57, 114, 226, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 139, 170, 234, 255, 139, 170, 234, 255, 110, 151, 231, 255, 86, 134, 229, 255, 64, 118, 227, 255, 57, 114, 226, 255, 57, 114, 226, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 147, 160, 186, 255, 254, 255, 255, 255, 244, 246, 252, 255, 234, 239, 250, 255, 223, 231, 247, 255, 211, 222, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 138, 153, 180, 255, 252, 253, 254, 255, 241, 244, 252, 255, 230, 236, 249, 255, 219, 228, 246, 255, 208, 219, 245, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 131, 147, 173, 255, 250, 251, 254, 255, 237, 242, 251, 255, 226, 233, 249, 255, 215, 225, 246, 255, 203, 216, 243, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 119, 136, 163, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_FontBold(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 240, 0, 0, 0, 100, 0, 0, 0, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 51, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 3, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 226, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 254, 0, 0, 0, 161, 0, 0, 0, 23, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 3, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 226, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 57, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 255, 255, 255, 0, 5, 4, 5, 71, 5, 4, 5, 255, 0, 0, 0, 255, 0, 0, 0, 100, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 255, 5, 4, 5, 240, 0, 0, 0, 100, 0, 0, 0, 12, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_EditErase(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 74, 73, 73, 48, 72, 74, 73, 188, 72, 73, 73, 66, 74, 74, 73, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 65, 65, 68, 3, 67, 68, 69, 103, 65, 65, 68, 255, 66, 67, 67, 246, 75, 74, 75, 81, 75, 76, 75, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 58, 61, 64, 4, 82, 81, 80, 34, 71, 71, 70, 110, 255, 255, 255, 0, 255, 255, 255, 0, + 65, 65, 68, 4, 65, 65, 68, 98, 62, 63, 66, 182, 55, 57, 61, 255, 63, 64, 68, 252, 72, 72, 73, 122, 77, 75, 75, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 36, 41, 49, 8, 59, 63, 66, 66, 75, 74, 74, 247, 64, 64, 66, 156, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 65, 65, 68, 25, 65, 65, 68, 56, 64, 65, 68, 182, 58, 60, 63, 255, 62, 63, 64, 255, 79, 77, 75, 177, 77, 77, 76, 11, 255, 255, 255, 0, 53, 56, 61, 9, 71, 73, 73, 168, 61, 63, 66, 251, 53, 53, 55, 139, 42, 46, 52, 12, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 65, 65, 68, 6, 65, 65, 68, 112, 63, 64, 67, 251, 62, 62, 66, 255, 76, 77, 77, 166, 57, 58, 63, 46, 58, 58, 62, 147, 61, 60, 60, 255, 46, 49, 52, 147, 38, 42, 48, 15, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 59, 61, 61, 1, 63, 63, 66, 41, 62, 63, 66, 207, 54, 55, 59, 255, 50, 51, 54, 247, 49, 51, 50, 239, 38, 42, 45, 174, 35, 39, 45, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 47, 48, 52, 64, 46, 47, 52, 249, 57, 58, 61, 255, 46, 47, 50, 222, 32, 35, 41, 18, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 51, 52, 52, 32, 38, 39, 44, 210, 45, 46, 49, 254, 47, 48, 52, 255, 52, 53, 56, 255, 42, 43, 45, 218, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 50, 53, 31, 38, 40, 43, 213, 38, 39, 44, 252, 40, 41, 43, 172, 20, 22, 25, 52, 30, 31, 36, 182, 48, 49, 51, 255, 37, 39, 43, 105, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 40, 43, 45, 24, 29, 32, 35, 202, 30, 33, 37, 255, 45, 46, 49, 194, 25, 24, 26, 18, 12, 14, 14, 11, 15, 18, 20, 11, 31, 34, 38, 151, 48, 48, 51, 244, 37, 42, 48, 29, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 40, 48, 56, 8, 30, 33, 38, 162, 24, 27, 33, 241, 44, 45, 49, 228, 43, 45, 47, 42, 255, 255, 255, 0, 255, 255, 255, 0, 12, 16, 16, 8, 9, 9, 11, 14, 45, 47, 49, 205, 25, 28, 32, 146, 28, 33, 38, 3, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 26, 29, 32, 75, 22, 24, 32, 255, 37, 38, 43, 255, 36, 38, 40, 133, 9, 11, 13, 11, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 4, 4, 3, 2, 36, 38, 40, 36, 36, 36, 37, 223, 13, 16, 17, 31, 39, 45, 52, 2, 255, 255, 255, 0, + 255, 255, 255, 0, 16, 16, 18, 6, 20, 20, 22, 133, 18, 19, 23, 255, 31, 32, 35, 186, 8, 10, 12, 38, 12, 14, 16, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 16, 16, 17, 3, 54, 54, 57, 147, 11, 13, 10, 53, 39, 46, 55, 2, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 28, 31, 37, 50, 5, 6, 7, 145, 0, 1, 2, 62, 3, 4, 4, 13, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 4, 2, 2, 2, 10, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ToolsColor(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 247, 239, 169, 115, 246, 217, 124, 244, 245, 214, 118, 250, 245, 212, 114, 253, 245, 214, 117, 251, 244, 207, 94, 241, 245, 230, 144, 147, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 247, 239, 170, 143, 243, 207, 90, 249, 246, 232, 152, 224, 248, 241, 182, 255, 248, 241, 182, 255, 248, 241, 182, 255, 246, 231, 146, 228, 244, 212, 108, 250, 244, 210, 101, 233, 232, 212, 132, 116, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 247, 239, 169, 120, 244, 212, 107, 251, 246, 234, 157, 238, 247, 241, 175, 244, 248, 241, 182, 255, 248, 241, 182, 255, 248, 241, 182, 255, 246, 238, 166, 249, 246, 234, 160, 239, 237, 210, 112, 227, 237, 198, 84, 248, 245, 231, 149, 88, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 245, 216, 122, 248, 246, 234, 158, 230, 248, 241, 182, 255, 255, 175, 109, 255, 255, 144, 85, 255, 255, 176, 109, 255, 248, 241, 182, 255, 247, 236, 165, 254, 247, 236, 167, 254, 245, 231, 152, 241, 217, 176, 77, 245, 221, 187, 93, 171, 244, 223, 132, 64, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 245, 212, 112, 255, 247, 240, 172, 235, 248, 241, 182, 255, 255, 144, 84, 255, 217, 34, 0, 255, 88, 0, 0, 255, 248, 240, 178, 255, 151, 182, 180, 255, 100, 141, 179, 255, 140, 171, 182, 255, 236, 211, 120, 232, 201, 154, 53, 236, 219, 182, 81, 143, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 245, 212, 112, 255, 246, 237, 164, 230, 248, 241, 182, 255, 243, 89, 41, 255, 122, 0, 0, 255, 219, 31, 0, 255, 246, 233, 147, 255, 100, 140, 176, 255, 0, 58, 176, 255, 0, 0, 97, 255, 244, 222, 115, 244, 227, 195, 92, 222, 174, 129, 39, 239, 242, 211, 100, 62, 255, 255, 255, 0, + 255, 255, 255, 0, 243, 203, 84, 249, 245, 227, 142, 207, 248, 241, 182, 255, 248, 241, 182, 255, 246, 234, 158, 254, 246, 233, 147, 255, 246, 232, 148, 255, 35, 89, 179, 255, 0, 15, 179, 255, 0, 43, 171, 255, 244, 222, 115, 251, 239, 215, 99, 238, 180, 132, 29, 248, 206, 157, 39, 148, 255, 255, 255, 0, + 255, 255, 255, 0, 244, 220, 118, 105, 220, 180, 59, 247, 244, 226, 139, 181, 247, 231, 154, 232, 246, 230, 149, 254, 246, 232, 149, 254, 245, 227, 140, 255, 244, 227, 133, 255, 244, 222, 112, 255, 244, 220, 104, 255, 244, 219, 106, 255, 239, 212, 92, 244, 185, 139, 32, 247, 201, 151, 34, 171, 255, 255, 255, 0, + 255, 255, 255, 0, 244, 226, 137, 32, 244, 223, 132, 66, 194, 153, 29, 253, 201, 164, 55, 255, 235, 194, 70, 255, 240, 212, 101, 251, 243, 218, 102, 254, 140, 219, 62, 255, 80, 186, 0, 255, 103, 171, 0, 255, 243, 217, 99, 255, 235, 203, 81, 244, 185, 139, 30, 248, 200, 149, 29, 167, 255, 255, 255, 0, + 244, 223, 130, 2, 244, 220, 124, 7, 255, 255, 255, 0, 255, 255, 255, 0, 243, 212, 106, 108, 178, 129, 17, 253, 232, 202, 82, 254, 243, 218, 98, 255, 113, 217, 35, 255, 43, 145, 0, 255, 0, 96, 0, 255, 243, 217, 98, 255, 229, 195, 73, 239, 176, 128, 18, 254, 206, 155, 27, 115, 255, 255, 255, 0, + 255, 255, 255, 0, 243, 216, 112, 2, 255, 255, 255, 0, 255, 255, 255, 0, 231, 179, 34, 254, 201, 151, 28, 231, 233, 202, 81, 255, 242, 215, 95, 255, 103, 179, 10, 255, 0, 111, 0, 255, 37, 136, 0, 255, 238, 209, 83, 250, 204, 159, 46, 238, 172, 125, 24, 254, 189, 135, 11, 2, 255, 255, 255, 0, + 255, 255, 255, 0, 242, 210, 99, 1, 255, 255, 255, 0, 255, 255, 255, 0, 233, 181, 32, 255, 219, 176, 52, 206, 240, 210, 89, 255, 240, 212, 92, 255, 242, 215, 92, 255, 242, 214, 90, 253, 236, 207, 81, 251, 215, 174, 55, 244, 169, 123, 24, 253, 201, 148, 26, 143, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 182, 58, 71, 193, 140, 34, 241, 234, 194, 67, 255, 231, 195, 72, 255, 236, 201, 78, 255, 226, 193, 68, 245, 199, 163, 56, 251, 171, 124, 26, 249, 209, 155, 25, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 240, 198, 69, 1, 255, 255, 255, 0, 255, 255, 255, 0, 214, 165, 45, 84, 172, 126, 36, 229, 184, 137, 31, 253, 168, 125, 31, 252, 175, 133, 35, 250, 210, 157, 32, 160, 223, 169, 29, 83, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_ToolsSortDescend(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 149, 88, 111, 173, 149, 85, 105, 185, 151, 91, 114, 157, 149, 90, 112, 186, 145, 71, 77, 209, 140, 51, 41, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 73, 81, 182, 0, 0, 0, 0, 155, 89, 100, 23, 149, 73, 76, 232, 125, 46, 37, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 151, 70, 70, 22, 0, 0, 0, 0, 153, 82, 95, 153, 126, 47, 37, 255, 128, 47, 39, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 156, 88, 107, 67, 146, 71, 77, 255, 126, 47, 38, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 149, 91, 114, 224, 138, 52, 41, 232, 133, 55, 44, 23, 0, 0, 0, 0, 148, 65, 65, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 152, 87, 107, 141, 143, 63, 62, 255, 136, 50, 40, 101, 0, 0, 0, 0, 146, 73, 61, 21, 138, 51, 40, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 71, 77, 43, 136, 51, 41, 244, 119, 44, 34, 245, 125, 46, 38, 155, 131, 49, 38, 168, 121, 45, 36, 234, 123, 45, 36, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 123, 202, 24, 72, 112, 191, 245, 58, 96, 163, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73, 114, 193, 170, 69, 107, 183, 255, 58, 88, 151, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 75, 0, 0, 0, 255, 0, 0, 0, 69, 0, 0, 0, 138, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 70, 109, 185, 222, 67, 102, 175, 225, 51, 83, 140, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 112, 192, 66, 69, 107, 183, 247, 60, 93, 157, 40, 51, 80, 137, 255, 58, 89, 152, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 255, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 107, 183, 203, 66, 101, 174, 218, 54, 86, 146, 150, 52, 82, 139, 244, 55, 86, 147, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 255, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 69, 107, 183, 3, 69, 106, 183, 241, 69, 107, 183, 24, 0, 0, 0, 0, 57, 90, 153, 77, 51, 79, 136, 255, 55, 90, 150, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 106, 182, 198, 55, 85, 145, 248, 57, 87, 147, 100, 58, 86, 152, 10, 51, 79, 137, 239, 51, 79, 136, 255, 51, 79, 135, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaPlay(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 28, 96, 140, 228, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 95, 147, 237, 34, 96, 140, 228, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 96, 139, 222, 255, 94, 144, 235, 40, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 104, 148, 229, 255, 158, 191, 251, 255, 82, 128, 217, 235, 96, 140, 228, 61, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 255, 155, 190, 250, 255, 137, 181, 253, 255, 70, 117, 211, 255, 96, 140, 228, 63, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 89, 138, 226, 255, 148, 182, 250, 255, 116, 165, 253, 255, 96, 151, 253, 255, 60, 109, 205, 255, 96, 140, 228, 63, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 81, 131, 225, 255, 133, 173, 239, 255, 96, 151, 253, 255, 51, 116, 244, 255, 27, 91, 214, 255, 51, 89, 166, 255, 64, 114, 205, 95, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 72, 122, 223, 255, 116, 157, 238, 255, 51, 116, 244, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 171, 81, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 63, 117, 221, 255, 81, 132, 230, 255, 27, 91, 214, 255, 33, 68, 140, 255, 27, 76, 169, 74, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 60, 112, 212, 255, 33, 68, 140, 255, 27, 76, 169, 60, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 33, 68, 140, 255, 26, 74, 167, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 27, 76, 172, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 75, 173, 78, 27, 75, 168, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_NavigateRefresh(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 178, 194, 216, 255, 174, 190, 212, 255, 169, 185, 207, 255, 164, 179, 201, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 178, 194, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 171, 192, 255, 54, 74, 100, 255, 164, 179, 201, 139, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 175, 191, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 185, 201, 255, 186, 197, 212, 255, 54, 74, 100, 255, 164, 179, 201, 140, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 171, 187, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 206, 214, 204, 255, 127, 143, 164, 255, 58, 78, 103, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 167, 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 233, 206, 255, 112, 153, 35, 255, 112, 153, 35, 255, 112, 153, 35, 255, 87, 123, 16, 255, 174, 185, 202, 255, 147, 162, 183, 255, 54, 74, 100, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 163, 178, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 198, 213, 170, 255, 255, 255, 255, 255, 82, 118, 17, 255, 219, 226, 208, 255, 233, 237, 245, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 158, 174, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 154, 169, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 242, 245, 249, 255, 112, 153, 35, 255, 218, 225, 238, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 150, 165, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 241, 222, 255, 112, 153, 35, 255, 247, 248, 251, 255, 213, 225, 196, 255, 112, 153, 35, 255, 211, 219, 235, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 153, 35, 255, 112, 153, 35, 255, 112, 153, 35, 255, 112, 153, 35, 255, 188, 203, 188, 255, 203, 213, 231, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 237, 215, 255, 79, 106, 16, 255, 233, 237, 245, 255, 220, 227, 239, 255, 209, 217, 234, 255, 196, 207, 228, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 250, 252, 255, 238, 241, 247, 255, 225, 231, 241, 255, 213, 221, 236, 255, 201, 211, 230, 255, 189, 202, 225, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 255, 255, 255, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 147, 162, 183, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 147, 162, 183, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 53, 73, 99, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_EditRedo(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 170, 194, 245, 26, 169, 193, 245, 148, 167, 193, 245, 196, 158, 187, 245, 226, 140, 175, 244, 100, 121, 161, 244, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 170, 194, 245, 26, 170, 194, 245, 242, 157, 185, 245, 227, 127, 164, 244, 220, 129, 168, 244, 227, 133, 170, 244, 220, 120, 162, 244, 243, 121, 162, 244, 101, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 170, 194, 245, 217, 153, 183, 245, 236, 71, 121, 224, 239, 55, 96, 180, 247, 58, 100, 182, 252, 64, 109, 199, 245, 100, 147, 243, 232, 113, 156, 244, 232, 113, 157, 244, 86, 255, 255, 255, 0, 166, 200, 245, 48, 64, 114, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 165, 192, 245, 223, 86, 136, 238, 249, 54, 91, 159, 251, 68, 110, 175, 217, 53, 93, 172, 198, 53, 93, 172, 244, 54, 95, 179, 251, 99, 147, 243, 253, 103, 153, 243, 230, 107, 157, 244, 89, 158, 192, 245, 213, 59, 105, 199, 255, 170, 194, 245, 9, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 128, 165, 244, 188, 69, 119, 220, 239, 39, 74, 140, 218, 80, 125, 183, 36, 255, 255, 255, 0, 53, 93, 169, 111, 51, 91, 167, 245, 44, 80, 155, 250, 85, 137, 241, 231, 113, 156, 244, 255, 106, 154, 243, 255, 52, 95, 181, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 128, 169, 244, 194, 69, 119, 222, 234, 38, 73, 142, 195, 32, 64, 126, 3, 255, 255, 255, 0, 255, 255, 255, 0, 52, 92, 168, 65, 40, 75, 146, 171, 118, 156, 236, 255, 91, 141, 243, 255, 75, 130, 236, 255, 46, 85, 163, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 131, 169, 244, 180, 75, 127, 232, 245, 40, 75, 147, 217, 32, 64, 126, 5, 255, 255, 255, 0, 255, 255, 255, 0, 148, 181, 245, 45, 148, 181, 245, 255, 106, 154, 243, 255, 73, 130, 234, 255, 54, 115, 223, 255, 40, 76, 149, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 112, 151, 227, 117, 81, 133, 236, 253, 50, 89, 172, 250, 32, 64, 126, 11, 255, 255, 255, 0, 255, 255, 255, 0, 64, 114, 214, 255, 58, 105, 199, 255, 52, 95, 182, 255, 46, 84, 164, 255, 40, 76, 149, 255, 37, 70, 138, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 141, 176, 245, 6, 102, 147, 239, 254, 69, 118, 219, 252, 39, 74, 146, 71, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 170, 194, 245, 9, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 86, 126, 207, 109, 84, 136, 240, 254, 56, 100, 190, 209, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 42, 80, 155, 1, 79, 123, 214, 233, 79, 132, 240, 253, 64, 111, 208, 92, 94, 142, 239, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 42, 80, 155, 14, 76, 121, 217, 202, 80, 133, 243, 245, 72, 123, 227, 67, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 75, 128, 234, 85, 90, 141, 243, 89, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_MediaGoToBegin(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 2, 96, 140, 228, 28, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 113, 154, 231, 255, 128, 158, 231, 250, 93, 136, 225, 236, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 2, 95, 147, 237, 34, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 109, 153, 230, 255, 170, 196, 239, 255, 87, 135, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 3, 94, 144, 235, 40, 95, 139, 224, 255, 83, 128, 214, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 104, 148, 229, 255, 161, 190, 240, 255, 83, 128, 214, 255, 255, 255, 255, 0, 96, 140, 228, 3, 96, 140, 228, 61, 92, 138, 224, 250, 165, 191, 255, 255, 79, 123, 208, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 96, 140, 228, 255, 150, 180, 239, 255, 79, 123, 208, 255, 96, 140, 228, 3, 96, 140, 228, 63, 88, 135, 223, 255, 165, 191, 255, 255, 105, 154, 255, 255, 74, 117, 200, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 89, 138, 226, 255, 141, 171, 240, 255, 74, 117, 200, 255, 96, 140, 228, 63, 85, 133, 222, 255, 165, 191, 255, 255, 133, 174, 255, 255, 79, 137, 253, 255, 68, 111, 192, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 81, 131, 225, 255, 126, 159, 238, 255, 68, 111, 192, 255, 83, 132, 221, 255, 162, 189, 255, 255, 136, 174, 255, 255, 104, 156, 249, 255, 62, 126, 249, 255, 63, 104, 183, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 72, 122, 223, 255, 111, 150, 236, 255, 63, 104, 183, 255, 27, 76, 171, 81, 62, 115, 219, 255, 103, 156, 251, 255, 79, 138, 246, 255, 44, 113, 238, 255, 56, 96, 175, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 63, 117, 221, 255, 107, 147, 235, 255, 56, 96, 175, 255, 255, 255, 255, 0, 27, 76, 169, 74, 47, 100, 207, 255, 52, 114, 232, 255, 36, 106, 242, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 56, 110, 220, 255, 101, 143, 235, 255, 51, 89, 166, 255, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 169, 60, 48, 98, 200, 255, 29, 102, 245, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 49, 106, 219, 255, 86, 132, 233, 255, 45, 83, 158, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 26, 74, 167, 69, 47, 101, 211, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 44, 102, 216, 255, 78, 123, 225, 255, 40, 77, 150, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 76, 172, 77, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 62, 106, 211, 250, 36, 72, 144, 255, 36, 72, 144, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 27, 75, 168, 3, 26, 75, 173, 78, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + diff --git a/iup/srcimglib/iup_imglib_bitmaps8.h b/iup/srcimglib/iup_imglib_bitmaps8.h new file mode 100755 index 0000000..cf6b142 --- /dev/null +++ b/iup/srcimglib/iup_imglib_bitmaps8.h @@ -0,0 +1,14421 @@ +static Ihandle* load_image_Zoom8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 0, 1, 2, 2, 2, 255, 255, 255, 1, 0, 255, 255, 255, 255, + 255, 1, 0, 2, 2, 255, 255, 255, 255, 255, 255, 0, 1, 255, 255, 255, + 255, 0, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 0, 255, 255, 255, + 255, 1, 0, 255, 255, 255, 255, 255, 255, 1, 255, 0, 1, 255, 255, 255, + 255, 255, 0, 1, 255, 255, 255, 1, 1, 255, 1, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 128"); + IupSetAttribute(image, "2", "255 255 255"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_EditCut8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 1, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 1, 255, 1, 1, 1, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 1, 1, 255, 1, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 1, 255, 255, 1, 255, 1, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 1, 255, 255, 1, 255, 1, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 1, 255, 255, 1, 255, 255, 1, 1, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 128"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_EditErase8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 1, 255, + 255, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 0, 0, 1, 255, 255, + 255, 255, 0, 0, 0, 0, 1, 255, 255, 255, 0, 0, 1, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 1, 255, 0, 1, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 1, 255, 0, 0, 1, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 1, 255, 255, 255, 0, 0, 1, 255, 255, 255, + 255, 255, 0, 0, 0, 1, 255, 255, 255, 255, 255, 0, 1, 255, 255, 255, + 255, 255, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, 0, 1, 255, 255, + 255, 255, 255, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "255 255 255"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ArrowUp8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "76 178 127"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaGoToBegin8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MessageError8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 1, 1, 2, 2, 2, 2, 2, 1, 1, 255, 255, 255, 255, + 255, 255, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 255, 255, 255, + 255, 1, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 1, 255, 255, + 255, 1, 2, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 1, 3, 255, + 1, 2, 2, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 1, 255, + 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 1, 3, + 1, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 1, 3, + 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 1, 3, + 1, 2, 2, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 1, 3, + 255, 1, 2, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 1, 3, 3, + 255, 1, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 1, 3, 255, + 255, 255, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 3, 255, + 255, 255, 255, 1, 1, 2, 2, 2, 2, 2, 1, 1, 3, 3, 255, 255, + 255, 255, 255, 255, 3, 1, 1, 1, 1, 1, 3, 3, 3, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 0 0"); + IupSetAttribute(image, "2", "255 0 0"); + IupSetAttribute(image, "3", "128 128 128"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ZoomIn8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 0, 1, 2, 2, 2, 255, 255, 255, 1, 0, 255, 255, 255, 255, + 255, 1, 0, 2, 2, 255, 0, 0, 255, 255, 255, 0, 1, 255, 255, 255, + 255, 0, 255, 2, 255, 255, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 2, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 0, 0, 255, 255, 1, 255, 0, 255, 255, 255, + 255, 1, 0, 255, 255, 255, 0, 0, 255, 1, 255, 0, 1, 255, 255, 255, + 255, 255, 0, 1, 255, 255, 255, 1, 1, 255, 1, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 128"); + IupSetAttribute(image, "2", "255 255 255"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FontItalic8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileNew8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 1, 255, 255, 2, 1, 255, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, + 2, 1, 255, 2, 3, 255, 2, 1, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 2, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 1, 2, 1, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 0, 255, + 2, 2, 2, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 2, 255, 255, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "255 255 0"); + IupSetAttribute(image, "2", "128 128 128"); + IupSetAttribute(image, "3", "255 255 255"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileCloseAll8(void) +{ + unsigned char imgdata[] = { + 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 3, 3, 3, 0, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255, 255, 0, 0, 255, 255, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 0, 255, 0, 255, + 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, 0, + 0, 1, 1, 0, 3, 3, 3, 0, 1, 1, 0, 255, 255, 255, 255, 255, 0, + 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255, 255, 255, 0, + 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 0, 255, + 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 255, 255, 255, 255, + 255, 255, 0, 1, 1, 1, 0, 3, 3, 3, 0, 1, 0, 255, 255, 255, 255, + 255, 255, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255, + 255, 255, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255}; + + Ihandle* image = IupImage(17, 17, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 0"); + IupSetAttribute(image, "2", "128 128 128"); + IupSetAttribute(image, "3", "255 255 255"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_EditFind8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 0, 1, 0, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 0, 1, 0, 0, 0, 255, 0, 1, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, + 255, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, + 255, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, + 255, 0, 1, 0, 0, 0, 255, 255, 255, 255, 255, 0, 1, 0, 0, 0, + 255, 0, 1, 0, 0, 0, 255, 255, 255, 255, 255, 0, 1, 0, 0, 0, + 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "255 255 255"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ToolsSettings8(void) +{ + unsigned char imgdata[] = { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 2, 6, 6, 6, 3, 0, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 1, 4, 4, 2, 2, 2, 2, 2, 0, 4, 4, 2, 2, 4, 4, 4, + 4, 4, 1, 5, 6, 0, 0, 2, 6, 3, 2, 2, 0, 0, 0, 5, 6, 0, 4, 4, + 4, 4, 1, 6, 5, 6, 1, 2, 6, 3, 2, 2, 0, 1, 5, 6, 5, 0, 4, 4, + 4, 4, 0, 1, 6, 5, 6, 2, 6, 3, 2, 2, 0, 5, 6, 5, 1, 0, 4, 4, + 4, 4, 0, 1, 6, 6, 0, 2, 6, 3, 2, 2, 0, 0, 5, 6, 1, 0, 4, 4, + 1, 1, 1, 5, 6, 0, 6, 2, 6, 3, 2, 2, 0, 6, 0, 5, 6, 0, 0, 4, + 1, 6, 5, 6, 5, 6, 0, 2, 6, 3, 2, 2, 0, 0, 5, 6, 5, 6, 5, 0, + 0, 1, 1, 1, 6, 5, 6, 0, 0, 0, 0, 0, 0, 5, 6, 5, 0, 1, 1, 0, + 0, 1, 1, 0, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 0, 1, 1, 0, + 0, 1, 0, 5, 6, 5, 0, 0, 1, 5, 6, 1, 0, 0, 6, 5, 6, 0, 1, 0, + 4, 0, 1, 1, 5, 0, 1, 1, 1, 6, 5, 0, 1, 1, 1, 6, 1, 0, 0, 4, + 4, 4, 1, 5, 0, 1, 1, 1, 1, 5, 6, 0, 1, 1, 1, 1, 1, 0, 0, 4, + 4, 4, 1, 5, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 4, 4, + 4, 4, 1, 5, 0, 0, 4, 4, 1, 1, 1, 0, 4, 4, 0, 1, 1, 0, 4, 4, + 4, 4, 4, 0, 0, 4, 4, 4, 0, 1, 1, 0, 4, 4, 4, 0, 0, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}; + + Ihandle* image = IupImage(20, 20, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 0"); + IupSetAttribute(image, "2", "128 128 128"); + IupSetAttribute(image, "3", "192 192 192"); + IupSetAttribute(image, "4", "BGCOLOR"); + IupSetAttribute(image, "5", "255 255 0"); + IupSetAttribute(image, "6", "255 255 255"); + IupSetAttribute(image, "7", "7 7 7"); + + return image; +} + +static Ihandle* load_image_ToolsSortAscend8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 2, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 4, 2, 4, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 2, 2, 2, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 4, 2, 255, 2, 4, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 2, 2, 2, 2, 2, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 4, 2, 255, 255, 255, 2, 4, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 2, 2, 2, 255, 2, 2, 2, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 3, 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 3, 3, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255, + 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 4, 1, 1, 1, 4, 255, + 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, 255, 255, + 255, 3, 3, 255, 255, 255, 3, 255, 255, 255, 255, 4, 1, 4, 255, 255, + 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "4 2 4"); + IupSetAttribute(image, "2", "4 2 132"); + IupSetAttribute(image, "3", "132 2 4"); + IupSetAttribute(image, "4", "132 130 132"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_EditUndo8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 0, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 0, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ZoomSelection8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 2, 0, 0, 0, 0, 2, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 0, 2, 255, 255, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255, + 255, 2, 0, 255, 1, 1, 3, 255, 1, 1, 255, 0, 2, 255, 255, 255, + 255, 0, 255, 255, 1, 255, 255, 255, 255, 1, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 3, 255, 255, 255, 255, 3, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 1, 255, 255, 255, 255, 1, 255, 255, 0, 255, 255, 255, + 255, 2, 0, 255, 1, 1, 3, 255, 1, 1, 255, 0, 2, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 2, 0, 0, 0, 0, 2, 255, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "86 86 86"); + IupSetAttribute(image, "2", "128 128 128"); + IupSetAttribute(image, "3", "134 134 134"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaRecord8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, + 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, + 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, + 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, + 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, + 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_EditCopy8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 2, 2, 2, 2, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 2, 2, 2, 2, 0, 2, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 2, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 255, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 255, 255, + 255, 0, 2, 0, 0, 0, 0, 1, 2, 2, 2, 2, 1, 2, 1, 255, + 255, 0, 2, 2, 2, 2, 2, 1, 2, 0, 0, 2, 1, 1, 1, 1, + 255, 0, 2, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 1, + 255, 0, 2, 2, 2, 2, 2, 1, 2, 0, 0, 0, 0, 0, 2, 1, + 255, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 1, + 255, 255, 255, 255, 255, 255, 255, 1, 2, 0, 0, 0, 0, 0, 2, 1, + 255, 255, 255, 255, 255, 255, 255, 1, 2, 2, 2, 2, 2, 2, 2, 1, + 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 128"); + IupSetAttribute(image, "2", "255 255 255"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaGoToEnd8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_EditPaste8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 255, 255, 255, + 0, 2, 4, 2, 0, 3, 0, 0, 3, 0, 4, 2, 4, 0, 255, 255, + 0, 4, 4, 0, 5, 5, 5, 5, 5, 5, 0, 4, 2, 0, 255, 255, + 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 255, 255, + 0, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 255, 255, + 0, 2, 4, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 0, 4, 2, 4, 2, 4, 1, 6, 6, 6, 6, 6, 1, 1, 255, 255, + 0, 2, 4, 2, 4, 2, 1, 6, 6, 6, 6, 6, 1, 6, 1, 255, + 0, 4, 2, 4, 2, 4, 1, 6, 1, 1, 1, 6, 1, 1, 1, 1, + 0, 2, 4, 2, 4, 2, 1, 6, 6, 6, 6, 6, 6, 6, 6, 1, + 0, 4, 2, 4, 2, 4, 1, 6, 1, 1, 1, 1, 1, 1, 6, 1, + 255, 0, 0, 0, 0, 0, 1, 6, 6, 6, 6, 6, 6, 6, 6, 1, + 255, 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 128"); + IupSetAttribute(image, "2", "128 128 0"); + IupSetAttribute(image, "3", "255 255 0"); + IupSetAttribute(image, "4", "128 128 128"); + IupSetAttribute(image, "5", "192 192 192"); + IupSetAttribute(image, "6", "255 255 255"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ZoomActualSize8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaStop8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_WindowsCascade8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "255 255 255"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ZoomOut8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 0, 1, 2, 2, 2, 255, 255, 255, 1, 0, 255, 255, 255, 255, + 255, 1, 0, 2, 2, 255, 255, 255, 255, 255, 255, 0, 1, 255, 255, 255, + 255, 0, 255, 2, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 2, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 0, 255, 255, 255, + 255, 1, 0, 255, 255, 255, 255, 255, 255, 1, 255, 0, 1, 255, 255, 255, + 255, 255, 0, 1, 255, 255, 255, 1, 1, 255, 1, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 1, 0, 0, 0, 0, 1, 255, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 128"); + IupSetAttribute(image, "2", "255 255 255"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaPause8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_NavigateRefresh8(void) +{ + unsigned char imgdata[] = { + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 255, 255, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 255, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 0, 0, 0, 0, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 0, 255, 255, + 255, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 128 0"); + IupSetAttribute(image, "2", "255 255 255"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ActionCancel8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 2, 1, 255, 255, 255, 255, 255, 1, 2, 255, 255, 255, + 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 1, 2, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 2, 1, 255, 1, 2, 1, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 1, 2, 1, 2, 1, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 1, 2, 1, 2, 1, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 2, 1, 255, 1, 2, 1, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 1, 2, 1, 255, 255, 255, + 255, 255, 255, 255, 2, 1, 255, 255, 255, 255, 255, 1, 2, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 0 0"); + IupSetAttribute(image, "2", "255 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileSave8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 255, 0, 255, + 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 255, + 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255, + 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255, + 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255, + 255, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 255, + 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, + 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 255, + 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 255, + 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 0"); + IupSetAttribute(image, "2", "192 192 192"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_EditRedo8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FontDialog8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 2, 1, 2, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 1, 1, 1, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 2, 1, 1, 1, 2, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 1, 255, 1, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 2, 1, 255, 255, 1, 1, 2, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, + 255, 255, 255, 2, 1, 255, 255, 255, 255, 1, 1, 2, 255, 255, 255, 255, + 255, 255, 255, 1, 1, 255, 255, 255, 255, 2, 1, 1, 255, 255, 255, 255, + 255, 255, 2, 1, 255, 255, 255, 255, 255, 2, 1, 1, 2, 255, 255, 255, + 255, 1, 1, 1, 1, 255, 255, 255, 1, 1, 1, 1, 1, 1, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 128"); + IupSetAttribute(image, "2", "128 128 128"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileSaveAll8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 1, 0, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, + 0, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 1, 0, 1, 0, 255, + 0, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 1, 0, 255, + 0, 1, 0, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 1, 0, 255, + 0, 1, 0, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 1, 0, 255, + 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 255, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 255, + 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 255, 255, 255, + 0, 1, 1, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 255, 255, 255, + 0, 1, 1, 0, 0, 0, 0, 2, 0, 1, 0, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 0"); + IupSetAttribute(image, "2", "192 192 192"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MessageHelp8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, + 255, 255, 1, 6, 6, 6, 3, 6, 6, 6, 3, 6, 6, 6, 1, 255, + 255, 255, 1, 6, 3, 6, 6, 6, 3, 6, 6, 6, 3, 6, 1, 4, + 255, 255, 1, 6, 6, 6, 5, 2, 2, 2, 2, 5, 6, 6, 1, 4, + 255, 255, 1, 6, 3, 6, 2, 2, 3, 5, 2, 2, 3, 6, 1, 4, + 255, 255, 1, 6, 6, 6, 2, 4, 6, 6, 2, 2, 6, 6, 1, 4, + 255, 255, 1, 6, 3, 6, 6, 6, 3, 4, 2, 4, 3, 6, 1, 4, + 255, 255, 1, 6, 6, 6, 3, 6, 4, 2, 5, 6, 6, 6, 1, 4, + 255, 255, 1, 6, 3, 6, 6, 6, 2, 4, 6, 6, 3, 6, 1, 4, + 255, 255, 1, 6, 6, 6, 3, 6, 6, 6, 3, 6, 6, 6, 1, 4, + 255, 255, 1, 6, 3, 6, 6, 6, 2, 2, 6, 6, 3, 6, 1, 4, + 255, 255, 1, 6, 6, 6, 3, 6, 3, 6, 3, 6, 6, 6, 1, 4, + 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 6, 6, 1, 1, 4, 255, + 255, 255, 255, 255, 4, 4, 4, 4, 4, 4, 1, 3, 1, 4, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "64 64 64"); + IupSetAttribute(image, "2", "64 64 128"); + IupSetAttribute(image, "3", "255 255 64"); + IupSetAttribute(image, "4", "128 128 128"); + IupSetAttribute(image, "5", "224 224 224"); + IupSetAttribute(image, "6", "255 255 255"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FontBold8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ActionOk8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 3, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 3, 2, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 3, 2, 1, 255, 255, 255, + 255, 255, 255, 3, 1, 255, 255, 255, 1, 3, 2, 1, 255, 255, 255, 255, + 255, 255, 255, 2, 3, 1, 255, 1, 3, 2, 1, 255, 255, 255, 255, 255, + 255, 255, 255, 1, 2, 3, 1, 3, 2, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 2, 3, 2, 1, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 2, 1, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "43 155 43"); + IupSetAttribute(image, "2", "92 249 105"); + IupSetAttribute(image, "3", "98 244 85"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileOpen8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 255, 0, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 255, 255, 255, 255, + 255, 0, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 255, 255, 255, 255, + 255, 0, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 0, 3, 2, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 255, 0, 2, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 0"); + IupSetAttribute(image, "2", "255 255 0"); + IupSetAttribute(image, "3", "255 255 255"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileText8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 1, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "255 255 255"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ArrowDown8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 255, 0, 1, 1, 1, 1, 1, 1, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "76 178 127"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileClose8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, + 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 0, 3, 3, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "128 128 0"); + IupSetAttribute(image, "2", "128 128 128"); + IupSetAttribute(image, "3", "255 255 255"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_NavigateHome8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 1, 1, 255, 255, 2, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 1, 3, 3, 1, 255, 2, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 3, 1, 1, 3, 1, 2, 1, 255, 255, 255, + 255, 255, 255, 255, 1, 3, 1, 4, 4, 1, 3, 1, 1, 255, 255, 255, + 255, 255, 255, 1, 3, 1, 4, 4, 4, 4, 1, 3, 1, 255, 255, 255, + 255, 255, 1, 3, 1, 4, 4, 4, 4, 4, 4, 1, 3, 1, 255, 255, + 255, 1, 3, 1, 4, 4, 4, 4, 4, 4, 4, 4, 1, 3, 1, 255, + 255, 255, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 255, 255, + 255, 255, 1, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 1, 255, 255, + 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255, + 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255, + 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255, + 255, 255, 1, 4, 4, 4, 1, 3, 3, 1, 4, 4, 4, 1, 255, 255, + 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "4 2 4"); + IupSetAttribute(image, "2", "132 2 4"); + IupSetAttribute(image, "3", "252 254 4"); + IupSetAttribute(image, "4", "252 254 252"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaForward8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MessageInfo8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 1, 1, 7, 7, 7, 7, 7, 1, 1, 255, 255, 255, 255, + 255, 255, 1, 7, 7, 7, 7, 6, 5, 7, 7, 7, 1, 255, 255, 255, + 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 255, 255, + 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 2, 255, + 1, 7, 7, 7, 7, 7, 7, 3, 4, 7, 7, 7, 7, 7, 1, 255, + 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2, + 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2, + 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2, + 1, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 2, + 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 2, 2, + 255, 1, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 1, 2, 255, + 255, 255, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 2, 2, 255, + 255, 255, 255, 1, 1, 7, 7, 7, 7, 7, 1, 1, 2, 2, 255, 255, + 255, 255, 255, 255, 2, 1, 1, 1, 1, 1, 2, 2, 2, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 2, 2, 2, 2, 2, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "47 93 185"); + IupSetAttribute(image, "2", "128 128 128"); + IupSetAttribute(image, "3", "208 219 235"); + IupSetAttribute(image, "4", "228 235 242"); + IupSetAttribute(image, "5", "239 245 251"); + IupSetAttribute(image, "6", "240 245 252"); + IupSetAttribute(image, "7", "255 255 255"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ViewFullScreen8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, + 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, + 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 255, + 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255, + 1, 5, 1, 4, 3, 3, 3, 4, 2, 4, 2, 4, 1, 5, 1, 255, + 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255, + 1, 5, 1, 4, 3, 3, 3, 3, 3, 3, 3, 4, 1, 5, 1, 255, + 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255, + 1, 5, 1, 4, 3, 3, 3, 3, 3, 3, 3, 4, 1, 5, 1, 255, + 1, 5, 1, 2, 4, 2, 4, 2, 4, 2, 4, 2, 1, 5, 1, 255, + 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 255, + 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, + 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "4 2 4"); + IupSetAttribute(image, "2", "4 254 252"); + IupSetAttribute(image, "3", "132 130 132"); + IupSetAttribute(image, "4", "252 254 252"); + IupSetAttribute(image, "5", "255 255 255"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ArrowLeft8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 255, 255, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 255, 255, 255, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "76 178 127"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaRewind8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ArrowRight8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 1, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 1, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "76 178 127"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaReverse8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_Print8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, + 255, 255, 255, 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 255, + 255, 255, 255, 255, 1, 5, 1, 1, 1, 1, 1, 5, 1, 255, 255, 255, + 255, 255, 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 255, 255, + 255, 255, 255, 1, 5, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 255, + 255, 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 1, 4, 1, 4, 1, + 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 1, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 3, 3, 3, 4, 4, 1, 4, 1, 255, + 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 4, 1, 1, 1, 255, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 255, + 255, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 1, 255, 255, + 255, 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "64 64 64"); + IupSetAttribute(image, "2", "255 255 64"); + IupSetAttribute(image, "3", "128 128 128"); + IupSetAttribute(image, "4", "224 224 224"); + IupSetAttribute(image, "5", "255 255 255"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_FileProperties8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 1, 1, + 255, 255, 255, 255, 255, 255, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, + 255, 255, 255, 255, 255, 0, 2, 0, 2, 2, 2, 2, 2, 2, 1, 1, + 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 1, + 0, 3, 3, 0, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 1, 1, + 0, 3, 0, 2, 0, 3, 0, 2, 0, 2, 0, 0, 0, 255, 1, 1, + 0, 3, 0, 0, 3, 3, 3, 0, 2, 0, 3, 0, 255, 255, 255, 1, + 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 255, 255, 255, 255, + 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, 255, 255, 255, + 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 255, 255, 255, 255, + 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, 255, 255, 255, + 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 255, 255, 255, 255, + 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 128"); + IupSetAttribute(image, "2", "192 192 192"); + IupSetAttribute(image, "3", "255 255 255"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ToolsSortDescend8(void) +{ + unsigned char imgdata[] = { + 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 3, 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 3, 3, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 3, 3, 255, 255, 255, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 3, 3, 3, 3, 3, 3, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 2, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 4, 2, 4, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 2, 2, 2, 255, 255, 255, 255, 1, 1, 1, 1, 1, 255, + 255, 255, 4, 2, 255, 2, 4, 255, 255, 255, 4, 1, 1, 1, 4, 255, + 255, 255, 2, 2, 2, 2, 2, 255, 255, 255, 255, 1, 1, 1, 255, 255, + 255, 4, 2, 255, 255, 255, 2, 4, 255, 255, 255, 4, 1, 4, 255, 255, + 255, 2, 2, 2, 255, 2, 2, 2, 255, 255, 255, 255, 1, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "4 2 4"); + IupSetAttribute(image, "2", "4 2 132"); + IupSetAttribute(image, "3", "132 2 4"); + IupSetAttribute(image, "4", "132 130 132"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_ToolsColor8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 5, 7, 5, 7, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 0, 7, 5, 7, 6, 0, 6, 7, 5, 0, 255, 255, 255, + 255, 255, 0, 7, 6, 0, 6, 0, 4, 0, 5, 7, 5, 0, 255, 255, + 255, 255, 0, 5, 0, 3, 0, 6, 0, 6, 6, 0, 6, 5, 0, 255, + 255, 255, 0, 7, 6, 0, 6, 7, 5, 7, 0, 6, 0, 7, 0, 255, + 255, 255, 0, 5, 7, 5, 7, 5, 7, 5, 6, 0, 6, 5, 0, 255, + 255, 255, 255, 0, 0, 0, 5, 7, 5, 6, 0, 6, 5, 7, 0, 255, + 255, 255, 255, 255, 255, 0, 6, 0, 6, 0, 2, 0, 7, 5, 0, 255, + 255, 255, 255, 255, 255, 255, 0, 1, 0, 6, 0, 6, 5, 0, 255, 255, + 255, 255, 255, 255, 255, 0, 6, 0, 6, 5, 7, 5, 7, 0, 255, 255, + 255, 255, 255, 255, 255, 0, 5, 7, 5, 7, 5, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 255 255"); + IupSetAttribute(image, "2", "255 0 0"); + IupSetAttribute(image, "3", "128 0 128"); + IupSetAttribute(image, "4", "255 0 255"); + IupSetAttribute(image, "5", "255 255 0"); + IupSetAttribute(image, "6", "236 233 216"); + IupSetAttribute(image, "7", "255 255 255"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_MediaPlay8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 0"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_PrintPreview8(void) +{ + unsigned char imgdata[] = { + 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 255, 255, 255, 255, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 4, 1, 255, 255, 255, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 255, 255, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 255, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 255, 255, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 1, 3, 4, 4, 3, 1, 255, 255, + 255, 1, 5, 5, 5, 5, 5, 1, 3, 2, 2, 4, 3, 3, 1, 255, + 255, 1, 5, 5, 5, 5, 5, 1, 4, 2, 4, 4, 3, 4, 1, 255, + 255, 1, 5, 5, 5, 5, 5, 1, 4, 4, 4, 4, 3, 4, 1, 255, + 255, 1, 5, 5, 5, 5, 5, 1, 3, 4, 4, 2, 3, 3, 1, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 1, 3, 4, 4, 3, 1, 3, 255, + 255, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 3, 1, 1, + 255, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 255, 1, 1, + 255, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255, 255, 1, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "64 64 64"); + IupSetAttribute(image, "2", "64 255 255"); + IupSetAttribute(image, "3", "128 128 128"); + IupSetAttribute(image, "4", "224 224 224"); + IupSetAttribute(image, "5", "255 255 255"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_WindowsTile8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0, + 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0, + 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0, + 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0, + 0, 1, 1, 1, 1, 1, 0, 255, 255, 0, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(16, 16, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "255 255 255"); + IupSetAttribute(image, "2", "0 0 0"); + IupSetAttribute(image, "3", "0 0 0"); + IupSetAttribute(image, "4", "0 0 0"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetAttribute(image, "6", "0 0 0"); + IupSetAttribute(image, "7", "0 0 0"); + IupSetAttribute(image, "8", "0 0 0"); + IupSetAttribute(image, "9", "0 0 0"); + IupSetAttribute(image, "10", "0 0 0"); + IupSetAttribute(image, "11", "0 0 0"); + IupSetAttribute(image, "12", "0 0 0"); + IupSetAttribute(image, "13", "0 0 0"); + IupSetAttribute(image, "14", "0 0 0"); + IupSetAttribute(image, "15", "0 0 0"); + IupSetAttribute(image, "16", "0 0 0"); + IupSetAttribute(image, "17", "0 0 0"); + IupSetAttribute(image, "18", "0 0 0"); + IupSetAttribute(image, "19", "0 0 0"); + IupSetAttribute(image, "20", "0 0 0"); + IupSetAttribute(image, "21", "0 0 0"); + IupSetAttribute(image, "22", "0 0 0"); + IupSetAttribute(image, "23", "0 0 0"); + IupSetAttribute(image, "24", "0 0 0"); + IupSetAttribute(image, "25", "0 0 0"); + IupSetAttribute(image, "26", "0 0 0"); + IupSetAttribute(image, "27", "0 0 0"); + IupSetAttribute(image, "28", "0 0 0"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + diff --git a/iup/srcimglib/iup_imglib_bitmapsgtk.h b/iup/srcimglib/iup_imglib_bitmapsgtk.h new file mode 100755 index 0000000..4b22ad2 --- /dev/null +++ b/iup/srcimglib/iup_imglib_bitmapsgtk.h @@ -0,0 +1,224 @@ +static Ihandle* load_image_iupgtk_close_all(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 30, 30, 30, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 118, 0, 0, 0, 228, 0, 0, 0, 247, 0, 0, 0, 255, 0, 0, 0, 255, 5, 5, 4, 54, 21, 21, 21, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 44, 45, 35, 48, 111, 113, 102, 236, 217, 221, 192, 255, 217, 221, 192, 255, 217, 221, 192, 255, 186, 190, 163, 255, 48, 48, 40, 255, 16, 16, 12, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 36, 29, 169, 191, 193, 175, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 201, 206, 169, 255, 85, 88, 71, 255, 27, 28, 22, 91, 25, 25, 25, 4, 31, 31, 31, 3, 31, 31, 31, 3, 14, 14, 14, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 34, 27, 246, 118, 120, 109, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 115, 117, 108, 255, 113, 115, 106, 255, 114, 115, 106, 246, 123, 124, 118, 227, 2, 2, 2, 90, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 12, 9, 255, 225, 228, 205, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 204, 209, 172, 255, 198, 203, 168, 255, 190, 195, 161, 255, 171, 176, 145, 255, 10, 10, 8, 162, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 6, 4, 255, 222, 225, 201, 255, 206, 211, 174, 255, 204, 209, 172, 255, 110, 113, 93, 255, 21, 22, 18, 255, 6, 6, 5, 255, 0, 0, 0, 255, 0, 0, 0, 255, 160, 164, 134, 255, 193, 197, 164, 255, 187, 191, 158, 255, 164, 167, 138, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 219, 223, 197, 255, 205, 210, 173, 255, 174, 178, 147, 255, 118, 120, 107, 255, 217, 221, 192, 255, 217, 221, 192, 255, 217, 221, 192, 255, 186, 190, 163, 255, 48, 48, 40, 255, 177, 180, 149, 255, 183, 188, 155, 255, 157, 158, 132, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 222, 224, 202, 255, 202, 207, 170, 255, 91, 93, 76, 255, 191, 193, 175, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 201, 206, 169, 255, 85, 88, 71, 255, 130, 133, 110, 255, 176, 180, 149, 255, 147, 151, 124, 255, 10, 10, 8, 163, 14, 14, 14, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 215, 218, 195, 255, 194, 199, 164, 255, 38, 39, 31, 255, 118, 120, 109, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 115, 117, 108, 255, 113, 115, 106, 255, 114, 115, 106, 246, 123, 124, 118, 227, 2, 2, 2, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 201, 203, 183, 255, 176, 180, 149, 255, 12, 12, 9, 255, 225, 228, 205, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 205, 210, 173, 255, 204, 209, 172, 255, 205, 210, 173, 255, 203, 208, 171, 255, 198, 203, 168, 255, 190, 195, 161, 255, 171, 176, 145, 255, 10, 10, 8, 162, 0, 0, 0, 0, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 170, 173, 149, 255, 143, 147, 121, 255, 6, 6, 4, 255, 222, 225, 201, 255, 206, 211, 174, 255, 204, 209, 172, 255, 110, 113, 93, 255, 21, 22, 18, 255, 6, 6, 5, 255, 0, 0, 0, 255, 0, 0, 0, 255, 160, 164, 134, 255, 193, 197, 164, 255, 187, 191, 158, 255, 164, 167, 138, 255, 10, 10, 8, 162, 0, 0, 0, 0, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 26, 20, 87, 9, 10, 7, 158, 10, 10, 8, 161, 0, 0, 0, 255, 219, 223, 197, 255, 205, 210, 173, 255, 174, 178, 147, 255, 118, 120, 107, 255, 217, 221, 192, 255, 217, 221, 192, 255, 217, 221, 192, 255, 186, 190, 163, 255, 48, 48, 40, 255, 177, 180, 149, 255, 183, 188, 155, 255, 157, 158, 132, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 30, 9, 48, 48, 38, 22, 48, 48, 36, 25, 0, 0, 0, 255, 222, 224, 202, 255, 202, 207, 170, 255, 91, 93, 76, 255, 191, 193, 175, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 201, 206, 169, 255, 85, 88, 71, 255, 130, 133, 110, 255, 176, 180, 149, 255, 147, 151, 124, 255, 10, 10, 8, 163, 14, 14, 14, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 215, 218, 195, 255, 194, 199, 164, 255, 38, 39, 31, 255, 118, 120, 109, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 116, 117, 108, 255, 115, 117, 108, 255, 113, 115, 106, 255, 114, 115, 106, 246, 123, 124, 118, 227, 2, 2, 2, 90, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 201, 203, 183, 255, 176, 180, 149, 255, 12, 12, 9, 255, 225, 228, 205, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 204, 209, 172, 255, 198, 203, 168, 255, 190, 195, 161, 255, 171, 176, 145, 255, 10, 10, 8, 162, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 170, 173, 149, 255, 143, 147, 121, 255, 6, 6, 4, 255, 222, 225, 201, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 205, 210, 173, 255, 205, 210, 173, 255, 202, 207, 170, 255, 196, 200, 166, 255, 187, 191, 158, 255, 164, 167, 138, 255, 10, 10, 8, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 20, 87, 9, 10, 7, 158, 10, 10, 8, 161, 0, 0, 0, 255, 219, 223, 197, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 204, 209, 172, 255, 200, 205, 169, 255, 194, 198, 164, 255, 183, 188, 155, 255, 157, 158, 132, 255, 10, 10, 8, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 30, 9, 48, 48, 38, 22, 48, 48, 36, 25, 0, 0, 0, 255, 222, 224, 202, 255, 202, 207, 170, 255, 202, 207, 170, 255, 201, 206, 170, 255, 201, 206, 170, 255, 199, 204, 168, 255, 200, 205, 169, 255, 198, 203, 168, 255, 194, 199, 164, 255, 188, 192, 159, 255, 179, 183, 151, 255, 149, 153, 126, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 215, 218, 195, 255, 194, 199, 164, 255, 194, 198, 164, 255, 192, 197, 162, 255, 192, 197, 162, 255, 189, 194, 160, 255, 190, 195, 161, 255, 185, 189, 156, 255, 182, 186, 154, 255, 176, 181, 149, 255, 166, 170, 140, 255, 124, 127, 105, 255, 10, 10, 8, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 201, 203, 183, 255, 176, 180, 149, 255, 172, 176, 146, 255, 171, 175, 144, 255, 169, 173, 143, 255, 167, 171, 141, 255, 166, 169, 140, 255, 162, 166, 137, 255, 157, 160, 132, 255, 149, 152, 126, 255, 146, 149, 123, 255, 107, 110, 90, 255, 10, 10, 8, 162, 0, 0, 0, 0, 42, 47, 34, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 170, 173, 149, 255, 143, 147, 121, 255, 138, 142, 116, 255, 136, 140, 115, 255, 134, 138, 113, 255, 133, 137, 112, 255, 129, 132, 109, 255, 125, 128, 105, 255, 117, 120, 99, 255, 113, 116, 96, 255, 109, 112, 92, 255, 67, 69, 56, 255, 10, 10, 8, 162, 51, 51, 39, 33, 37, 37, 27, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 20, 87, 9, 10, 7, 158, 10, 10, 8, 161, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 162, 10, 10, 8, 161, 9, 10, 7, 159, 33, 34, 26, 63, 47, 47, 37, 9, 21, 21, 21, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 49, 49, 38, 26, 48, 48, 36, 23, 45, 45, 32, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(24, 24, imgdata); + return image; +} + +static Ihandle* load_image_iupgtk_close(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 31, 31, 31, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 6, 6, 4, 36, 0, 0, 0, 201, 0, 0, 0, 228, 0, 0, 0, 239, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 6, 6, 5, 53, 21, 21, 21, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 33, 21, 8, 1, 1, 0, 204, 181, 184, 165, 255, 228, 231, 210, 255, 228, 231, 210, 255, 228, 231, 210, 255, 228, 231, 210, 255, 228, 231, 210, 255, 135, 138, 118, 255, 51, 52, 43, 255, 33, 33, 27, 14, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 47, 37, 88, 11, 11, 11, 232, 226, 229, 207, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 178, 182, 150, 255, 45, 45, 37, 255, 12, 12, 9, 75, 42, 42, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 36, 29, 169, 157, 159, 144, 255, 226, 229, 207, 255, 198, 202, 166, 255, 196, 201, 165, 255, 198, 203, 167, 255, 199, 204, 168, 255, 201, 206, 169, 255, 201, 206, 169, 255, 85, 88, 71, 255, 26, 27, 21, 168, 45, 45, 37, 13, 25, 25, 25, 4, 31, 31, 31, 3, 31, 31, 31, 3, 31, 31, 31, 3, 28, 28, 28, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 32, 26, 240, 21, 22, 18, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 219, 1, 1, 1, 198, 4, 4, 2, 88, 28, 28, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 36, 29, 252, 218, 221, 200, 255, 235, 237, 221, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 232, 235, 217, 255, 231, 234, 216, 255, 227, 230, 212, 255, 222, 225, 208, 255, 218, 220, 204, 255, 218, 220, 209, 255, 0, 0, 0, 255, 47, 47, 39, 12, 0, 0, 0, 1, 20, 20, 15, 0, 0, 0, 0, 0, + 12, 12, 9, 255, 244, 244, 236, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 202, 207, 171, 255, 198, 203, 168, 255, 194, 198, 164, 255, 187, 192, 158, 255, 171, 176, 145, 255, 0, 0, 0, 255, 51, 52, 41, 68, 31, 31, 31, 6, 20, 20, 15, 0, 20, 20, 15, 0, + 12, 12, 9, 255, 244, 244, 236, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 207, 212, 175, 255, 206, 211, 174, 255, 206, 211, 174, 255, 206, 211, 174, 255, 202, 207, 171, 255, 198, 203, 168, 255, 194, 198, 164, 255, 187, 192, 158, 255, 171, 176, 145, 255, 0, 0, 0, 255, 51, 52, 41, 68, 0, 0, 0, 0, 20, 20, 15, 0, 20, 20, 15, 0, + 0, 0, 0, 255, 234, 236, 221, 255, 205, 210, 173, 255, 206, 211, 174, 255, 206, 211, 174, 255, 205, 210, 173, 255, 206, 211, 174, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 204, 209, 172, 255, 202, 207, 170, 255, 198, 203, 168, 255, 194, 198, 164, 255, 186, 191, 157, 255, 181, 185, 153, 255, 157, 158, 132, 255, 0, 0, 0, 255, 51, 52, 41, 68, 0, 0, 0, 0, 20, 20, 15, 0, 20, 20, 15, 0, + 0, 0, 0, 255, 234, 236, 221, 255, 205, 210, 173, 255, 206, 211, 174, 255, 206, 211, 174, 255, 205, 210, 173, 255, 206, 211, 174, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 205, 210, 173, 255, 204, 209, 172, 255, 202, 207, 170, 255, 198, 203, 168, 255, 194, 198, 164, 255, 186, 191, 157, 255, 181, 185, 153, 255, 157, 158, 132, 255, 0, 0, 0, 255, 51, 52, 41, 68, 0, 0, 0, 0, 20, 20, 15, 0, 20, 20, 15, 0, + 0, 0, 0, 255, 242, 242, 234, 255, 202, 207, 171, 255, 202, 207, 170, 255, 202, 207, 171, 255, 202, 207, 170, 255, 201, 206, 170, 255, 202, 207, 170, 255, 201, 206, 170, 255, 199, 204, 168, 255, 200, 205, 169, 255, 200, 205, 169, 255, 198, 203, 168, 255, 196, 201, 166, 255, 193, 197, 163, 255, 188, 192, 159, 255, 182, 187, 154, 255, 176, 180, 148, 255, 149, 153, 126, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0, + 0, 0, 0, 255, 242, 242, 234, 255, 202, 207, 171, 255, 202, 207, 170, 255, 202, 207, 171, 255, 202, 207, 170, 255, 201, 206, 170, 255, 202, 207, 170, 255, 201, 206, 170, 255, 199, 204, 168, 255, 200, 205, 169, 255, 200, 205, 169, 255, 198, 203, 168, 255, 196, 201, 166, 255, 193, 197, 163, 255, 188, 192, 159, 255, 182, 187, 154, 255, 176, 180, 148, 255, 149, 153, 126, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0, + 0, 0, 0, 255, 236, 236, 226, 255, 195, 200, 165, 255, 194, 199, 164, 255, 194, 199, 164, 255, 194, 198, 164, 255, 192, 197, 162, 255, 194, 198, 164, 255, 191, 196, 161, 255, 189, 194, 160, 255, 192, 197, 162, 255, 189, 194, 160, 255, 185, 189, 156, 255, 185, 190, 157, 255, 179, 183, 151, 255, 176, 181, 149, 255, 169, 173, 143, 255, 163, 167, 138, 255, 124, 127, 105, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0, + 0, 0, 0, 255, 220, 220, 212, 255, 184, 188, 155, 255, 184, 188, 155, 255, 181, 185, 153, 255, 179, 183, 151, 255, 179, 183, 151, 255, 176, 181, 149, 255, 176, 181, 149, 255, 175, 179, 148, 255, 175, 179, 148, 255, 175, 179, 148, 255, 172, 176, 145, 255, 168, 172, 142, 255, 166, 170, 140, 255, 159, 162, 134, 255, 155, 159, 131, 255, 154, 157, 130, 255, 113, 116, 95, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 20, 20, 15, 0, 20, 20, 15, 0, + 0, 0, 0, 255, 229, 230, 218, 255, 173, 177, 146, 255, 169, 173, 143, 255, 166, 170, 140, 255, 165, 169, 140, 255, 163, 167, 138, 255, 163, 167, 138, 255, 161, 165, 136, 255, 159, 163, 135, 255, 159, 162, 134, 255, 155, 159, 131, 255, 153, 157, 129, 255, 149, 152, 126, 255, 146, 149, 123, 255, 140, 143, 118, 255, 138, 141, 116, 255, 138, 141, 116, 255, 102, 104, 86, 255, 0, 0, 0, 255, 51, 52, 41, 68, 20, 20, 15, 0, 45, 50, 35, 19, 28, 28, 28, 3, + 0, 0, 0, 255, 192, 195, 175, 255, 148, 152, 124, 255, 143, 147, 121, 255, 139, 143, 117, 255, 138, 142, 116, 255, 136, 140, 115, 255, 136, 140, 115, 255, 133, 137, 112, 255, 134, 137, 113, 255, 130, 134, 110, 255, 128, 131, 108, 255, 125, 128, 105, 255, 121, 124, 102, 255, 114, 117, 96, 255, 113, 116, 96, 255, 113, 116, 95, 255, 106, 109, 89, 255, 67, 69, 56, 255, 0, 0, 0, 255, 51, 52, 41, 68, 51, 51, 39, 33, 42, 42, 31, 9, 0, 0, 0, 1, + 20, 20, 15, 136, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 20, 20, 15, 136, 51, 52, 41, 68, 47, 47, 37, 18, 28, 28, 28, 3, 0, 0, 0, 0, + 50, 50, 40, 37, 50, 52, 40, 56, 51, 52, 41, 66, 50, 51, 40, 67, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 51, 52, 41, 68, 50, 51, 40, 67, 51, 52, 40, 62, 50, 52, 40, 47, 20, 20, 15, 0, 20, 20, 15, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 51, 51, 30, 9, 48, 48, 38, 20, 49, 49, 38, 25, 48, 48, 36, 25, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 51, 51, 40, 26, 48, 48, 36, 25, 49, 49, 37, 23, 47, 47, 35, 16, 42, 42, 28, 7, 20, 20, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 42, 42, 0, 2, 31, 31, 0, 3, 31, 31, 0, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 56, 56, 28, 3, 31, 31, 31, 3, 36, 36, 0, 3, 51, 51, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(24, 24, imgdata); + return image; +} + +static Ihandle* load_image_iupgtk_tile(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 100, 121, 143, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 95, 116, 138, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 255, 247, 247, 247, 255, 228, 228, 228, 255, 225, 225, 225, 255, 218, 218, 218, 255, 216, 216, 216, 255, 212, 212, 212, 255, 171, 171, 171, 255, 0, 0, 0, 255, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 255, 244, 244, 244, 255, 225, 225, 225, 255, 223, 223, 223, 255, 219, 219, 219, 255, 216, 216, 216, 255, 214, 214, 214, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 3, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 216, 216, 216, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 212, 212, 212, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 171, 171, 171, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 175, 175, 175, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 100, 121, 143, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 95, 116, 138, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 221, 221, 221, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 217, 217, 217, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 214, 214, 214, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 172, 172, 172, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 175, 175, 175, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 3, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(24, 24, imgdata); + return image; +} + +static Ihandle* load_image_iupgtk_save_all(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 238, 0, 0, 0, 89, 0, 0, 0, 13, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 159, 190, 215, 255, 162, 129, 127, 255, 229, 153, 137, 255, 226, 145, 129, 255, 225, 146, 133, 255, 220, 148, 135, 255, 215, 138, 126, 255, 215, 139, 127, 255, 207, 131, 121, 255, 120, 130, 142, 255, 100, 125, 145, 255, 0, 0, 0, 255, 0, 0, 0, 24, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 148, 179, 204, 255, 159, 135, 137, 255, 219, 164, 159, 255, 219, 164, 158, 255, 219, 165, 158, 255, 214, 157, 151, 255, 213, 154, 148, 255, 213, 150, 143, 255, 209, 151, 148, 255, 115, 125, 138, 255, 74, 99, 118, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 146, 176, 201, 255, 181, 181, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 131, 140, 255, 71, 94, 111, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 15, 15, 15, 255, 153, 153, 153, 255, 233, 233, 233, 255, 122, 132, 141, 255, 63, 85, 102, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 159, 190, 215, 255, 162, 129, 127, 255, 229, 153, 137, 255, 226, 145, 129, 255, 225, 146, 133, 255, 220, 148, 135, 255, 215, 138, 126, 255, 215, 139, 127, 255, 207, 131, 121, 255, 120, 130, 142, 255, 100, 125, 145, 255, 0, 0, 0, 255, 239, 239, 239, 255, 122, 132, 141, 255, 65, 83, 96, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 148, 179, 204, 255, 159, 135, 137, 255, 219, 164, 159, 255, 219, 164, 158, 255, 219, 165, 158, 255, 214, 157, 151, 255, 213, 154, 148, 255, 213, 150, 143, 255, 209, 151, 148, 255, 115, 125, 138, 255, 74, 99, 118, 255, 0, 0, 0, 255, 251, 251, 251, 255, 120, 131, 140, 255, 72, 82, 90, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 146, 176, 201, 255, 181, 181, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 131, 140, 255, 71, 94, 111, 255, 0, 0, 0, 255, 125, 141, 155, 255, 127, 151, 170, 255, 49, 68, 81, 255, 0, 0, 0, 255, 0, 0, 0, 11, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 15, 15, 15, 255, 153, 153, 153, 255, 233, 233, 233, 255, 122, 132, 141, 255, 63, 85, 102, 255, 0, 0, 0, 255, 63, 79, 91, 255, 130, 158, 183, 255, 48, 64, 73, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 159, 190, 215, 255, 162, 129, 127, 255, 229, 153, 137, 255, 226, 145, 129, 255, 225, 146, 133, 255, 220, 148, 135, 255, 215, 138, 126, 255, 215, 139, 127, 255, 207, 131, 121, 255, 120, 130, 142, 255, 100, 125, 145, 255, 0, 0, 0, 255, 239, 239, 239, 255, 122, 132, 141, 255, 65, 83, 96, 255, 0, 0, 0, 255, 73, 94, 111, 255, 115, 144, 164, 255, 44, 56, 65, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 148, 179, 204, 255, 159, 135, 137, 255, 219, 164, 159, 255, 219, 164, 158, 255, 219, 165, 158, 255, 214, 157, 151, 255, 213, 154, 148, 255, 213, 150, 143, 255, 209, 151, 148, 255, 115, 125, 138, 255, 74, 99, 118, 255, 0, 0, 0, 255, 251, 251, 251, 255, 120, 131, 140, 255, 72, 82, 90, 255, 0, 0, 0, 255, 76, 96, 111, 255, 112, 142, 162, 255, 47, 56, 62, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 146, 176, 201, 255, 181, 181, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 131, 140, 255, 71, 94, 111, 255, 0, 0, 0, 255, 125, 141, 155, 255, 127, 151, 170, 255, 49, 68, 81, 255, 0, 0, 0, 255, 70, 89, 103, 255, 106, 134, 154, 255, 49, 53, 57, 255, 0, 0, 0, 255, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 144, 174, 199, 255, 167, 167, 167, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 233, 233, 233, 255, 122, 132, 141, 255, 63, 85, 102, 255, 0, 0, 0, 255, 63, 79, 91, 255, 130, 158, 183, 255, 48, 64, 73, 255, 0, 0, 0, 255, 7, 9, 10, 255, 24, 30, 36, 255, 5, 6, 6, 240, 0, 0, 0, 110, 0, 0, 0, 30, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 140, 172, 196, 255, 174, 174, 174, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 239, 239, 239, 255, 122, 132, 141, 255, 65, 83, 96, 255, 0, 0, 0, 255, 73, 94, 111, 255, 115, 144, 164, 255, 44, 56, 65, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 142, 173, 194, 255, 179, 167, 167, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 251, 251, 251, 255, 120, 131, 140, 255, 72, 82, 90, 255, 0, 0, 0, 255, 76, 96, 111, 255, 112, 142, 162, 255, 47, 56, 62, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 132, 164, 189, 255, 126, 148, 165, 255, 125, 142, 156, 255, 122, 140, 155, 255, 123, 140, 155, 255, 119, 138, 153, 255, 125, 142, 156, 255, 126, 143, 157, 255, 125, 141, 155, 255, 127, 151, 170, 255, 49, 68, 81, 255, 0, 0, 0, 255, 70, 89, 103, 255, 106, 134, 154, 255, 49, 53, 57, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 128, 160, 186, 255, 107, 137, 161, 255, 91, 97, 98, 255, 119, 125, 130, 255, 132, 141, 148, 255, 127, 136, 141, 255, 118, 126, 131, 255, 102, 108, 112, 255, 63, 79, 91, 255, 130, 158, 183, 255, 48, 64, 73, 255, 0, 0, 0, 255, 7, 9, 10, 255, 24, 30, 36, 255, 5, 6, 6, 240, 0, 0, 0, 110, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 124, 157, 181, 255, 87, 107, 123, 255, 216, 214, 209, 255, 119, 117, 111, 255, 94, 91, 84, 255, 211, 209, 205, 255, 192, 188, 181, 255, 200, 199, 193, 255, 73, 94, 111, 255, 115, 144, 164, 255, 44, 56, 65, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 255, 121, 155, 179, 255, 87, 104, 119, 255, 227, 225, 222, 255, 98, 95, 88, 255, 80, 77, 69, 255, 197, 194, 188, 255, 201, 197, 191, 255, 226, 224, 222, 255, 76, 96, 111, 255, 112, 142, 162, 255, 47, 56, 62, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 208, 100, 121, 139, 255, 79, 97, 110, 255, 204, 201, 196, 255, 108, 104, 97, 255, 106, 103, 96, 255, 204, 200, 195, 255, 231, 230, 227, 255, 220, 219, 215, 255, 70, 89, 103, 255, 106, 134, 154, 255, 49, 53, 57, 255, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 7, 9, 10, 208, 8, 10, 11, 255, 17, 17, 16, 255, 19, 18, 18, 255, 21, 21, 20, 255, 23, 23, 22, 255, 24, 24, 24, 255, 19, 19, 18, 255, 7, 9, 10, 255, 24, 30, 36, 255, 5, 6, 6, 240, 0, 0, 0, 110, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0}; + + Ihandle* image = IupImageRGBA(24, 24, imgdata); + return image; +} + +static Ihandle* load_image_iupgtk_text(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 246, 0, 0, 0, 242, 14, 14, 14, 255, 40, 40, 40, 255, 97, 97, 97, 219, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 211, 211, 211, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 249, 255, 249, 249, 248, 255, 249, 249, 248, 255, 231, 231, 231, 255, 228, 228, 228, 255, 205, 205, 205, 255, 31, 31, 31, 228, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 248, 255, 239, 239, 238, 255, 175, 175, 174, 255, 233, 233, 233, 255, 255, 255, 255, 255, 179, 179, 179, 255, 56, 56, 56, 253, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 193, 193, 193, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 189, 189, 188, 255, 181, 181, 181, 255, 164, 164, 163, 255, 240, 240, 240, 255, 255, 255, 255, 255, 244, 244, 244, 255, 171, 171, 171, 255, 5, 5, 5, 153, 0, 0, 0, 11, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 253, 253, 253, 255, 252, 252, 251, 255, 253, 253, 253, 255, 252, 252, 251, 255, 251, 251, 251, 255, 249, 249, 248, 255, 242, 242, 242, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 191, 191, 190, 255, 190, 190, 190, 255, 190, 190, 189, 255, 190, 190, 190, 255, 190, 190, 189, 255, 189, 189, 188, 255, 189, 189, 188, 255, 185, 185, 185, 255, 161, 161, 160, 255, 161, 161, 160, 255, 130, 130, 128, 255, 130, 130, 128, 255, 130, 130, 128, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 254, 254, 254, 255, 253, 253, 253, 255, 252, 252, 251, 255, 251, 251, 251, 255, 250, 250, 249, 255, 249, 249, 248, 255, 248, 248, 247, 255, 249, 249, 248, 255, 248, 248, 247, 255, 248, 247, 246, 255, 248, 248, 247, 255, 248, 248, 247, 255, 242, 242, 242, 255, 224, 224, 223, 255, 224, 224, 223, 255, 224, 224, 223, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 252, 252, 251, 255, 190, 190, 190, 255, 190, 190, 189, 255, 189, 189, 188, 255, 188, 188, 187, 255, 188, 187, 187, 255, 187, 187, 186, 255, 188, 187, 187, 255, 187, 187, 186, 255, 187, 187, 185, 255, 185, 184, 184, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 250, 250, 249, 255, 249, 249, 248, 255, 248, 248, 247, 255, 248, 247, 246, 255, 247, 246, 245, 255, 246, 246, 244, 255, 245, 244, 243, 255, 246, 246, 244, 255, 245, 244, 243, 255, 244, 243, 242, 255, 244, 243, 242, 255, 243, 242, 241, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 248, 248, 247, 255, 188, 187, 187, 255, 187, 187, 186, 255, 187, 187, 185, 255, 186, 185, 184, 255, 185, 184, 184, 255, 184, 184, 183, 255, 185, 184, 184, 255, 184, 184, 183, 255, 184, 184, 182, 255, 180, 180, 179, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 246, 245, 244, 255, 245, 245, 243, 255, 244, 243, 242, 255, 244, 243, 242, 255, 243, 243, 241, 255, 242, 242, 240, 255, 241, 241, 239, 255, 242, 242, 240, 255, 241, 241, 239, 255, 240, 239, 237, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 244, 243, 242, 255, 184, 184, 183, 255, 184, 184, 182, 255, 182, 182, 181, 255, 181, 181, 180, 255, 183, 182, 181, 255, 182, 181, 180, 255, 183, 182, 181, 255, 181, 180, 179, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 183, 182, 181, 255, 229, 228, 227, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 58, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 244, 243, 242, 255, 243, 242, 241, 255, 242, 242, 240, 255, 240, 240, 238, 255, 239, 239, 237, 255, 241, 240, 238, 255, 240, 239, 237, 255, 240, 239, 237, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 244, 243, 242, 255, 229, 228, 227, 255, 229, 228, 227, 255, 158, 153, 142, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 240, 240, 238, 255, 181, 181, 180, 255, 181, 181, 180, 255, 181, 181, 179, 255, 181, 180, 178, 255, 180, 179, 178, 255, 179, 178, 177, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 174, 173, 172, 255, 218, 217, 213, 255, 159, 154, 142, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 237, 237, 235, 255, 237, 236, 234, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 236, 235, 233, 255, 229, 228, 227, 255, 229, 228, 227, 255, 229, 228, 227, 255, 218, 217, 213, 255, 218, 217, 213, 255, 219, 218, 214, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 235, 234, 232, 255, 177, 176, 174, 255, 177, 176, 174, 255, 176, 175, 174, 255, 176, 175, 173, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 176, 175, 174, 255, 220, 219, 215, 255, 161, 155, 144, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 231, 230, 227, 255, 230, 229, 226, 255, 230, 229, 226, 255, 230, 229, 226, 255, 229, 228, 225, 255, 228, 226, 223, 255, 224, 223, 219, 255, 221, 219, 217, 255, 222, 221, 217, 255, 213, 212, 209, 255, 218, 217, 213, 255, 217, 216, 212, 255, 219, 218, 214, 255, 218, 217, 213, 255, 219, 217, 213, 255, 217, 215, 211, 255, 159, 153, 141, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 227, 224, 255, 227, 226, 223, 255, 227, 226, 222, 255, 228, 226, 223, 255, 228, 227, 223, 255, 224, 223, 219, 255, 222, 221, 217, 255, 218, 217, 213, 255, 216, 215, 211, 255, 218, 217, 213, 255, 221, 220, 216, 255, 220, 219, 215, 255, 220, 218, 214, 255, 220, 218, 214, 255, 217, 215, 211, 255, 216, 214, 210, 255, 158, 152, 141, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 237, 237, 237, 255, 225, 224, 221, 255, 225, 223, 220, 255, 225, 224, 220, 255, 224, 223, 219, 255, 226, 225, 221, 255, 223, 222, 218, 255, 223, 222, 218, 255, 219, 218, 214, 255, 220, 219, 215, 255, 221, 220, 216, 255, 222, 220, 216, 255, 220, 218, 214, 255, 220, 218, 214, 255, 217, 215, 211, 255, 216, 214, 209, 255, 215, 213, 209, 255, 157, 151, 139, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 209, 209, 209, 255, 225, 223, 219, 255, 224, 222, 218, 255, 223, 222, 218, 255, 222, 221, 217, 255, 224, 223, 219, 255, 222, 221, 217, 255, 223, 221, 217, 255, 220, 219, 215, 255, 222, 220, 216, 255, 221, 219, 215, 255, 222, 220, 216, 255, 220, 218, 214, 255, 220, 218, 214, 255, 216, 214, 210, 255, 215, 214, 209, 255, 213, 211, 206, 255, 155, 149, 138, 255, 0, 0, 0, 255, 0, 0, 0, 47, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 153, 152, 145, 255, 163, 158, 146, 255, 164, 158, 147, 255, 163, 157, 146, 255, 163, 157, 145, 255, 163, 157, 146, 255, 161, 156, 144, 255, 162, 156, 144, 255, 161, 156, 144, 255, 162, 156, 144, 255, 161, 155, 143, 255, 161, 155, 144, 255, 159, 153, 141, 255, 159, 153, 141, 255, 157, 151, 140, 255, 157, 151, 140, 255, 155, 150, 138, 255, 103, 99, 89, 255, 0, 0, 0, 255, 0, 0, 0, 46, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 125, 0, 0, 0, 42, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 42, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 42, 0, 0, 0, 23, 0, 0, 0, 4}; + + Ihandle* image = IupImageRGBA(24, 24, imgdata); + return image; +} + +static Ihandle* load_image_iupgtk_zoom(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73, 78, 52, 52, 52, 163, 45, 45, 45, 221, 41, 41, 41, 251, 38, 38, 38, 251, 38, 38, 38, 221, 38, 38, 38, 163, 53, 53, 53, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93, 50, 46, 46, 46, 192, 48, 48, 48, 255, 115, 115, 115, 255, 161, 161, 161, 255, 180, 180, 180, 255, 178, 178, 178, 255, 157, 157, 157, 255, 103, 103, 103, 255, 32, 32, 32, 255, 28, 28, 28, 192, 55, 55, 55, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 78, 39, 39, 39, 251, 97, 97, 97, 255, 180, 180, 180, 255, 202, 202, 202, 255, 207, 207, 207, 255, 208, 208, 208, 255, 206, 206, 206, 255, 201, 201, 201, 255, 193, 193, 193, 255, 167, 167, 167, 255, 76, 76, 76, 255, 19, 19, 19, 251, 35, 35, 35, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 50, 34, 34, 34, 251, 117, 117, 117, 255, 202, 202, 202, 255, 211, 211, 211, 255, 219, 219, 219, 255, 231, 231, 231, 255, 239, 239, 239, 255, 243, 243, 243, 255, 241, 241, 241, 255, 229, 229, 229, 255, 210, 210, 210, 255, 188, 188, 188, 255, 94, 94, 94, 255, 16, 16, 16, 251, 36, 36, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 33, 33, 192, 91, 91, 91, 255, 204, 204, 204, 255, 215, 215, 215, 255, 229, 229, 229, 255, 245, 245, 245, 255, 250, 250, 250, 255, 251, 251, 251, 255, 250, 250, 250, 255, 248, 248, 248, 255, 245, 245, 245, 255, 240, 240, 240, 255, 225, 225, 225, 255, 194, 194, 194, 255, 67, 67, 67, 255, 15, 15, 15, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 48, 48, 78, 31, 31, 31, 255, 185, 185, 185, 255, 214, 214, 214, 255, 231, 231, 231, 255, 249, 249, 249, 255, 251, 251, 251, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 251, 251, 251, 255, 248, 248, 248, 255, 242, 242, 242, 255, 236, 236, 236, 255, 228, 228, 228, 255, 171, 171, 171, 255, 14, 14, 14, 255, 18, 18, 18, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 27, 27, 163, 109, 109, 109, 255, 210, 210, 210, 255, 225, 225, 225, 255, 245, 245, 245, 255, 250, 250, 250, 255, 253, 253, 253, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 252, 252, 252, 255, 249, 249, 249, 255, 245, 245, 245, 255, 238, 238, 238, 255, 230, 230, 230, 255, 219, 219, 219, 255, 87, 87, 87, 255, 9, 9, 9, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 20, 20, 221, 168, 168, 168, 255, 216, 216, 216, 255, 238, 238, 238, 255, 246, 246, 246, 255, 249, 249, 249, 255, 252, 252, 252, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 251, 251, 251, 255, 248, 248, 248, 255, 244, 244, 244, 255, 238, 238, 238, 255, 230, 230, 230, 255, 220, 220, 220, 255, 155, 155, 155, 255, 6, 6, 6, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 17, 17, 251, 197, 197, 197, 255, 223, 223, 223, 255, 239, 239, 239, 255, 245, 245, 245, 255, 246, 246, 246, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 246, 246, 246, 255, 237, 237, 237, 255, 229, 229, 229, 255, 219, 219, 219, 255, 191, 191, 191, 255, 6, 6, 6, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 14, 14, 251, 198, 198, 198, 255, 227, 227, 227, 255, 236, 236, 236, 255, 242, 242, 242, 255, 246, 246, 246, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 246, 246, 246, 255, 234, 234, 234, 255, 224, 224, 224, 255, 215, 215, 215, 255, 186, 186, 186, 255, 5, 5, 5, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 11, 11, 221, 165, 165, 165, 255, 225, 225, 225, 255, 231, 231, 231, 255, 237, 237, 237, 255, 241, 241, 241, 255, 244, 244, 244, 255, 246, 246, 246, 255, 246, 246, 246, 255, 245, 245, 245, 255, 243, 243, 243, 255, 239, 239, 239, 255, 236, 236, 236, 255, 228, 228, 228, 255, 219, 219, 219, 255, 209, 209, 209, 255, 147, 147, 147, 255, 2, 2, 2, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 10, 10, 163, 95, 95, 95, 255, 217, 217, 217, 255, 225, 225, 225, 255, 230, 230, 230, 255, 235, 235, 235, 255, 238, 238, 238, 255, 239, 239, 239, 255, 239, 239, 239, 255, 238, 238, 238, 255, 237, 237, 237, 255, 233, 233, 233, 255, 228, 228, 228, 255, 219, 219, 219, 255, 212, 212, 212, 255, 202, 202, 202, 255, 76, 76, 76, 255, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 12, 12, 78, 10, 10, 10, 255, 180, 180, 180, 255, 216, 216, 216, 255, 220, 220, 220, 255, 226, 226, 226, 255, 229, 229, 229, 255, 230, 230, 230, 255, 230, 230, 230, 255, 231, 231, 231, 255, 227, 227, 227, 255, 223, 223, 223, 255, 218, 218, 218, 255, 212, 212, 212, 255, 203, 203, 203, 255, 161, 161, 161, 255, 2, 2, 2, 255, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 6, 6, 6, 192, 59, 59, 59, 255, 204, 204, 204, 255, 210, 210, 210, 255, 212, 212, 212, 255, 218, 218, 218, 255, 219, 219, 219, 255, 218, 218, 218, 255, 219, 219, 219, 255, 216, 216, 216, 255, 213, 213, 213, 255, 208, 208, 208, 255, 200, 200, 200, 255, 189, 189, 189, 255, 46, 46, 46, 255, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 50, 5, 5, 5, 251, 81, 81, 81, 255, 194, 194, 194, 255, 199, 199, 199, 255, 203, 203, 203, 255, 204, 204, 204, 255, 205, 205, 205, 255, 203, 203, 203, 255, 203, 203, 203, 255, 200, 200, 200, 255, 194, 194, 194, 255, 184, 184, 184, 255, 69, 69, 69, 255, 0, 0, 0, 251, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 3, 3, 3, 78, 3, 3, 3, 251, 49, 49, 49, 255, 153, 153, 153, 255, 187, 187, 187, 255, 189, 189, 189, 255, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 182, 182, 182, 255, 144, 144, 144, 255, 43, 43, 43, 255, 0, 0, 0, 251, 0, 0, 0, 241, 0, 0, 0, 242, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 50, 1, 1, 1, 192, 3, 3, 3, 255, 65, 65, 65, 255, 122, 122, 122, 255, 154, 154, 154, 255, 154, 154, 154, 255, 119, 119, 119, 255, 60, 60, 60, 255, 0, 0, 0, 255, 0, 0, 0, 192, 0, 0, 0, 50, 0, 0, 0, 223, 0, 0, 0, 240, 0, 0, 0, 243, 0, 0, 0, 223, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 78, 0, 0, 0, 163, 0, 0, 0, 221, 0, 0, 0, 251, 0, 0, 0, 251, 0, 0, 0, 221, 0, 0, 0, 163, 0, 0, 0, 78, 0, 0, 0, 58, 0, 0, 0, 31, 0, 0, 0, 31, 32, 32, 32, 243, 32, 32, 32, 244, 0, 0, 0, 246, 0, 0, 0, 241, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 236, 104, 104, 104, 251, 52, 52, 52, 247, 0, 0, 0, 242, 0, 0, 0, 246, 0, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 243, 121, 121, 121, 253, 58, 58, 58, 252, 0, 0, 0, 243, 0, 0, 0, 244, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 248, 104, 104, 104, 251, 31, 31, 31, 251, 0, 0, 0, 244, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 231, 0, 0, 0, 253, 0, 0, 0, 63, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(24, 24, imgdata); + return image; +} + +static Ihandle* load_image_iupgtk_cascade(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 185, 195, 205, 255, 102, 123, 145, 255, 102, 123, 144, 255, 101, 122, 143, 255, 101, 123, 143, 255, 100, 121, 143, 255, 93, 113, 133, 255, 0, 0, 0, 255, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 177, 188, 199, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 247, 247, 247, 255, 228, 228, 228, 255, 224, 224, 224, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 245, 245, 245, 255, 224, 224, 224, 255, 220, 220, 220, 255, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 204, 204, 204, 255, 181, 181, 181, 255, 178, 178, 178, 255, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 0, 0, 0, 255, 185, 195, 205, 255, 103, 124, 146, 255, 103, 124, 146, 255, 102, 123, 145, 255, 102, 124, 145, 255, 102, 123, 145, 255, 95, 115, 135, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 0, 0, 0, 255, 178, 189, 200, 255, 98, 119, 141, 255, 98, 119, 141, 255, 97, 118, 140, 255, 96, 117, 139, 255, 95, 116, 138, 255, 89, 109, 130, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 250, 250, 250, 255, 231, 231, 231, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 175, 175, 175, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 249, 249, 249, 255, 228, 228, 228, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 172, 172, 172, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 248, 248, 248, 255, 224, 224, 224, 255, 220, 220, 220, 255, 217, 217, 217, 255, 213, 213, 213, 255, 209, 209, 209, 255, 169, 169, 169, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 207, 207, 255, 181, 181, 181, 255, 178, 178, 178, 255, 175, 175, 175, 255, 172, 172, 172, 255, 169, 169, 169, 255, 158, 158, 158, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1}; + + Ihandle* image = IupImageRGBA(24, 24, imgdata); + return image; +} + diff --git a/iup/srcimglib/iup_imglib_icons.h b/iup/srcimglib/iup_imglib_icons.h new file mode 100755 index 0000000..f369eb6 --- /dev/null +++ b/iup/srcimglib/iup_imglib_icons.h @@ -0,0 +1,240 @@ +static Ihandle* load_image_Tecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 95, 108, 1, 90, 100, 117, 99, 123, 138, 166, 126, 137, 152, 181, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 105, 123, 147, 122, 137, 165, 255, 136, 152, 183, 255, 132, 149, 179, 250, 133, 149, 178, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 100, 115, 43, 111, 125, 150, 253, 140, 158, 190, 255, 135, 151, 182, 255, 132, 149, 179, 255, 131, 147, 177, 217, 153, 164, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 134, 148, 134, 151, 182, 255, 137, 154, 185, 255, 115, 129, 154, 252, 114, 128, 155, 255, 130, 146, 175, 255, 132, 147, 175, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 162, 3, 108, 121, 145, 230, 144, 162, 195, 255, 137, 154, 185, 197, 74, 79, 86, 45, 41, 46, 55, 246, 120, 134, 162, 255, 129, 145, 174, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 101, 113, 48, 124, 139, 167, 255, 144, 161, 194, 255, 138, 155, 186, 67, 0, 0, 0, 0, 49, 54, 62, 150, 87, 98, 118, 255, 128, 144, 173, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 132, 105, 137, 154, 185, 255, 139, 156, 188, 231, 143, 159, 187, 3, 0, 0, 0, 0, 64, 68, 76, 61, 70, 79, 95, 255, 127, 143, 172, 254, 134, 149, 175, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 121, 142, 153, 141, 159, 191, 255, 139, 156, 188, 164, 0, 0, 0, 0, 0, 0, 0, 0, 79, 82, 87, 3, 69, 77, 92, 241, 122, 137, 165, 255, 127, 142, 170, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 122, 146, 191, 145, 163, 196, 255, 139, 156, 188, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 86, 101, 190, 115, 129, 156, 255, 126, 141, 170, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 125, 149, 227, 150, 168, 201, 255, 141, 157, 188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, 107, 144, 113, 127, 153, 255, 125, 140, 169, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 165, 167, 2, 112, 125, 150, 252, 155, 173, 203, 255, 143, 159, 189, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 94, 110, 109, 114, 128, 155, 255, 125, 140, 168, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 120, 130, 149, 33, 48, 53, 59, 69, 43, 46, 52, 100, 50, 54, 59, 137, 116, 130, 156, 255, 155, 171, 201, 255, 105, 118, 142, 155, 104, 117, 141, 151, 105, 118, 141, 151, 105, 118, 142, 151, 101, 113, 136, 185, 111, 124, 150, 255, 116, 130, 156, 220, 112, 125, 148, 95, 115, 127, 150, 67, 123, 134, 156, 33, 168, 176, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 147, 5, 109, 121, 142, 71, 106, 118, 140, 140, 105, 117, 140, 197, 107, 120, 144, 242, 120, 135, 162, 255, 123, 137, 163, 255, 44, 49, 58, 255, 28, 32, 39, 255, 125, 139, 164, 255, 150, 167, 197, 255, 138, 155, 186, 255, 131, 148, 178, 255, 125, 141, 170, 255, 119, 134, 162, 255, 114, 128, 154, 255, 108, 122, 147, 255, 104, 117, 141, 255, 102, 115, 138, 255, 103, 116, 139, 255, 107, 120, 145, 255, 111, 124, 149, 245, 113, 126, 151, 200, 113, 127, 152, 140, 116, 129, 154, 71, 122, 135, 158, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 128, 145, 14, 106, 118, 140, 130, 104, 116, 139, 234, 105, 118, 142, 255, 128, 144, 173, 255, 147, 165, 199, 255, 157, 177, 213, 255, 150, 168, 202, 255, 140, 156, 187, 229, 41, 45, 52, 196, 39, 43, 51, 183, 130, 143, 168, 255, 144, 161, 192, 233, 109, 122, 145, 109, 105, 116, 138, 109, 99, 110, 130, 109, 92, 103, 123, 109, 91, 100, 117, 145, 97, 109, 131, 255, 95, 106, 128, 248, 74, 83, 97, 193, 64, 72, 85, 227, 56, 63, 75, 255, 55, 62, 75, 255, 65, 73, 88, 255, 90, 101, 121, 255, 111, 125, 150, 255, 114, 128, 154, 236, 116, 129, 155, 130, 127, 140, 165, 16, 0, 0, 0, 0, + 95, 101, 113, 22, 103, 115, 137, 220, 103, 116, 140, 255, 110, 123, 148, 255, 146, 165, 198, 255, 147, 165, 197, 232, 142, 158, 188, 147, 131, 144, 169, 78, 115, 123, 139, 20, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 68, 128, 142, 167, 255, 144, 162, 193, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 107, 31, 120, 135, 163, 255, 133, 150, 180, 231, 0, 0, 0, 0, 0, 0, 0, 0, 86, 89, 93, 20, 50, 54, 61, 73, 37, 40, 46, 141, 33, 36, 42, 230, 46, 52, 63, 255, 107, 120, 144, 255, 116, 130, 157, 255, 118, 133, 159, 223, 132, 147, 174, 24, + 76, 83, 95, 114, 104, 117, 140, 255, 105, 117, 141, 255, 118, 133, 160, 253, 139, 155, 184, 116, 134, 143, 161, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 100, 110, 74, 122, 137, 163, 255, 143, 160, 191, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 120, 31, 123, 138, 166, 255, 136, 153, 183, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 93, 97, 5, 42, 45, 51, 111, 86, 97, 117, 253, 118, 133, 160, 255, 119, 133, 161, 255, 133, 149, 180, 116, + 46, 50, 56, 109, 67, 76, 91, 255, 105, 118, 142, 255, 107, 120, 145, 254, 112, 125, 149, 131, 127, 139, 161, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 98, 109, 74, 116, 130, 156, 255, 142, 159, 190, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 122, 31, 128, 143, 172, 255, 141, 157, 185, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 137, 163, 7, 122, 136, 162, 122, 120, 135, 162, 254, 121, 136, 164, 255, 136, 152, 184, 255, 126, 141, 168, 116, + 71, 74, 79, 17, 31, 35, 41, 206, 42, 47, 57, 255, 77, 87, 105, 255, 103, 116, 140, 255, 110, 124, 149, 239, 112, 125, 150, 157, 115, 128, 153, 89, 122, 134, 158, 30, 147, 158, 177, 2, 0, 0, 0, 0, 81, 87, 96, 65, 109, 123, 148, 255, 141, 158, 190, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 103, 112, 31, 135, 151, 180, 255, 141, 156, 183, 231, 0, 0, 0, 0, 153, 164, 183, 1, 134, 147, 171, 30, 124, 138, 165, 84, 123, 138, 165, 154, 122, 137, 164, 235, 127, 143, 172, 255, 140, 157, 189, 255, 144, 162, 195, 255, 129, 144, 172, 218, 126, 138, 161, 22, + 0, 0, 0, 0, 64, 68, 73, 7, 39, 43, 49, 118, 32, 36, 42, 225, 30, 35, 42, 255, 50, 57, 68, 255, 72, 81, 97, 255, 91, 102, 123, 255, 105, 118, 142, 255, 113, 127, 152, 240, 115, 129, 155, 204, 111, 124, 149, 196, 111, 125, 150, 255, 126, 141, 170, 234, 119, 133, 159, 120, 120, 134, 160, 116, 121, 135, 161, 117, 121, 135, 162, 119, 116, 130, 155, 152, 127, 142, 170, 255, 125, 140, 168, 248, 123, 138, 166, 199, 130, 145, 173, 235, 140, 155, 183, 255, 143, 160, 190, 255, 143, 161, 193, 255, 147, 165, 199, 255, 145, 164, 197, 255, 132, 148, 177, 230, 127, 140, 166, 126, 124, 134, 151, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 141, 144, 3, 55, 58, 63, 58, 37, 40, 46, 126, 34, 38, 44, 184, 34, 38, 44, 235, 35, 39, 47, 254, 49, 55, 66, 255, 64, 72, 87, 255, 77, 87, 104, 255, 88, 98, 118, 255, 96, 108, 130, 255, 103, 116, 139, 255, 108, 122, 147, 255, 113, 127, 153, 255, 118, 133, 160, 255, 124, 140, 168, 255, 133, 148, 176, 255, 141, 156, 183, 255, 146, 161, 187, 255, 144, 159, 186, 255, 131, 146, 174, 254, 127, 141, 168, 237, 126, 141, 168, 188, 123, 137, 162, 131, 112, 123, 143, 61, 128, 132, 140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 19, 64, 68, 73, 56, 53, 57, 65, 82, 62, 67, 76, 116, 66, 74, 89, 255, 95, 107, 129, 255, 80, 88, 103, 155, 81, 90, 105, 151, 86, 95, 112, 151, 95, 104, 122, 151, 98, 109, 128, 180, 124, 139, 166, 255, 109, 122, 146, 218, 100, 110, 128, 84, 96, 104, 118, 56, 105, 109, 117, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 2, 74, 83, 98, 252, 131, 147, 178, 255, 140, 155, 184, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 134, 157, 114, 151, 169, 203, 255, 123, 138, 165, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 76, 90, 224, 122, 137, 165, 255, 136, 152, 182, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 139, 165, 147, 146, 164, 198, 255, 122, 137, 165, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 69, 81, 191, 110, 124, 149, 255, 134, 151, 181, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 170, 193, 142, 160, 192, 255, 122, 137, 164, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 63, 74, 150, 94, 105, 127, 255, 133, 149, 179, 166, 0, 0, 0, 0, 0, 0, 0, 0, 115, 119, 128, 5, 130, 145, 174, 242, 137, 154, 186, 255, 125, 139, 166, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 58, 66, 102, 72, 81, 97, 255, 132, 148, 178, 236, 148, 161, 187, 5, 0, 0, 0, 0, 110, 121, 140, 64, 140, 157, 189, 255, 127, 142, 171, 254, 131, 144, 169, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 65, 71, 43, 47, 52, 63, 255, 127, 143, 172, 255, 132, 148, 177, 75, 0, 0, 0, 0, 121, 134, 158, 160, 139, 156, 188, 255, 123, 138, 165, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 36, 39, 46, 227, 106, 119, 143, 255, 130, 145, 175, 203, 114, 125, 147, 51, 123, 138, 166, 247, 131, 147, 177, 255, 123, 138, 165, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 41, 47, 143, 68, 77, 93, 255, 128, 144, 174, 255, 126, 141, 170, 252, 129, 145, 174, 255, 123, 138, 166, 255, 127, 141, 167, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 68, 73, 40, 34, 38, 46, 250, 117, 131, 158, 255, 126, 142, 171, 255, 124, 140, 168, 255, 125, 139, 166, 214, 140, 152, 172, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 44, 50, 134, 58, 66, 79, 255, 123, 138, 166, 255, 123, 138, 166, 250, 127, 140, 165, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 46, 50, 55, 83, 82, 89, 102, 123, 106, 116, 136, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(32, 32, imgdata); + return image; +} + +static Ihandle* load_image_PUC_Rio(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 70, 47, 28, 103, 97, 66, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 99, 63, 107, 119, 112, 74, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 139, 94, 94, 94, 162, 93, 93, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 83, 55, 59, 148, 138, 82, 117, 126, 120, 89, 189, 142, 136, 102, 254, 147, 140, 102, 255, 122, 117, 91, 197, 151, 141, 83, 130, 86, 80, 52, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 106, 66, 133, 137, 129, 84, 228, 144, 136, 91, 255, 136, 129, 88, 255, 143, 134, 90, 255, 138, 131, 90, 255, 142, 133, 86, 241, 112, 104, 64, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 34, 104, 104, 104, 122, 79, 79, 79, 12, 0, 0, 0, 0, 126, 118, 72, 126, 151, 141, 91, 255, 150, 140, 100, 255, 147, 139, 102, 255, 146, 137, 98, 255, 151, 141, 102, 255, 150, 141, 90, 255, 128, 119, 73, 142, 0, 0, 0, 0, 50, 50, 50, 6, 99, 99, 99, 109, 84, 84, 84, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 36, 119, 119, 119, 255, 74, 74, 74, 108, 49, 48, 39, 27, 137, 131, 98, 234, 152, 145, 106, 255, 155, 147, 102, 255, 157, 149, 104, 255, 166, 156, 101, 255, 147, 140, 105, 255, 161, 152, 103, 255, 133, 128, 102, 234, 100, 94, 60, 50, 69, 69, 69, 81, 116, 116, 116, 255, 75, 75, 75, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 103, 126, 123, 123, 123, 242, 34, 34, 34, 11, 54, 54, 54, 6, 139, 131, 88, 252, 128, 121, 84, 255, 145, 133, 89, 255, 141, 133, 89, 255, 148, 137, 90, 255, 137, 127, 86, 255, 140, 132, 86, 255, 139, 132, 92, 255, 50, 48, 37, 26, 64, 64, 64, 1, 118, 118, 118, 225, 109, 109, 109, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 39, 4, 104, 97, 61, 53, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 118, 226, 104, 104, 104, 140, 0, 0, 0, 0, 0, 0, 0, 0, 134, 127, 93, 226, 140, 134, 102, 255, 127, 124, 109, 255, 123, 121, 107, 255, 125, 122, 105, 255, 126, 123, 111, 255, 139, 133, 101, 255, 136, 130, 95, 243, 83, 83, 83, 1, 0, 0, 0, 0, 98, 98, 98, 114, 123, 123, 123, 246, 24, 24, 24, 7, 0, 0, 0, 0, 74, 74, 74, 46, 52, 52, 52, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 42, 8, 159, 148, 87, 169, 161, 149, 88, 177, 100, 94, 59, 36, 94, 43, 44, 162, 127, 10, 11, 254, 101, 101, 101, 139, 73, 73, 73, 5, 129, 123, 89, 234, 161, 152, 104, 255, 163, 153, 99, 255, 152, 143, 95, 255, 160, 150, 94, 255, 154, 146, 99, 255, 168, 158, 102, 255, 132, 126, 96, 247, 33, 32, 28, 13, 99, 99, 99, 122, 126, 16, 17, 252, 98, 41, 41, 178, 61, 61, 61, 29, 106, 106, 106, 161, 105, 105, 105, 184, 53, 53, 53, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 32, 22, 162, 151, 87, 247, 165, 154, 89, 248, 158, 147, 87, 138, 87, 65, 64, 179, 92, 83, 83, 219, 0, 0, 0, 0, 111, 105, 76, 152, 130, 123, 84, 255, 132, 121, 80, 255, 137, 118, 77, 255, 140, 116, 77, 255, 127, 116, 77, 255, 139, 130, 86, 255, 109, 104, 77, 177, 0, 0, 0, 0, 91, 83, 83, 201, 88, 65, 66, 190, 100, 100, 100, 123, 107, 107, 107, 243, 110, 110, 110, 255, 48, 48, 48, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 154, 91, 205, 153, 142, 84, 199, 151, 140, 83, 197, 148, 137, 80, 253, 100, 87, 81, 255, 93, 86, 73, 168, 45, 45, 45, 2, 90, 83, 52, 37, 104, 19, 14, 180, 157, 0, 2, 254, 129, 4, 5, 190, 138, 3, 5, 188, 149, 1, 3, 250, 111, 14, 11, 194, 95, 86, 54, 46, 72, 72, 72, 0, 76, 73, 73, 148, 96, 82, 82, 255, 94, 94, 94, 253, 103, 103, 103, 215, 94, 94, 94, 181, 111, 111, 111, 230, 54, 54, 54, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 99, 62, 71, 169, 157, 92, 225, 135, 126, 76, 177, 187, 173, 101, 240, 104, 101, 82, 169, 68, 88, 139, 255, 43, 78, 160, 255, 24, 64, 166, 223, 28, 69, 176, 207, 52, 62, 153, 238, 60, 60, 145, 250, 39, 78, 179, 207, 39, 78, 179, 207, 57, 62, 149, 244, 56, 60, 149, 243, 28, 70, 176, 207, 21, 63, 169, 218, 31, 68, 163, 255, 60, 83, 142, 255, 90, 90, 90, 159, 120, 120, 120, 240, 90, 90, 90, 177, 112, 112, 112, 233, 77, 77, 77, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 0, 70, 66, 46, 36, 134, 125, 76, 150, 156, 145, 86, 169, 79, 78, 75, 73, 47, 80, 163, 254, 26, 81, 221, 255, 39, 96, 243, 255, 57, 90, 172, 255, 65, 102, 193, 255, 59, 98, 197, 255, 59, 104, 217, 255, 61, 109, 231, 255, 62, 101, 201, 255, 61, 95, 176, 255, 57, 91, 172, 255, 40, 97, 243, 255, 27, 81, 221, 255, 41, 79, 175, 255, 86, 86, 86, 80, 93, 93, 93, 149, 97, 97, 97, 172, 53, 53, 53, 40, 54, 54, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 34, 30, 5, 98, 92, 59, 46, 0, 0, 0, 0, 25, 66, 171, 188, 58, 96, 188, 255, 67, 108, 208, 255, 93, 112, 149, 255, 94, 114, 154, 255, 95, 116, 157, 255, 86, 130, 243, 255, 87, 132, 246, 255, 95, 115, 155, 255, 94, 114, 153, 255, 94, 113, 149, 255, 63, 107, 221, 255, 65, 98, 176, 255, 27, 69, 178, 208, 0, 0, 0, 0, 68, 68, 68, 39, 39, 39, 39, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 75, 174, 184, 60, 108, 232, 255, 111, 122, 134, 255, 104, 124, 161, 255, 116, 125, 131, 255, 100, 111, 126, 255, 101, 135, 223, 255, 104, 140, 234, 255, 102, 113, 127, 255, 112, 122, 132, 255, 106, 123, 154, 255, 111, 123, 136, 255, 61, 107, 225, 255, 39, 79, 181, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 84, 175, 184, 81, 108, 170, 255, 100, 125, 182, 255, 127, 130, 116, 255, 187, 175, 106, 255, 188, 175, 101, 255, 126, 156, 235, 255, 133, 165, 248, 255, 175, 164, 101, 255, 187, 175, 106, 255, 132, 133, 114, 255, 103, 127, 178, 255, 84, 108, 162, 255, 50, 87, 182, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 91, 175, 184, 81, 114, 197, 255, 124, 133, 139, 255, 152, 152, 128, 255, 182, 174, 122, 255, 154, 159, 152, 255, 156, 182, 250, 255, 156, 182, 250, 255, 153, 160, 162, 255, 177, 171, 125, 255, 158, 156, 125, 255, 128, 135, 135, 255, 82, 113, 192, 255, 61, 95, 182, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 6, 101, 101, 101, 141, 103, 103, 103, 160, 65, 65, 65, 24, 42, 42, 42, 8, 66, 94, 167, 198, 101, 132, 211, 255, 113, 126, 148, 255, 194, 181, 107, 255, 160, 168, 172, 255, 171, 194, 251, 255, 178, 199, 251, 255, 178, 199, 251, 255, 172, 194, 251, 255, 158, 167, 178, 255, 202, 187, 108, 255, 115, 126, 143, 255, 101, 130, 203, 255, 71, 100, 176, 216, 33, 32, 30, 11, 70, 67, 49, 14, 156, 145, 86, 151, 156, 145, 86, 153, 72, 69, 47, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 94, 94, 94, 97, 97, 97, 119, 69, 69, 69, 72, 105, 105, 105, 189, 99, 99, 99, 251, 80, 102, 158, 243, 106, 135, 204, 255, 124, 134, 149, 255, 186, 171, 102, 255, 181, 175, 166, 255, 205, 209, 241, 255, 210, 213, 241, 255, 208, 211, 240, 255, 206, 210, 241, 255, 182, 175, 164, 255, 199, 182, 110, 255, 121, 130, 140, 255, 107, 133, 196, 255, 90, 113, 169, 240, 156, 145, 84, 250, 144, 134, 79, 192, 131, 122, 73, 98, 127, 118, 73, 93, 157, 146, 86, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 15, 105, 105, 105, 194, 103, 103, 103, 201, 98, 98, 98, 170, 119, 119, 119, 242, 85, 85, 85, 148, 75, 101, 166, 198, 115, 145, 224, 255, 123, 134, 152, 255, 186, 168, 105, 255, 223, 223, 223, 255, 122, 122, 122, 255, 231, 231, 231, 255, 221, 214, 214, 255, 122, 122, 122, 255, 188, 188, 188, 255, 205, 188, 127, 255, 124, 133, 144, 255, 114, 143, 216, 255, 82, 110, 183, 206, 117, 109, 67, 135, 180, 168, 97, 243, 152, 141, 83, 175, 156, 145, 86, 199, 165, 153, 90, 204, 97, 91, 58, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 84, 101, 101, 101, 118, 44, 44, 44, 30, 105, 105, 105, 171, 48, 48, 48, 37, 107, 107, 107, 165, 81, 108, 176, 187, 113, 137, 194, 255, 137, 142, 137, 255, 181, 165, 109, 255, 219, 219, 219, 255, 40, 40, 40, 255, 226, 226, 226, 255, 143, 136, 136, 255, 253, 253, 253, 255, 130, 130, 130, 255, 196, 180, 126, 255, 140, 144, 135, 255, 114, 135, 185, 255, 84, 111, 183, 204, 164, 153, 90, 137, 106, 99, 61, 65, 164, 153, 90, 143, 98, 92, 59, 58, 137, 127, 76, 89, 154, 144, 85, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 118, 104, 104, 104, 203, 102, 103, 106, 198, 121, 133, 153, 241, 188, 179, 120, 227, 156, 157, 137, 147, 79, 105, 171, 182, 122, 152, 228, 255, 128, 137, 148, 255, 175, 160, 112, 255, 117, 117, 117, 255, 171, 171, 171, 255, 118, 118, 118, 255, 149, 142, 142, 255, 223, 223, 223, 255, 127, 127, 127, 255, 192, 177, 130, 255, 130, 137, 143, 255, 122, 150, 222, 255, 82, 109, 178, 201, 154, 156, 137, 114, 189, 180, 120, 231, 150, 154, 144, 238, 151, 144, 96, 205, 158, 147, 87, 202, 139, 130, 78, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 29, 5, 29, 62, 171, 38, 87, 110, 171, 255, 90, 102, 126, 255, 166, 163, 128, 174, 71, 95, 155, 155, 118, 151, 235, 255, 126, 139, 164, 255, 169, 155, 106, 255, 233, 231, 230, 255, 255, 255, 255, 255, 241, 241, 241, 255, 236, 229, 229, 255, 241, 240, 240, 255, 226, 225, 225, 255, 186, 171, 123, 255, 128, 139, 157, 255, 117, 149, 230, 255, 76, 101, 165, 174, 177, 173, 134, 139, 175, 167, 113, 255, 130, 141, 158, 255, 18, 61, 201, 53, 24, 24, 24, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 82, 242, 8, 69, 101, 197, 194, 134, 137, 127, 255, 134, 138, 129, 236, 40, 54, 93, 89, 112, 146, 236, 255, 115, 137, 187, 255, 152, 149, 116, 255, 178, 164, 110, 255, 184, 166, 110, 255, 173, 162, 128, 255, 172, 160, 132, 255, 180, 163, 108, 255, 178, 163, 111, 255, 160, 155, 114, 255, 116, 135, 178, 255, 114, 149, 238, 255, 48, 63, 102, 102, 131, 136, 132, 208, 128, 132, 126, 255, 86, 109, 174, 200, 19, 71, 241, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 106, 212, 11, 150, 147, 114, 237, 186, 176, 114, 255, 125, 134, 147, 103, 66, 87, 140, 171, 115, 147, 228, 255, 124, 148, 207, 255, 133, 153, 201, 255, 136, 153, 197, 255, 171, 192, 247, 255, 173, 195, 250, 255, 136, 154, 199, 255, 134, 153, 199, 255, 123, 146, 203, 255, 118, 150, 232, 255, 70, 92, 148, 186, 126, 135, 145, 72, 124, 129, 126, 255, 149, 148, 121, 252, 117, 135, 177, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 142, 137, 115, 128, 133, 131, 255, 135, 136, 119, 238, 128, 141, 167, 36, 28, 33, 45, 58, 63, 76, 111, 104, 89, 106, 150, 150, 121, 143, 202, 240, 151, 178, 250, 255, 151, 179, 250, 255, 124, 147, 207, 244, 91, 108, 154, 156, 64, 78, 114, 105, 30, 36, 50, 63, 101, 121, 173, 20, 109, 119, 134, 220, 121, 125, 119, 255, 146, 148, 132, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 87, 235, 3, 130, 132, 120, 192, 126, 130, 125, 255, 180, 175, 130, 211, 52, 97, 243, 3, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 23, 22, 91, 112, 168, 198, 96, 119, 179, 209, 27, 30, 36, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 169, 138, 183, 191, 178, 105, 255, 165, 159, 115, 222, 98, 123, 190, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 128, 187, 19, 155, 159, 146, 235, 184, 178, 128, 248, 157, 161, 148, 111, 162, 164, 144, 134, 117, 135, 178, 42, 0, 0, 0, 0, 22, 25, 33, 25, 28, 34, 49, 32, 0, 0, 0, 0, 107, 129, 184, 33, 161, 161, 138, 130, 156, 160, 148, 128, 184, 178, 128, 250, 162, 163, 142, 248, 130, 143, 168, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 96, 227, 12, 170, 169, 137, 206, 209, 194, 112, 255, 189, 181, 124, 255, 120, 127, 132, 255, 166, 158, 105, 255, 112, 121, 134, 230, 173, 169, 129, 196, 153, 153, 126, 195, 133, 136, 129, 224, 120, 125, 124, 255, 142, 137, 101, 255, 190, 181, 124, 255, 209, 194, 112, 255, 173, 171, 135, 195, 37, 83, 231, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 111, 205, 10, 172, 170, 138, 141, 140, 149, 156, 217, 138, 139, 124, 198, 145, 144, 118, 254, 61, 84, 148, 255, 164, 156, 104, 255, 106, 115, 129, 255, 126, 130, 122, 255, 188, 178, 113, 255, 112, 121, 135, 207, 137, 147, 158, 204, 168, 168, 139, 124, 51, 92, 222, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 76, 242, 3, 0, 0, 0, 0, 96, 122, 193, 28, 148, 153, 149, 78, 139, 142, 129, 101, 147, 149, 132, 101, 154, 158, 150, 80, 100, 124, 190, 31, 0, 0, 0, 0, 89, 125, 246, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(32, 32, imgdata); + return image; +} + +static Ihandle* load_image_BR(void) +{ + unsigned char imgdata[] = { + 255, 255, 254, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 252, 245, 255, 255, 255, 254, 255, + 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255, + 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255, + 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255, + 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255, + 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255, + 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255, + 255, 250, 235, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 250, 235, 255, + 255, 254, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 249, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 252, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 250, 252, 251, 255, 255, 255, 255, 255, + 240, 248, 244, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 111, 189, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 218, 238, 229, 255, 109, 188, 154, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 15, 146, 89, 255, 250, 252, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 251, 250, 255, 174, 218, 198, 255, 22, 150, 94, 255, 1, 140, 79, 255, 1, 140, 79, 255, 1, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 183, 222, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 179, 139, 255, 0, 140, 79, 255, 0, 140, 79, 255, 82, 177, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 218, 199, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 86, 255, 247, 251, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 182, 144, 255, 53, 164, 116, 255, 54, 164, 116, 255, 145, 205, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 209, 185, 255, 0, 140, 79, 255, 0, 140, 79, 255, 156, 210, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 217, 196, 255, 58, 165, 118, 255, 58, 165, 118, 255, 82, 176, 135, 255, 243, 249, 246, 255, 255, 255, 255, 255, 245, 250, 248, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 75, 173, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 248, 244, 255, 4, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 96, 182, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 195, 163, 255, 0, 140, 79, 255, 1, 140, 80, 255, 228, 243, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 177, 137, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 222, 240, 232, 255, 255, 255, 255, 255, 225, 241, 234, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 149, 207, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 248, 244, 255, 189, 224, 208, 255, 189, 224, 208, 255, 194, 227, 212, 255, 249, 252, 251, 255, 255, 255, 255, 255, 225, 241, 234, 255, 20, 149, 93, 255, 0, 140, 79, 255, 48, 161, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 180, 141, 255, 73, 173, 130, 255, 78, 175, 132, 255, 162, 212, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 193, 161, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 222, 240, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 253, 255, 58, 165, 118, 255, 0, 140, 79, 255, 0, 140, 79, 255, 121, 194, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 254, 255, 144, 204, 178, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 158, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 118, 193, 160, 255, 111, 190, 155, 255, 114, 191, 157, 255, 206, 233, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 229, 215, 255, 0, 140, 79, 255, 0, 140, 79, 255, 195, 227, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 249, 245, 255, 233, 245, 240, 255, 242, 249, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 242, 236, 255, 38, 157, 105, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 114, 191, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 234, 223, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 103, 186, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 252, 255, 1, 140, 80, 255, 17, 147, 91, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 164, 116, 255, 0, 140, 79, 255, 1, 141, 80, 255, 170, 216, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, 195, 164, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 187, 224, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 213, 190, 255, 46, 160, 110, 255, 46, 160, 110, 255, 69, 171, 126, 255, 216, 237, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 239, 231, 255, 0, 140, 79, 255, 87, 179, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 246, 241, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 129, 198, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 201, 173, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 145, 87, 255, 249, 252, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 108, 188, 153, 255, 0, 140, 79, 255, 161, 212, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 214, 193, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 120, 194, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 206, 180, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 79, 175, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 241, 233, 255, 103, 186, 150, 255, 0, 140, 79, 255, 2, 141, 80, 255, 232, 244, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 182, 143, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 111, 190, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 210, 187, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 147, 91, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 36, 156, 104, 255, 35, 155, 102, 255, 18, 148, 91, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 43, 158, 108, 255, 43, 158, 108, 255, 43, 158, 108, 255, 9, 144, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 152, 97, 255, 65, 168, 123, 255, 65, 168, 123, 255, 41, 158, 107, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 240, 248, 244, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 235, 245, 241, 255, + 253, 254, 253, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 219, 238, 230, 255, 252, 254, 253, 255}; + + Ihandle* image = IupImageRGBA(32, 32, imgdata); + return image; +} + +static Ihandle* load_image_Lua(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 138, 13, 6, 6, 130, 84, 9, 9, 131, 105, 12, 12, 133, 56, 102, 102, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 131, 68, 1, 1, 128, 234, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 183, 18, 18, 136, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 135, 27, 1, 1, 128, 242, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 164, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 122, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 252, 25, 25, 140, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 140, 18, 8, 8, 131, 73, 5, 5, 129, 111, 3, 3, 129, 129, 3, 3, 128, 128, 4, 4, 129, 109, 9, 9, 132, 72, 24, 24, 139, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 129, 154, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 154, 3, 8, 8, 131, 88, 4, 4, 129, 192, 1, 1, 127, 252, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 251, 4, 4, 129, 186, 8, 8, 131, 82, 52, 52, 153, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 130, 120, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 251, 23, 23, 138, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 131, 59, 3, 3, 128, 211, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 205, 9, 9, 132, 53, 0, 0, 0, 0, 18, 18, 136, 25, 1, 1, 128, 240, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 159, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 45, 150, 0, 7, 7, 130, 120, 1, 1, 127, 252, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 250, 7, 7, 130, 110, 0, 0, 0, 0, 12, 12, 133, 64, 2, 2, 128, 231, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 177, 25, 25, 140, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 204, 0, 3, 3, 129, 139, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 27, 27, 141, 255, 122, 122, 188, 255, 155, 155, 205, 255, 121, 121, 188, 255, 26, 26, 140, 255, 0, 0, 127, 255, 9, 9, 132, 132, 0, 0, 0, 0, 33, 33, 144, 10, 8, 8, 131, 77, 5, 5, 129, 96, 15, 15, 135, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 111, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 67, 67, 160, 255, 242, 242, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 241, 248, 255, 64, 64, 159, 255, 0, 0, 127, 255, 7, 7, 131, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 132, 47, 1, 1, 127, 250, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 12, 12, 133, 255, 234, 234, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 232, 243, 255, 11, 11, 132, 255, 1, 1, 127, 246, 10, 10, 132, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 97, 176, 0, 3, 3, 128, 193, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 81, 81, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 78, 166, 255, 0, 0, 127, 255, 3, 3, 129, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 12, 133, 63, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 101, 101, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 97, 176, 255, 0, 0, 127, 255, 0, 0, 127, 255, 13, 13, 133, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 4, 129, 162, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 52, 52, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 49, 152, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 67, 161, 2, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 179, 179, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 215, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 128, 225, 130, 130, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 14, 134, 37, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 130, 255, 73, 73, 164, 255, 3, 3, 129, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 12, 12, 133, 255, 160, 160, 207, 255, 251, 251, 253, 255, 255, 255, 255, 255, 251, 251, 253, 255, 158, 158, 206, 255, 11, 11, 132, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 22, 22, 138, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 131, 72, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 135, 255, 46, 46, 150, 255, 16, 16, 135, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 10, 10, 132, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 129, 86, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 6, 130, 82, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 123, 123, 189, 255, 84, 84, 169, 255, 0, 0, 127, 255, 0, 0, 127, 255, 120, 120, 187, 255, 87, 87, 171, 255, 0, 0, 127, 255, 66, 66, 160, 255, 211, 211, 233, 255, 238, 238, 246, 255, 227, 227, 241, 255, 97, 97, 176, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 130, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 12, 133, 61, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 103, 103, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 147, 147, 201, 255, 107, 107, 181, 255, 0, 0, 127, 255, 214, 214, 235, 255, 82, 82, 168, 255, 0, 0, 127, 255, 55, 55, 154, 255, 235, 235, 245, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 11, 11, 133, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 24, 139, 19, 1, 1, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 103, 103, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 147, 147, 201, 255, 107, 107, 181, 255, 0, 0, 127, 255, 7, 7, 130, 255, 4, 4, 129, 255, 32, 32, 143, 255, 92, 92, 173, 255, 243, 243, 249, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 251, 30, 30, 142, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 129, 210, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 103, 103, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 147, 147, 201, 255, 107, 107, 181, 255, 0, 0, 127, 255, 135, 135, 195, 255, 219, 219, 237, 255, 172, 172, 214, 255, 133, 133, 194, 255, 243, 243, 249, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 6, 130, 126, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 12, 12, 133, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 151, 151, 203, 255, 104, 104, 179, 255, 0, 0, 127, 255, 0, 0, 127, 255, 175, 175, 215, 255, 107, 107, 181, 255, 36, 36, 145, 255, 234, 234, 244, 255, 10, 10, 132, 255, 0, 0, 127, 255, 17, 17, 135, 255, 243, 243, 249, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 16, 135, 25, 1, 1, 127, 247, 0, 0, 127, 255, 17, 17, 136, 255, 255, 255, 255, 255, 141, 141, 198, 255, 135, 135, 195, 255, 135, 135, 195, 255, 135, 135, 195, 255, 49, 49, 151, 255, 127, 127, 191, 255, 193, 193, 224, 255, 49, 49, 152, 255, 100, 100, 177, 255, 234, 234, 244, 255, 107, 107, 181, 255, 23, 23, 139, 255, 241, 241, 248, 255, 73, 73, 163, 255, 54, 54, 154, 255, 169, 169, 212, 255, 247, 247, 251, 255, 31, 31, 142, 255, 0, 0, 127, 255, 2, 2, 128, 243, 22, 22, 138, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 137, 0, 0, 127, 255, 8, 8, 131, 255, 115, 115, 185, 255, 115, 115, 185, 255, 115, 115, 185, 255, 115, 115, 185, 255, 115, 115, 185, 255, 42, 42, 148, 255, 12, 12, 133, 255, 138, 138, 196, 255, 180, 180, 217, 255, 121, 121, 188, 255, 60, 60, 157, 255, 48, 48, 151, 255, 0, 0, 127, 255, 76, 76, 165, 255, 174, 174, 214, 255, 162, 162, 208, 255, 53, 53, 153, 255, 138, 138, 196, 255, 124, 124, 189, 255, 0, 0, 127, 255, 6, 6, 130, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 137, 11, 2, 2, 128, 217, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 209, 24, 24, 139, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 132, 43, 2, 2, 128, 240, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 235, 11, 11, 133, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 132, 56, 2, 2, 128, 237, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 233, 4, 4, 129, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 37, 3, 3, 128, 206, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 200, 13, 13, 134, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 142, 5, 6, 6, 130, 113, 2, 2, 128, 233, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 230, 6, 6, 130, 106, 20, 20, 137, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 8, 9, 9, 131, 90, 4, 4, 129, 170, 3, 3, 128, 228, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 254, 3, 3, 128, 225, 4, 4, 129, 167, 8, 8, 131, 86, 38, 38, 146, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 147, 11, 16, 16, 135, 29, 18, 18, 136, 28, 41, 41, 148, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(32, 32, imgdata); + return image; +} + +static Ihandle* load_image_TecgrafPUC_Rio(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 173, 184, 80, 176, 185, 202, 166, 177, 185, 202, 166, 177, 186, 202, 166, 177, 186, 202, 166, 177, 186, 202, 166, 177, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 203, 166, 178, 186, 204, 166, 178, 187, 204, 166, 178, 187, 204, 166, 178, 187, 204, 166, 178, 187, 204, 166, 179, 187, 204, 166, 179, 188, 204, 166, 179, 188, 205, 166, 204, 210, 221, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 218, 225, 5, 188, 196, 210, 81, 158, 171, 195, 81, 180, 191, 212, 142, 189, 199, 218, 166, 189, 199, 218, 166, 189, 199, 219, 166, 189, 199, 219, 166, 176, 187, 207, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 100, 102, 107, 168, 106, 119, 143, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 137, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 141, 169, 255, 138, 155, 187, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 158, 169, 64, 135, 148, 173, 227, 139, 156, 188, 255, 142, 159, 192, 255, 143, 161, 193, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 145, 163, 196, 255, 140, 155, 181, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 99, 103, 168, 91, 102, 123, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 135, 152, 182, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 177, 180, 45, 116, 126, 144, 253, 128, 144, 173, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 142, 166, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 99, 103, 168, 91, 102, 123, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 135, 151, 182, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 121, 127, 130, 106, 120, 144, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 118, 130, 151, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 99, 103, 168, 91, 102, 123, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 134, 151, 181, 255, 201, 209, 224, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 227, 232, 31, 226, 229, 234, 70, 228, 231, 236, 70, 227, 230, 236, 70, 227, 230, 235, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 220, 226, 43, 182, 189, 204, 70, 159, 170, 192, 70, 157, 170, 194, 70, 161, 174, 198, 70, 182, 192, 211, 70, 205, 211, 225, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 231, 236, 14, 213, 218, 227, 70, 205, 211, 223, 70, 207, 214, 226, 70, 208, 214, 225, 70, 227, 231, 237, 46, 229, 232, 238, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 121, 192, 113, 127, 152, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 127, 143, 172, 255, 118, 133, 160, 255, 121, 135, 163, 255, 107, 116, 135, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 99, 103, 168, 76, 85, 103, 255, 91, 101, 122, 255, 91, 102, 122, 255, 91, 102, 122, 255, 91, 102, 122, 255, 91, 102, 123, 255, 92, 103, 125, 255, 111, 124, 150, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 111, 125, 151, 255, 94, 106, 127, 255, 92, 103, 124, 255, 92, 103, 125, 255, 92, 103, 125, 255, 92, 103, 125, 255, 92, 103, 125, 255, 116, 131, 157, 255, 181, 192, 213, 77, 0, 0, 0, 0, 0, 0, 0, 0, 171, 176, 185, 32, 152, 160, 176, 136, 149, 160, 180, 221, 143, 156, 180, 239, 133, 148, 176, 246, 137, 152, 180, 255, 140, 156, 185, 255, 141, 157, 187, 255, 146, 162, 193, 243, 163, 178, 206, 239, 174, 189, 215, 204, 179, 193, 219, 119, 215, 221, 234, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 157, 170, 66, 138, 149, 170, 150, 142, 154, 178, 236, 132, 146, 174, 249, 134, 149, 178, 255, 134, 150, 179, 255, 134, 151, 181, 255, 137, 154, 184, 255, 141, 158, 189, 255, 148, 165, 197, 251, 166, 183, 213, 239, 179, 195, 224, 191, 187, 201, 226, 77, 226, 231, 240, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 166, 181, 67, 150, 162, 183, 153, 155, 168, 193, 222, 154, 168, 195, 239, 152, 168, 198, 239, 165, 181, 209, 239, 172, 188, 218, 201, 185, 199, 225, 145, 161, 166, 177, 111, 158, 169, 189, 239, 174, 186, 210, 239, 174, 187, 210, 239, 174, 187, 210, 239, 174, 187, 210, 239, 175, 187, 211, 239, 175, 187, 211, 239, 182, 191, 209, 203, 0, 0, 0, 0, 131, 136, 143, 55, 164, 175, 196, 239, 176, 188, 211, 239, 176, 188, 211, 239, 176, 188, 212, 239, 176, 189, 212, 239, 176, 189, 212, 239, 176, 189, 212, 239, 176, 187, 207, 140, 171, 177, 189, 64, 148, 160, 183, 149, 162, 176, 203, 234, 201, 213, 233, 239, 213, 224, 243, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 199, 208, 38, 157, 168, 188, 115, 151, 165, 192, 171, 157, 171, 198, 239, 147, 164, 195, 242, 149, 166, 197, 255, 148, 164, 196, 255, 149, 167, 199, 255, 152, 169, 201, 255, 155, 172, 206, 250, 159, 177, 210, 247, 165, 182, 214, 239, 181, 197, 225, 227, 179, 195, 226, 142, 190, 203, 227, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 217, 226, 51, 204, 210, 222, 67, 101, 106, 113, 208, 117, 131, 158, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 111, 124, 149, 255, 101, 106, 114, 255, 111, 116, 125, 255, 130, 135, 145, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 131, 134, 96, 110, 113, 117, 191, 110, 113, 118, 191, 110, 113, 118, 191, 110, 113, 118, 191, 110, 113, 118, 191, 110, 113, 118, 191, 56, 61, 69, 251, 108, 121, 146, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 119, 133, 161, 255, 111, 120, 135, 241, 111, 113, 118, 191, 111, 113, 118, 191, 111, 113, 118, 191, 111, 113, 118, 191, 111, 113, 118, 191, 118, 121, 127, 191, 184, 189, 197, 61, 182, 185, 190, 45, 136, 144, 159, 192, 117, 129, 152, 245, 117, 131, 157, 255, 115, 130, 157, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 130, 157, 255, 116, 130, 157, 255, 117, 132, 159, 255, 124, 140, 167, 255, 142, 159, 190, 255, 171, 188, 219, 248, 183, 200, 230, 142, 211, 220, 236, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 180, 186, 70, 132, 141, 158, 206, 118, 132, 157, 255, 119, 134, 162, 255, 119, 133, 160, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 161, 255, 122, 136, 164, 255, 134, 150, 180, 255, 162, 180, 209, 255, 185, 202, 230, 220, 195, 208, 233, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 157, 167, 46, 138, 147, 164, 221, 123, 138, 164, 252, 124, 139, 168, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 123, 138, 167, 255, 128, 144, 173, 255, 147, 165, 195, 255, 136, 152, 179, 255, 104, 117, 141, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 130, 146, 176, 255, 167, 179, 202, 248, 0, 0, 0, 0, 114, 117, 120, 89, 88, 99, 119, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 133, 149, 179, 255, 142, 153, 170, 250, 122, 136, 161, 254, 127, 143, 172, 255, 126, 142, 170, 255, 169, 181, 199, 255, 219, 229, 245, 104, 0, 0, 0, 0, 0, 0, 0, 0, 143, 150, 165, 127, 126, 140, 167, 247, 130, 146, 175, 255, 129, 145, 174, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 171, 255, 127, 143, 172, 255, 127, 143, 173, 255, 128, 144, 173, 255, 134, 150, 179, 255, 151, 168, 196, 255, 176, 192, 220, 253, 186, 203, 232, 158, 191, 204, 227, 14, 0, 0, 0, 0, 111, 118, 131, 195, 148, 164, 196, 255, 132, 147, 177, 255, 122, 137, 165, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 129, 145, 174, 255, 166, 181, 205, 255, 180, 195, 217, 255, 163, 180, 212, 255, 149, 163, 189, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 146, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 119, 134, 161, 255, 168, 181, 205, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 114, 121, 44, 100, 109, 125, 229, 110, 124, 149, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 120, 134, 160, 255, 158, 173, 196, 255, 189, 205, 233, 205, 203, 214, 236, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 110, 120, 69, 104, 115, 134, 247, 116, 129, 156, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 120, 134, 162, 255, 139, 153, 178, 255, 186, 201, 226, 251, 190, 205, 233, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 140, 148, 60, 111, 121, 139, 244, 118, 133, 159, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 167, 179, 201, 248, 0, 0, 0, 0, 114, 117, 120, 89, 84, 94, 114, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 135, 151, 177, 255, 141, 154, 178, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 148, 165, 192, 255, 201, 215, 237, 104, 0, 0, 0, 0, 141, 146, 157, 106, 104, 118, 145, 253, 121, 137, 167, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 129, 144, 173, 255, 163, 178, 204, 255, 182, 198, 228, 184, 0, 0, 0, 0, 81, 87, 95, 195, 120, 135, 162, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 129, 144, 174, 255, 141, 154, 181, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 146, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 161, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 126, 130, 24, 84, 92, 105, 228, 108, 121, 146, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 157, 255, 146, 159, 182, 255, 192, 208, 234, 212, 210, 219, 237, 18, 0, 0, 0, 0, 0, 0, 0, 0, 150, 152, 156, 68, 91, 101, 118, 247, 115, 129, 155, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 130, 144, 169, 255, 185, 200, 224, 250, 188, 203, 231, 52, 0, 0, 0, 0, 143, 145, 148, 25, 96, 104, 118, 229, 115, 129, 156, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 167, 179, 201, 248, 0, 0, 0, 0, 114, 117, 120, 89, 84, 94, 114, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 126, 142, 170, 255, 125, 140, 168, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 134, 149, 179, 255, 182, 194, 216, 104, 222, 222, 223, 15, 115, 124, 140, 230, 118, 134, 163, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 128, 143, 172, 255, 156, 174, 206, 252, 177, 190, 213, 72, 81, 87, 95, 195, 120, 135, 162, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 141, 154, 181, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 145, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 119, 134, 161, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 112, 118, 167, 94, 105, 127, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 110, 123, 149, 255, 89, 101, 122, 255, 72, 82, 98, 255, 74, 83, 100, 255, 97, 109, 132, 255, 114, 128, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 160, 173, 195, 255, 193, 208, 234, 174, 0, 0, 0, 0, 137, 139, 142, 1, 87, 93, 104, 218, 110, 124, 149, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 113, 127, 154, 255, 91, 102, 122, 255, 73, 82, 98, 255, 70, 78, 94, 255, 92, 104, 125, 255, 116, 131, 157, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 140, 154, 179, 255, 179, 197, 226, 208, 205, 213, 227, 8, 102, 106, 113, 140, 98, 110, 133, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 119, 133, 161, 255, 116, 131, 157, 255, 120, 135, 162, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 166, 178, 200, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 114, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 130, 145, 173, 255, 188, 195, 209, 152, 184, 184, 185, 63, 115, 127, 149, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 123, 138, 166, 255, 103, 116, 139, 255, 82, 93, 112, 255, 75, 84, 100, 255, 73, 82, 98, 255, 91, 103, 124, 255, 122, 136, 164, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 135, 152, 183, 255, 165, 178, 204, 143, 81, 87, 95, 195, 120, 134, 162, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 141, 154, 181, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 145, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 119, 134, 160, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 158, 161, 39, 80, 86, 98, 250, 111, 124, 150, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 111, 125, 151, 255, 97, 106, 123, 255, 126, 131, 141, 189, 160, 165, 173, 169, 136, 141, 148, 177, 84, 89, 96, 255, 72, 81, 97, 255, 114, 128, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 119, 133, 158, 255, 176, 193, 222, 252, 217, 223, 237, 44, 134, 136, 139, 96, 79, 89, 107, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 114, 129, 154, 255, 93, 101, 116, 240, 123, 126, 131, 149, 156, 157, 160, 93, 145, 147, 150, 109, 79, 83, 88, 179, 70, 79, 93, 255, 116, 131, 158, 255, 118, 133, 160, 255, 118, 132, 159, 255, 117, 131, 158, 255, 117, 131, 159, 255, 118, 133, 160, 255, 137, 153, 182, 255, 176, 184, 199, 94, 82, 89, 100, 224, 115, 129, 155, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 119, 134, 161, 255, 95, 106, 127, 255, 80, 87, 98, 249, 69, 74, 83, 225, 71, 77, 88, 255, 89, 100, 120, 255, 120, 135, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 126, 141, 171, 255, 166, 178, 200, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 127, 141, 169, 255, 184, 189, 198, 190, 162, 164, 170, 63, 107, 117, 137, 255, 98, 110, 133, 255, 97, 109, 131, 255, 96, 108, 130, 255, 95, 107, 129, 255, 95, 106, 128, 255, 98, 110, 132, 255, 113, 121, 134, 255, 160, 166, 178, 255, 165, 173, 189, 211, 156, 163, 177, 241, 100, 107, 120, 255, 91, 102, 123, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 130, 146, 176, 255, 167, 178, 199, 219, 75, 80, 87, 195, 73, 82, 99, 255, 79, 89, 108, 255, 120, 135, 163, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 119, 133, 161, 255, 77, 86, 104, 255, 79, 89, 107, 255, 123, 135, 158, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 73, 80, 240, 108, 121, 145, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 171, 185, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 140, 143, 119, 77, 87, 104, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 121, 136, 164, 255, 128, 143, 171, 255, 134, 149, 177, 255, 132, 146, 173, 255, 126, 140, 166, 255, 117, 130, 155, 255, 92, 103, 124, 255, 112, 126, 152, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 144, 161, 192, 255, 174, 189, 217, 97, 90, 94, 99, 173, 101, 114, 137, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 124, 136, 159, 255, 158, 163, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 210, 211, 8, 86, 90, 95, 190, 70, 78, 91, 255, 81, 89, 103, 255, 88, 96, 109, 255, 88, 95, 106, 244, 81, 89, 101, 204, 98, 104, 115, 204, 115, 121, 131, 204, 159, 163, 169, 174, 80, 88, 102, 255, 119, 134, 160, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 117, 131, 157, 255, 126, 131, 140, 166, 163, 165, 167, 29, 207, 208, 209, 14, 131, 133, 136, 40, 77, 81, 87, 205, 96, 108, 130, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 126, 141, 170, 255, 166, 178, 200, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 121, 136, 164, 255, 100, 113, 136, 255, 84, 95, 114, 255, 78, 88, 106, 255, 98, 110, 131, 255, 165, 170, 178, 144, 201, 202, 205, 29, 139, 142, 146, 118, 124, 128, 135, 184, 103, 111, 126, 255, 96, 108, 131, 255, 112, 126, 152, 255, 119, 134, 161, 255, 129, 145, 175, 255, 138, 155, 187, 255, 135, 151, 182, 255, 134, 150, 181, 255, 132, 148, 178, 255, 128, 144, 173, 255, 123, 138, 166, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 128, 144, 173, 255, 165, 176, 197, 229, 176, 177, 179, 91, 159, 161, 163, 118, 84, 89, 96, 221, 117, 131, 157, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 134, 150, 181, 255, 130, 135, 143, 160, 159, 161, 163, 118, 178, 181, 185, 78, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 108, 121, 145, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 119, 133, 160, 255, 171, 184, 209, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 97, 101, 130, 86, 96, 116, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 128, 144, 173, 255, 173, 187, 213, 166, 66, 70, 77, 189, 109, 122, 147, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 120, 135, 163, 255, 148, 161, 185, 192, 220, 222, 226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 188, 189, 41, 103, 106, 110, 43, 121, 123, 126, 35, 169, 171, 173, 35, 208, 209, 210, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 90, 94, 47, 78, 86, 102, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 142, 157, 185, 255, 214, 217, 223, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 129, 133, 108, 79, 89, 107, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 141, 170, 255, 166, 178, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 105, 117, 138, 255, 93, 96, 104, 156, 135, 137, 140, 121, 156, 158, 160, 121, 140, 143, 147, 121, 183, 185, 188, 49, 228, 229, 231, 12, 148, 155, 170, 147, 129, 142, 167, 252, 127, 142, 172, 255, 126, 141, 170, 255, 124, 140, 169, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 128, 144, 173, 255, 165, 176, 197, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 131, 157, 255, 127, 142, 171, 255, 127, 142, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 136, 152, 183, 255, 133, 142, 161, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 108, 120, 145, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 118, 133, 160, 255, 171, 184, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 95, 100, 130, 84, 95, 114, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 114, 128, 153, 255, 114, 128, 153, 255, 114, 127, 154, 255, 113, 127, 154, 255, 113, 128, 154, 255, 120, 135, 163, 255, 156, 171, 200, 169, 93, 96, 102, 255, 112, 125, 151, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 124, 139, 168, 255, 167, 181, 208, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 189, 197, 41, 207, 211, 218, 46, 228, 231, 236, 46, 229, 233, 239, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 114, 117, 47, 76, 83, 98, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 160, 177, 207, 255, 190, 204, 229, 69, 0, 0, 0, 0, 0, 0, 0, 0, 183, 186, 190, 4, 110, 115, 124, 163, 101, 113, 137, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 170, 255, 166, 177, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 138, 166, 255, 124, 140, 168, 255, 135, 148, 171, 192, 186, 188, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 139, 149, 107, 117, 131, 155, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 122, 137, 164, 255, 121, 135, 163, 255, 119, 133, 160, 255, 117, 131, 158, 255, 119, 134, 161, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 128, 143, 173, 255, 166, 176, 197, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 157, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 143, 172, 255, 127, 143, 172, 255, 136, 152, 183, 255, 136, 147, 167, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 145, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 118, 133, 160, 255, 171, 184, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 131, 134, 116, 70, 79, 95, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 107, 120, 144, 255, 91, 99, 113, 255, 93, 101, 114, 255, 92, 100, 113, 255, 91, 99, 112, 255, 90, 97, 110, 255, 83, 90, 103, 255, 79, 87, 99, 255, 80, 87, 99, 255, 84, 90, 102, 255, 82, 89, 100, 255, 81, 87, 98, 255, 79, 85, 95, 255, 79, 85, 96, 255, 145, 153, 167, 224, 67, 71, 77, 186, 105, 118, 142, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 121, 136, 164, 255, 175, 193, 224, 219, 216, 225, 239, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 124, 132, 66, 122, 134, 155, 251, 137, 150, 175, 255, 148, 163, 189, 255, 160, 176, 205, 246, 186, 202, 230, 215, 204, 216, 236, 215, 212, 223, 241, 215, 176, 186, 203, 214, 67, 73, 84, 248, 117, 131, 158, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 137, 151, 176, 255, 182, 198, 224, 237, 176, 193, 223, 176, 157, 172, 199, 138, 146, 157, 179, 219, 114, 127, 152, 255, 119, 134, 162, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 169, 255, 165, 177, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 113, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 152, 165, 189, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 201, 203, 11, 100, 108, 121, 224, 121, 136, 164, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 108, 121, 146, 255, 82, 91, 106, 255, 78, 84, 95, 247, 65, 71, 82, 212, 74, 79, 88, 212, 72, 78, 87, 248, 99, 111, 134, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 128, 143, 173, 255, 166, 177, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 157, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 172, 255, 136, 152, 183, 255, 136, 147, 167, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 145, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 133, 160, 255, 171, 183, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 119, 45, 66, 72, 84, 255, 112, 125, 150, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 158, 171, 193, 255, 185, 196, 215, 207, 207, 211, 217, 66, 209, 210, 211, 43, 210, 211, 212, 46, 185, 189, 194, 119, 126, 136, 153, 233, 126, 139, 163, 255, 134, 147, 170, 255, 157, 170, 194, 255, 179, 192, 213, 255, 196, 206, 221, 255, 210, 218, 230, 255, 207, 215, 228, 255, 200, 209, 223, 194, 110, 112, 116, 160, 83, 93, 112, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 163, 177, 199, 255, 193, 208, 235, 176, 205, 215, 232, 45, 227, 232, 239, 3, 222, 225, 229, 10, 148, 154, 167, 62, 103, 112, 128, 229, 113, 127, 154, 255, 118, 132, 159, 255, 118, 132, 159, 255, 119, 133, 161, 255, 122, 137, 164, 255, 126, 141, 167, 255, 143, 159, 186, 255, 179, 191, 212, 166, 83, 87, 93, 202, 100, 112, 135, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 125, 139, 166, 255, 133, 149, 178, 255, 130, 146, 176, 255, 123, 139, 166, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 125, 140, 169, 255, 165, 177, 199, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 94, 112, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 141, 170, 255, 153, 165, 190, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 157, 160, 65, 87, 97, 114, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 125, 140, 169, 255, 130, 144, 168, 238, 147, 151, 159, 74, 209, 211, 214, 56, 192, 198, 210, 55, 150, 160, 178, 141, 120, 133, 156, 248, 123, 138, 166, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 127, 143, 173, 255, 166, 177, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 156, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 135, 152, 182, 255, 136, 147, 167, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 133, 159, 255, 171, 183, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 8, 82, 85, 91, 209, 93, 104, 125, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 117, 130, 156, 255, 158, 173, 196, 255, 164, 182, 213, 235, 161, 175, 202, 209, 143, 157, 181, 213, 122, 134, 158, 255, 113, 127, 153, 255, 114, 128, 155, 255, 114, 128, 155, 255, 116, 131, 157, 255, 119, 133, 160, 255, 124, 138, 164, 255, 130, 144, 168, 255, 156, 171, 198, 254, 186, 197, 216, 84, 144, 146, 149, 46, 58, 64, 74, 255, 114, 128, 154, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 119, 133, 159, 255, 155, 169, 193, 255, 166, 184, 214, 255, 156, 172, 203, 212, 144, 159, 185, 221, 125, 138, 164, 255, 116, 131, 157, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 127, 141, 166, 255, 171, 179, 193, 53, 122, 125, 128, 82, 63, 70, 82, 249, 115, 129, 155, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 125, 140, 168, 255, 165, 176, 198, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 141, 170, 255, 153, 166, 190, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 121, 124, 65, 82, 92, 109, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 140, 168, 255, 162, 177, 203, 255, 169, 187, 218, 231, 157, 174, 204, 233, 146, 161, 190, 255, 129, 145, 175, 255, 125, 141, 169, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 127, 143, 172, 255, 166, 177, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 156, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 135, 152, 182, 255, 136, 147, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 118, 133, 159, 255, 171, 183, 208, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 138, 142, 82, 58, 64, 75, 249, 105, 118, 142, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 116, 130, 157, 255, 118, 133, 160, 255, 116, 131, 157, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 110, 124, 149, 255, 145, 154, 171, 197, 0, 0, 0, 0, 173, 174, 176, 0, 97, 100, 104, 175, 75, 85, 102, 255, 115, 129, 155, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 117, 132, 159, 255, 120, 135, 162, 255, 119, 133, 160, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 110, 124, 149, 255, 130, 138, 152, 175, 226, 227, 230, 7, 0, 0, 0, 0, 107, 110, 114, 162, 70, 77, 92, 255, 113, 127, 153, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 119, 134, 161, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 125, 140, 168, 255, 164, 176, 198, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 141, 170, 255, 153, 166, 191, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 190, 192, 56, 72, 79, 91, 252, 121, 136, 164, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 126, 141, 169, 255, 126, 141, 171, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 127, 143, 172, 255, 166, 178, 198, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 116, 130, 156, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 135, 151, 182, 255, 136, 147, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 118, 133, 159, 255, 171, 183, 207, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 85, 89, 99, 58, 64, 76, 249, 102, 114, 138, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 113, 127, 154, 255, 100, 113, 136, 255, 100, 107, 122, 199, 139, 143, 152, 16, 0, 0, 0, 0, 0, 0, 0, 0, 182, 183, 185, 17, 82, 86, 91, 205, 72, 81, 97, 255, 113, 127, 152, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 116, 131, 158, 255, 102, 115, 138, 255, 114, 120, 133, 221, 194, 196, 200, 36, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 9, 99, 102, 106, 136, 64, 70, 80, 249, 90, 100, 121, 255, 113, 127, 153, 255, 118, 133, 160, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 132, 159, 255, 112, 125, 151, 255, 88, 98, 119, 255, 95, 107, 129, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 124, 139, 168, 255, 164, 176, 198, 248, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 126, 141, 170, 255, 154, 167, 191, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 87, 93, 195, 95, 107, 128, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 123, 138, 166, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 128, 143, 172, 255, 170, 182, 205, 229, 0, 0, 0, 0, 0, 0, 0, 0, 80, 85, 93, 192, 115, 130, 156, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 135, 151, 182, 255, 136, 147, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 72, 80, 240, 107, 120, 144, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 118, 132, 159, 255, 170, 183, 207, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 105, 109, 99, 69, 73, 81, 240, 75, 83, 100, 255, 104, 117, 140, 255, 111, 125, 151, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 111, 124, 149, 255, 97, 109, 131, 255, 84, 92, 108, 254, 118, 123, 130, 190, 142, 144, 148, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 18, 98, 100, 105, 167, 63, 70, 81, 255, 89, 100, 120, 255, 112, 126, 151, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 115, 129, 155, 255, 104, 117, 141, 255, 84, 93, 109, 249, 112, 116, 125, 179, 192, 193, 196, 36, 0, 0, 0, 0, 200, 201, 204, 21, 164, 172, 188, 188, 158, 175, 206, 129, 173, 185, 207, 187, 157, 166, 181, 246, 88, 97, 112, 255, 82, 91, 105, 255, 92, 101, 117, 255, 94, 104, 122, 255, 77, 85, 101, 255, 77, 85, 99, 255, 71, 78, 89, 242, 85, 91, 99, 217, 98, 102, 106, 188, 85, 95, 115, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 123, 139, 167, 255, 147, 161, 187, 180, 0, 0, 0, 0, 114, 117, 120, 89, 83, 93, 112, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 126, 141, 170, 255, 154, 167, 191, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 162, 53, 74, 79, 86, 235, 92, 103, 124, 255, 120, 135, 163, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 123, 138, 166, 255, 114, 128, 154, 255, 91, 102, 123, 255, 74, 83, 100, 255, 122, 137, 165, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 127, 143, 172, 255, 159, 175, 206, 241, 187, 195, 210, 37, 0, 0, 0, 0, 80, 85, 93, 192, 115, 130, 156, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 150, 181, 255, 136, 146, 166, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 75, 81, 240, 71, 79, 93, 255, 73, 80, 95, 255, 73, 80, 95, 255, 73, 80, 95, 255, 73, 81, 95, 255, 73, 81, 95, 255, 79, 88, 103, 255, 160, 170, 190, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 171, 173, 27, 93, 96, 100, 138, 75, 79, 86, 228, 62, 69, 79, 250, 72, 81, 97, 255, 83, 93, 112, 255, 90, 101, 122, 255, 93, 105, 126, 255, 91, 102, 123, 255, 85, 96, 115, 255, 79, 88, 106, 255, 76, 84, 98, 255, 78, 84, 94, 235, 97, 100, 107, 166, 158, 160, 162, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 155, 158, 83, 81, 84, 89, 169, 65, 70, 79, 245, 70, 78, 92, 255, 80, 89, 108, 255, 93, 104, 126, 255, 97, 109, 131, 255, 100, 113, 135, 255, 100, 112, 135, 255, 96, 108, 130, 255, 86, 97, 117, 255, 80, 89, 106, 255, 74, 81, 93, 240, 84, 89, 96, 181, 150, 152, 155, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 229, 10, 82, 87, 96, 225, 120, 135, 163, 255, 132, 148, 178, 255, 137, 154, 183, 255, 145, 161, 186, 255, 151, 164, 186, 255, 154, 166, 187, 255, 177, 188, 207, 255, 154, 162, 175, 165, 134, 137, 140, 56, 185, 187, 188, 32, 217, 219, 222, 3, 131, 135, 141, 152, 94, 106, 128, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 123, 139, 167, 255, 142, 154, 177, 162, 0, 0, 0, 0, 120, 122, 126, 89, 62, 69, 81, 255, 77, 86, 101, 255, 77, 86, 101, 255, 77, 86, 101, 255, 77, 86, 101, 255, 77, 86, 101, 255, 80, 89, 105, 255, 139, 150, 168, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 145, 147, 33, 88, 91, 96, 183, 67, 74, 85, 252, 80, 90, 108, 255, 94, 105, 126, 255, 102, 114, 138, 255, 101, 114, 137, 255, 96, 108, 130, 255, 84, 94, 113, 255, 75, 83, 97, 250, 80, 85, 94, 214, 108, 111, 116, 128, 77, 82, 88, 220, 81, 90, 106, 255, 87, 97, 114, 255, 91, 101, 120, 255, 94, 105, 124, 255, 97, 108, 128, 255, 100, 111, 132, 255, 107, 119, 140, 255, 135, 144, 160, 183, 0, 0, 0, 0, 83, 87, 93, 192, 76, 84, 99, 255, 79, 88, 104, 255, 79, 88, 104, 255, 79, 88, 104, 255, 80, 88, 104, 255, 80, 88, 104, 255, 93, 103, 122, 255, 137, 147, 165, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 139, 142, 56, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 166, 170, 176, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 159, 162, 47, 135, 137, 141, 127, 108, 110, 114, 145, 85, 88, 93, 145, 69, 73, 79, 145, 88, 92, 97, 145, 114, 117, 121, 145, 118, 121, 124, 110, 147, 149, 152, 59, 219, 219, 220, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, 204, 38, 112, 115, 119, 59, 120, 122, 126, 141, 83, 86, 91, 145, 62, 66, 71, 145, 58, 62, 69, 145, 58, 62, 68, 145, 77, 81, 87, 145, 117, 120, 124, 145, 98, 101, 104, 67, 178, 179, 182, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 83, 88, 150, 91, 102, 123, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 135, 149, 174, 255, 183, 199, 225, 228, 182, 197, 222, 196, 179, 190, 212, 196, 154, 167, 189, 202, 118, 131, 154, 255, 117, 131, 158, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 121, 136, 163, 255, 147, 155, 171, 125, 0, 0, 0, 0, 171, 172, 174, 21, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 148, 151, 155, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 157, 159, 53, 131, 133, 136, 136, 98, 101, 105, 145, 65, 70, 75, 145, 75, 79, 84, 145, 100, 103, 108, 145, 109, 112, 116, 100, 161, 162, 165, 49, 0, 0, 0, 0, 0, 0, 0, 0, 151, 153, 155, 49, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 140, 143, 149, 53, 0, 0, 0, 0, 142, 144, 147, 44, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 117, 120, 123, 59, 118, 121, 124, 59, 162, 166, 173, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 146, 149, 90, 64, 71, 83, 252, 115, 129, 155, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 125, 140, 166, 255, 133, 148, 178, 255, 129, 144, 175, 255, 123, 139, 167, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 119, 134, 161, 255, 116, 127, 147, 251, 197, 200, 206, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 103, 108, 173, 72, 80, 96, 255, 115, 129, 155, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 118, 132, 160, 255, 98, 109, 130, 254, 140, 145, 154, 141, 0, 0, 0, 0, 0, 0, 0, 0, 188, 196, 211, 7, 164, 176, 196, 19, 165, 176, 197, 19, 165, 176, 197, 19, 165, 176, 197, 19, 188, 197, 211, 19, 209, 215, 225, 0, 197, 204, 217, 12, 165, 176, 197, 19, 170, 181, 200, 13, 0, 0, 0, 0, 0, 0, 0, 0, 180, 189, 207, 18, 164, 175, 196, 19, 188, 196, 212, 8, 0, 0, 0, 0, 223, 227, 234, 4, 195, 203, 216, 38, 192, 200, 214, 105, 190, 198, 213, 105, 201, 208, 220, 58, 195, 203, 216, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 178, 197, 15, 165, 176, 197, 19, 165, 176, 197, 19, 165, 176, 197, 19, 167, 178, 198, 19, 204, 210, 222, 17, 0, 0, 0, 0, 179, 188, 206, 8, 164, 175, 196, 19, 167, 178, 198, 11, 0, 0, 0, 0, 0, 0, 0, 0, 185, 194, 210, 14, 202, 208, 220, 81, 201, 208, 220, 105, 195, 203, 216, 43, 202, 208, 220, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 11, 107, 110, 114, 181, 62, 69, 81, 252, 101, 113, 136, 255, 117, 131, 158, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 132, 159, 255, 104, 117, 141, 255, 84, 93, 108, 249, 124, 128, 135, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 177, 197, 89, 137, 152, 178, 255, 137, 152, 179, 255, 138, 153, 179, 255, 138, 152, 179, 255, 143, 157, 182, 255, 153, 166, 189, 108, 180, 190, 207, 162, 137, 152, 179, 255, 145, 159, 184, 182, 0, 0, 0, 0, 0, 0, 0, 0, 158, 170, 192, 238, 137, 151, 178, 255, 168, 179, 199, 106, 162, 173, 194, 4, 152, 165, 188, 158, 138, 153, 179, 255, 131, 146, 175, 255, 131, 147, 175, 255, 135, 150, 177, 255, 151, 164, 187, 180, 195, 202, 216, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 154, 180, 210, 137, 152, 179, 255, 138, 153, 179, 255, 138, 153, 179, 255, 138, 152, 179, 255, 150, 163, 187, 247, 185, 194, 209, 75, 157, 169, 192, 112, 137, 151, 178, 255, 164, 175, 196, 210, 200, 207, 219, 1, 167, 178, 198, 115, 141, 156, 181, 237, 132, 147, 175, 255, 132, 147, 175, 255, 135, 150, 177, 255, 149, 162, 186, 204, 181, 191, 208, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 111, 115, 71, 84, 88, 94, 226, 63, 70, 82, 252, 80, 89, 108, 255, 97, 109, 132, 255, 107, 120, 144, 255, 110, 124, 149, 255, 110, 124, 150, 255, 107, 121, 145, 255, 104, 117, 140, 255, 96, 108, 130, 255, 81, 90, 108, 255, 73, 80, 93, 250, 86, 91, 98, 174, 105, 108, 112, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 153, 165, 188, 255, 149, 162, 186, 70, 166, 177, 197, 158, 127, 143, 172, 255, 150, 163, 187, 255, 176, 186, 204, 169, 127, 143, 172, 255, 137, 152, 179, 182, 0, 0, 0, 0, 0, 0, 0, 0, 151, 164, 187, 238, 127, 143, 172, 255, 162, 174, 195, 106, 159, 171, 193, 128, 128, 144, 173, 255, 141, 155, 181, 233, 177, 186, 204, 79, 185, 193, 210, 70, 145, 159, 184, 191, 157, 169, 191, 242, 192, 200, 215, 86, 228, 232, 238, 7, 229, 232, 238, 13, 229, 232, 238, 13, 230, 233, 239, 2, 131, 147, 175, 210, 127, 143, 172, 255, 142, 156, 182, 109, 148, 161, 186, 70, 148, 161, 186, 188, 127, 143, 172, 255, 154, 166, 189, 170, 150, 163, 187, 112, 127, 143, 172, 255, 165, 176, 196, 233, 190, 198, 213, 83, 133, 149, 176, 255, 132, 147, 175, 248, 153, 165, 189, 93, 181, 190, 207, 70, 140, 154, 180, 169, 127, 143, 172, 255, 148, 161, 186, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 164, 166, 59, 118, 120, 124, 141, 77, 81, 86, 158, 91, 94, 100, 226, 95, 98, 104, 244, 93, 96, 102, 244, 88, 92, 98, 207, 65, 69, 75, 158, 99, 101, 106, 158, 130, 132, 135, 94, 199, 199, 201, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 142, 156, 182, 255, 157, 170, 192, 183, 146, 160, 185, 206, 127, 143, 172, 255, 151, 164, 188, 225, 176, 186, 204, 167, 127, 143, 172, 255, 137, 152, 179, 182, 0, 0, 0, 0, 0, 0, 0, 0, 151, 164, 187, 238, 127, 143, 172, 255, 162, 174, 195, 106, 162, 174, 195, 233, 127, 143, 172, 255, 163, 174, 195, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 174, 195, 193, 156, 168, 191, 255, 158, 170, 192, 255, 164, 176, 196, 43, 131, 147, 175, 210, 127, 143, 172, 255, 145, 158, 183, 221, 137, 152, 178, 183, 138, 152, 179, 240, 128, 144, 173, 255, 161, 172, 194, 138, 150, 163, 187, 112, 127, 143, 172, 255, 165, 176, 196, 233, 159, 171, 193, 139, 127, 143, 172, 255, 154, 167, 189, 206, 0, 0, 0, 0, 0, 0, 0, 0, 197, 204, 217, 64, 127, 143, 172, 255, 132, 147, 175, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 136, 151, 178, 255, 160, 172, 194, 247, 160, 172, 194, 247, 158, 170, 192, 191, 186, 194, 210, 54, 175, 185, 203, 162, 127, 143, 172, 255, 137, 151, 178, 185, 182, 191, 207, 0, 220, 225, 233, 2, 148, 162, 186, 239, 127, 143, 172, 255, 168, 179, 198, 106, 157, 169, 191, 201, 127, 143, 172, 255, 162, 174, 195, 174, 209, 215, 225, 1, 0, 0, 0, 0, 157, 169, 191, 53, 165, 177, 197, 94, 188, 196, 212, 45, 171, 182, 201, 182, 168, 179, 199, 247, 169, 180, 199, 247, 173, 184, 202, 41, 131, 147, 175, 210, 127, 143, 172, 255, 150, 163, 187, 208, 141, 155, 181, 234, 127, 143, 172, 255, 149, 162, 186, 176, 218, 222, 231, 16, 150, 163, 187, 112, 127, 143, 172, 255, 165, 176, 196, 233, 162, 173, 195, 131, 127, 143, 172, 255, 146, 159, 184, 214, 190, 198, 213, 2, 0, 0, 0, 0, 174, 184, 202, 74, 127, 143, 172, 255, 139, 153, 180, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 172, 193, 89, 127, 143, 172, 255, 161, 172, 194, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 196, 212, 101, 130, 146, 174, 255, 132, 147, 175, 255, 160, 172, 194, 181, 163, 175, 195, 198, 130, 146, 174, 255, 135, 150, 177, 254, 183, 192, 208, 46, 172, 182, 201, 86, 133, 149, 176, 254, 134, 149, 176, 255, 161, 172, 194, 186, 160, 172, 193, 177, 132, 148, 176, 245, 134, 149, 177, 254, 184, 193, 209, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 210, 127, 143, 172, 255, 127, 143, 172, 48, 176, 186, 204, 88, 131, 146, 175, 254, 137, 152, 179, 246, 183, 192, 208, 41, 150, 163, 187, 112, 127, 143, 172, 255, 164, 176, 196, 233, 188, 197, 212, 39, 136, 150, 178, 230, 129, 145, 173, 255, 152, 165, 188, 198, 170, 180, 200, 177, 139, 153, 180, 233, 128, 144, 173, 255, 166, 177, 197, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 175, 195, 58, 134, 149, 176, 166, 165, 176, 196, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 185, 203, 132, 155, 167, 190, 220, 151, 164, 188, 252, 152, 165, 188, 252, 151, 164, 188, 201, 173, 183, 202, 95, 0, 0, 0, 0, 0, 0, 0, 0, 182, 191, 208, 93, 148, 161, 186, 186, 152, 165, 188, 252, 153, 166, 189, 252, 157, 170, 192, 206, 172, 182, 201, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 151, 178, 137, 134, 149, 177, 166, 134, 149, 177, 32, 0, 0, 0, 0, 150, 163, 186, 132, 134, 149, 176, 166, 171, 182, 201, 121, 154, 166, 189, 73, 134, 149, 176, 166, 168, 179, 198, 152, 0, 0, 0, 0, 171, 182, 201, 39, 151, 164, 188, 172, 156, 168, 191, 252, 151, 164, 187, 252, 154, 166, 189, 220, 171, 182, 201, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(138, 32, imgdata); + return image; +} + +static Ihandle* load_image_Petrobras(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 21, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 4, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 1, 0, 0, 0, 0, 217, 231, 222, 18, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 21, 0, 0, 0, 0, 0, 0, 0, 0, 218, 232, 223, 27, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 205, 185, 9, 56, 160, 112, 55, 65, 165, 120, 95, 61, 164, 118, 91, 86, 170, 129, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 16, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 18, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 7, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 29, 217, 231, 222, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 180, 144, 41, 52, 160, 111, 79, 61, 163, 116, 96, 60, 163, 116, 74, 135, 191, 162, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 164, 212, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 242, 236, 255, 119, 191, 159, 255, 4, 142, 82, 255, 3, 141, 81, 255, 3, 141, 81, 255, 22, 149, 93, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 206, 231, 219, 255, 49, 161, 112, 255, 3, 141, 81, 255, 3, 141, 81, 255, 3, 141, 81, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 146, 90, 224, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 7, 142, 83, 252, 20, 147, 91, 221, 36, 152, 99, 118, 192, 219, 204, 6, 0, 0, 0, 0, 0, 0, 0, 0, 52, 159, 111, 91, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 16, 146, 89, 246, 153, 200, 175, 8, 0, 0, 0, 0, 21, 148, 91, 202, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 27, 150, 95, 177, 0, 0, 0, 0, 110, 180, 145, 23, 9, 143, 85, 252, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 3, 141, 81, 255, 6, 142, 82, 251, 22, 148, 93, 235, 21, 147, 91, 158, 100, 177, 139, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 171, 130, 22, 28, 149, 95, 148, 11, 144, 86, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 23, 148, 92, 203, 84, 172, 131, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 148, 91, 203, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 3, 141, 81, 252, 19, 147, 90, 239, 25, 149, 93, 168, 82, 171, 129, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 148, 93, 214, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 2, 141, 80, 252, 17, 146, 89, 242, 26, 149, 94, 189, 57, 160, 113, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 150, 96, 161, 4, 141, 81, 255, 4, 141, 81, 255, 4, 141, 81, 255, 36, 154, 102, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 204, 185, 1, 51, 159, 109, 94, 21, 147, 91, 219, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 9, 143, 84, 245, 43, 156, 105, 111, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 232, 244, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 178, 138, 255, 0, 140, 79, 255, 0, 140, 79, 255, 88, 178, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 237, 228, 255, 3, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 166, 122, 43, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 153, 100, 114, 0, 0, 0, 0, 0, 0, 0, 0, 29, 151, 96, 164, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 149, 93, 181, 0, 0, 0, 0, 113, 182, 148, 22, 6, 142, 82, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 104, 0, 0, 0, 0, 48, 158, 108, 93, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 162, 116, 66, 11, 144, 85, 233, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 90, 224, 143, 191, 164, 9, 0, 0, 0, 0, 0, 0, 0, 0, 115, 182, 148, 25, 5, 141, 82, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 90, 164, 0, 0, 0, 0, 0, 0, 0, 0, 111, 181, 146, 32, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 89, 233, 222, 234, 226, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 160, 112, 72, 2, 141, 80, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 13, 144, 86, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 151, 98, 136, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 253, 80, 170, 127, 41, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 54, 163, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 76, 172, 130, 255, 56, 164, 116, 255, 56, 164, 117, 255, 165, 213, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 206, 180, 255, 0, 140, 79, 255, 0, 140, 79, 255, 162, 212, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 222, 205, 255, 56, 164, 116, 255, 56, 164, 116, 255, 76, 173, 130, 255, 234, 245, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 153, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 152, 99, 117, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 185, 16, 146, 89, 173, 14, 145, 87, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 149, 95, 183, 0, 0, 0, 0, 180, 208, 190, 4, 17, 146, 89, 233, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 239, 0, 140, 79, 160, 0, 140, 79, 160, 0, 140, 79, 160, 0, 140, 79, 160, 0, 140, 79, 160, 32, 151, 98, 76, 0, 0, 0, 0, 65, 163, 117, 95, 13, 144, 86, 255, 13, 144, 86, 255, 11, 143, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 255, 13, 144, 86, 255, 13, 144, 86, 255, 16, 145, 87, 253, 95, 174, 136, 31, 0, 0, 0, 0, 29, 151, 97, 168, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 7, 143, 83, 169, 0, 140, 79, 160, 18, 147, 90, 214, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 149, 93, 191, 0, 0, 0, 0, 0, 0, 0, 0, 66, 163, 117, 53, 8, 142, 83, 244, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 83, 245, 23, 148, 93, 155, 25, 148, 93, 145, 9, 143, 85, 248, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 157, 106, 84, 0, 0, 0, 0, 0, 0, 0, 0, 43, 155, 104, 94, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 194, 0, 140, 79, 160, 24, 149, 94, 205, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 178, 0, 0, 0, 0, 0, 0, 0, 0, 43, 156, 105, 104, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 191, 0, 140, 79, 160, 23, 149, 93, 194, 2, 140, 80, 254, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 85, 249, 217, 231, 222, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 173, 134, 11, 13, 145, 87, 222, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 151, 97, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 157, 107, 55, 2, 141, 80, 254, 0, 140, 79, 255, 0, 140, 79, 255, 26, 149, 94, 168, 46, 155, 104, 94, 16, 145, 88, 176, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 50, 156, 107, 88, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 128, 196, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 236, 226, 255, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 126, 195, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 192, 160, 255, 0, 140, 79, 255, 4, 142, 82, 255, 232, 243, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 185, 148, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 204, 230, 218, 255, 255, 255, 255, 255, 251, 253, 252, 255, 17, 146, 89, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 91, 190, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 254, 113, 181, 146, 24, 0, 0, 0, 0, 101, 174, 137, 28, 4, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 31, 152, 98, 161, 0, 0, 0, 0, 81, 170, 128, 54, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 150, 95, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 189, 162, 3, 117, 174, 140, 5, 117, 174, 140, 5, 59, 161, 114, 89, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 153, 100, 131, 117, 174, 140, 5, 117, 174, 140, 5, 117, 174, 140, 5, 0, 0, 0, 0, 185, 211, 194, 2, 15, 145, 88, 234, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 222, 207, 224, 213, 0, 0, 0, 0, 0, 116, 183, 149, 25, 2, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 26, 149, 94, 124, 0, 0, 0, 0, 167, 205, 184, 8, 16, 146, 88, 215, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 246, 65, 165, 119, 55, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 97, 131, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 158, 108, 129, 0, 0, 0, 0, 0, 0, 0, 0, 23, 148, 92, 166, 0, 140, 79, 255, 0, 140, 79, 255, 2, 140, 80, 255, 73, 166, 123, 45, 0, 0, 0, 0, 68, 165, 119, 42, 1, 140, 80, 255, 0, 140, 79, 255, 1, 140, 79, 255, 49, 157, 107, 91, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 94, 177, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 89, 172, 132, 35, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 93, 219, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 90, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 153, 100, 146, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 91, 248, 0, 140, 79, 255, 0, 140, 79, 255, 15, 146, 88, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 150, 96, 151, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 152, 99, 137, 112, 181, 146, 21, 47, 154, 104, 23, 0, 140, 79, 72, 0, 140, 79, 72, 0, 140, 79, 72, 59, 161, 114, 25, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 201, 229, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 245, 240, 255, 194, 226, 211, 255, 194, 226, 211, 255, 203, 230, 217, 255, 252, 253, 253, 255, 255, 255, 255, 255, 224, 240, 232, 255, 20, 148, 92, 255, 0, 140, 79, 255, 55, 163, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 185, 148, 255, 72, 172, 129, 255, 78, 174, 132, 255, 153, 207, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 163, 212, 190, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 185, 154, 13, 8, 143, 84, 249, 0, 140, 79, 255, 0, 140, 79, 255, 18, 147, 90, 205, 0, 0, 0, 0, 135, 191, 163, 3, 37, 152, 99, 132, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 156, 106, 75, 0, 0, 0, 0, 29, 150, 96, 122, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 87, 229, 19, 146, 89, 205, 19, 146, 89, 205, 19, 146, 89, 205, 33, 151, 97, 197, 180, 208, 190, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 98, 158, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 77, 168, 125, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 164, 119, 54, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 21, 147, 91, 171, 0, 140, 79, 39, 53, 160, 112, 59, 33, 152, 98, 172, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 232, 78, 166, 123, 19, 0, 0, 0, 0, 41, 154, 102, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 150, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 154, 103, 108, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 155, 104, 116, 0, 0, 0, 0, 158, 201, 178, 1, 16, 146, 88, 238, 0, 140, 79, 255, 0, 140, 79, 255, 8, 142, 83, 250, 31, 149, 96, 141, 22, 147, 91, 142, 13, 144, 86, 223, 0, 140, 79, 255, 1, 140, 79, 254, 31, 150, 96, 145, 173, 204, 185, 1, 0, 0, 0, 0, 135, 192, 163, 7, 14, 145, 87, 243, 0, 140, 79, 255, 0, 140, 79, 255, 13, 145, 87, 227, 3, 141, 81, 39, 40, 156, 105, 48, 33, 151, 97, 117, 4, 141, 81, 254, 0, 140, 79, 255, 6, 142, 82, 254, 54, 159, 111, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 159, 111, 54, 4, 141, 81, 252, 0, 140, 79, 255, 7, 142, 83, 246, 54, 162, 113, 139, 0, 140, 79, 255, 0, 140, 79, 255, 21, 148, 92, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 154, 101, 178, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 251, 22, 148, 92, 204, 36, 153, 100, 123, 112, 182, 147, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 149, 94, 255, 252, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 252, 255, 57, 163, 116, 255, 0, 140, 79, 255, 0, 140, 79, 255, 129, 197, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 219, 200, 255, 13, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 155, 104, 80, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 245, 0, 140, 79, 227, 8, 143, 84, 241, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 93, 195, 147, 189, 163, 2, 0, 0, 0, 0, 17, 146, 89, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 1, 16, 146, 88, 224, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 88, 236, 127, 187, 156, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 151, 97, 126, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 19, 147, 90, 199, 79, 170, 128, 49, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 90, 186, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 107, 178, 142, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 152, 98, 157, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 70, 166, 121, 63, 0, 0, 0, 0, 75, 168, 124, 59, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 229, 91, 173, 133, 40, 0, 0, 0, 0, 0, 0, 0, 0, 60, 162, 115, 65, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 88, 227, 53, 159, 110, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 194, 167, 7, 18, 146, 90, 212, 0, 140, 79, 255, 0, 140, 79, 255, 28, 149, 95, 131, 0, 140, 79, 83, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 248, 208, 225, 214, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 162, 115, 81, 7, 142, 83, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 231, 88, 171, 131, 30, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 95, 181, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 250, 247, 255, 122, 192, 160, 255, 122, 192, 160, 255, 127, 196, 165, 255, 226, 241, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 224, 209, 255, 0, 140, 79, 255, 0, 140, 79, 255, 203, 230, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 251, 249, 255, 239, 248, 244, 255, 245, 250, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 248, 245, 255, 62, 166, 120, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 94, 154, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 195, 58, 155, 107, 17, 0, 0, 0, 0, 117, 183, 150, 18, 7, 143, 83, 251, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 86, 250, 24, 149, 94, 239, 24, 149, 94, 239, 24, 149, 94, 239, 24, 149, 94, 239, 50, 158, 108, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 167, 124, 43, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 90, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 201, 139, 193, 165, 13, 0, 0, 0, 0, 196, 218, 204, 5, 14, 145, 87, 243, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 90, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 189, 158, 8, 12, 144, 86, 230, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 87, 226, 198, 218, 205, 5, 0, 0, 0, 0, 33, 152, 99, 132, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 155, 102, 193, 42, 157, 106, 173, 24, 148, 93, 181, 3, 141, 80, 252, 0, 140, 79, 255, 0, 140, 79, 255, 21, 147, 91, 164, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 232, 56, 159, 111, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 96, 123, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 84, 229, 128, 189, 158, 16, 0, 140, 79, 83, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 112, 177, 142, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 166, 122, 58, 26, 150, 95, 169, 15, 145, 88, 240, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 157, 106, 124, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 169, 214, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 220, 202, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 133, 199, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 248, 245, 255, 5, 141, 82, 255, 24, 150, 95, 255, 252, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 170, 126, 255, 0, 140, 79, 255, 7, 142, 83, 255, 164, 212, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 211, 189, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 221, 209, 2, 15, 145, 88, 225, 0, 140, 79, 255, 0, 140, 79, 255, 9, 143, 84, 249, 26, 150, 95, 218, 26, 150, 95, 218, 20, 148, 91, 200, 27, 150, 95, 162, 57, 161, 113, 84, 117, 174, 140, 2, 0, 0, 0, 0, 0, 0, 0, 0, 49, 157, 108, 87, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 154, 102, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 151, 97, 116, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 155, 105, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 179, 144, 18, 8, 143, 83, 253, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 211, 61, 166, 119, 118, 49, 159, 110, 122, 14, 145, 87, 227, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 148, 93, 49, 0, 0, 0, 0, 131, 181, 151, 15, 9, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 21, 147, 91, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 103, 130, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 157, 106, 112, 0, 0, 0, 0, 0, 0, 0, 0, 22, 148, 92, 204, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 250, 135, 191, 162, 17, 0, 0, 0, 0, 147, 189, 163, 0, 16, 145, 88, 227, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 169, 0, 0, 0, 0, 0, 0, 0, 0, 18, 146, 90, 210, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 83, 245, 61, 165, 119, 118, 56, 162, 115, 118, 18, 146, 90, 192, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 158, 108, 130, 0, 0, 0, 0, 0, 0, 0, 0, 79, 170, 128, 47, 8, 143, 83, 249, 0, 140, 79, 255, 0, 140, 79, 255, 27, 151, 96, 222, 42, 158, 107, 171, 25, 150, 95, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 115, 186, 153, 46, 0, 0, 0, 0, 163, 206, 184, 8, 81, 170, 129, 71, 81, 170, 129, 71, 81, 170, 129, 71, 98, 177, 140, 40, 179, 208, 190, 6, 62, 162, 115, 55, 23, 149, 93, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 101, 102, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 236, 246, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 198, 169, 255, 41, 156, 105, 255, 42, 157, 106, 255, 75, 172, 129, 255, 229, 242, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 237, 227, 255, 0, 140, 79, 255, 97, 182, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 249, 247, 255, 10, 144, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 111, 190, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 217, 197, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 167, 123, 45, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 160, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 160, 112, 160, 57, 164, 117, 126, 57, 164, 117, 126, 57, 164, 117, 126, 57, 164, 117, 126, 67, 168, 123, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 146, 89, 188, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 251, 118, 184, 150, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 158, 109, 91, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 155, 103, 123, 0, 0, 0, 0, 0, 0, 0, 0, 32, 152, 98, 162, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 253, 114, 181, 147, 27, 0, 0, 0, 0, 185, 211, 194, 8, 14, 145, 87, 246, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 33, 151, 98, 120, 48, 156, 106, 65, 34, 152, 99, 148, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 148, 93, 194, 153, 197, 171, 4, 0, 0, 0, 0, 114, 181, 147, 24, 7, 142, 83, 253, 0, 140, 79, 255, 0, 140, 79, 255, 20, 148, 91, 234, 57, 164, 117, 126, 55, 163, 115, 126, 23, 148, 92, 171, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 48, 158, 108, 100, 0, 0, 0, 0, 106, 178, 141, 30, 3, 141, 81, 253, 0, 140, 79, 255, 0, 140, 79, 255, 22, 148, 92, 184, 0, 0, 0, 0, 0, 0, 0, 0, 32, 152, 99, 89, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 157, 106, 93, 0, 0, 0, 0, 211, 228, 218, 4, 19, 146, 89, 197, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 48, 154, 104, 53, 0, 0, 0, 0, 107, 176, 140, 44, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 21, 148, 92, 207, 100, 175, 137, 36, 96, 175, 136, 41, 23, 148, 93, 183, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 243, 93, 173, 134, 22, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 61, 166, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 188, 153, 255, 0, 140, 79, 255, 170, 215, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 220, 203, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 105, 186, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 221, 203, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 97, 117, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 155, 105, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 194, 168, 2, 16, 146, 88, 231, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 150, 96, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 180, 145, 13, 9, 143, 84, 249, 0, 140, 79, 255, 0, 140, 79, 255, 21, 148, 92, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 150, 95, 164, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 81, 169, 127, 49, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 91, 217, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 96, 172, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 203, 85, 168, 128, 18, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 109, 96, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 150, 95, 198, 107, 173, 136, 3, 0, 0, 0, 0, 38, 153, 101, 100, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 102, 112, 0, 0, 0, 0, 0, 0, 0, 0, 25, 149, 94, 149, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 254, 115, 183, 150, 26, 0, 0, 0, 0, 46, 157, 107, 113, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 253, 0, 140, 79, 207, 0, 140, 79, 207, 0, 140, 79, 207, 0, 140, 79, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 70, 167, 123, 85, 0, 0, 0, 0, 156, 202, 179, 17, 13, 145, 87, 246, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 53, 160, 111, 108, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 135, 200, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 245, 240, 255, 114, 189, 155, 255, 1, 140, 80, 255, 6, 142, 83, 255, 238, 246, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 188, 153, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 99, 183, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 226, 212, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 146, 90, 190, 0, 140, 79, 255, 0, 140, 79, 255, 5, 141, 81, 251, 116, 183, 149, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 169, 127, 50, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 158, 108, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 157, 108, 81, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 99, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 218, 204, 5, 15, 145, 88, 232, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 91, 235, 0, 0, 0, 0, 0, 0, 0, 0, 159, 197, 174, 17, 5, 141, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 160, 114, 22, 16, 145, 88, 206, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 85, 247, 38, 154, 102, 140, 102, 173, 136, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 93, 165, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 87, 242, 36, 153, 101, 146, 99, 173, 134, 11, 0, 0, 0, 0, 0, 0, 0, 0, 22, 148, 92, 173, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 98, 177, 139, 39, 0, 0, 0, 0, 0, 0, 0, 0, 19, 147, 91, 209, 0, 140, 79, 255, 0, 140, 79, 255, 19, 147, 90, 226, 227, 237, 231, 4, 75, 167, 123, 31, 8, 143, 83, 241, 0, 140, 79, 255, 0, 140, 79, 255, 27, 149, 95, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 79, 83, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 153, 100, 96, 0, 0, 0, 0, 0, 0, 0, 0, 52, 160, 111, 101, 5, 142, 82, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 231, 47, 156, 106, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 158, 106, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 55, 163, 116, 255, 36, 155, 102, 255, 4, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 255, 59, 165, 119, 255, 59, 165, 119, 255, 59, 165, 119, 255, 15, 146, 89, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 153, 99, 255, 86, 177, 137, 255, 86, 177, 137, 255, 68, 169, 124, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 173, 132, 87, 75, 171, 128, 97, 75, 171, 128, 97, 86, 175, 135, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 189, 156, 40, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 124, 190, 157, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 178, 139, 47, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 81, 170, 127, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 179, 143, 6, 77, 172, 129, 97, 75, 171, 128, 97, 75, 171, 128, 97, 80, 172, 130, 66, 0, 0, 0, 0, 0, 0, 0, 0, 99, 177, 138, 12, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 88, 176, 136, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 207, 187, 7, 57, 161, 113, 87, 29, 151, 97, 143, 35, 153, 101, 163, 27, 150, 95, 145, 42, 155, 104, 96, 124, 186, 154, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 177, 138, 81, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 49, 159, 110, 78, 86, 171, 130, 51, 202, 222, 210, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 178, 139, 85, 75, 171, 128, 97, 75, 171, 128, 97, 83, 174, 133, 91, 227, 237, 231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 88, 177, 137, 87, 75, 171, 128, 97, 75, 171, 128, 97, 80, 173, 131, 96, 0, 0, 0, 0, 101, 182, 145, 47, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 80, 169, 126, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 171, 128, 32, 75, 171, 128, 97, 75, 171, 128, 97, 75, 171, 128, 97, 102, 183, 146, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 160, 113, 32, 31, 151, 97, 121, 38, 154, 103, 163, 38, 155, 103, 163, 26, 149, 94, 127, 55, 159, 110, 72, 148, 191, 164, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(158, 32, imgdata); + return image; +} + diff --git a/iup/srcimglib/iup_imglib_icons8.h b/iup/srcimglib/iup_imglib_icons8.h new file mode 100755 index 0000000..b4e7b15 --- /dev/null +++ b/iup/srcimglib/iup_imglib_icons8.h @@ -0,0 +1,1788 @@ +static Ihandle* load_image_Petrobras8(void) +{ + unsigned char imgdata[] = { + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 61, 60, 61, 60, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 61, 61, 61, 61, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 61, 60, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 61, 61, 61, 61, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 60, 61, 61, 61, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 61, 60, 61, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 61, 60, 61, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 89, 89, 89, 89, 93, 102, 121, 123, 121, 123, 117, 95, 93, 89, 89, 89, 89, 89, 116, 122, 122, 123, 122, 116, 93, 89, 89, 89, 89, 89, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 76, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 108, 84, 79, 92, 255, 255, 255, 255, + 124, 5, 2, 5, 5, 2, 50, 123, 123, 122, 123, 122, 122, 89, 52, 2, 5, 1, 11, 110, 121, 123, 121, 121, 121, 115, 74, 25, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 20, 19, 22, 19, 21, 18, 31, 53, 105, 255, 255, 255, 25, 20, 23, 18, 23, 20, 19, 20, 23, 94, 255, 64, 18, 23, 18, 23, 18, 21, 18, 23, 20, 56, 255, 111, 22, 19, 20, 19, 20, 19, 23, 40, 65, 255, 255, 255, 255, 255, 97, 52, 20, 4, 2, 5, 18, 68, 255, 255, 255, 255, 88, 23, 21, 18, 22, 18, 20, 24, 46, 89, 255, 255, 255, 71, 19, 20, 19, 20, 19, 20, 26, 49, 87, 255, 255, 255, 255, 255, 255, 66, 18, 22, 19, 64, 255, 255, 255, 255, 255, 255, 72, 36, 5, 5, 2, 5, 29, 96, 255, 255, + 124, 5, 4, 2, 4, 5, 66, 122, 121, 120, 122, 118, 122, 122, 123, 48, 5, 4, 42, 123, 121, 118, 119, 122, 122, 122, 118, 75, 4, 4, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 5, 2, 4, 1, 4, 5, 5, 5, 32, 255, 255, 81, 5, 5, 2, 4, 2, 4, 5, 4, 25, 255, 255, 27, 2, 4, 2, 5, 2, 4, 2, 4, 5, 68, 255, 66, 5, 5, 5, 4, 5, 5, 1, 5, 5, 66, 255, 255, 255, 79, 17, 5, 5, 4, 5, 4, 5, 5, 68, 255, 255, 255, 56, 4, 5, 2, 5, 5, 5, 5, 5, 17, 113, 255, 255, 38, 5, 5, 4, 5, 4, 5, 5, 5, 18, 109, 255, 255, 255, 255, 93, 10, 5, 2, 5, 53, 255, 255, 255, 255, 255, 55, 5, 4, 2, 4, 5, 5, 2, 29, 255, 255, + 124, 5, 5, 5, 5, 2, 102, 123, 123, 45, 21, 21, 64, 123, 121, 66, 5, 2, 64, 122, 123, 69, 23, 20, 36, 98, 122, 108, 2, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 5, 4, 24, 53, 42, 2, 5, 4, 2, 115, 255, 57, 5, 1, 5, 44, 53, 52, 53, 52, 81, 255, 94, 4, 5, 5, 5, 4, 5, 5, 5, 5, 5, 99, 255, 53, 5, 4, 8, 51, 53, 25, 5, 5, 1, 56, 255, 255, 78, 5, 2, 5, 25, 53, 41, 4, 2, 4, 27, 255, 255, 255, 36, 5, 5, 17, 52, 48, 18, 2, 5, 5, 255, 255, 108, 10, 4, 2, 25, 51, 50, 8, 5, 1, 5, 97, 255, 255, 255, 255, 32, 5, 2, 5, 5, 45, 255, 255, 255, 255, 84, 5, 1, 5, 53, 66, 30, 5, 5, 5, 255, 255, + 124, 4, 5, 1, 5, 38, 118, 118, 110, 10, 4, 2, 49, 118, 122, 56, 5, 4, 93, 123, 122, 45, 1, 5, 2, 88, 118, 89, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 4, 2, 5, 57, 255, 255, 50, 2, 5, 13, 255, 255, 36, 5, 5, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 2, 5, 2, 55, 255, 255, 255, 255, 255, 15, 5, 5, 38, 255, 255, 80, 1, 5, 5, 78, 255, 98, 17, 5, 4, 30, 113, 255, 255, 27, 5, 5, 4, 255, 255, 102, 5, 5, 5, 54, 255, 255, 44, 4, 5, 42, 255, 255, 71, 5, 2, 5, 70, 255, 255, 53, 5, 5, 25, 255, 255, 255, 255, 66, 2, 1, 7, 5, 5, 39, 255, 255, 255, 255, 52, 5, 5, 5, 74, 255, 94, 72, 72, 72, 255, 255, + 124, 5, 2, 5, 5, 58, 122, 122, 105, 75, 77, 82, 111, 122, 96, 14, 5, 29, 117, 122, 123, 57, 52, 53, 77, 122, 122, 47, 4, 4, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 2, 5, 4, 79, 255, 101, 23, 5, 5, 48, 255, 103, 4, 5, 2, 18, 45, 45, 45, 45, 107, 255, 255, 255, 255, 255, 63, 5, 4, 5, 79, 255, 255, 255, 255, 89, 2, 5, 4, 45, 93, 83, 34, 5, 5, 31, 255, 255, 56, 5, 5, 5, 89, 255, 255, 255, 42, 5, 4, 8, 255, 255, 70, 5, 2, 5, 31, 59, 50, 1, 4, 29, 101, 255, 255, 53, 5, 4, 5, 72, 91, 74, 24, 5, 5, 71, 255, 255, 255, 101, 14, 5, 11, 48, 2, 5, 21, 255, 255, 255, 255, 48, 5, 5, 2, 5, 16, 45, 76, 255, 255, 255, 255, + 124, 5, 5, 4, 5, 86, 118, 121, 122, 122, 122, 123, 118, 117, 39, 5, 5, 54, 122, 123, 122, 121, 122, 123, 121, 110, 48, 5, 2, 5, 2, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 5, 5, 5, 18, 19, 6, 2, 5, 11, 93, 255, 68, 1, 5, 5, 4, 5, 1, 5, 20, 255, 255, 255, 255, 255, 255, 43, 5, 5, 16, 255, 255, 255, 255, 255, 59, 4, 5, 5, 5, 1, 5, 4, 11, 50, 101, 255, 255, 15, 1, 5, 36, 255, 255, 255, 255, 18, 2, 5, 37, 255, 255, 49, 4, 5, 4, 2, 4, 5, 2, 5, 68, 255, 255, 255, 21, 5, 2, 5, 4, 5, 5, 5, 19, 68, 255, 255, 255, 255, 36, 5, 5, 57, 72, 5, 1, 17, 255, 255, 255, 255, 79, 4, 5, 4, 5, 4, 5, 5, 36, 255, 255, 255, + 124, 5, 1, 5, 19, 116, 122, 119, 54, 52, 50, 85, 122, 122, 86, 4, 5, 76, 121, 118, 101, 88, 95, 122, 123, 96, 25, 5, 4, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 8, 4, 5, 4, 5, 5, 4, 5, 18, 87, 255, 255, 52, 5, 5, 2, 18, 23, 23, 20, 59, 255, 255, 255, 255, 255, 112, 8, 4, 5, 45, 255, 255, 255, 255, 255, 39, 2, 5, 1, 5, 5, 5, 2, 1, 52, 255, 255, 93, 5, 5, 5, 54, 255, 255, 255, 79, 5, 5, 4, 63, 255, 255, 18, 5, 2, 28, 56, 53, 25, 5, 4, 12, 255, 255, 88, 5, 4, 5, 5, 2, 5, 1, 5, 17, 85, 255, 255, 255, 74, 5, 5, 21, 255, 72, 5, 4, 2, 255, 255, 255, 255, 255, 89, 49, 19, 5, 5, 2, 4, 2, 84, 255, 255, + 124, 5, 5, 5, 52, 121, 123, 87, 1, 5, 5, 50, 121, 122, 118, 5, 8, 111, 122, 121, 33, 2, 5, 64, 118, 121, 56, 5, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 5, 5, 2, 32, 48, 45, 53, 64, 105, 255, 255, 255, 17, 2, 5, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 2, 5, 5, 66, 255, 255, 255, 255, 111, 6, 4, 4, 35, 66, 63, 24, 5, 5, 5, 255, 255, 76, 5, 1, 5, 56, 255, 255, 111, 31, 5, 5, 24, 111, 255, 83, 5, 2, 4, 58, 255, 255, 62, 5, 5, 9, 115, 255, 63, 5, 1, 5, 48, 65, 45, 5, 5, 5, 53, 255, 255, 102, 21, 5, 2, 24, 52, 32, 2, 1, 5, 102, 255, 111, 78, 76, 76, 100, 255, 86, 29, 5, 2, 5, 104, 255, 255, + 124, 5, 1, 5, 67, 123, 121, 84, 45, 45, 49, 93, 118, 119, 93, 1, 46, 122, 117, 97, 5, 4, 5, 54, 122, 122, 58, 4, 2, 4, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 5, 4, 5, 96, 255, 255, 255, 255, 255, 255, 255, 85, 4, 2, 4, 31, 66, 64, 66, 64, 66, 255, 255, 255, 255, 255, 55, 4, 5, 2, 96, 255, 255, 255, 255, 71, 4, 2, 6, 69, 255, 255, 48, 5, 5, 23, 255, 255, 95, 2, 5, 5, 21, 66, 70, 32, 2, 5, 4, 80, 255, 255, 57, 5, 5, 5, 41, 66, 56, 21, 5, 4, 41, 255, 255, 42, 5, 5, 18, 255, 255, 101, 2, 4, 4, 58, 255, 255, 43, 5, 5, 5, 5, 5, 5, 5, 5, 5, 89, 255, 88, 3, 5, 5, 38, 88, 82, 29, 5, 5, 39, 255, 255, 255, + 124, 5, 5, 8, 108, 122, 123, 123, 123, 123, 123, 122, 122, 117, 44, 5, 63, 123, 121, 64, 5, 2, 5, 54, 117, 122, 64, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 5, 5, 27, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 4, 5, 1, 5, 4, 2, 4, 35, 255, 255, 255, 255, 255, 28, 2, 5, 36, 255, 255, 255, 255, 255, 53, 2, 5, 4, 103, 255, 255, 17, 1, 5, 52, 255, 255, 255, 29, 5, 4, 2, 5, 2, 5, 5, 14, 71, 255, 255, 255, 37, 4, 1, 5, 1, 5, 2, 4, 5, 18, 93, 255, 108, 10, 2, 5, 45, 255, 255, 71, 5, 2, 5, 84, 255, 79, 5, 5, 4, 42, 45, 48, 29, 5, 1, 5, 76, 255, 108, 10, 4, 5, 1, 5, 4, 5, 4, 18, 93, 255, 255, 255, + 124, 5, 4, 36, 122, 121, 122, 122, 122, 121, 122, 104, 78, 36, 4, 1, 97, 122, 122, 50, 5, 4, 5, 49, 122, 123, 66, 5, 1, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 1, 4, 5, 56, 255, 255, 255, 255, 255, 255, 255, 255, 36, 5, 5, 5, 5, 5, 5, 5, 5, 56, 255, 255, 255, 255, 90, 5, 5, 4, 57, 255, 255, 255, 255, 255, 23, 5, 4, 36, 255, 255, 93, 4, 5, 6, 63, 255, 255, 255, 96, 25, 5, 5, 5, 5, 5, 34, 88, 255, 255, 255, 110, 1, 5, 5, 5, 5, 5, 4, 11, 49, 96, 255, 255, 74, 5, 5, 5, 66, 255, 255, 55, 5, 4, 2, 107, 112, 25, 4, 5, 42, 255, 255, 255, 73, 5, 5, 5, 66, 255, 255, 84, 11, 4, 5, 5, 2, 5, 39, 97, 255, 255, 255, 255, + 124, 5, 2, 5, 5, 5, 5, 2, 5, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 11, 19, 23, 14, 5, 5, 4, 2, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 76, 77, 78, 101, 255, 255, 255, 255, 255, 255, 255, 255, 78, 77, 78, 77, 76, 79, 76, 77, 78, 101, 255, 255, 255, 255, 105, 78, 77, 76, 102, 255, 255, 255, 255, 255, 78, 77, 77, 94, 255, 255, 110, 77, 78, 77, 96, 255, 255, 255, 255, 255, 78, 63, 59, 66, 88, 255, 255, 255, 255, 255, 110, 76, 77, 78, 77, 76, 84, 93, 255, 255, 255, 255, 255, 96, 76, 77, 76, 110, 255, 255, 94, 77, 77, 78, 114, 106, 76, 79, 76, 105, 255, 255, 255, 106, 76, 77, 78, 101, 255, 255, 255, 101, 66, 62, 59, 70, 101, 255, 255, 255, 255, 255, 255, + 124, 5, 4, 5, 1, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 5, 4, 1, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 5, 2, 5, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 1, 5, 1, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 4, 2, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 5, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(157, 32, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "4 130 92"); + IupSetAttribute(image, "2", "4 134 92"); + IupSetAttribute(image, "3", "4 138 92"); + IupSetAttribute(image, "4", "4 130 100"); + IupSetAttribute(image, "5", "4 134 100"); + IupSetAttribute(image, "6", "4 138 100"); + IupSetAttribute(image, "7", "12 134 108"); + IupSetAttribute(image, "8", "12 138 100"); + IupSetAttribute(image, "9", "12 142 100"); + IupSetAttribute(image, "10", "12 138 108"); + IupSetAttribute(image, "11", "12 142 108"); + IupSetAttribute(image, "12", "20 138 100"); + IupSetAttribute(image, "13", "20 138 108"); + IupSetAttribute(image, "14", "20 142 108"); + IupSetAttribute(image, "15", "28 142 108"); + IupSetAttribute(image, "16", "28 146 108"); + IupSetAttribute(image, "17", "20 146 116"); + IupSetAttribute(image, "18", "28 146 116"); + IupSetAttribute(image, "19", "28 150 116"); + IupSetAttribute(image, "20", "36 146 116"); + IupSetAttribute(image, "21", "36 150 116"); + IupSetAttribute(image, "22", "36 146 124"); + IupSetAttribute(image, "23", "36 150 124"); + IupSetAttribute(image, "24", "36 154 124"); + IupSetAttribute(image, "25", "44 154 124"); + IupSetAttribute(image, "26", "44 158 124"); + IupSetAttribute(image, "27", "52 154 124"); + IupSetAttribute(image, "28", "44 158 132"); + IupSetAttribute(image, "29", "52 158 132"); + IupSetAttribute(image, "30", "60 158 132"); + IupSetAttribute(image, "31", "60 162 132"); + IupSetAttribute(image, "32", "60 162 140"); + IupSetAttribute(image, "33", "60 166 140"); + IupSetAttribute(image, "34", "68 166 132"); + IupSetAttribute(image, "35", "68 162 140"); + IupSetAttribute(image, "36", "68 166 140"); + IupSetAttribute(image, "37", "68 170 140"); + IupSetAttribute(image, "38", "76 166 140"); + IupSetAttribute(image, "39", "76 170 148"); + IupSetAttribute(image, "40", "76 174 148"); + IupSetAttribute(image, "41", "84 170 148"); + IupSetAttribute(image, "42", "84 174 148"); + IupSetAttribute(image, "43", "92 174 148"); + IupSetAttribute(image, "44", "84 178 156"); + IupSetAttribute(image, "45", "92 178 156"); + IupSetAttribute(image, "46", "92 182 156"); + IupSetAttribute(image, "47", "100 174 156"); + IupSetAttribute(image, "48", "100 178 156"); + IupSetAttribute(image, "49", "100 182 156"); + IupSetAttribute(image, "50", "100 182 164"); + IupSetAttribute(image, "51", "100 186 164"); + IupSetAttribute(image, "52", "108 182 164"); + IupSetAttribute(image, "53", "108 186 164"); + IupSetAttribute(image, "54", "116 186 164"); + IupSetAttribute(image, "55", "116 186 172"); + IupSetAttribute(image, "56", "116 190 172"); + IupSetAttribute(image, "57", "124 190 172"); + IupSetAttribute(image, "58", "124 194 172"); + IupSetAttribute(image, "59", "124 194 180"); + IupSetAttribute(image, "60", "244 190 4"); + IupSetAttribute(image, "61", "244 194 4"); + IupSetAttribute(image, "62", "132 194 172"); + IupSetAttribute(image, "63", "132 194 180"); + IupSetAttribute(image, "64", "132 198 180"); + IupSetAttribute(image, "65", "140 194 180"); + IupSetAttribute(image, "66", "140 198 180"); + IupSetAttribute(image, "67", "140 202 180"); + IupSetAttribute(image, "68", "140 202 188"); + IupSetAttribute(image, "69", "148 198 180"); + IupSetAttribute(image, "70", "148 198 188"); + IupSetAttribute(image, "71", "148 202 188"); + IupSetAttribute(image, "72", "148 206 188"); + IupSetAttribute(image, "73", "156 198 188"); + IupSetAttribute(image, "74", "156 202 188"); + IupSetAttribute(image, "75", "156 206 188"); + IupSetAttribute(image, "76", "156 206 196"); + IupSetAttribute(image, "77", "156 210 196"); + IupSetAttribute(image, "78", "164 206 196"); + IupSetAttribute(image, "79", "164 210 196"); + IupSetAttribute(image, "80", "164 210 204"); + IupSetAttribute(image, "81", "164 214 204"); + IupSetAttribute(image, "82", "172 210 196"); + IupSetAttribute(image, "83", "172 210 204"); + IupSetAttribute(image, "84", "172 214 204"); + IupSetAttribute(image, "85", "180 214 204"); + IupSetAttribute(image, "86", "180 218 204"); + IupSetAttribute(image, "87", "180 218 212"); + IupSetAttribute(image, "88", "188 218 212"); + IupSetAttribute(image, "89", "188 222 212"); + IupSetAttribute(image, "90", "188 222 220"); + IupSetAttribute(image, "91", "188 226 212"); + IupSetAttribute(image, "92", "188 226 220"); + IupSetAttribute(image, "93", "196 222 212"); + IupSetAttribute(image, "94", "196 226 220"); + IupSetAttribute(image, "95", "196 230 220"); + IupSetAttribute(image, "96", "204 226 220"); + IupSetAttribute(image, "97", "204 230 220"); + IupSetAttribute(image, "98", "212 230 220"); + IupSetAttribute(image, "99", "204 230 228"); + IupSetAttribute(image, "100", "204 234 228"); + IupSetAttribute(image, "101", "212 230 228"); + IupSetAttribute(image, "102", "212 234 228"); + IupSetAttribute(image, "103", "212 234 236"); + IupSetAttribute(image, "104", "212 238 236"); + IupSetAttribute(image, "105", "220 230 228"); + IupSetAttribute(image, "106", "220 234 228"); + IupSetAttribute(image, "107", "220 234 236"); + IupSetAttribute(image, "108", "220 238 236"); + IupSetAttribute(image, "109", "220 242 236"); + IupSetAttribute(image, "110", "228 234 236"); + IupSetAttribute(image, "111", "228 238 236"); + IupSetAttribute(image, "112", "228 242 236"); + IupSetAttribute(image, "113", "236 242 236"); + IupSetAttribute(image, "114", "228 242 244"); + IupSetAttribute(image, "115", "228 246 244"); + IupSetAttribute(image, "116", "244 246 244"); + IupSetAttribute(image, "117", "244 250 244"); + IupSetAttribute(image, "118", "244 250 252"); + IupSetAttribute(image, "119", "244 254 252"); + IupSetAttribute(image, "120", "252 246 244"); + IupSetAttribute(image, "121", "252 250 244"); + IupSetAttribute(image, "122", "252 250 252"); + IupSetAttribute(image, "123", "252 254 252"); + IupSetAttribute(image, "124", "255 255 255"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_Lua8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 19, 19, 23, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 1, 1, 1, 1, 20, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 26, 1, 1, 1, 1, 1, 1, 23, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 1, 1, 1, 1, 1, 1, 19, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 25, 21, 17, 17, 17, 17, 20, 23, 255, 255, 255, 255, 255, 19, 1, 1, 1, 1, 1, 1, 19, 255, + 255, 255, 255, 255, 255, 255, 255, 23, 18, 6, 1, 1, 1, 1, 1, 1, 1, 2, 1, 16, 25, 255, 255, 24, 1, 1, 1, 1, 1, 1, 23, 255, + 255, 255, 255, 255, 255, 255, 23, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 23, 255, 14, 1, 1, 1, 1, 14, 255, 255, + 255, 255, 255, 255, 255, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 11, 5, 1, 9, 23, 255, 23, 15, 17, 24, 255, 255, 255, + 255, 255, 255, 255, 23, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 17, 28, 28, 28, 18, 1, 9, 23, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 26, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 28, 28, 28, 28, 28, 19, 1, 15, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28, 28, 28, 28, 28, 28, 9, 1, 23, 255, 255, 255, 255, 255, 255, + 255, 255, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 28, 28, 28, 28, 28, 28, 28, 17, 1, 15, 255, 255, 255, 255, 255, 255, + 255, 255, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 28, 28, 28, 28, 28, 28, 28, 11, 1, 1, 23, 255, 255, 255, 255, 255, + 255, 255, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 28, 28, 28, 28, 28, 23, 1, 1, 1, 22, 255, 255, 255, 255, 255, + 255, 24, 1, 1, 1, 7, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 21, 28, 28, 28, 22, 4, 1, 1, 1, 18, 255, 255, 255, 255, 255, + 255, 23, 1, 1, 1, 16, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 9, 4, 1, 1, 1, 1, 1, 14, 255, 255, 255, 255, 255, + 255, 17, 1, 1, 1, 16, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 255, 255, 255, 255, 255, + 255, 17, 1, 1, 1, 16, 27, 1, 1, 1, 1, 11, 21, 1, 1, 8, 17, 1, 13, 27, 27, 27, 11, 1, 1, 1, 11, 255, 255, 255, 255, 255, + 255, 17, 1, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 11, 27, 1, 27, 8, 1, 14, 27, 1, 1, 1, 16, 255, 255, 255, 255, 255, + 255, 24, 1, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 11, 27, 1, 3, 1, 6, 19, 27, 1, 1, 1, 19, 255, 255, 255, 255, 255, + 255, 255, 8, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 11, 27, 1, 20, 27, 27, 27, 27, 1, 1, 1, 23, 255, 255, 255, 255, 255, + 255, 255, 19, 1, 1, 16, 27, 1, 1, 1, 1, 16, 27, 1, 1, 15, 27, 4, 27, 1, 1, 15, 27, 1, 1, 1, 23, 255, 255, 255, 255, 255, + 255, 255, 24, 1, 1, 16, 27, 19, 19, 19, 13, 10, 27, 15, 14, 21, 27, 3, 27, 13, 13, 21, 27, 8, 1, 14, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 10, 1, 16, 27, 27, 27, 27, 11, 1, 11, 27, 27, 27, 11, 1, 12, 27, 27, 27, 21, 27, 5, 23, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 23, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 23, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 23, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 23, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 24, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 23, 17, 5, 1, 1, 1, 1, 1, 1, 1, 13, 21, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 20, 17, 17, 17, 20, 22, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(32, 32, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 123"); + IupSetAttribute(image, "2", "0 0 132"); + IupSetAttribute(image, "3", "8 8 132"); + IupSetAttribute(image, "4", "16 16 132"); + IupSetAttribute(image, "5", "24 24 140"); + IupSetAttribute(image, "6", "33 33 140"); + IupSetAttribute(image, "7", "33 33 148"); + IupSetAttribute(image, "8", "41 41 148"); + IupSetAttribute(image, "9", "49 49 148"); + IupSetAttribute(image, "10", "57 57 156"); + IupSetAttribute(image, "11", "66 66 156"); + IupSetAttribute(image, "12", "66 66 165"); + IupSetAttribute(image, "13", "74 74 165"); + IupSetAttribute(image, "14", "82 82 165"); + IupSetAttribute(image, "15", "90 90 173"); + IupSetAttribute(image, "16", "99 99 173"); + IupSetAttribute(image, "17", "107 107 181"); + IupSetAttribute(image, "18", "115 115 181"); + IupSetAttribute(image, "19", "123 123 189"); + IupSetAttribute(image, "20", "132 132 189"); + IupSetAttribute(image, "21", "140 140 198"); + IupSetAttribute(image, "22", "148 148 198"); + IupSetAttribute(image, "23", "156 156 206"); + IupSetAttribute(image, "24", "165 165 206"); + IupSetAttribute(image, "25", "173 173 214"); + IupSetAttribute(image, "26", "189 189 222"); + IupSetAttribute(image, "27", "214 214 231"); + IupSetAttribute(image, "28", "255 255 255"); + IupSetAttribute(image, "29", "0 0 0"); + IupSetAttribute(image, "30", "0 0 0"); + IupSetAttribute(image, "31", "0 0 0"); + IupSetAttribute(image, "32", "0 0 0"); + IupSetAttribute(image, "33", "0 0 0"); + IupSetAttribute(image, "34", "0 0 0"); + IupSetAttribute(image, "35", "0 0 0"); + IupSetAttribute(image, "36", "0 0 0"); + IupSetAttribute(image, "37", "0 0 0"); + IupSetAttribute(image, "38", "0 0 0"); + IupSetAttribute(image, "39", "0 0 0"); + IupSetAttribute(image, "40", "0 0 0"); + IupSetAttribute(image, "41", "0 0 0"); + IupSetAttribute(image, "42", "0 0 0"); + IupSetAttribute(image, "43", "0 0 0"); + IupSetAttribute(image, "44", "0 0 0"); + IupSetAttribute(image, "45", "0 0 0"); + IupSetAttribute(image, "46", "0 0 0"); + IupSetAttribute(image, "47", "0 0 0"); + IupSetAttribute(image, "48", "0 0 0"); + IupSetAttribute(image, "49", "0 0 0"); + IupSetAttribute(image, "50", "0 0 0"); + IupSetAttribute(image, "51", "0 0 0"); + IupSetAttribute(image, "52", "0 0 0"); + IupSetAttribute(image, "53", "0 0 0"); + IupSetAttribute(image, "54", "0 0 0"); + IupSetAttribute(image, "55", "0 0 0"); + IupSetAttribute(image, "56", "0 0 0"); + IupSetAttribute(image, "57", "0 0 0"); + IupSetAttribute(image, "58", "0 0 0"); + IupSetAttribute(image, "59", "0 0 0"); + IupSetAttribute(image, "60", "0 0 0"); + IupSetAttribute(image, "61", "0 0 0"); + IupSetAttribute(image, "62", "0 0 0"); + IupSetAttribute(image, "63", "0 0 0"); + IupSetAttribute(image, "64", "0 0 0"); + IupSetAttribute(image, "65", "0 0 0"); + IupSetAttribute(image, "66", "0 0 0"); + IupSetAttribute(image, "67", "0 0 0"); + IupSetAttribute(image, "68", "0 0 0"); + IupSetAttribute(image, "69", "0 0 0"); + IupSetAttribute(image, "70", "0 0 0"); + IupSetAttribute(image, "71", "0 0 0"); + IupSetAttribute(image, "72", "0 0 0"); + IupSetAttribute(image, "73", "0 0 0"); + IupSetAttribute(image, "74", "0 0 0"); + IupSetAttribute(image, "75", "0 0 0"); + IupSetAttribute(image, "76", "0 0 0"); + IupSetAttribute(image, "77", "0 0 0"); + IupSetAttribute(image, "78", "0 0 0"); + IupSetAttribute(image, "79", "0 0 0"); + IupSetAttribute(image, "80", "0 0 0"); + IupSetAttribute(image, "81", "0 0 0"); + IupSetAttribute(image, "82", "0 0 0"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_TecgrafPUC_Rio8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 154, 150, 150, 150, 150, 155, 150, 150, 155, 150, 150, 155, 150, 150, 150, 152, 155, 150, 152, 155, 150, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 167, 191, 191, 171, 169, 171, 181, 168, 255, + 255, 39, 66, 67, 61, 67, 60, 67, 67, 61, 67, 66, 61, 71, 67, 71, 71, 71, 71, 71, 71, 71, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 81, 108, 104, 104, 104, 104, 104, 104, 101, 255, + 255, 39, 59, 60, 66, 59, 67, 60, 59, 67, 60, 67, 60, 67, 61, 66, 61, 66, 61, 66, 61, 70, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 98, 81, 98, 81, 103, 81, 103, 81, 79, 255, + 255, 38, 66, 59, 66, 59, 59, 66, 67, 59, 67, 60, 67, 59, 66, 60, 67, 61, 66, 61, 67, 61, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 61, 81, 103, 81, 98, 81, 96, 98, 96, 75, 255, + 255, 39, 59, 60, 66, 59, 66, 60, 59, 60, 66, 59, 61, 66, 61, 67, 60, 66, 67, 66, 60, 67, 106, 255, 255, 255, 255, 255, 255, 189, 162, 150, 160, 160, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 150, 152, 153, 160, 165, 168, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 167, 166, 165, 168, 168, 169, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 71, 96, 81, 98, 81, 98, 81, 29, 22, 34, 255, + 255, 28, 4, 3, 2, 3, 2, 3, 9, 66, 61, 59, 67, 60, 66, 72, 15, 3, 2, 3, 2, 3, 27, 255, 255, 190, 122, 112, 76, 72, 76, 78, 76, 78, 78, 98, 109, 153, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 102, 77, 76, 78, 77, 77, 77, 78, 96, 104, 137, 152, 194, 255, 255, 255, 255, 255, 255, 255, 255, 154, 107, 98, 81, 98, 98, 108, 143, 168, 97, 71, 105, 104, 104, 104, 108, 109, 184, 255, 86, 96, 104, 105, 105, 105, 106, 109, 150, 121, 106, 104, 182, 255, 255, 255, 255, 148, 139, 101, 103, 104, 104, 103, 103, 104, 105, 108, 108, 139, 153, 195, 255, 255, 255, 179, 168, 56, 71, 81, 98, 81, 103, 81, 108, 120, 146, 123, 255, + 255, 255, 255, 255, 255, 255, 255, 117, 1, 60, 66, 66, 60, 67, 61, 80, 155, 255, 255, 255, 255, 255, 255, 255, 175, 57, 71, 71, 67, 71, 67, 71, 71, 71, 71, 61, 71, 79, 151, 194, 255, 255, 255, 255, 255, 255, 255, 255, 100, 71, 71, 76, 75, 71, 76, 72, 76, 71, 76, 77, 77, 78, 151, 172, 255, 255, 255, 255, 255, 255, 115, 72, 77, 76, 78, 76, 78, 78, 76, 98, 105, 67, 76, 78, 78, 78, 76, 105, 182, 255, 65, 67, 78, 80, 78, 81, 80, 81, 101, 76, 78, 81, 156, 255, 255, 255, 112, 76, 81, 79, 81, 81, 78, 96, 81, 81, 96, 79, 81, 81, 96, 145, 192, 255, 255, 82, 104, 109, 81, 96, 81, 98, 81, 98, 109, 150, 146, 116, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 1, 66, 61, 59, 67, 60, 66, 81, 193, 255, 255, 255, 255, 255, 255, 185, 51, 71, 60, 67, 71, 61, 71, 71, 61, 66, 71, 71, 71, 67, 71, 143, 198, 255, 255, 255, 255, 255, 255, 110, 60, 71, 76, 71, 76, 71, 77, 71, 72, 77, 71, 72, 76, 71, 76, 144, 194, 255, 255, 255, 255, 128, 56, 78, 76, 77, 72, 78, 76, 77, 76, 78, 72, 78, 78, 78, 76, 78, 80, 104, 184, 255, 64, 60, 80, 78, 78, 76, 78, 98, 124, 78, 81, 78, 143, 255, 255, 158, 58, 78, 80, 81, 78, 96, 81, 79, 96, 78, 80, 81, 96, 81, 96, 81, 143, 198, 255, 65, 71, 81, 98, 81, 98, 81, 98, 81, 98, 96, 81, 101, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 2, 60, 66, 66, 59, 67, 60, 81, 184, 255, 255, 255, 255, 255, 189, 34, 61, 70, 67, 71, 60, 71, 67, 71, 67, 71, 67, 71, 71, 71, 71, 71, 124, 255, 255, 255, 255, 255, 91, 59, 71, 76, 71, 71, 71, 71, 71, 76, 71, 76, 72, 71, 77, 71, 77, 71, 119, 198, 255, 255, 158, 36, 77, 76, 76, 77, 76, 75, 77, 76, 78, 76, 77, 76, 78, 76, 78, 77, 76, 101, 182, 255, 65, 60, 78, 78, 80, 79, 80, 81, 79, 80, 78, 80, 106, 255, 255, 74, 76, 81, 79, 80, 81, 78, 80, 81, 80, 81, 96, 78, 81, 79, 81, 79, 96, 139, 255, 65, 72, 81, 81, 96, 81, 96, 81, 98, 81, 81, 98, 99, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 2, 59, 59, 61, 60, 60, 66, 81, 191, 255, 255, 255, 255, 255, 45, 56, 60, 67, 71, 60, 71, 67, 60, 35, 25, 24, 36, 61, 71, 71, 67, 71, 71, 146, 255, 255, 255, 161, 35, 71, 71, 71, 71, 76, 71, 71, 49, 24, 23, 33, 67, 72, 76, 72, 76, 77, 71, 143, 255, 255, 44, 71, 76, 75, 77, 72, 77, 76, 76, 67, 71, 76, 78, 76, 77, 78, 76, 78, 78, 104, 182, 255, 64, 60, 80, 78, 76, 78, 78, 80, 76, 79, 80, 78, 98, 255, 255, 66, 78, 80, 78, 80, 78, 76, 54, 33, 27, 24, 33, 61, 96, 80, 81, 96, 81, 104, 255, 65, 71, 96, 81, 81, 98, 81, 96, 81, 98, 98, 81, 103, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 2, 60, 66, 59, 67, 59, 60, 81, 184, 255, 255, 255, 255, 178, 26, 61, 67, 60, 71, 67, 70, 61, 41, 85, 162, 132, 25, 14, 60, 71, 71, 71, 67, 71, 153, 255, 255, 39, 61, 71, 72, 71, 76, 71, 71, 57, 126, 255, 255, 90, 17, 67, 71, 76, 71, 71, 71, 78, 146, 136, 29, 72, 77, 76, 76, 77, 76, 57, 34, 47, 37, 20, 36, 77, 76, 78, 76, 78, 77, 104, 181, 255, 65, 60, 78, 78, 80, 78, 76, 78, 78, 78, 78, 79, 81, 187, 183, 51, 36, 36, 35, 36, 35, 35, 40, 122, 181, 167, 86, 27, 80, 79, 81, 78, 81, 96, 167, 48, 23, 25, 78, 81, 81, 81, 81, 96, 81, 49, 27, 55, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 1, 66, 60, 60, 59, 67, 66, 80, 193, 255, 255, 255, 255, 69, 36, 67, 70, 61, 70, 61, 71, 71, 81, 81, 78, 76, 71, 51, 59, 71, 61, 71, 71, 71, 139, 196, 255, 12, 71, 71, 71, 71, 71, 71, 71, 187, 255, 255, 255, 255, 125, 18, 31, 40, 62, 86, 89, 87, 91, 92, 51, 76, 72, 76, 75, 76, 78, 88, 255, 255, 255, 255, 31, 59, 76, 78, 78, 76, 78, 104, 184, 255, 65, 59, 80, 76, 78, 80, 78, 78, 76, 50, 25, 23, 35, 176, 255, 174, 87, 36, 49, 71, 81, 109, 109, 108, 104, 104, 98, 81, 79, 80, 96, 81, 81, 81, 166, 255, 255, 42, 71, 96, 81, 96, 79, 81, 103, 147, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 131, 1, 59, 59, 66, 61, 60, 59, 81, 184, 255, 255, 255, 255, 47, 52, 61, 66, 61, 67, 67, 60, 71, 61, 70, 61, 71, 66, 71, 71, 71, 67, 71, 71, 67, 104, 151, 178, 19, 71, 71, 71, 72, 71, 71, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 56, 72, 77, 76, 72, 77, 104, 255, 255, 255, 255, 255, 133, 35, 77, 76, 76, 78, 76, 104, 180, 255, 65, 59, 78, 78, 78, 76, 78, 78, 71, 114, 255, 255, 255, 255, 255, 129, 78, 81, 78, 81, 78, 81, 78, 78, 81, 79, 80, 81, 80, 79, 80, 81, 78, 96, 163, 255, 255, 47, 71, 81, 81, 81, 81, 96, 104, 156, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 1, 66, 60, 66, 59, 66, 60, 80, 193, 255, 255, 255, 255, 47, 51, 67, 60, 67, 70, 60, 67, 71, 70, 67, 71, 61, 71, 61, 67, 60, 66, 60, 66, 60, 76, 141, 173, 22, 67, 71, 71, 71, 71, 71, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 49, 77, 76, 72, 77, 76, 106, 255, 255, 255, 255, 255, 88, 66, 76, 78, 77, 76, 77, 104, 181, 255, 65, 60, 78, 76, 77, 78, 78, 80, 147, 255, 255, 255, 255, 255, 134, 71, 81, 78, 80, 78, 81, 78, 81, 77, 67, 59, 54, 56, 78, 81, 81, 95, 81, 81, 166, 255, 255, 46, 71, 81, 81, 96, 81, 81, 103, 160, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 2, 59, 59, 60, 61, 60, 66, 80, 182, 255, 255, 255, 255, 84, 33, 67, 61, 66, 61, 61, 66, 76, 74, 113, 93, 111, 111, 68, 62, 69, 88, 86, 86, 86, 82, 129, 185, 11, 71, 71, 71, 71, 71, 71, 143, 255, 255, 255, 255, 255, 255, 62, 71, 76, 98, 138, 152, 164, 195, 62, 25, 76, 76, 77, 71, 76, 77, 139, 171, 196, 168, 107, 71, 76, 75, 76, 77, 78, 77, 104, 179, 255, 65, 59, 78, 78, 76, 78, 76, 81, 155, 255, 255, 255, 255, 255, 55, 76, 79, 78, 78, 80, 78, 33, 39, 65, 92, 91, 47, 33, 81, 80, 79, 81, 80, 79, 166, 255, 255, 47, 71, 81, 95, 80, 79, 96, 103, 156, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 1, 59, 66, 59, 66, 59, 60, 80, 196, 255, 255, 255, 255, 173, 18, 60, 67, 60, 67, 66, 67, 99, 181, 255, 255, 255, 183, 95, 67, 72, 99, 140, 150, 186, 199, 197, 255, 13, 71, 71, 71, 71, 71, 71, 102, 194, 255, 255, 255, 183, 63, 67, 71, 77, 76, 71, 72, 76, 141, 255, 19, 71, 73, 76, 77, 76, 71, 75, 78, 81, 80, 75, 76, 77, 76, 77, 72, 78, 76, 104, 181, 255, 65, 60, 76, 78, 77, 78, 78, 78, 159, 255, 255, 255, 255, 176, 29, 78, 80, 78, 80, 78, 81, 149, 255, 255, 255, 163, 97, 77, 81, 78, 81, 78, 81, 81, 166, 255, 255, 47, 71, 81, 81, 81, 96, 81, 98, 160, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 132, 1, 60, 59, 59, 59, 67, 59, 80, 182, 255, 255, 255, 255, 255, 28, 53, 66, 67, 61, 66, 61, 66, 98, 119, 143, 106, 66, 67, 61, 71, 66, 71, 61, 71, 120, 255, 255, 93, 25, 71, 71, 71, 71, 71, 71, 98, 137, 138, 108, 76, 71, 71, 76, 71, 71, 77, 71, 71, 147, 255, 91, 24, 76, 76, 73, 76, 77, 76, 76, 77, 71, 77, 72, 76, 76, 78, 76, 77, 75, 104, 179, 255, 65, 59, 77, 76, 78, 78, 76, 81, 150, 255, 255, 255, 255, 175, 27, 80, 76, 78, 79, 78, 81, 139, 139, 137, 104, 103, 78, 81, 78, 80, 78, 80, 81, 78, 166, 255, 255, 47, 67, 81, 78, 81, 81, 81, 103, 156, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 1, 59, 59, 66, 59, 66, 60, 78, 193, 255, 255, 255, 255, 255, 177, 9, 58, 66, 61, 70, 67, 60, 71, 61, 66, 71, 71, 61, 70, 71, 61, 71, 67, 52, 189, 255, 255, 255, 28, 49, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 76, 71, 72, 71, 76, 71, 71, 73, 255, 255, 255, 47, 23, 71, 76, 72, 76, 71, 77, 72, 77, 76, 76, 71, 75, 76, 72, 78, 76, 104, 181, 255, 65, 59, 78, 76, 78, 78, 77, 79, 159, 255, 255, 255, 255, 255, 24, 78, 78, 80, 76, 80, 78, 80, 78, 78, 78, 80, 78, 80, 79, 80, 79, 80, 78, 81, 166, 255, 255, 47, 71, 81, 81, 96, 81, 81, 98, 160, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 1, 60, 59, 59, 59, 59, 66, 78, 191, 255, 255, 255, 255, 255, 255, 174, 8, 51, 60, 67, 61, 66, 61, 66, 61, 66, 61, 70, 61, 71, 71, 59, 29, 157, 255, 255, 255, 255, 255, 30, 27, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 76, 72, 71, 56, 51, 255, 255, 255, 255, 255, 125, 9, 27, 59, 75, 76, 72, 67, 54, 35, 9, 49, 77, 76, 77, 76, 75, 104, 179, 255, 65, 59, 76, 78, 76, 78, 76, 81, 155, 255, 255, 255, 255, 255, 84, 29, 78, 78, 78, 76, 78, 80, 78, 80, 78, 80, 78, 76, 78, 80, 78, 81, 79, 80, 166, 255, 255, 47, 67, 79, 80, 79, 81, 79, 103, 155, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 131, 1, 59, 59, 66, 59, 66, 59, 80, 191, 255, 255, 255, 255, 255, 255, 255, 188, 43, 4, 18, 52, 61, 66, 61, 70, 61, 67, 71, 67, 49, 19, 46, 255, 255, 255, 255, 255, 255, 255, 255, 87, 7, 27, 60, 71, 71, 71, 71, 72, 71, 71, 71, 67, 51, 24, 91, 255, 255, 255, 158, 118, 164, 153, 146, 113, 122, 129, 31, 31, 69, 127, 135, 125, 51, 76, 72, 77, 72, 76, 98, 186, 255, 65, 59, 78, 77, 76, 78, 77, 78, 160, 255, 255, 255, 255, 255, 255, 47, 18, 71, 78, 80, 78, 78, 78, 79, 77, 52, 17, 16, 67, 78, 81, 78, 80, 78, 137, 255, 255, 46, 71, 81, 80, 81, 81, 80, 103, 160, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 173, 21, 31, 31, 31, 31, 31, 31, 37, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 84, 10, 4, 7, 11, 9, 5, 6, 45, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 42, 8, 7, 12, 17, 17, 12, 7, 16, 47, 132, 255, 255, 255, 255, 255, 255, 12, 77, 76, 80, 78, 78, 96, 169, 255, 255, 255, 255, 85, 59, 75, 76, 78, 76, 78, 76, 255, 255, 93, 31, 31, 37, 31, 31, 37, 31, 126, 255, 255, 255, 255, 255, 255, 255, 177, 37, 5, 9, 18, 12, 11, 7, 43, 130, 255, 136, 31, 39, 39, 44, 45, 45, 55, 114, 255, 90, 31, 37, 31, 37, 31, 37, 32, 127, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 173, 133, 173, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 130, 125, 126, 132, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 26, 71, 76, 73, 76, 77, 72, 164, 170, 166, 155, 118, 71, 76, 76, 77, 76, 75, 76, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 126, 134, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 52, 71, 76, 72, 71, 76, 78, 139, 109, 108, 81, 77, 72, 77, 71, 76, 77, 72, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 18, 56, 76, 71, 77, 76, 71, 77, 71, 76, 77, 72, 76, 72, 77, 76, 71, 56, 183, 255, 255, 148, 96, 98, 99, 98, 81, 155, 255, 81, 149, 255, 255, 144, 81, 255, 255, 141, 96, 107, 106, 81, 166, 255, 255, 255, 255, 255, 181, 98, 81, 103, 98, 98, 255, 186, 81, 160, 255, 182, 81, 98, 106, 104, 98, 182, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 19, 36, 71, 71, 72, 72, 72, 76, 75, 71, 77, 76, 77, 72, 56, 36, 173, 255, 255, 255, 149, 81, 255, 255, 141, 96, 107, 255, 81, 149, 255, 255, 144, 81, 255, 156, 81, 156, 255, 255, 160, 158, 255, 255, 255, 255, 255, 179, 81, 166, 255, 179, 81, 163, 184, 81, 156, 255, 81, 108, 255, 255, 255, 106, 98, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 19, 25, 50, 59, 61, 71, 61, 60, 56, 51, 29, 27, 82, 255, 255, 255, 255, 255, 148, 96, 120, 144, 98, 81, 142, 255, 81, 148, 255, 255, 144, 96, 255, 145, 96, 255, 255, 255, 255, 255, 255, 255, 81, 81, 167, 179, 81, 98, 106, 98, 98, 255, 186, 81, 156, 156, 96, 167, 255, 255, 255, 166, 81, 167, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 65, 47, 43, 42, 43, 64, 68, 82, 136, 255, 255, 255, 255, 255, 255, 255, 149, 81, 147, 166, 167, 255, 255, 255, 81, 142, 255, 255, 119, 81, 255, 150, 81, 179, 255, 255, 182, 182, 255, 255, 179, 181, 255, 182, 96, 129, 149, 81, 150, 255, 186, 81, 156, 255, 81, 124, 255, 255, 255, 120, 96, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 81, 255, 255, 255, 255, 255, 255, 116, 81, 144, 124, 81, 141, 255, 255, 116, 81, 147, 120, 96, 149, 255, 255, 255, 255, 255, 179, 81, 166, 255, 123, 81, 255, 184, 96, 160, 255, 145, 81, 101, 147, 124, 96, 160, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 255, 255, 255, 255, 255, 255, 255, 182, 167, 167, 184, 255, 255, 255, 255, 182, 167, 167, 255, 255, 255, 255, 255, 255, 255, 255, 181, 255, 255, 255, 181, 255, 255, 181, 255, 255, 255, 255, 169, 167, 167, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(139, 32, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "44 46 60"); + IupSetAttribute(image, "2", "44 50 60"); + IupSetAttribute(image, "3", "44 54 68"); + IupSetAttribute(image, "4", "52 54 68"); + IupSetAttribute(image, "5", "52 58 68"); + IupSetAttribute(image, "6", "52 62 68"); + IupSetAttribute(image, "7", "52 62 76"); + IupSetAttribute(image, "8", "60 62 76"); + IupSetAttribute(image, "9", "60 66 76"); + IupSetAttribute(image, "10", "60 70 76"); + IupSetAttribute(image, "11", "60 66 84"); + IupSetAttribute(image, "12", "60 70 84"); + IupSetAttribute(image, "13", "68 70 76"); + IupSetAttribute(image, "14", "68 70 84"); + IupSetAttribute(image, "15", "68 74 84"); + IupSetAttribute(image, "16", "68 78 84"); + IupSetAttribute(image, "17", "68 74 92"); + IupSetAttribute(image, "18", "68 78 92"); + IupSetAttribute(image, "19", "76 78 92"); + IupSetAttribute(image, "20", "76 82 92"); + IupSetAttribute(image, "21", "84 86 92"); + IupSetAttribute(image, "22", "68 82 100"); + IupSetAttribute(image, "23", "76 82 100"); + IupSetAttribute(image, "24", "76 86 100"); + IupSetAttribute(image, "25", "76 90 108"); + IupSetAttribute(image, "26", "84 86 100"); + IupSetAttribute(image, "27", "84 90 108"); + IupSetAttribute(image, "28", "92 94 100"); + IupSetAttribute(image, "29", "84 94 116"); + IupSetAttribute(image, "30", "92 98 100"); + IupSetAttribute(image, "31", "92 98 108"); + IupSetAttribute(image, "32", "92 102 108"); + IupSetAttribute(image, "33", "84 98 116"); + IupSetAttribute(image, "34", "92 98 116"); + IupSetAttribute(image, "35", "92 102 124"); + IupSetAttribute(image, "36", "92 106 124"); + IupSetAttribute(image, "37", "100 102 108"); + IupSetAttribute(image, "38", "100 106 108"); + IupSetAttribute(image, "39", "100 106 116"); + IupSetAttribute(image, "40", "100 106 124"); + IupSetAttribute(image, "41", "100 110 124"); + IupSetAttribute(image, "42", "108 106 116"); + IupSetAttribute(image, "43", "108 110 116"); + IupSetAttribute(image, "44", "108 110 124"); + IupSetAttribute(image, "45", "108 114 124"); + IupSetAttribute(image, "46", "108 118 124"); + IupSetAttribute(image, "47", "116 118 124"); + IupSetAttribute(image, "48", "116 122 124"); + IupSetAttribute(image, "49", "92 106 132"); + IupSetAttribute(image, "50", "100 106 132"); + IupSetAttribute(image, "51", "100 110 132"); + IupSetAttribute(image, "52", "100 114 132"); + IupSetAttribute(image, "53", "100 114 140"); + IupSetAttribute(image, "54", "100 118 140"); + IupSetAttribute(image, "55", "108 118 132"); + IupSetAttribute(image, "56", "108 118 140"); + IupSetAttribute(image, "57", "108 122 140"); + IupSetAttribute(image, "58", "100 118 148"); + IupSetAttribute(image, "59", "108 122 148"); + IupSetAttribute(image, "60", "108 126 148"); + IupSetAttribute(image, "61", "108 126 156"); + IupSetAttribute(image, "62", "116 122 132"); + IupSetAttribute(image, "63", "116 126 140"); + IupSetAttribute(image, "64", "124 122 132"); + IupSetAttribute(image, "65", "124 126 132"); + IupSetAttribute(image, "66", "116 126 148"); + IupSetAttribute(image, "67", "116 126 156"); + IupSetAttribute(image, "68", "124 130 132"); + IupSetAttribute(image, "69", "124 130 140"); + IupSetAttribute(image, "70", "116 130 148"); + IupSetAttribute(image, "71", "116 130 156"); + IupSetAttribute(image, "72", "116 134 156"); + IupSetAttribute(image, "73", "124 130 148"); + IupSetAttribute(image, "74", "124 134 148"); + IupSetAttribute(image, "75", "124 134 156"); + IupSetAttribute(image, "76", "116 134 164"); + IupSetAttribute(image, "77", "124 134 164"); + IupSetAttribute(image, "78", "124 138 164"); + IupSetAttribute(image, "79", "124 142 164"); + IupSetAttribute(image, "80", "124 138 172"); + IupSetAttribute(image, "81", "124 142 172"); + IupSetAttribute(image, "82", "132 134 140"); + IupSetAttribute(image, "83", "132 138 140"); + IupSetAttribute(image, "84", "140 138 140"); + IupSetAttribute(image, "85", "132 134 148"); + IupSetAttribute(image, "86", "132 138 148"); + IupSetAttribute(image, "87", "140 142 148"); + IupSetAttribute(image, "88", "140 142 156"); + IupSetAttribute(image, "89", "140 146 156"); + IupSetAttribute(image, "90", "148 146 148"); + IupSetAttribute(image, "91", "148 150 156"); + IupSetAttribute(image, "92", "148 154 156"); + IupSetAttribute(image, "93", "156 154 156"); + IupSetAttribute(image, "94", "156 158 156"); + IupSetAttribute(image, "95", "132 142 164"); + IupSetAttribute(image, "96", "132 142 172"); + IupSetAttribute(image, "97", "132 146 164"); + IupSetAttribute(image, "98", "132 146 172"); + IupSetAttribute(image, "99", "132 150 172"); + IupSetAttribute(image, "100", "140 146 164"); + IupSetAttribute(image, "101", "140 150 172"); + IupSetAttribute(image, "102", "140 154 172"); + IupSetAttribute(image, "103", "132 146 180"); + IupSetAttribute(image, "104", "132 150 180"); + IupSetAttribute(image, "105", "132 154 180"); + IupSetAttribute(image, "106", "140 154 180"); + IupSetAttribute(image, "107", "140 158 180"); + IupSetAttribute(image, "108", "140 154 188"); + IupSetAttribute(image, "109", "140 158 188"); + IupSetAttribute(image, "110", "148 150 164"); + IupSetAttribute(image, "111", "148 154 164"); + IupSetAttribute(image, "112", "148 154 172"); + IupSetAttribute(image, "113", "148 158 172"); + IupSetAttribute(image, "114", "156 158 164"); + IupSetAttribute(image, "115", "156 158 172"); + IupSetAttribute(image, "116", "148 158 188"); + IupSetAttribute(image, "117", "156 162 164"); + IupSetAttribute(image, "118", "148 162 180"); + IupSetAttribute(image, "119", "148 162 188"); + IupSetAttribute(image, "120", "148 166 188"); + IupSetAttribute(image, "121", "156 162 180"); + IupSetAttribute(image, "122", "156 166 180"); + IupSetAttribute(image, "123", "156 166 188"); + IupSetAttribute(image, "124", "156 170 188"); + IupSetAttribute(image, "125", "164 166 164"); + IupSetAttribute(image, "126", "164 166 172"); + IupSetAttribute(image, "127", "172 170 172"); + IupSetAttribute(image, "128", "164 170 180"); + IupSetAttribute(image, "129", "164 174 188"); + IupSetAttribute(image, "130", "172 174 180"); + IupSetAttribute(image, "131", "172 178 188"); + IupSetAttribute(image, "132", "180 178 180"); + IupSetAttribute(image, "133", "180 182 180"); + IupSetAttribute(image, "134", "180 182 188"); + IupSetAttribute(image, "135", "180 186 188"); + IupSetAttribute(image, "136", "188 186 188"); + IupSetAttribute(image, "137", "140 162 196"); + IupSetAttribute(image, "138", "148 162 196"); + IupSetAttribute(image, "139", "148 166 196"); + IupSetAttribute(image, "140", "156 166 196"); + IupSetAttribute(image, "141", "156 170 196"); + IupSetAttribute(image, "142", "156 174 196"); + IupSetAttribute(image, "143", "156 174 204"); + IupSetAttribute(image, "144", "164 174 196"); + IupSetAttribute(image, "145", "164 178 196"); + IupSetAttribute(image, "146", "164 178 204"); + IupSetAttribute(image, "147", "172 178 196"); + IupSetAttribute(image, "148", "172 182 196"); + IupSetAttribute(image, "149", "172 182 204"); + IupSetAttribute(image, "150", "172 186 204"); + IupSetAttribute(image, "151", "164 182 212"); + IupSetAttribute(image, "152", "172 186 212"); + IupSetAttribute(image, "153", "172 190 220"); + IupSetAttribute(image, "154", "180 182 196"); + IupSetAttribute(image, "155", "180 186 204"); + IupSetAttribute(image, "156", "180 190 204"); + IupSetAttribute(image, "157", "188 186 196"); + IupSetAttribute(image, "158", "188 190 196"); + IupSetAttribute(image, "159", "180 186 212"); + IupSetAttribute(image, "160", "180 190 212"); + IupSetAttribute(image, "161", "188 194 196"); + IupSetAttribute(image, "162", "188 194 204"); + IupSetAttribute(image, "163", "180 194 212"); + IupSetAttribute(image, "164", "180 194 220"); + IupSetAttribute(image, "165", "180 198 220"); + IupSetAttribute(image, "166", "188 194 212"); + IupSetAttribute(image, "167", "188 198 212"); + IupSetAttribute(image, "168", "188 198 220"); + IupSetAttribute(image, "169", "188 202 220"); + IupSetAttribute(image, "170", "180 198 228"); + IupSetAttribute(image, "171", "188 202 228"); + IupSetAttribute(image, "172", "188 206 236"); + IupSetAttribute(image, "173", "196 194 196"); + IupSetAttribute(image, "174", "196 198 196"); + IupSetAttribute(image, "175", "196 198 204"); + IupSetAttribute(image, "176", "196 202 204"); + IupSetAttribute(image, "177", "204 202 204"); + IupSetAttribute(image, "178", "204 206 204"); + IupSetAttribute(image, "179", "196 202 212"); + IupSetAttribute(image, "180", "196 206 212"); + IupSetAttribute(image, "181", "196 202 220"); + IupSetAttribute(image, "182", "196 206 220"); + IupSetAttribute(image, "183", "204 206 212"); + IupSetAttribute(image, "184", "204 206 220"); + IupSetAttribute(image, "185", "204 210 212"); + IupSetAttribute(image, "186", "204 210 220"); + IupSetAttribute(image, "187", "212 210 212"); + IupSetAttribute(image, "188", "212 214 212"); + IupSetAttribute(image, "189", "212 214 220"); + IupSetAttribute(image, "190", "212 218 220"); + IupSetAttribute(image, "191", "196 206 228"); + IupSetAttribute(image, "192", "196 206 236"); + IupSetAttribute(image, "193", "196 210 228"); + IupSetAttribute(image, "194", "196 210 236"); + IupSetAttribute(image, "195", "196 214 236"); + IupSetAttribute(image, "196", "204 210 228"); + IupSetAttribute(image, "197", "204 214 228"); + IupSetAttribute(image, "198", "204 214 236"); + IupSetAttribute(image, "199", "212 222 236"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_PUC_Rio8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 218, 167, 118, 123, 166, 216, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 123, 113, 110, 110, 110, 113, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 243, 195, 249, 255, 194, 113, 123, 123, 123, 123, 113, 187, 255, 252, 197, 236, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 243, 14, 195, 246, 124, 126, 125, 126, 133, 124, 133, 122, 241, 225, 14, 233, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 195, 155, 249, 252, 110, 101, 111, 110, 113, 102, 109, 110, 246, 252, 155, 189, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 252, 235, 255, 255, 155, 191, 255, 255, 124, 117, 13, 13, 13, 13, 117, 117, 252, 255, 197, 17, 252, 255, 236, 249, 255, 255, 255, 255, + 255, 255, 255, 255, 252, 184, 183, 245, 106, 2, 191, 252, 117, 134, 133, 114, 131, 125, 135, 116, 249, 195, 3, 105, 246, 189, 169, 249, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 246, 132, 132, 216, 104, 12, 255, 179, 101, 101, 100, 100, 7, 109, 166, 255, 15, 103, 195, 14, 9, 236, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 146, 140, 140, 112, 6, 164, 252, 243, 99, 97, 107, 108, 96, 98, 242, 255, 169, 6, 4, 17, 158, 17, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 231, 142, 176, 148, 168, 40, 22, 26, 44, 39, 18, 61, 61, 38, 38, 44, 27, 19, 20, 170, 17, 158, 17, 225, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 243, 185, 183, 228, 24, 30, 34, 25, 60, 31, 33, 36, 32, 28, 25, 35, 30, 23, 228, 189, 169, 236, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 242, 255, 63, 29, 62, 41, 42, 42, 78, 78, 42, 42, 41, 33, 43, 60, 255, 243, 249, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 37, 49, 57, 52, 10, 83, 91, 11, 52, 51, 50, 36, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 46, 58, 66, 145, 144, 95, 201, 138, 145, 119, 58, 45, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 63, 68, 167, 146, 170, 203, 203, 173, 146, 130, 155, 63, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 252, 191, 170, 246, 252, 71, 82, 55, 150, 190, 207, 208, 208, 207, 175, 151, 53, 79, 59, 249, 249, 212, 212, 249, 255, 255, 255, 255, + 255, 255, 255, 255, 225, 195, 228, 158, 8, 47, 81, 69, 144, 193, 237, 238, 238, 237, 193, 150, 68, 80, 56, 115, 140, 220, 223, 221, 255, 255, 255, 255, + 255, 255, 255, 249, 158, 155, 169, 17, 170, 74, 92, 70, 145, 236, 17, 243, 234, 17, 197, 153, 69, 87, 84, 186, 142, 183, 146, 146, 246, 255, 255, 255, + 255, 255, 255, 228, 195, 243, 170, 243, 170, 88, 84, 158, 141, 236, 1, 243, 158, 252, 155, 152, 161, 74, 84, 217, 232, 216, 235, 230, 222, 255, 255, 255, + 255, 255, 255, 195, 155, 158, 160, 210, 219, 198, 94, 159, 139, 14, 191, 14, 165, 236, 17, 209, 156, 90, 84, 231, 210, 172, 140, 146, 212, 255, 255, 255, + 255, 255, 255, 255, 252, 240, 46, 5, 215, 198, 93, 72, 136, 244, 252, 249, 244, 249, 243, 147, 160, 92, 198, 224, 139, 160, 237, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 252, 86, 121, 162, 205, 93, 75, 129, 141, 143, 176, 176, 141, 141, 137, 73, 93, 204, 170, 120, 77, 247, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 130, 149, 229, 171, 92, 89, 198, 198, 206, 207, 198, 198, 89, 93, 76, 236, 67, 128, 247, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 228, 155, 157, 247, 228, 205, 200, 198, 202, 202, 199, 200, 205, 226, 250, 159, 16, 196, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 252, 178, 67, 211, 252, 255, 255, 246, 77, 85, 243, 255, 255, 255, 215, 148, 180, 250, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 250, 178, 182, 233, 227, 247, 255, 246, 243, 255, 247, 227, 228, 182, 177, 247, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 250, 188, 154, 149, 54, 134, 69, 188, 186, 169, 17, 118, 149, 154, 213, 250, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 224, 174, 178, 127, 21, 134, 48, 67, 149, 163, 192, 230, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 248, 236, 231, 231, 239, 247, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(32, 32, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "40 40 40"); + IupSetAttribute(image, "2", "127 10 11"); + IupSetAttribute(image, "3", "127 18 19"); + IupSetAttribute(image, "4", "95 95 95"); + IupSetAttribute(image, "5", "90 102 126"); + IupSetAttribute(image, "6", "98 84 81"); + IupSetAttribute(image, "7", "127 116 77"); + IupSetAttribute(image, "8", "101 101 101"); + IupSetAttribute(image, "9", "110 110 110"); + IupSetAttribute(image, "10", "100 111 126"); + IupSetAttribute(image, "11", "102 113 127"); + IupSetAttribute(image, "12", "115 107 107"); + IupSetAttribute(image, "13", "125 122 108"); + IupSetAttribute(image, "14", "116 116 116"); + IupSetAttribute(image, "15", "125 119 119"); + IupSetAttribute(image, "16", "121 125 119"); + IupSetAttribute(image, "17", "124 125 124"); + IupSetAttribute(image, "18", "63 63 147"); + IupSetAttribute(image, "19", "31 68 163"); + IupSetAttribute(image, "20", "60 83 142"); + IupSetAttribute(image, "21", "61 84 148"); + IupSetAttribute(image, "22", "43 78 160"); + IupSetAttribute(image, "23", "41 79 175"); + IupSetAttribute(image, "24", "47 80 163"); + IupSetAttribute(image, "25", "57 90 172"); + IupSetAttribute(image, "26", "52 87 177"); + IupSetAttribute(image, "27", "54 90 181"); + IupSetAttribute(image, "28", "61 95 176"); + IupSetAttribute(image, "29", "58 96 188"); + IupSetAttribute(image, "30", "26 81 221"); + IupSetAttribute(image, "31", "59 98 197"); + IupSetAttribute(image, "32", "62 101 201"); + IupSetAttribute(image, "33", "61 105 219"); + IupSetAttribute(image, "34", "39 96 243"); + IupSetAttribute(image, "35", "40 97 243"); + IupSetAttribute(image, "36", "61 108 228"); + IupSetAttribute(image, "37", "60 108 232"); + IupSetAttribute(image, "38", "65 69 153"); + IupSetAttribute(image, "39", "65 74 159"); + IupSetAttribute(image, "40", "68 88 139"); + IupSetAttribute(image, "41", "93 112 149"); + IupSetAttribute(image, "42", "94 114 154"); + IupSetAttribute(image, "43", "65 98 176"); + IupSetAttribute(image, "44", "70 104 190"); + IupSetAttribute(image, "45", "84 108 162"); + IupSetAttribute(image, "46", "84 109 170"); + IupSetAttribute(image, "47", "88 109 162"); + IupSetAttribute(image, "48", "106 115 129"); + IupSetAttribute(image, "49", "111 122 134"); + IupSetAttribute(image, "50", "111 123 136"); + IupSetAttribute(image, "51", "106 123 154"); + IupSetAttribute(image, "52", "114 123 131"); + IupSetAttribute(image, "53", "115 126 143"); + IupSetAttribute(image, "54", "120 127 132"); + IupSetAttribute(image, "55", "113 126 148"); + IupSetAttribute(image, "56", "99 121 174"); + IupSetAttribute(image, "57", "104 124 161"); + IupSetAttribute(image, "58", "101 126 180"); + IupSetAttribute(image, "59", "99 123 188"); + IupSetAttribute(image, "60", "67 102 192"); + IupSetAttribute(image, "61", "79 111 193"); + IupSetAttribute(image, "62", "67 108 208"); + IupSetAttribute(image, "63", "82 114 194"); + IupSetAttribute(image, "64", "91 120 196"); + IupSetAttribute(image, "65", "98 126 196"); + IupSetAttribute(image, "66", "127 130 116"); + IupSetAttribute(image, "67", "125 129 124"); + IupSetAttribute(image, "68", "122 131 139"); + IupSetAttribute(image, "69", "124 133 146"); + IupSetAttribute(image, "70", "123 134 152"); + IupSetAttribute(image, "71", "108 129 186"); + IupSetAttribute(image, "72", "126 139 164"); + IupSetAttribute(image, "73", "116 135 178"); + IupSetAttribute(image, "74", "114 135 185"); + IupSetAttribute(image, "75", "115 137 187"); + IupSetAttribute(image, "76", "120 136 176"); + IupSetAttribute(image, "77", "124 141 189"); + IupSetAttribute(image, "78", "86 131 244"); + IupSetAttribute(image, "79", "101 130 203"); + IupSetAttribute(image, "80", "106 132 196"); + IupSetAttribute(image, "81", "106 135 204"); + IupSetAttribute(image, "82", "101 132 211"); + IupSetAttribute(image, "83", "101 135 223"); + IupSetAttribute(image, "84", "115 137 195"); + IupSetAttribute(image, "85", "124 143 192"); + IupSetAttribute(image, "86", "113 137 210"); + IupSetAttribute(image, "87", "114 143 216"); + IupSetAttribute(image, "88", "127 147 197"); + IupSetAttribute(image, "89", "123 147 205"); + IupSetAttribute(image, "90", "122 150 222"); + IupSetAttribute(image, "91", "104 140 234"); + IupSetAttribute(image, "92", "115 147 227"); + IupSetAttribute(image, "93", "115 149 235"); + IupSetAttribute(image, "94", "122 152 228"); + IupSetAttribute(image, "95", "126 156 235"); + IupSetAttribute(image, "96", "151 5 7"); + IupSetAttribute(image, "97", "157 1 2"); + IupSetAttribute(image, "98", "145 71 69"); + IupSetAttribute(image, "99", "148 88 84"); + IupSetAttribute(image, "100", "138 117 77"); + IupSetAttribute(image, "101", "130 121 82"); + IupSetAttribute(image, "102", "137 127 86"); + IupSetAttribute(image, "103", "130 113 114"); + IupSetAttribute(image, "104", "137 121 120"); + IupSetAttribute(image, "105", "145 105 105"); + IupSetAttribute(image, "106", "152 120 120"); + IupSetAttribute(image, "107", "161 67 68"); + IupSetAttribute(image, "108", "168 69 70"); + IupSetAttribute(image, "109", "139 131 86"); + IupSetAttribute(image, "110", "139 131 89"); + IupSetAttribute(image, "111", "145 133 89"); + IupSetAttribute(image, "112", "148 137 81"); + IupSetAttribute(image, "113", "148 138 91"); + IupSetAttribute(image, "114", "152 143 95"); + IupSetAttribute(image, "115", "157 147 87"); + IupSetAttribute(image, "116", "135 130 100"); + IupSetAttribute(image, "117", "139 133 101"); + IupSetAttribute(image, "118", "142 136 101"); + IupSetAttribute(image, "119", "132 133 114"); + IupSetAttribute(image, "120", "128 132 126"); + IupSetAttribute(image, "121", "134 137 127"); + IupSetAttribute(image, "122", "143 138 114"); + IupSetAttribute(image, "123", "148 139 101"); + IupSetAttribute(image, "124", "146 140 108"); + IupSetAttribute(image, "125", "154 146 100"); + IupSetAttribute(image, "126", "154 147 105"); + IupSetAttribute(image, "127", "145 144 118"); + IupSetAttribute(image, "128", "150 149 122"); + IupSetAttribute(image, "129", "152 149 116"); + IupSetAttribute(image, "130", "157 155 124"); + IupSetAttribute(image, "131", "160 150 94"); + IupSetAttribute(image, "132", "165 155 92"); + IupSetAttribute(image, "133", "163 153 101"); + IupSetAttribute(image, "134", "163 155 104"); + IupSetAttribute(image, "135", "168 158 102"); + IupSetAttribute(image, "136", "169 155 106"); + IupSetAttribute(image, "137", "160 155 114"); + IupSetAttribute(image, "138", "175 164 101"); + IupSetAttribute(image, "139", "175 163 112"); + IupSetAttribute(image, "140", "172 165 123"); + IupSetAttribute(image, "141", "179 163 109"); + IupSetAttribute(image, "142", "181 170 107"); + IupSetAttribute(image, "143", "184 166 110"); + IupSetAttribute(image, "144", "187 173 101"); + IupSetAttribute(image, "145", "186 172 105"); + IupSetAttribute(image, "146", "180 171 122"); + IupSetAttribute(image, "147", "186 171 123"); + IupSetAttribute(image, "148", "191 177 107"); + IupSetAttribute(image, "149", "188 179 118"); + IupSetAttribute(image, "150", "196 181 108"); + IupSetAttribute(image, "151", "202 187 108"); + IupSetAttribute(image, "152", "196 180 126"); + IupSetAttribute(image, "153", "205 188 127"); + IupSetAttribute(image, "154", "209 194 112"); + IupSetAttribute(image, "155", "131 132 132"); + IupSetAttribute(image, "156", "130 137 143"); + IupSetAttribute(image, "157", "143 143 128"); + IupSetAttribute(image, "158", "139 139 139"); + IupSetAttribute(image, "159", "128 137 149"); + IupSetAttribute(image, "160", "128 139 157"); + IupSetAttribute(image, "161", "140 144 135"); + IupSetAttribute(image, "162", "143 146 138"); + IupSetAttribute(image, "163", "138 146 157"); + IupSetAttribute(image, "164", "148 143 135"); + IupSetAttribute(image, "165", "149 142 142"); + IupSetAttribute(image, "166", "152 149 129"); + IupSetAttribute(image, "167", "155 153 129"); + IupSetAttribute(image, "168", "154 152 140"); + IupSetAttribute(image, "169", "148 148 147"); + IupSetAttribute(image, "170", "154 156 154"); + IupSetAttribute(image, "171", "128 142 177"); + IupSetAttribute(image, "172", "157 160 151"); + IupSetAttribute(image, "173", "153 160 162"); + IupSetAttribute(image, "174", "157 164 170"); + IupSetAttribute(image, "175", "158 167 178"); + IupSetAttribute(image, "176", "172 162 130"); + IupSetAttribute(image, "177", "164 165 145"); + IupSetAttribute(image, "178", "162 164 153"); + IupSetAttribute(image, "179", "169 165 148"); + IupSetAttribute(image, "180", "176 171 133"); + IupSetAttribute(image, "181", "179 175 153"); + IupSetAttribute(image, "182", "185 179 130"); + IupSetAttribute(image, "183", "187 179 139"); + IupSetAttribute(image, "184", "191 184 143"); + IupSetAttribute(image, "185", "183 178 149"); + IupSetAttribute(image, "186", "180 177 156"); + IupSetAttribute(image, "187", "184 179 153"); + IupSetAttribute(image, "188", "188 186 158"); + IupSetAttribute(image, "189", "163 163 163"); + IupSetAttribute(image, "190", "160 168 172"); + IupSetAttribute(image, "191", "170 170 170"); + IupSetAttribute(image, "192", "160 168 177"); + IupSetAttribute(image, "193", "181 175 165"); + IupSetAttribute(image, "194", "191 187 164"); + IupSetAttribute(image, "195", "180 180 180"); + IupSetAttribute(image, "196", "188 189 179"); + IupSetAttribute(image, "197", "186 186 186"); + IupSetAttribute(image, "198", "133 151 197"); + IupSetAttribute(image, "199", "129 151 209"); + IupSetAttribute(image, "200", "155 166 193"); + IupSetAttribute(image, "201", "133 165 248"); + IupSetAttribute(image, "202", "151 178 250"); + IupSetAttribute(image, "203", "156 182 250"); + IupSetAttribute(image, "204", "172 178 193"); + IupSetAttribute(image, "205", "177 182 196"); + IupSetAttribute(image, "206", "171 192 247"); + IupSetAttribute(image, "207", "172 194 250"); + IupSetAttribute(image, "208", "178 199 251"); + IupSetAttribute(image, "209", "192 177 130"); + IupSetAttribute(image, "210", "195 187 133"); + IupSetAttribute(image, "211", "192 188 151"); + IupSetAttribute(image, "212", "194 188 155"); + IupSetAttribute(image, "213", "192 190 163"); + IupSetAttribute(image, "214", "192 189 174"); + IupSetAttribute(image, "215", "194 192 169"); + IupSetAttribute(image, "216", "202 196 164"); + IupSetAttribute(image, "217", "206 200 166"); + IupSetAttribute(image, "218", "205 201 175"); + IupSetAttribute(image, "219", "197 198 186"); + IupSetAttribute(image, "220", "207 203 185"); + IupSetAttribute(image, "221", "208 203 175"); + IupSetAttribute(image, "222", "210 205 179"); + IupSetAttribute(image, "223", "208 205 188"); + IupSetAttribute(image, "224", "210 209 189"); + IupSetAttribute(image, "225", "194 194 194"); + IupSetAttribute(image, "226", "199 200 204"); + IupSetAttribute(image, "227", "206 207 195"); + IupSetAttribute(image, "228", "202 203 202"); + IupSetAttribute(image, "229", "202 206 211"); + IupSetAttribute(image, "230", "212 211 195"); + IupSetAttribute(image, "231", "210 211 203"); + IupSetAttribute(image, "232", "217 215 205"); + IupSetAttribute(image, "233", "211 212 209"); + IupSetAttribute(image, "234", "218 214 210"); + IupSetAttribute(image, "235", "221 219 212"); + IupSetAttribute(image, "236", "220 221 221"); + IupSetAttribute(image, "237", "205 211 241"); + IupSetAttribute(image, "238", "209 212 240"); + IupSetAttribute(image, "239", "223 224 222"); + IupSetAttribute(image, "240", "221 226 242"); + IupSetAttribute(image, "241", "224 223 216"); + IupSetAttribute(image, "242", "227 225 220"); + IupSetAttribute(image, "243", "227 227 226"); + IupSetAttribute(image, "244", "234 230 229"); + IupSetAttribute(image, "245", "233 232 227"); + IupSetAttribute(image, "246", "234 234 233"); + IupSetAttribute(image, "247", "234 237 244"); + IupSetAttribute(image, "248", "237 240 248"); + IupSetAttribute(image, "249", "243 243 243"); + IupSetAttribute(image, "250", "243 245 250"); + IupSetAttribute(image, "251", "247 248 253"); + IupSetAttribute(image, "252", "251 251 251"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_BR8(void) +{ + unsigned char imgdata[] = { + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155, + 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155, + 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155, + 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155, + 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155, + 155, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 155, + 155, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 77, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 145, 145, 145, 145, 142, 136, 155, 155, 155, 155, 151, 139, 142, 138, 145, 145, 149, 154, 152, 153, 155, 155, 153, 152, 134, 138, 154, 154, 145, 145, 155, + 155, 3, 3, 3, 3, 3, 55, 155, 155, 155, 155, 151, 112, 95, 46, 3, 3, 9, 27, 131, 154, 155, 155, 154, 131, 109, 72, 20, 7, 3, 3, 155, + 155, 4, 4, 4, 4, 10, 87, 155, 155, 148, 146, 132, 150, 154, 130, 41, 11, 11, 56, 155, 155, 154, 149, 150, 149, 154, 153, 66, 8, 4, 4, 155, + 155, 4, 4, 4, 4, 21, 114, 155, 155, 57, 37, 47, 94, 153, 154, 76, 0, 6, 86, 155, 155, 96, 51, 52, 70, 130, 154, 92, 19, 4, 4, 155, + 155, 4, 4, 4, 4, 44, 147, 144, 111, 9, 7, 12, 61, 154, 153, 63, 8, 13, 117, 137, 152, 40, 1, 2, 25, 123, 152, 85, 7, 4, 4, 155, + 155, 4, 4, 4, 4, 74, 147, 142, 115, 91, 89, 90, 121, 137, 108, 23, 4, 43, 140, 154, 125, 52, 53, 54, 103, 152, 126, 45, 16, 4, 4, 155, + 155, 4, 4, 3, 9, 101, 149, 152, 141, 142, 151, 137, 142, 124, 36, 4, 4, 75, 141, 153, 154, 149, 150, 155, 155, 118, 50, 4, 4, 4, 4, 155, + 155, 4, 4, 9, 29, 141, 153, 129, 67, 60, 65, 108, 137, 135, 92, 4, 4, 105, 138, 142, 113, 106, 116, 155, 155, 104, 30, 4, 4, 4, 4, 155, + 155, 4, 4, 5, 71, 155, 155, 99, 6, 18, 17, 64, 149, 137, 107, 8, 31, 155, 155, 128, 35, 4, 9, 102, 137, 141, 58, 4, 4, 4, 4, 155, + 155, 4, 4, 7, 84, 155, 155, 93, 39, 38, 48, 110, 133, 150, 97, 5, 69, 155, 155, 100, 2, 4, 4, 82, 152, 154, 59, 4, 4, 4, 4, 155, + 155, 4, 4, 15, 119, 155, 155, 155, 155, 155, 155, 141, 140, 127, 46, 10, 88, 155, 155, 73, 5, 4, 4, 83, 149, 141, 62, 4, 4, 4, 4, 155, + 155, 4, 4, 49, 143, 155, 155, 155, 155, 155, 155, 122, 98, 46, 3, 14, 120, 155, 155, 42, 5, 4, 4, 81, 149, 140, 68, 4, 4, 4, 4, 155, + 155, 4, 4, 22, 34, 33, 33, 33, 33, 33, 26, 4, 4, 4, 4, 15, 28, 33, 33, 9, 4, 4, 4, 24, 32, 32, 24, 4, 4, 4, 4, 155, + 155, 4, 4, 3, 3, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 8, 3, 4, 4, 4, 4, 4, 4, 3, 8, 8, 3, 4, 4, 4, 4, 155, + 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155, + 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155, + 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155, + 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155, + 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155, + 155, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155}; + + Ihandle* image = IupImage(32, 32, imgdata); + + IupSetAttribute(image, "0", "1 132 95"); + IupSetAttribute(image, "1", "2 131 97"); + IupSetAttribute(image, "2", "2 132 96"); + IupSetAttribute(image, "3", "1 132 97"); + IupSetAttribute(image, "4", "0 132 98"); + IupSetAttribute(image, "5", "2 133 99"); + IupSetAttribute(image, "6", "1 134 96"); + IupSetAttribute(image, "7", "1 134 97"); + IupSetAttribute(image, "8", "1 134 98"); + IupSetAttribute(image, "9", "1 134 99"); + IupSetAttribute(image, "10", "2 132 100"); + IupSetAttribute(image, "11", "2 135 100"); + IupSetAttribute(image, "12", "5 133 96"); + IupSetAttribute(image, "13", "7 133 97"); + IupSetAttribute(image, "14", "5 134 98"); + IupSetAttribute(image, "15", "6 134 99"); + IupSetAttribute(image, "16", "5 134 102"); + IupSetAttribute(image, "17", "0 136 96"); + IupSetAttribute(image, "18", "0 136 97"); + IupSetAttribute(image, "19", "1 136 98"); + IupSetAttribute(image, "20", "2 136 99"); + IupSetAttribute(image, "21", "7 136 99"); + IupSetAttribute(image, "22", "12 138 105"); + IupSetAttribute(image, "23", "14 140 108"); + IupSetAttribute(image, "24", "15 142 108"); + IupSetAttribute(image, "25", "17 139 108"); + IupSetAttribute(image, "26", "18 141 109"); + IupSetAttribute(image, "27", "31 151 111"); + IupSetAttribute(image, "28", "27 149 116"); + IupSetAttribute(image, "29", "31 150 112"); + IupSetAttribute(image, "30", "33 146 115"); + IupSetAttribute(image, "31", "34 148 116"); + IupSetAttribute(image, "32", "32 149 118"); + IupSetAttribute(image, "33", "32 148 119"); + IupSetAttribute(image, "34", "32 151 119"); + IupSetAttribute(image, "35", "37 146 115"); + IupSetAttribute(image, "36", "60 157 125"); + IupSetAttribute(image, "37", "78 167 126"); + IupSetAttribute(image, "38", "83 165 126"); + IupSetAttribute(image, "39", "82 166 127"); + IupSetAttribute(image, "40", "60 162 130"); + IupSetAttribute(image, "41", "61 161 132"); + IupSetAttribute(image, "42", "75 164 137"); + IupSetAttribute(image, "43", "72 166 139"); + IupSetAttribute(image, "44", "75 166 140"); + IupSetAttribute(image, "45", "76 166 140"); + IupSetAttribute(image, "46", "78 168 140"); + IupSetAttribute(image, "47", "82 165 136"); + IupSetAttribute(image, "48", "93 171 141"); + IupSetAttribute(image, "49", "80 165 145"); + IupSetAttribute(image, "50", "92 171 146"); + IupSetAttribute(image, "51", "94 178 155"); + IupSetAttribute(image, "52", "93 178 156"); + IupSetAttribute(image, "53", "94 179 157"); + IupSetAttribute(image, "54", "102 179 156"); + IupSetAttribute(image, "55", "104 182 159"); + IupSetAttribute(image, "56", "109 182 158"); + IupSetAttribute(image, "57", "117 186 148"); + IupSetAttribute(image, "58", "102 180 160"); + IupSetAttribute(image, "59", "106 181 162"); + IupSetAttribute(image, "60", "105 182 162"); + IupSetAttribute(image, "61", "109 183 164"); + IupSetAttribute(image, "62", "104 184 163"); + IupSetAttribute(image, "63", "107 185 164"); + IupSetAttribute(image, "64", "110 184 164"); + IupSetAttribute(image, "65", "111 186 164"); + IupSetAttribute(image, "66", "112 183 160"); + IupSetAttribute(image, "67", "113 185 163"); + IupSetAttribute(image, "68", "114 186 161"); + IupSetAttribute(image, "69", "114 186 162"); + IupSetAttribute(image, "70", "112 185 167"); + IupSetAttribute(image, "71", "113 186 164"); + IupSetAttribute(image, "72", "121 189 160"); + IupSetAttribute(image, "73", "121 190 169"); + IupSetAttribute(image, "74", "122 191 172"); + IupSetAttribute(image, "75", "124 191 171"); + IupSetAttribute(image, "76", "124 192 172"); + IupSetAttribute(image, "77", "239 194 8"); + IupSetAttribute(image, "78", "243 193 6"); + IupSetAttribute(image, "79", "244 194 4"); + IupSetAttribute(image, "80", "242 194 8"); + IupSetAttribute(image, "81", "129 196 178"); + IupSetAttribute(image, "82", "137 197 182"); + IupSetAttribute(image, "83", "137 198 182"); + IupSetAttribute(image, "84", "149 199 182"); + IupSetAttribute(image, "85", "148 199 184"); + IupSetAttribute(image, "86", "147 201 182"); + IupSetAttribute(image, "87", "146 202 186"); + IupSetAttribute(image, "88", "150 201 186"); + IupSetAttribute(image, "89", "152 203 183"); + IupSetAttribute(image, "90", "155 205 182"); + IupSetAttribute(image, "91", "152 204 183"); + IupSetAttribute(image, "92", "157 202 189"); + IupSetAttribute(image, "93", "169 209 186"); + IupSetAttribute(image, "94", "158 209 194"); + IupSetAttribute(image, "95", "163 208 195"); + IupSetAttribute(image, "96", "162 210 194"); + IupSetAttribute(image, "97", "160 210 197"); + IupSetAttribute(image, "98", "167 209 195"); + IupSetAttribute(image, "99", "171 210 197"); + IupSetAttribute(image, "100", "174 209 199"); + IupSetAttribute(image, "101", "171 213 201"); + IupSetAttribute(image, "102", "174 213 200"); + IupSetAttribute(image, "103", "170 216 199"); + IupSetAttribute(image, "104", "189 218 207"); + IupSetAttribute(image, "105", "189 222 207"); + IupSetAttribute(image, "106", "190 222 215"); + IupSetAttribute(image, "107", "189 224 216"); + IupSetAttribute(image, "108", "194 220 213"); + IupSetAttribute(image, "109", "194 226 214"); + IupSetAttribute(image, "110", "198 225 218"); + IupSetAttribute(image, "111", "211 230 222"); + IupSetAttribute(image, "112", "221 227 223"); + IupSetAttribute(image, "113", "212 230 226"); + IupSetAttribute(image, "114", "215 233 227"); + IupSetAttribute(image, "115", "216 232 225"); + IupSetAttribute(image, "116", "219 235 228"); + IupSetAttribute(image, "117", "216 237 233"); + IupSetAttribute(image, "118", "221 239 234"); + IupSetAttribute(image, "119", "229 239 236"); + IupSetAttribute(image, "120", "225 240 236"); + IupSetAttribute(image, "121", "227 242 239"); + IupSetAttribute(image, "122", "241 245 238"); + IupSetAttribute(image, "123", "245 246 238"); + IupSetAttribute(image, "124", "240 245 244"); + IupSetAttribute(image, "125", "240 247 244"); + IupSetAttribute(image, "126", "247 247 244"); + IupSetAttribute(image, "127", "241 250 243"); + IupSetAttribute(image, "128", "243 249 245"); + IupSetAttribute(image, "129", "242 250 244"); + IupSetAttribute(image, "130", "247 248 242"); + IupSetAttribute(image, "131", "249 249 247"); + IupSetAttribute(image, "132", "251 250 248"); + IupSetAttribute(image, "133", "248 251 249"); + IupSetAttribute(image, "134", "251 250 250"); + IupSetAttribute(image, "135", "251 251 251"); + IupSetAttribute(image, "136", "249 249 252"); + IupSetAttribute(image, "137", "250 251 252"); + IupSetAttribute(image, "138", "249 251 253"); + IupSetAttribute(image, "139", "248 252 250"); + IupSetAttribute(image, "140", "249 252 251"); + IupSetAttribute(image, "141", "249 252 252"); + IupSetAttribute(image, "142", "250 252 253"); + IupSetAttribute(image, "143", "250 254 252"); + IupSetAttribute(image, "144", "250 254 253"); + IupSetAttribute(image, "145", "251 254 254"); + IupSetAttribute(image, "146", "253 251 250"); + IupSetAttribute(image, "147", "252 251 251"); + IupSetAttribute(image, "148", "254 248 252"); + IupSetAttribute(image, "149", "252 250 252"); + IupSetAttribute(image, "150", "252 251 253"); + IupSetAttribute(image, "151", "252 252 251"); + IupSetAttribute(image, "152", "253 252 252"); + IupSetAttribute(image, "153", "252 252 253"); + IupSetAttribute(image, "154", "253 252 254"); + IupSetAttribute(image, "155", "255 255 255"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_Tecgraf8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 70, 76, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 33, 44, 43, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 32, 55, 44, 43, 52, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 43, 44, 40, 19, 42, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 44, 67, 255, 12, 23, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 36, 58, 76, 255, 50, 15, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 44, 58, 76, 255, 76, 9, 39, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 44, 77, 255, 255, 255, 34, 31, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 44, 76, 255, 255, 255, 59, 29, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 44, 76, 255, 255, 255, 63, 31, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 74, 40, 52, 66, 73, 73, 73, 48, 31, 60, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 78, 70, 59, 30, 4, 1, 9, 55, 39, 32, 29, 29, 28, 28, 28, 28, 36, 53, 71, 79, 76, 255, 255, 255, 255, 255, + 255, 255, 76, 73, 53, 29, 42, 43, 58, 75, 21, 10, 17, 57, 76, 76, 71, 70, 40, 22, 21, 14, 7, 9, 9, 14, 27, 51, 73, 76, 255, 255, + 255, 76, 40, 27, 31, 55, 65, 76, 76, 255, 255, 255, 28, 58, 255, 255, 255, 255, 82, 43, 65, 255, 76, 69, 46, 11, 3, 16, 30, 41, 76, 255, + 255, 70, 27, 27, 43, 81, 255, 255, 255, 255, 255, 255, 22, 58, 255, 255, 255, 255, 82, 44, 65, 255, 255, 255, 255, 255, 69, 12, 32, 32, 62, 255, + 255, 47, 13, 28, 38, 76, 255, 255, 255, 255, 255, 255, 21, 55, 255, 255, 255, 255, 82, 57, 67, 255, 255, 255, 255, 255, 76, 52, 32, 42, 62, 255, + 255, 76, 5, 5, 14, 28, 54, 76, 76, 255, 255, 255, 21, 44, 255, 255, 255, 255, 82, 65, 67, 255, 255, 255, 80, 71, 39, 44, 44, 44, 76, 255, + 255, 255, 76, 35, 5, 3, 6, 8, 16, 28, 53, 66, 28, 39, 71, 76, 76, 76, 60, 43, 43, 67, 64, 57, 44, 44, 56, 55, 76, 76, 255, 255, + 255, 255, 255, 255, 255, 72, 47, 25, 5, 2, 4, 9, 15, 19, 22, 27, 29, 30, 33, 43, 52, 57, 39, 38, 66, 76, 76, 76, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 50, 18, 15, 40, 59, 63, 63, 48, 37, 48, 79, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 28, 76, 255, 255, 255, 80, 55, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 22, 76, 255, 255, 255, 80, 44, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 20, 76, 255, 255, 255, 67, 44, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 13, 57, 255, 255, 76, 52, 44, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 5, 39, 76, 255, 79, 55, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 22, 68, 255, 60, 43, 71, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 9, 42, 64, 42, 39, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 3, 32, 39, 39, 43, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 7, 39, 39, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 26, 40, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(32, 32, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "8 16 24"); + IupSetAttribute(image, "2", "33 33 41"); + IupSetAttribute(image, "3", "33 33 49"); + IupSetAttribute(image, "4", "41 49 66"); + IupSetAttribute(image, "5", "49 57 66"); + IupSetAttribute(image, "6", "49 57 74"); + IupSetAttribute(image, "7", "57 66 82"); + IupSetAttribute(image, "8", "57 74 90"); + IupSetAttribute(image, "9", "66 74 90"); + IupSetAttribute(image, "10", "74 74 82"); + IupSetAttribute(image, "11", "74 82 82"); + IupSetAttribute(image, "12", "74 82 90"); + IupSetAttribute(image, "13", "66 74 99"); + IupSetAttribute(image, "14", "74 82 99"); + IupSetAttribute(image, "15", "74 82 107"); + IupSetAttribute(image, "16", "74 90 107"); + IupSetAttribute(image, "17", "82 90 107"); + IupSetAttribute(image, "18", "90 90 107"); + IupSetAttribute(image, "19", "82 90 115"); + IupSetAttribute(image, "20", "82 99 115"); + IupSetAttribute(image, "21", "90 99 115"); + IupSetAttribute(image, "22", "90 99 123"); + IupSetAttribute(image, "23", "90 107 123"); + IupSetAttribute(image, "24", "99 99 107"); + IupSetAttribute(image, "25", "107 107 115"); + IupSetAttribute(image, "26", "123 123 123"); + IupSetAttribute(image, "27", "90 107 132"); + IupSetAttribute(image, "28", "99 107 132"); + IupSetAttribute(image, "29", "99 115 140"); + IupSetAttribute(image, "30", "107 115 140"); + IupSetAttribute(image, "31", "107 115 148"); + IupSetAttribute(image, "32", "107 123 148"); + IupSetAttribute(image, "33", "107 123 156"); + IupSetAttribute(image, "34", "115 123 132"); + IupSetAttribute(image, "35", "123 123 132"); + IupSetAttribute(image, "36", "115 123 148"); + IupSetAttribute(image, "37", "115 123 156"); + IupSetAttribute(image, "38", "115 132 148"); + IupSetAttribute(image, "39", "115 132 156"); + IupSetAttribute(image, "40", "123 132 148"); + IupSetAttribute(image, "41", "123 132 156"); + IupSetAttribute(image, "42", "115 132 165"); + IupSetAttribute(image, "43", "123 140 165"); + IupSetAttribute(image, "44", "123 140 173"); + IupSetAttribute(image, "45", "132 132 140"); + IupSetAttribute(image, "46", "132 140 140"); + IupSetAttribute(image, "47", "140 140 140"); + IupSetAttribute(image, "48", "132 140 156"); + IupSetAttribute(image, "49", "148 148 156"); + IupSetAttribute(image, "50", "156 156 156"); + IupSetAttribute(image, "51", "132 140 165"); + IupSetAttribute(image, "52", "132 148 173"); + IupSetAttribute(image, "53", "140 148 165"); + IupSetAttribute(image, "54", "140 156 173"); + IupSetAttribute(image, "55", "132 148 181"); + IupSetAttribute(image, "56", "132 156 189"); + IupSetAttribute(image, "57", "140 156 181"); + IupSetAttribute(image, "58", "140 156 189"); + IupSetAttribute(image, "59", "148 156 165"); + IupSetAttribute(image, "60", "148 156 173"); + IupSetAttribute(image, "61", "156 156 165"); + IupSetAttribute(image, "62", "148 156 181"); + IupSetAttribute(image, "63", "156 165 173"); + IupSetAttribute(image, "64", "148 165 181"); + IupSetAttribute(image, "65", "148 165 189"); + IupSetAttribute(image, "66", "156 165 181"); + IupSetAttribute(image, "67", "156 165 189"); + IupSetAttribute(image, "68", "156 173 189"); + IupSetAttribute(image, "69", "165 165 173"); + IupSetAttribute(image, "70", "165 173 181"); + IupSetAttribute(image, "71", "165 173 189"); + IupSetAttribute(image, "72", "173 173 181"); + IupSetAttribute(image, "73", "173 181 189"); + IupSetAttribute(image, "74", "189 189 189"); + IupSetAttribute(image, "75", "148 165 198"); + IupSetAttribute(image, "76", "173 181 198"); + IupSetAttribute(image, "77", "173 189 206"); + IupSetAttribute(image, "78", "181 181 198"); + IupSetAttribute(image, "79", "181 189 198"); + IupSetAttribute(image, "80", "181 189 206"); + IupSetAttribute(image, "81", "189 198 214"); + IupSetAttribute(image, "82", "198 198 198"); + IupSetAttribute(image, "83", "0 0 0"); + IupSetAttribute(image, "84", "0 0 0"); + IupSetAttribute(image, "85", "0 0 0"); + IupSetAttribute(image, "86", "0 0 0"); + IupSetAttribute(image, "87", "0 0 0"); + IupSetAttribute(image, "88", "0 0 0"); + IupSetAttribute(image, "89", "0 0 0"); + IupSetAttribute(image, "90", "0 0 0"); + IupSetAttribute(image, "91", "0 0 0"); + IupSetAttribute(image, "92", "0 0 0"); + IupSetAttribute(image, "93", "0 0 0"); + IupSetAttribute(image, "94", "0 0 0"); + IupSetAttribute(image, "95", "0 0 0"); + IupSetAttribute(image, "96", "0 0 0"); + IupSetAttribute(image, "97", "0 0 0"); + IupSetAttribute(image, "98", "0 0 0"); + IupSetAttribute(image, "99", "0 0 0"); + IupSetAttribute(image, "100", "0 0 0"); + IupSetAttribute(image, "101", "0 0 0"); + IupSetAttribute(image, "102", "0 0 0"); + IupSetAttribute(image, "103", "0 0 0"); + IupSetAttribute(image, "104", "0 0 0"); + IupSetAttribute(image, "105", "0 0 0"); + IupSetAttribute(image, "106", "0 0 0"); + IupSetAttribute(image, "107", "0 0 0"); + IupSetAttribute(image, "108", "0 0 0"); + IupSetAttribute(image, "109", "0 0 0"); + IupSetAttribute(image, "110", "0 0 0"); + IupSetAttribute(image, "111", "0 0 0"); + IupSetAttribute(image, "112", "0 0 0"); + IupSetAttribute(image, "113", "0 0 0"); + IupSetAttribute(image, "114", "0 0 0"); + IupSetAttribute(image, "115", "0 0 0"); + IupSetAttribute(image, "116", "0 0 0"); + IupSetAttribute(image, "117", "0 0 0"); + IupSetAttribute(image, "118", "0 0 0"); + IupSetAttribute(image, "119", "0 0 0"); + IupSetAttribute(image, "120", "0 0 0"); + IupSetAttribute(image, "121", "0 0 0"); + IupSetAttribute(image, "122", "0 0 0"); + IupSetAttribute(image, "123", "0 0 0"); + IupSetAttribute(image, "124", "0 0 0"); + IupSetAttribute(image, "125", "0 0 0"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + diff --git a/iup/srcimglib/iup_imglib_logos.h b/iup/srcimglib/iup_imglib_logos.h new file mode 100755 index 0000000..9d527f3 --- /dev/null +++ b/iup/srcimglib/iup_imglib_logos.h @@ -0,0 +1,1319 @@ +static Ihandle* load_image_LogoBR(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 26, 150, 95, 255, 252, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 233, 243, 238, 255, 176, 217, 198, 255, 73, 171, 127, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 124, 194, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 231, 242, 237, 255, 159, 210, 186, 255, 35, 154, 101, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 8, 142, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 89, 179, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 123, 194, 162, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 192, 226, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 244, 238, 255, 31, 154, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 163, 213, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 253, 255, 36, 156, 103, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 89, 255, 250, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 163, 213, 191, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 234, 245, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 246, 242, 255, 90, 181, 141, 255, 90, 181, 141, 255, 90, 181, 141, 255, 92, 181, 142, 255, 155, 209, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 185, 147, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 85, 177, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 214, 193, 255, 98, 183, 145, 255, 98, 183, 145, 255, 98, 183, 145, 255, 111, 189, 155, 255, 216, 237, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 245, 240, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 55, 164, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 215, 193, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 230, 243, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 184, 147, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 158, 211, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 164, 116, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 66, 169, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 249, 247, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 129, 197, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 182, 144, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 157, 105, 255, 250, 253, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 159, 108, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 231, 243, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 246, 241, 255, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 90, 180, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 229, 215, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 202, 231, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 213, 192, 255, 147, 205, 179, 255, 147, 205, 179, 255, 147, 205, 179, 255, 159, 211, 188, 255, 238, 247, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 216, 195, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 51, 162, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 215, 194, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 61, 166, 120, 255, 229, 243, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 183, 145, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 150, 94, 255, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 224, 208, 255, 12, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 125, 196, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 249, 247, 255, 230, 244, 238, 255, 230, 244, 238, 255, 230, 244, 238, 255, 239, 247, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 217, 197, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 95, 182, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 252, 250, 255, 67, 169, 124, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 199, 229, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 254, 253, 255, 146, 205, 179, 255, 5, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 169, 215, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 222, 204, 255, 170, 216, 196, 255, 170, 216, 196, 255, 171, 216, 196, 255, 201, 230, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 248, 245, 255, 25, 151, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 149, 92, 255, 252, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 226, 211, 255, 19, 148, 92, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 142, 82, 255, 238, 247, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 247, 243, 255, 4, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 177, 219, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 187, 151, 255, 0, 140, 79, 255, 0, 140, 79, 255, 92, 180, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 218, 198, 255, 99, 185, 147, 255, 99, 185, 147, 255, 104, 186, 150, 255, 168, 215, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 207, 182, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 61, 167, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, 215, 195, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 157, 210, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 196, 164, 255, 0, 140, 79, 255, 0, 140, 79, 255, 165, 214, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 168, 122, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 219, 238, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 226, 210, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 135, 200, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 182, 144, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 56, 164, 117, 255, 244, 250, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 182, 143, 255, 0, 140, 79, 255, 4, 141, 81, 255, 236, 246, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 248, 245, 255, 5, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 195, 227, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 231, 218, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 208, 233, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 233, 221, 255, 195, 227, 213, 255, 195, 227, 213, 255, 195, 227, 213, 255, 213, 235, 225, 255, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 251, 250, 255, 22, 149, 94, 255, 0, 140, 79, 255, 58, 165, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 218, 199, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 186, 223, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 235, 225, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 152, 98, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 194, 162, 255, 0, 140, 79, 255, 0, 140, 79, 255, 132, 199, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 186, 149, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 178, 219, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 240, 232, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 101, 185, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 251, 249, 255, 110, 189, 154, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 205, 232, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 31, 153, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 169, 215, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 244, 239, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 115, 191, 157, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 179, 220, 202, 255, 178, 220, 201, 255, 169, 215, 195, 255, 145, 205, 178, 255, 98, 184, 146, 255, 22, 149, 93, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 145, 87, 255, 188, 223, 207, 255, 189, 224, 208, 255, 189, 224, 208, 255, 189, 224, 208, 255, 165, 213, 191, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 140, 202, 174, 255, 221, 239, 231, 255, 221, 239, 231, 255, 221, 239, 231, 255, 210, 233, 222, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceFax(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 221, 232, 47, 149, 150, 184, 146, 89, 89, 145, 238, 89, 89, 149, 246, 104, 105, 168, 248, 112, 114, 184, 255, 117, 120, 198, 255, 123, 126, 209, 255, 121, 124, 209, 255, 114, 116, 202, 255, 108, 110, 190, 255, 99, 101, 168, 244, 80, 80, 141, 249, 84, 85, 143, 242, 162, 162, 182, 109, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 209, 225, 63, 114, 115, 162, 204, 92, 93, 151, 245, 127, 129, 196, 255, 152, 157, 234, 255, 168, 173, 255, 255, 166, 171, 255, 255, 164, 168, 255, 255, 161, 165, 255, 255, 158, 162, 255, 255, 150, 154, 248, 255, 144, 147, 243, 255, 139, 143, 243, 255, 133, 136, 243, 255, 128, 132, 248, 255, 113, 117, 238, 255, 85, 85, 148, 250, 124, 124, 143, 157, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 250, 11, 118, 119, 165, 196, 98, 99, 155, 245, 145, 148, 209, 255, 181, 186, 254, 255, 183, 187, 255, 255, 180, 184, 255, 255, 171, 175, 251, 255, 143, 146, 219, 255, 130, 132, 202, 255, 135, 138, 205, 255, 136, 140, 205, 255, 147, 151, 213, 255, 153, 157, 218, 255, 152, 157, 218, 255, 152, 157, 218, 255, 146, 150, 213, 255, 130, 134, 205, 255, 110, 112, 194, 255, 81, 81, 147, 254, 119, 119, 135, 153, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 238, 238, 244, 23, 98, 99, 152, 224, 131, 133, 186, 255, 197, 203, 255, 255, 196, 201, 255, 255, 191, 195, 255, 255, 173, 176, 241, 255, 133, 136, 202, 255, 141, 145, 207, 255, 179, 186, 237, 255, 203, 211, 255, 255, 202, 210, 255, 255, 201, 209, 255, 255, 199, 207, 255, 255, 199, 206, 255, 255, 198, 206, 255, 255, 198, 205, 255, 255, 198, 206, 255, 255, 199, 207, 255, 255, 199, 207, 255, 255, 172, 179, 240, 255, 81, 82, 139, 251, 68, 68, 71, 105, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 158, 221, 148, 150, 200, 255, 208, 213, 255, 255, 206, 210, 255, 255, 185, 189, 243, 255, 137, 140, 202, 255, 152, 156, 213, 255, 201, 208, 252, 255, 203, 211, 255, 255, 201, 209, 255, 255, 200, 208, 255, 255, 200, 207, 255, 255, 199, 207, 255, 255, 199, 206, 255, 255, 198, 206, 255, 255, 198, 205, 255, 255, 196, 204, 255, 255, 195, 202, 255, 255, 191, 198, 249, 255, 188, 194, 242, 255, 182, 187, 231, 255, 133, 136, 182, 255, 116, 116, 142, 229, 142, 142, 142, 102, 207, 207, 207, 70, 212, 212, 212, 68, 178, 178, 178, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 253, 253, 254, 3, 91, 91, 147, 237, 169, 173, 222, 255, 217, 222, 255, 255, 188, 192, 240, 255, 134, 137, 197, 255, 201, 209, 252, 255, 205, 212, 255, 255, 203, 211, 255, 255, 203, 210, 255, 255, 202, 210, 255, 255, 201, 209, 255, 255, 200, 208, 255, 255, 197, 205, 255, 255, 187, 193, 234, 255, 175, 179, 207, 255, 167, 169, 187, 255, 159, 160, 168, 255, 153, 154, 156, 255, 154, 154, 157, 255, 157, 158, 163, 255, 163, 165, 175, 255, 161, 164, 176, 255, 161, 164, 174, 254, 159, 162, 172, 249, 160, 164, 174, 247, 161, 164, 175, 247, 156, 156, 159, 246, 178, 178, 177, 158, 153, 153, 153, 37, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 164, 164, 182, 102, 83, 84, 145, 253, 165, 169, 219, 255, 150, 154, 208, 255, 204, 212, 254, 255, 206, 213, 255, 255, 205, 212, 255, 255, 204, 212, 255, 255, 203, 211, 255, 255, 200, 208, 255, 255, 190, 196, 237, 255, 171, 175, 195, 255, 156, 157, 161, 255, 161, 162, 165, 255, 183, 187, 193, 255, 197, 203, 211, 255, 210, 218, 232, 255, 221, 232, 251, 255, 221, 233, 255, 255, 216, 229, 255, 255, 212, 225, 255, 255, 208, 221, 255, 255, 203, 217, 255, 255, 195, 211, 255, 255, 192, 208, 255, 255, 185, 202, 255, 255, 175, 191, 246, 255, 167, 174, 196, 255, 152, 153, 155, 250, 172, 172, 172, 159, 129, 129, 129, 29, 234, 234, 234, 32, 222, 222, 222, 42, 204, 204, 204, 23, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 102, 102, 150, 221, 88, 89, 157, 255, 209, 217, 254, 255, 207, 215, 255, 255, 207, 214, 255, 255, 206, 214, 255, 255, 202, 211, 255, 255, 190, 197, 236, 255, 167, 170, 183, 255, 158, 158, 160, 255, 198, 202, 203, 255, 231, 238, 239, 255, 243, 252, 255, 255, 240, 249, 255, 255, 237, 246, 255, 255, 232, 242, 255, 255, 229, 238, 255, 255, 225, 235, 255, 255, 222, 233, 255, 255, 220, 231, 255, 255, 215, 227, 255, 255, 209, 222, 255, 255, 202, 215, 249, 255, 188, 198, 229, 255, 177, 185, 211, 255, 166, 172, 191, 255, 159, 163, 177, 255, 154, 155, 160, 255, 150, 150, 150, 255, 155, 156, 158, 250, 159, 160, 162, 247, 162, 164, 169, 247, 156, 157, 160, 246, 179, 179, 178, 134, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 152, 161, 73, 71, 71, 133, 255, 149, 154, 214, 255, 212, 220, 255, 255, 207, 215, 255, 255, 201, 210, 254, 255, 176, 180, 199, 255, 158, 159, 160, 255, 208, 209, 209, 255, 252, 252, 252, 255, 250, 255, 255, 255, 248, 255, 255, 255, 245, 253, 255, 255, 241, 250, 255, 255, 238, 247, 255, 255, 237, 246, 255, 255, 235, 244, 255, 255, 231, 241, 255, 255, 225, 235, 252, 255, 200, 207, 222, 255, 179, 183, 194, 255, 171, 174, 180, 255, 174, 177, 181, 255, 178, 182, 189, 255, 194, 202, 211, 255, 208, 216, 223, 255, 203, 217, 232, 255, 201, 218, 239, 255, 216, 233, 248, 255, 223, 238, 255, 255, 213, 233, 255, 255, 207, 227, 255, 255, 191, 210, 241, 255, 163, 166, 172, 251, 159, 159, 161, 213, 118, 118, 118, 48, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 120, 120, 157, 184, 84, 84, 152, 255, 199, 207, 249, 255, 200, 209, 251, 255, 168, 170, 180, 255, 177, 177, 178, 255, 249, 249, 249, 255, 255, 255, 255, 255, 253, 255, 255, 255, 251, 255, 255, 255, 250, 255, 255, 255, 248, 255, 255, 255, 246, 254, 255, 255, 244, 252, 255, 255, 242, 250, 255, 255, 216, 222, 229, 255, 187, 191, 196, 255, 190, 194, 196, 255, 206, 212, 215, 255, 231, 240, 244, 255, 250, 255, 255, 255, 236, 246, 252, 255, 226, 237, 244, 255, 243, 253, 255, 255, 244, 253, 255, 255, 164, 218, 249, 255, 125, 186, 248, 255, 118, 167, 238, 255, 162, 191, 236, 255, 228, 242, 255, 255, 216, 234, 255, 255, 211, 230, 255, 255, 201, 222, 253, 255, 168, 176, 195, 255, 154, 155, 157, 246, 152, 152, 152, 106, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 252, 252, 252, 7, 221, 221, 221, 76, 172, 172, 176, 169, 150, 150, 150, 255, 152, 152, 158, 255, 158, 159, 161, 255, 150, 150, 150, 255, 196, 196, 195, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 253, 255, 255, 255, 252, 255, 255, 255, 251, 255, 255, 255, 221, 227, 228, 255, 197, 200, 202, 255, 213, 217, 219, 255, 251, 254, 250, 255, 255, 255, 255, 255, 254, 255, 254, 255, 255, 255, 255, 255, 240, 254, 255, 255, 146, 205, 250, 255, 119, 172, 241, 255, 128, 169, 232, 255, 203, 218, 242, 255, 229, 250, 251, 255, 187, 236, 247, 255, 154, 209, 253, 255, 156, 188, 240, 255, 227, 239, 252, 255, 228, 242, 255, 255, 226, 241, 255, 255, 215, 233, 255, 255, 207, 227, 255, 255, 187, 203, 228, 255, 154, 155, 158, 251, 159, 158, 158, 169, 35, 35, 35, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 247, 247, 247, 19, 167, 167, 167, 229, 174, 174, 174, 248, 205, 205, 204, 255, 227, 227, 224, 255, 242, 242, 242, 255, 242, 242, 242, 255, 230, 230, 229, 255, 197, 198, 199, 255, 157, 157, 158, 255, 180, 180, 181, 255, 229, 229, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 251, 251, 255, 203, 205, 206, 255, 222, 227, 229, 255, 248, 254, 255, 255, 255, 255, 255, 255, 212, 238, 254, 255, 136, 186, 243, 255, 133, 173, 232, 255, 174, 199, 233, 255, 247, 254, 251, 255, 204, 245, 247, 255, 167, 229, 253, 255, 128, 189, 252, 255, 176, 201, 246, 255, 255, 255, 255, 255, 250, 254, 255, 255, 241, 249, 255, 255, 170, 214, 249, 255, 132, 180, 243, 255, 132, 171, 231, 255, 184, 206, 239, 255, 226, 241, 255, 255, 214, 232, 255, 255, 210, 229, 255, 255, 193, 212, 245, 255, 166, 171, 180, 252, 157, 158, 159, 228, 123, 123, 123, 61, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 212, 212, 212, 104, 190, 190, 190, 255, 250, 250, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 207, 207, 210, 255, 164, 164, 165, 255, 170, 170, 171, 255, 216, 216, 216, 255, 213, 215, 216, 255, 244, 252, 253, 255, 249, 255, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 222, 249, 251, 255, 168, 233, 253, 255, 139, 207, 255, 255, 107, 165, 247, 255, 222, 233, 250, 255, 255, 255, 255, 255, 248, 254, 253, 255, 222, 237, 247, 255, 166, 204, 246, 255, 144, 181, 234, 255, 169, 196, 232, 255, 234, 242, 250, 255, 217, 253, 255, 255, 170, 232, 253, 255, 130, 194, 253, 255, 143, 182, 244, 255, 237, 247, 255, 255, 230, 244, 255, 255, 222, 238, 255, 255, 212, 230, 255, 255, 201, 222, 255, 255, 172, 182, 206, 255, 152, 152, 154, 250, 155, 155, 155, 123, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 205, 205, 205, 101, 191, 191, 191, 254, 215, 215, 215, 255, 218, 218, 218, 255, 250, 250, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 220, 255, 162, 163, 163, 255, 181, 182, 183, 255, 235, 239, 239, 255, 250, 255, 255, 255, 250, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 247, 254, 250, 255, 223, 243, 247, 255, 199, 222, 247, 255, 186, 209, 240, 255, 188, 210, 235, 255, 237, 245, 247, 255, 255, 255, 255, 255, 176, 236, 252, 255, 146, 213, 255, 255, 111, 174, 252, 255, 157, 187, 238, 255, 255, 255, 255, 255, 237, 248, 251, 255, 216, 232, 244, 255, 183, 214, 247, 255, 157, 191, 238, 255, 162, 190, 231, 255, 209, 225, 246, 255, 226, 241, 255, 255, 213, 231, 255, 255, 205, 225, 255, 255, 185, 202, 234, 255, 156, 158, 162, 251, 158, 158, 159, 191, 84, 84, 84, 33, 0, 0, 0, 1, 0, 0, 0, 0, + 251, 251, 251, 11, 193, 193, 193, 140, 179, 179, 179, 251, 230, 230, 230, 255, 247, 247, 247, 255, 217, 217, 217, 255, 217, 217, 217, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 255, 197, 197, 200, 255, 159, 159, 160, 255, 210, 213, 213, 255, 252, 255, 255, 255, 251, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 246, 255, 255, 138, 209, 255, 255, 121, 181, 254, 255, 109, 160, 237, 255, 229, 238, 249, 255, 252, 255, 250, 255, 214, 241, 243, 255, 197, 226, 246, 255, 186, 209, 240, 255, 200, 218, 240, 255, 218, 231, 244, 255, 253, 255, 255, 255, 202, 249, 255, 255, 148, 216, 255, 255, 121, 183, 254, 255, 119, 164, 235, 255, 219, 234, 252, 255, 220, 236, 255, 255, 215, 232, 255, 255, 211, 230, 255, 255, 199, 219, 251, 255, 171, 177, 187, 255, 163, 164, 165, 230, 18, 18, 18, 42, 0, 0, 0, 1, + 201, 201, 201, 147, 175, 175, 175, 255, 165, 165, 166, 255, 231, 231, 231, 255, 212, 212, 212, 255, 225, 225, 225, 255, 247, 247, 247, 255, 213, 213, 213, 255, 229, 229, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 238, 239, 255, 166, 166, 167, 255, 186, 188, 189, 255, 252, 254, 254, 255, 253, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 251, 254, 252, 255, 217, 250, 251, 255, 172, 224, 245, 255, 155, 195, 244, 255, 226, 235, 246, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 222, 255, 255, 123, 184, 252, 255, 109, 162, 239, 255, 161, 188, 234, 255, 248, 255, 255, 255, 214, 242, 246, 255, 179, 219, 242, 255, 180, 208, 246, 255, 233, 246, 255, 255, 231, 246, 255, 255, 225, 240, 249, 255, 200, 212, 224, 255, 182, 190, 210, 255, 158, 169, 211, 255, 153, 154, 159, 253, 52, 52, 52, 143, 0, 0, 0, 24, + 183, 183, 183, 172, 208, 208, 209, 255, 210, 210, 210, 255, 168, 168, 168, 255, 193, 194, 196, 255, 234, 234, 233, 255, 182, 182, 182, 255, 186, 186, 188, 255, 229, 229, 227, 255, 213, 213, 213, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 249, 250, 255, 179, 180, 182, 255, 178, 179, 180, 255, 250, 251, 251, 255, 253, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 215, 238, 252, 255, 134, 189, 247, 255, 119, 165, 234, 255, 148, 180, 228, 255, 245, 249, 249, 255, 236, 255, 255, 255, 189, 241, 251, 255, 143, 201, 250, 255, 159, 192, 243, 255, 247, 255, 255, 255, 246, 253, 255, 255, 248, 255, 255, 255, 242, 247, 247, 255, 210, 218, 223, 255, 189, 197, 214, 255, 172, 181, 214, 255, 146, 161, 229, 255, 127, 145, 234, 255, 110, 130, 232, 255, 150, 151, 154, 253, 28, 28, 28, 170, 0, 0, 0, 40, + 180, 180, 180, 169, 213, 213, 213, 255, 255, 255, 255, 255, 248, 248, 248, 255, 202, 202, 202, 255, 170, 170, 170, 255, 182, 185, 188, 255, 151, 151, 151, 255, 157, 157, 159, 255, 222, 222, 222, 255, 209, 209, 209, 255, 247, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 189, 189, 190, 255, 179, 180, 181, 255, 251, 251, 251, 255, 255, 255, 255, 255, 254, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 237, 255, 255, 255, 178, 242, 255, 255, 147, 216, 255, 255, 101, 165, 249, 255, 189, 209, 242, 255, 255, 255, 255, 255, 254, 255, 254, 255, 249, 255, 250, 255, 255, 255, 255, 255, 247, 247, 247, 255, 213, 219, 220, 255, 194, 201, 212, 255, 183, 192, 216, 255, 152, 166, 230, 255, 137, 152, 233, 255, 136, 152, 233, 255, 135, 152, 234, 255, 134, 151, 235, 255, 115, 135, 233, 255, 150, 150, 150, 255, 0, 0, 0, 166, 0, 0, 0, 35, + 188, 188, 188, 143, 203, 203, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 243, 243, 255, 206, 207, 208, 255, 176, 176, 179, 255, 187, 189, 199, 255, 157, 157, 158, 255, 200, 200, 201, 255, 209, 209, 209, 255, 243, 243, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 190, 191, 195, 255, 183, 183, 184, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 253, 255, 228, 247, 251, 255, 214, 229, 245, 255, 255, 255, 253, 255, 255, 255, 255, 255, 247, 247, 247, 255, 221, 222, 222, 255, 197, 201, 212, 255, 184, 192, 214, 255, 160, 173, 230, 255, 147, 161, 234, 255, 144, 158, 233, 255, 145, 161, 234, 255, 145, 160, 234, 255, 143, 158, 235, 255, 138, 155, 235, 255, 134, 151, 235, 255, 114, 134, 233, 255, 150, 150, 150, 255, 0, 0, 0, 166, 0, 0, 0, 25, + 192, 192, 192, 134, 203, 203, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 255, 211, 211, 212, 255, 211, 215, 230, 255, 165, 165, 168, 255, 187, 187, 188, 255, 207, 207, 207, 255, 243, 243, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 184, 185, 255, 190, 190, 191, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 244, 244, 255, 218, 218, 218, 255, 197, 200, 211, 255, 182, 189, 215, 255, 171, 185, 239, 255, 151, 166, 233, 255, 154, 168, 233, 255, 154, 167, 233, 255, 153, 168, 234, 255, 151, 166, 235, 255, 148, 164, 235, 255, 146, 161, 235, 255, 142, 157, 235, 255, 137, 154, 235, 255, 134, 151, 235, 255, 118, 136, 223, 255, 149, 150, 152, 250, 0, 0, 0, 166, 0, 0, 0, 24, + 196, 196, 196, 125, 192, 193, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 207, 208, 209, 255, 221, 224, 236, 255, 167, 168, 172, 255, 182, 182, 183, 255, 207, 207, 207, 255, 245, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 250, 255, 164, 165, 168, 255, 178, 179, 179, 255, 244, 244, 244, 255, 255, 255, 255, 255, 244, 244, 244, 255, 218, 218, 218, 255, 198, 201, 209, 255, 187, 194, 218, 255, 171, 184, 234, 255, 158, 172, 233, 255, 158, 171, 232, 255, 161, 174, 234, 255, 161, 174, 234, 255, 159, 173, 235, 255, 157, 171, 234, 255, 155, 169, 235, 255, 151, 166, 235, 255, 148, 163, 235, 255, 145, 160, 235, 255, 142, 158, 235, 255, 138, 155, 237, 255, 127, 145, 234, 255, 109, 127, 219, 255, 149, 150, 152, 250, 0, 0, 0, 158, 0, 0, 0, 22, + 202, 202, 202, 102, 179, 179, 181, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 253, 255, 210, 211, 212, 255, 219, 221, 230, 255, 168, 169, 173, 255, 182, 182, 183, 255, 206, 206, 206, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 241, 241, 255, 157, 158, 160, 255, 197, 200, 202, 255, 196, 199, 211, 255, 184, 191, 217, 255, 171, 184, 234, 255, 161, 174, 233, 255, 163, 176, 233, 255, 166, 178, 234, 255, 167, 179, 234, 255, 166, 178, 235, 255, 164, 176, 235, 255, 162, 175, 235, 255, 159, 173, 235, 255, 157, 171, 234, 255, 154, 169, 235, 255, 152, 166, 235, 255, 149, 164, 237, 255, 141, 157, 234, 255, 130, 147, 234, 255, 126, 139, 207, 255, 140, 146, 175, 254, 150, 150, 153, 253, 113, 113, 113, 221, 0, 0, 0, 145, 0, 0, 0, 22, + 162, 162, 162, 23, 160, 160, 160, 236, 179, 179, 181, 253, 235, 236, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 249, 255, 255, 255, 215, 219, 219, 255, 212, 214, 222, 255, 172, 172, 177, 255, 186, 186, 187, 255, 213, 213, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 249, 255, 211, 213, 216, 255, 164, 165, 170, 255, 179, 184, 191, 255, 175, 185, 231, 255, 168, 180, 233, 255, 170, 181, 234, 255, 170, 182, 235, 255, 169, 182, 235, 255, 169, 181, 234, 255, 167, 180, 234, 255, 166, 178, 235, 255, 164, 176, 235, 255, 162, 175, 235, 255, 159, 173, 235, 255, 158, 171, 236, 255, 152, 167, 236, 255, 140, 156, 231, 255, 132, 146, 212, 255, 141, 148, 180, 255, 149, 150, 156, 253, 145, 145, 148, 246, 107, 107, 107, 217, 36, 36, 36, 183, 0, 0, 0, 154, 0, 0, 0, 91, 0, 0, 0, 11, + 0, 0, 0, 1, 42, 42, 42, 42, 127, 127, 127, 191, 151, 151, 152, 252, 177, 177, 179, 255, 242, 243, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 247, 255, 255, 255, 241, 255, 255, 255, 220, 230, 232, 255, 204, 206, 210, 255, 160, 160, 161, 255, 204, 204, 204, 255, 227, 227, 227, 255, 249, 249, 249, 255, 237, 237, 237, 255, 220, 220, 220, 255, 198, 200, 209, 255, 179, 184, 204, 255, 153, 159, 185, 255, 156, 157, 159, 255, 193, 196, 198, 255, 180, 190, 232, 255, 171, 182, 234, 255, 172, 184, 235, 255, 170, 182, 235, 255, 170, 182, 235, 255, 169, 181, 234, 255, 167, 180, 234, 255, 166, 178, 235, 255, 164, 177, 236, 255, 161, 175, 236, 255, 152, 166, 233, 255, 141, 155, 218, 255, 143, 151, 186, 255, 147, 149, 156, 252, 148, 148, 150, 250, 120, 120, 119, 224, 53, 53, 53, 192, 0, 0, 0, 164, 0, 0, 0, 139, 0, 0, 0, 88, 0, 0, 0, 44, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 35, 46, 46, 46, 103, 134, 135, 135, 214, 151, 152, 153, 253, 196, 197, 202, 255, 254, 254, 254, 255, 255, 255, 255, 255, 253, 255, 255, 255, 247, 255, 255, 255, 241, 255, 255, 255, 234, 251, 255, 255, 226, 237, 242, 255, 184, 185, 186, 255, 159, 159, 160, 255, 195, 196, 196, 255, 194, 197, 212, 255, 171, 177, 204, 255, 145, 153, 189, 255, 144, 149, 173, 255, 152, 153, 159, 255, 162, 163, 165, 255, 204, 205, 205, 255, 189, 190, 190, 255, 178, 189, 233, 255, 172, 183, 234, 255, 172, 184, 235, 255, 170, 182, 235, 255, 170, 182, 235, 255, 169, 182, 235, 255, 167, 180, 235, 255, 160, 173, 234, 255, 151, 164, 227, 255, 146, 154, 193, 255, 148, 151, 162, 252, 149, 150, 151, 253, 130, 130, 130, 230, 73, 73, 73, 199, 0, 0, 0, 167, 0, 0, 0, 148, 0, 0, 0, 100, 0, 0, 0, 52, 0, 0, 0, 25, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 44, 72, 72, 72, 129, 145, 145, 146, 231, 156, 156, 157, 252, 208, 210, 215, 255, 255, 255, 255, 255, 252, 255, 255, 255, 241, 255, 255, 255, 235, 251, 255, 255, 227, 245, 255, 255, 225, 239, 248, 255, 187, 188, 189, 255, 172, 172, 173, 255, 159, 161, 171, 255, 155, 156, 158, 255, 157, 157, 158, 255, 168, 168, 169, 255, 183, 183, 184, 255, 192, 196, 211, 255, 190, 198, 226, 255, 177, 187, 236, 255, 170, 182, 234, 255, 173, 184, 235, 255, 172, 184, 235, 255, 171, 183, 236, 255, 167, 180, 235, 255, 157, 170, 229, 255, 149, 159, 201, 255, 151, 155, 171, 253, 150, 151, 152, 254, 138, 139, 140, 237, 88, 88, 88, 207, 10, 10, 10, 172, 0, 0, 0, 154, 0, 0, 0, 112, 0, 0, 0, 61, 0, 0, 0, 28, 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 0, 0, 0, 56, 96, 96, 96, 158, 149, 149, 151, 244, 162, 163, 167, 253, 214, 222, 224, 255, 243, 255, 255, 255, 237, 253, 255, 255, 229, 246, 255, 255, 220, 239, 255, 255, 217, 237, 254, 255, 198, 201, 203, 255, 193, 193, 193, 255, 201, 201, 201, 255, 194, 197, 210, 255, 196, 202, 229, 255, 180, 191, 236, 255, 172, 183, 232, 255, 176, 187, 234, 255, 175, 185, 234, 255, 176, 187, 237, 255, 171, 183, 235, 255, 164, 177, 234, 255, 154, 165, 211, 255, 154, 158, 179, 255, 150, 151, 153, 253, 144, 144, 145, 243, 103, 103, 103, 214, 26, 26, 26, 180, 0, 0, 0, 160, 0, 0, 0, 124, 0, 0, 0, 72, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 11, 11, 11, 71, 115, 114, 115, 183, 149, 150, 150, 250, 178, 183, 185, 254, 220, 236, 242, 255, 229, 246, 255, 255, 225, 243, 255, 255, 213, 234, 255, 255, 209, 233, 255, 255, 187, 193, 205, 255, 176, 186, 233, 255, 173, 184, 232, 255, 178, 189, 234, 255, 178, 189, 234, 255, 180, 190, 235, 255, 177, 188, 236, 255, 172, 183, 236, 255, 158, 169, 216, 255, 154, 160, 185, 255, 152, 153, 158, 252, 148, 148, 150, 248, 114, 114, 113, 221, 44, 44, 44, 189, 0, 0, 0, 163, 0, 0, 0, 134, 0, 0, 0, 83, 0, 0, 0, 40, 0, 0, 0, 19, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 31, 40, 40, 40, 93, 130, 130, 130, 205, 151, 152, 152, 252, 172, 179, 187, 255, 209, 228, 246, 255, 217, 237, 255, 255, 215, 237, 255, 255, 189, 195, 210, 255, 177, 186, 233, 255, 182, 192, 236, 255, 181, 191, 236, 255, 175, 186, 233, 255, 165, 176, 223, 255, 157, 164, 192, 255, 153, 155, 163, 252, 150, 150, 150, 252, 124, 124, 124, 227, 66, 66, 66, 196, 0, 0, 0, 166, 0, 0, 0, 144, 0, 0, 0, 94, 0, 0, 0, 48, 0, 0, 0, 22, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 40, 64, 64, 64, 118, 141, 141, 141, 223, 151, 152, 154, 253, 174, 187, 208, 255, 204, 227, 255, 255, 188, 195, 212, 255, 176, 185, 233, 255, 171, 181, 228, 255, 160, 167, 200, 255, 154, 157, 168, 253, 150, 150, 151, 253, 136, 136, 136, 234, 83, 83, 83, 204, 5, 5, 5, 170, 0, 0, 0, 152, 0, 0, 0, 107, 0, 0, 0, 58, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 51, 88, 88, 88, 145, 148, 148, 150, 238, 154, 157, 163, 253, 169, 174, 186, 255, 159, 162, 178, 254, 151, 152, 153, 253, 142, 142, 143, 240, 97, 97, 97, 211, 16, 16, 16, 176, 0, 0, 0, 157, 0, 0, 0, 119, 0, 0, 0, 67, 0, 0, 0, 31, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 22, 0, 0, 0, 64, 110, 110, 110, 173, 142, 142, 142, 227, 111, 111, 111, 215, 35, 35, 35, 185, 0, 0, 0, 162, 0, 0, 0, 130, 0, 0, 0, 78, 0, 0, 0, 36, 0, 0, 0, 17, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 28, 0, 0, 0, 72, 0, 0, 0, 108, 0, 0, 0, 85, 0, 0, 0, 44, 0, 0, 0, 21, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoTecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 107, 121, 49, 89, 100, 121, 62, 131, 145, 171, 46, 152, 163, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 111, 120, 5, 92, 101, 119, 171, 101, 113, 136, 255, 135, 152, 182, 255, 135, 151, 182, 255, 134, 150, 179, 173, 134, 149, 178, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 103, 120, 139, 101, 114, 137, 255, 141, 158, 191, 255, 135, 152, 183, 255, 134, 150, 181, 255, 132, 148, 179, 255, 133, 149, 178, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 94, 106, 34, 100, 111, 133, 250, 133, 150, 180, 255, 137, 154, 186, 255, 135, 152, 183, 255, 133, 150, 180, 255, 132, 148, 178, 255, 131, 147, 177, 254, 136, 151, 179, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 107, 125, 151, 112, 126, 152, 255, 146, 164, 198, 255, 136, 153, 185, 255, 135, 152, 182, 255, 133, 150, 180, 255, 132, 148, 178, 255, 130, 146, 176, 255, 131, 147, 176, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 109, 115, 5, 103, 114, 136, 239, 133, 150, 180, 255, 140, 158, 190, 255, 136, 153, 184, 255, 120, 134, 160, 248, 78, 88, 105, 255, 117, 132, 159, 255, 130, 146, 176, 255, 130, 146, 175, 246, 142, 155, 181, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 93, 106, 74, 113, 127, 153, 255, 146, 164, 197, 255, 138, 155, 186, 255, 137, 153, 184, 209, 141, 148, 161, 29, 36, 40, 46, 200, 48, 54, 65, 255, 123, 138, 167, 255, 128, 144, 174, 255, 133, 148, 175, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 112, 130, 152, 121, 135, 163, 255, 150, 168, 203, 255, 138, 154, 186, 255, 137, 153, 184, 53, 0, 0, 0, 0, 70, 73, 78, 56, 36, 41, 49, 254, 89, 100, 120, 255, 128, 144, 173, 255, 129, 144, 173, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 119, 140, 216, 133, 149, 179, 255, 145, 163, 196, 255, 139, 155, 186, 204, 157, 170, 193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 51, 56, 65, 198, 61, 69, 83, 255, 126, 142, 171, 255, 128, 144, 172, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 121, 20, 110, 123, 147, 250, 143, 161, 194, 255, 140, 157, 189, 255, 139, 155, 186, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 67, 75, 113, 58, 65, 78, 255, 114, 128, 154, 255, 126, 142, 171, 253, 133, 147, 174, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 95, 106, 67, 118, 133, 160, 255, 148, 167, 201, 255, 139, 156, 187, 254, 144, 159, 188, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 80, 29, 62, 70, 83, 255, 99, 112, 135, 255, 126, 142, 171, 255, 132, 147, 174, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 105, 120, 115, 122, 137, 165, 255, 152, 171, 206, 255, 139, 156, 188, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 138, 141, 1, 69, 76, 89, 223, 90, 101, 121, 255, 128, 143, 173, 255, 127, 142, 170, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 111, 130, 151, 125, 140, 169, 255, 153, 172, 207, 255, 140, 157, 188, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 78, 92, 167, 85, 96, 115, 255, 128, 144, 174, 255, 127, 142, 170, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 115, 136, 187, 132, 148, 177, 255, 151, 169, 203, 255, 140, 157, 188, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 83, 95, 125, 87, 98, 118, 255, 126, 142, 171, 255, 125, 140, 169, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 117, 139, 218, 143, 160, 188, 255, 145, 163, 196, 255, 140, 157, 188, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 74, 83, 77, 91, 102, 123, 255, 123, 139, 167, 255, 125, 140, 169, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 142, 250, 152, 169, 196, 255, 141, 158, 191, 255, 143, 159, 189, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 85, 41, 91, 103, 124, 255, 122, 137, 165, 255, 125, 140, 169, 251, 136, 150, 175, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 145, 148, 22, 106, 119, 143, 253, 158, 173, 200, 255, 139, 156, 188, 255, 141, 158, 188, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 151, 153, 13, 90, 101, 121, 253, 122, 137, 165, 255, 124, 140, 168, 255, 141, 154, 178, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 125, 134, 154, 39, 86, 93, 106, 81, 43, 47, 52, 111, 50, 54, 59, 150, 42, 45, 51, 169, 42, 46, 51, 197, 110, 124, 149, 255, 160, 176, 202, 255, 137, 154, 186, 255, 105, 118, 142, 228, 104, 117, 141, 227, 104, 117, 141, 227, 105, 117, 141, 227, 105, 118, 142, 227, 105, 118, 142, 227, 108, 120, 144, 227, 104, 116, 140, 255, 109, 123, 148, 255, 111, 125, 150, 255, 109, 122, 147, 170, 115, 127, 150, 138, 115, 128, 151, 111, 116, 128, 152, 75, 124, 136, 157, 39, 168, 176, 190, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 175, 186, 1, 120, 130, 149, 35, 110, 121, 143, 97, 105, 117, 140, 152, 106, 118, 141, 206, 105, 117, 140, 248, 103, 115, 139, 255, 105, 118, 142, 255, 91, 103, 123, 255, 43, 49, 58, 255, 26, 30, 36, 255, 29, 33, 40, 255, 113, 127, 153, 255, 160, 175, 202, 255, 139, 156, 188, 255, 144, 161, 192, 255, 138, 155, 186, 255, 134, 150, 181, 255, 130, 146, 176, 255, 126, 142, 171, 255, 122, 138, 166, 255, 119, 134, 162, 255, 116, 131, 158, 255, 114, 128, 154, 255, 113, 127, 152, 255, 112, 126, 151, 255, 111, 125, 151, 255, 110, 124, 149, 255, 109, 122, 148, 255, 109, 122, 147, 255, 112, 125, 149, 251, 113, 126, 151, 210, 114, 127, 151, 158, 116, 129, 153, 97, 123, 135, 158, 35, 156, 165, 182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 148, 32, 106, 118, 140, 129, 105, 117, 140, 214, 103, 116, 139, 255, 102, 115, 138, 255, 108, 121, 146, 255, 127, 142, 171, 255, 142, 160, 193, 255, 154, 172, 207, 255, 161, 181, 217, 255, 164, 183, 215, 255, 57, 64, 75, 255, 26, 30, 36, 255, 31, 36, 43, 255, 113, 128, 154, 255, 161, 177, 203, 255, 137, 154, 185, 255, 126, 142, 171, 255, 121, 136, 164, 255, 116, 131, 157, 255, 112, 126, 152, 255, 109, 122, 147, 255, 105, 118, 143, 255, 102, 115, 138, 255, 98, 111, 133, 255, 94, 106, 128, 255, 89, 100, 120, 255, 83, 94, 113, 255, 79, 89, 108, 255, 78, 88, 106, 255, 79, 89, 107, 255, 84, 94, 113, 255, 92, 103, 124, 255, 103, 116, 139, 255, 110, 123, 148, 255, 111, 125, 150, 255, 112, 126, 151, 255, 114, 127, 153, 214, 115, 129, 154, 129, 127, 139, 162, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 118, 128, 145, 31, 106, 118, 140, 164, 103, 116, 139, 252, 102, 115, 139, 255, 103, 116, 139, 255, 120, 135, 162, 255, 147, 165, 198, 255, 160, 179, 216, 255, 157, 176, 212, 255, 153, 172, 207, 255, 147, 165, 199, 255, 139, 156, 187, 241, 132, 146, 173, 211, 43, 47, 53, 174, 46, 50, 55, 144, 45, 50, 59, 153, 113, 127, 153, 255, 160, 176, 203, 255, 136, 152, 183, 205, 58, 65, 78, 35, 89, 94, 103, 35, 83, 88, 95, 35, 81, 85, 93, 35, 83, 87, 94, 35, 47, 53, 62, 35, 98, 102, 110, 64, 84, 93, 110, 198, 100, 113, 136, 255, 103, 116, 139, 255, 84, 93, 109, 187, 70, 77, 89, 168, 65, 72, 84, 205, 59, 65, 77, 241, 50, 56, 68, 255, 45, 51, 61, 255, 40, 45, 54, 255, 47, 53, 63, 255, 71, 80, 96, 255, 100, 113, 136, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 252, 116, 130, 156, 164, 127, 140, 165, 37, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 110, 118, 133, 72, 103, 115, 138, 239, 103, 116, 139, 255, 103, 116, 140, 255, 106, 119, 143, 255, 141, 158, 191, 255, 154, 174, 209, 255, 150, 169, 203, 255, 143, 160, 191, 234, 137, 153, 182, 162, 127, 140, 163, 102, 113, 122, 138, 40, 126, 131, 140, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 93, 104, 97, 112, 125, 151, 255, 158, 174, 201, 255, 140, 156, 187, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 114, 134, 175, 126, 141, 170, 255, 136, 153, 184, 255, 125, 140, 167, 94, 0, 0, 0, 0, 0, 0, 0, 0, 124, 126, 129, 6, 80, 84, 88, 40, 56, 60, 66, 96, 43, 47, 54, 157, 33, 36, 42, 227, 26, 30, 36, 255, 31, 35, 42, 255, 66, 75, 90, 255, 112, 125, 151, 255, 115, 130, 156, 255, 116, 130, 156, 255, 118, 132, 158, 245, 125, 139, 166, 73, 0, 0, 0, 0, + 98, 101, 105, 10, 94, 104, 124, 232, 103, 116, 140, 255, 104, 117, 140, 255, 104, 117, 141, 255, 129, 145, 174, 255, 144, 162, 195, 255, 142, 158, 187, 191, 131, 144, 167, 77, 140, 145, 154, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 105, 115, 111, 109, 123, 148, 255, 154, 171, 200, 255, 142, 158, 188, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 120, 139, 175, 128, 144, 173, 255, 138, 155, 187, 255, 122, 137, 165, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 120, 123, 2, 62, 65, 70, 71, 40, 44, 50, 180, 28, 32, 38, 255, 72, 82, 98, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 122, 137, 164, 236, 142, 159, 190, 10, + 106, 108, 112, 55, 81, 92, 110, 255, 104, 117, 141, 255, 105, 118, 142, 255, 105, 118, 142, 255, 122, 137, 165, 250, 136, 151, 180, 85, 151, 158, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 97, 107, 111, 107, 120, 145, 255, 147, 165, 197, 255, 139, 156, 186, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 120, 140, 175, 131, 147, 177, 255, 142, 159, 190, 255, 122, 137, 165, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 0, 52, 56, 61, 79, 75, 84, 100, 250, 118, 133, 160, 255, 119, 133, 161, 255, 119, 134, 161, 255, 127, 142, 172, 255, 138, 154, 185, 61, + 100, 103, 106, 50, 40, 45, 54, 255, 97, 109, 131, 255, 106, 119, 143, 255, 106, 119, 143, 255, 107, 121, 145, 253, 115, 128, 153, 111, 134, 146, 167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 111, 104, 117, 141, 255, 143, 160, 193, 255, 138, 155, 186, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 122, 143, 175, 134, 151, 181, 255, 146, 163, 192, 255, 122, 137, 165, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 144, 165, 0, 124, 137, 160, 99, 119, 134, 160, 253, 120, 135, 162, 255, 120, 135, 163, 255, 125, 140, 169, 255, 139, 156, 188, 255, 117, 130, 154, 61, + 110, 112, 116, 7, 36, 40, 45, 224, 35, 39, 47, 255, 77, 87, 105, 255, 105, 118, 141, 255, 107, 121, 145, 255, 108, 121, 146, 255, 112, 126, 150, 208, 117, 130, 153, 95, 121, 133, 157, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 110, 111, 102, 114, 137, 255, 140, 157, 188, 255, 141, 157, 187, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 127, 148, 175, 139, 155, 185, 255, 148, 164, 192, 255, 122, 137, 164, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 153, 174, 11, 126, 140, 166, 83, 121, 136, 163, 191, 121, 136, 163, 255, 121, 136, 164, 255, 123, 139, 167, 255, 140, 157, 189, 255, 145, 163, 197, 255, 123, 138, 165, 232, 120, 133, 155, 10, + 0, 0, 0, 0, 51, 55, 60, 47, 32, 36, 42, 227, 26, 30, 36, 255, 39, 45, 54, 255, 71, 80, 96, 255, 97, 110, 132, 255, 108, 121, 146, 255, 109, 123, 148, 255, 111, 124, 149, 242, 114, 127, 152, 184, 116, 129, 154, 117, 122, 135, 158, 61, 130, 142, 164, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 80, 89, 92, 98, 110, 133, 255, 136, 153, 184, 255, 138, 155, 185, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 125, 148, 175, 145, 161, 190, 255, 146, 162, 189, 255, 124, 139, 166, 94, 0, 0, 0, 0, 0, 0, 0, 0, 136, 149, 172, 10, 134, 147, 172, 61, 124, 138, 165, 109, 124, 138, 165, 174, 123, 137, 165, 242, 121, 136, 164, 255, 123, 138, 166, 255, 133, 150, 180, 255, 147, 165, 199, 255, 152, 170, 205, 255, 139, 156, 188, 255, 127, 142, 170, 235, 129, 140, 161, 71, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 68, 73, 16, 42, 46, 51, 145, 31, 35, 41, 247, 26, 30, 36, 255, 29, 33, 40, 255, 45, 51, 61, 255, 68, 76, 92, 255, 89, 100, 120, 255, 104, 117, 140, 255, 110, 124, 149, 255, 112, 126, 151, 255, 114, 128, 153, 253, 115, 129, 154, 222, 117, 131, 156, 190, 116, 130, 155, 153, 105, 117, 138, 175, 104, 117, 141, 255, 127, 142, 171, 255, 130, 146, 175, 209, 128, 141, 165, 61, 133, 146, 168, 52, 118, 132, 159, 36, 118, 132, 159, 36, 137, 149, 172, 58, 128, 141, 166, 55, 124, 138, 164, 74, 115, 129, 154, 204, 135, 151, 179, 255, 131, 146, 174, 255, 120, 135, 162, 187, 122, 137, 164, 180, 122, 137, 164, 216, 122, 137, 164, 249, 121, 136, 164, 255, 126, 141, 170, 255, 136, 152, 183, 255, 145, 163, 196, 255, 150, 168, 203, 255, 153, 172, 207, 255, 148, 166, 200, 255, 140, 157, 189, 255, 130, 146, 175, 247, 127, 140, 164, 163, 124, 134, 151, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 20, 49, 53, 58, 111, 39, 43, 48, 195, 30, 34, 40, 250, 26, 30, 36, 255, 26, 30, 36, 255, 32, 36, 43, 255, 44, 49, 60, 255, 61, 69, 83, 255, 77, 86, 104, 255, 90, 101, 121, 255, 100, 112, 135, 255, 108, 121, 146, 255, 112, 126, 152, 255, 116, 130, 157, 255, 117, 132, 159, 255, 119, 133, 160, 255, 119, 134, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 121, 136, 164, 255, 122, 137, 165, 255, 123, 139, 167, 255, 125, 141, 170, 255, 130, 146, 175, 255, 136, 152, 181, 255, 145, 160, 187, 255, 153, 168, 193, 255, 157, 172, 198, 255, 160, 175, 201, 255, 162, 177, 203, 255, 162, 178, 207, 255, 157, 175, 205, 255, 147, 165, 197, 255, 139, 157, 188, 255, 138, 155, 186, 255, 130, 146, 175, 250, 125, 139, 166, 201, 118, 130, 153, 117, 115, 122, 134, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 95, 99, 18, 52, 56, 61, 77, 45, 49, 54, 137, 39, 43, 48, 188, 38, 42, 48, 236, 32, 36, 43, 253, 37, 41, 50, 255, 44, 49, 59, 255, 50, 56, 67, 255, 56, 63, 76, 255, 63, 71, 86, 255, 71, 80, 96, 255, 78, 88, 106, 255, 85, 96, 116, 255, 92, 103, 124, 255, 97, 109, 132, 255, 102, 115, 138, 255, 107, 120, 144, 255, 111, 124, 150, 255, 115, 129, 155, 255, 119, 133, 160, 255, 122, 137, 165, 255, 125, 140, 166, 255, 125, 140, 167, 255, 124, 139, 167, 255, 125, 140, 169, 255, 127, 143, 172, 255, 126, 142, 171, 255, 121, 136, 164, 254, 121, 135, 160, 236, 120, 133, 157, 194, 117, 129, 151, 143, 105, 115, 132, 83, 115, 121, 130, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 118, 20, 77, 80, 85, 60, 58, 61, 67, 90, 45, 50, 57, 111, 61, 66, 74, 148, 56, 61, 71, 169, 58, 65, 79, 255, 69, 78, 94, 255, 76, 85, 103, 255, 79, 87, 101, 228, 82, 90, 105, 227, 80, 89, 105, 227, 83, 92, 109, 227, 92, 102, 119, 227, 96, 105, 123, 227, 99, 109, 127, 216, 97, 109, 131, 254, 113, 126, 150, 255, 102, 115, 138, 255, 107, 117, 136, 170, 95, 105, 123, 115, 95, 103, 118, 90, 94, 100, 111, 60, 122, 125, 130, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 152, 154, 22, 71, 79, 95, 253, 109, 122, 147, 255, 135, 152, 183, 255, 146, 161, 188, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 153, 157, 18, 126, 141, 169, 253, 160, 179, 211, 255, 122, 137, 165, 255, 136, 149, 172, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 81, 95, 250, 98, 110, 133, 255, 136, 152, 184, 255, 137, 153, 182, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 105, 115, 47, 134, 151, 181, 255, 155, 174, 208, 255, 123, 138, 165, 251, 141, 153, 175, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 72, 84, 212, 87, 97, 117, 255, 136, 153, 184, 255, 137, 153, 182, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 112, 129, 83, 139, 156, 188, 255, 150, 169, 203, 255, 123, 137, 165, 227, 170, 179, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 71, 82, 187, 75, 84, 102, 255, 134, 150, 181, 255, 136, 152, 181, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 125, 147, 125, 140, 158, 190, 255, 146, 164, 197, 255, 122, 137, 164, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 67, 77, 151, 65, 73, 88, 255, 128, 144, 173, 255, 134, 150, 180, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 157, 173, 143, 161, 194, 255, 138, 155, 187, 255, 123, 137, 164, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 64, 71, 109, 58, 65, 78, 255, 116, 130, 157, 255, 133, 149, 179, 231, 149, 163, 188, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 142, 147, 2, 124, 138, 164, 227, 149, 167, 202, 255, 128, 143, 173, 255, 125, 139, 166, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 78, 83, 67, 50, 57, 68, 255, 99, 111, 134, 255, 132, 148, 179, 255, 134, 149, 179, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 116, 128, 41, 129, 145, 174, 255, 150, 168, 202, 255, 122, 137, 165, 255, 127, 141, 166, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 99, 103, 14, 46, 52, 61, 250, 78, 88, 106, 255, 132, 148, 178, 255, 135, 150, 179, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 122, 143, 113, 133, 150, 180, 255, 145, 162, 196, 255, 122, 136, 164, 253, 133, 146, 170, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 52, 59, 210, 55, 62, 75, 255, 129, 145, 174, 255, 131, 147, 177, 212, 134, 149, 178, 1, 0, 0, 0, 0, 168, 171, 174, 1, 119, 132, 157, 210, 139, 157, 188, 255, 132, 148, 178, 255, 125, 139, 166, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 49, 55, 141, 38, 42, 51, 255, 115, 129, 156, 255, 130, 146, 176, 255, 132, 148, 177, 70, 0, 0, 0, 0, 116, 126, 142, 70, 121, 136, 163, 255, 144, 161, 195, 255, 122, 138, 166, 255, 124, 139, 166, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 64, 69, 68, 28, 32, 39, 255, 86, 96, 116, 255, 130, 146, 175, 255, 129, 145, 174, 215, 122, 135, 160, 29, 111, 124, 147, 213, 132, 148, 178, 255, 131, 147, 177, 255, 122, 137, 165, 255, 125, 139, 166, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 129, 133, 5, 34, 38, 43, 233, 50, 57, 69, 255, 127, 143, 172, 255, 128, 144, 173, 255, 126, 142, 170, 248, 127, 143, 172, 255, 131, 147, 177, 255, 123, 138, 166, 255, 123, 138, 165, 240, 144, 156, 176, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 139, 28, 33, 39, 255, 105, 118, 143, 255, 128, 144, 173, 255, 127, 142, 171, 255, 125, 141, 169, 255, 124, 139, 168, 255, 123, 138, 166, 255, 126, 140, 166, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 97, 101, 34, 30, 34, 40, 244, 58, 65, 79, 255, 126, 142, 170, 255, 126, 142, 171, 255, 125, 140, 169, 255, 124, 139, 167, 255, 123, 138, 166, 249, 138, 150, 172, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 51, 56, 121, 27, 32, 38, 255, 91, 102, 123, 255, 126, 141, 170, 255, 125, 140, 169, 255, 124, 139, 167, 255, 127, 140, 165, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 120, 124, 3, 47, 50, 56, 149, 34, 39, 46, 252, 85, 96, 115, 255, 113, 126, 152, 253, 118, 131, 154, 160, 127, 135, 151, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 97, 101, 28, 112, 115, 118, 62, 102, 106, 112, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoPUC_Rio(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 163, 163, 2, 92, 88, 66, 92, 106, 100, 67, 116, 85, 85, 85, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 19, 122, 114, 67, 227, 151, 141, 82, 233, 46, 45, 41, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 88, 82, 161, 94, 92, 83, 193, 143, 143, 143, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, 101, 220, 104, 104, 104, 247, 107, 107, 107, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 7, 53, 51, 40, 52, 57, 57, 57, 11, 90, 90, 90, 145, 104, 102, 89, 252, 106, 103, 87, 255, 100, 100, 100, 181, 57, 57, 57, 28, 56, 54, 42, 47, 70, 70, 68, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 93, 63, 102, 69, 66, 52, 41, 113, 106, 67, 108, 198, 184, 106, 255, 86, 84, 75, 227, 125, 124, 121, 255, 164, 154, 95, 255, 173, 161, 96, 255, 124, 123, 117, 255, 96, 95, 89, 237, 186, 172, 100, 254, 133, 124, 77, 138, 60, 60, 60, 24, 99, 94, 64, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 100, 66, 100, 121, 114, 77, 142, 155, 145, 86, 234, 209, 194, 112, 255, 193, 179, 103, 255, 111, 107, 83, 255, 207, 192, 111, 255, 208, 193, 111, 255, 130, 124, 92, 255, 174, 161, 94, 255, 209, 194, 112, 255, 169, 157, 92, 243, 100, 94, 63, 128, 111, 104, 66, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 81, 57, 75, 117, 110, 71, 183, 110, 105, 78, 246, 141, 132, 83, 255, 96, 94, 81, 255, 102, 98, 78, 255, 115, 109, 79, 255, 126, 119, 82, 255, 101, 98, 77, 255, 98, 96, 86, 255, 136, 127, 79, 255, 118, 113, 84, 254, 105, 99, 69, 184, 110, 103, 67, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 87, 87, 72, 109, 109, 109, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 41, 36, 50, 153, 143, 86, 227, 179, 166, 98, 255, 180, 158, 92, 255, 183, 170, 98, 255, 169, 158, 93, 255, 158, 145, 89, 255, 155, 139, 86, 255, 168, 156, 93, 255, 180, 167, 96, 255, 181, 159, 92, 255, 174, 162, 96, 255, 159, 148, 87, 227, 84, 80, 57, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 39, 98, 98, 98, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 119, 108, 108, 108, 254, 81, 81, 81, 179, 109, 109, 109, 40, 0, 0, 0, 0, 133, 133, 133, 2, 74, 74, 74, 32, 132, 125, 88, 255, 121, 117, 94, 255, 107, 102, 77, 255, 119, 119, 119, 255, 134, 134, 134, 255, 129, 125, 102, 255, 134, 128, 94, 255, 135, 135, 135, 255, 127, 127, 127, 255, 104, 100, 81, 255, 116, 112, 88, 255, 143, 136, 97, 255, 50, 49, 44, 58, 95, 95, 95, 3, 0, 0, 0, 0, 83, 83, 83, 23, 94, 94, 94, 153, 95, 95, 95, 251, 99, 99, 99, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 95, 125, 125, 125, 255, 92, 92, 92, 255, 77, 77, 77, 110, 0, 0, 0, 0, 51, 51, 46, 55, 149, 138, 82, 247, 125, 125, 125, 255, 117, 114, 97, 255, 209, 194, 112, 255, 125, 120, 90, 255, 120, 118, 110, 255, 175, 163, 98, 255, 187, 174, 101, 255, 127, 124, 106, 255, 123, 119, 99, 255, 192, 178, 103, 255, 133, 126, 92, 255, 135, 135, 135, 255, 131, 123, 79, 243, 99, 94, 64, 101, 0, 0, 0, 0, 58, 58, 58, 62, 96, 96, 96, 255, 115, 115, 115, 255, 90, 90, 90, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 170, 135, 135, 135, 255, 105, 105, 105, 217, 79, 79, 79, 5, 0, 0, 0, 0, 58, 58, 58, 23, 178, 165, 96, 255, 130, 125, 97, 255, 161, 151, 92, 255, 208, 193, 111, 255, 180, 167, 97, 255, 98, 95, 79, 255, 170, 158, 94, 255, 179, 167, 98, 255, 119, 114, 88, 255, 153, 143, 87, 255, 204, 190, 110, 255, 194, 180, 104, 255, 108, 105, 88, 255, 191, 177, 103, 255, 73, 70, 51, 67, 0, 0, 0, 0, 119, 119, 119, 0, 95, 95, 95, 173, 135, 135, 135, 255, 104, 104, 104, 216, 167, 167, 167, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 35, 119, 119, 119, 251, 135, 135, 135, 255, 86, 86, 86, 137, 0, 0, 0, 0, 0, 0, 0, 0, 178, 178, 178, 3, 135, 127, 79, 246, 110, 107, 93, 255, 95, 92, 74, 255, 124, 114, 74, 255, 113, 109, 88, 255, 133, 126, 86, 255, 143, 134, 93, 255, 151, 134, 88, 255, 135, 128, 87, 255, 118, 115, 95, 255, 124, 113, 71, 255, 96, 93, 77, 255, 100, 98, 85, 255, 144, 135, 86, 255, 51, 51, 51, 33, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 90, 132, 132, 132, 255, 130, 130, 130, 255, 63, 63, 63, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 143, 135, 135, 135, 255, 114, 114, 114, 242, 47, 47, 47, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 144, 87, 219, 155, 145, 90, 255, 167, 156, 93, 255, 146, 133, 90, 255, 140, 133, 98, 255, 135, 130, 103, 255, 131, 126, 103, 255, 129, 125, 102, 255, 134, 129, 103, 255, 141, 135, 101, 255, 141, 128, 89, 255, 164, 153, 94, 255, 161, 150, 91, 255, 152, 142, 86, 251, 126, 126, 126, 5, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 123, 4, 103, 103, 103, 213, 135, 135, 135, 255, 101, 101, 101, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 62, 50, 32, 126, 118, 73, 133, 63, 62, 55, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 106, 213, 135, 135, 135, 255, 93, 93, 93, 165, 49, 49, 49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93, 1, 94, 91, 79, 189, 117, 117, 115, 255, 123, 122, 118, 255, 140, 133, 96, 255, 127, 127, 126, 255, 135, 135, 135, 255, 134, 128, 94, 255, 140, 132, 88, 255, 135, 135, 135, 255, 134, 134, 134, 255, 132, 126, 95, 255, 124, 122, 111, 255, 120, 120, 118, 255, 101, 98, 87, 219, 115, 115, 115, 2, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 9, 78, 78, 78, 122, 135, 135, 135, 255, 111, 111, 111, 252, 119, 119, 119, 7, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 15, 82, 82, 82, 123, 73, 73, 73, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 69, 54, 45, 171, 159, 94, 238, 178, 165, 97, 244, 114, 107, 68, 126, 82, 82, 82, 10, 0, 0, 0, 0, 65, 51, 51, 166, 121, 45, 46, 255, 133, 6, 7, 255, 92, 40, 41, 228, 60, 60, 60, 55, 0, 0, 0, 0, 89, 89, 89, 7, 122, 114, 70, 240, 123, 123, 123, 255, 124, 119, 95, 255, 209, 194, 112, 255, 141, 133, 90, 255, 116, 114, 99, 255, 186, 173, 101, 255, 194, 181, 105, 255, 128, 124, 99, 255, 130, 124, 92, 255, 198, 184, 106, 255, 138, 131, 91, 255, 131, 131, 131, 255, 119, 112, 73, 254, 56, 56, 55, 34, 0, 0, 0, 0, 61, 61, 61, 40, 83, 50, 50, 214, 136, 3, 4, 255, 122, 41, 41, 255, 73, 53, 53, 200, 121, 121, 121, 3, 128, 128, 128, 2, 72, 72, 72, 99, 109, 109, 109, 232, 118, 118, 118, 249, 76, 76, 76, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 48, 20, 120, 113, 70, 185, 184, 171, 99, 255, 161, 150, 89, 224, 95, 90, 62, 87, 75, 75, 75, 8, 99, 14, 15, 140, 153, 2, 3, 253, 113, 82, 83, 255, 120, 120, 120, 250, 49, 49, 49, 49, 0, 0, 0, 0, 150, 140, 86, 163, 138, 131, 95, 255, 159, 148, 90, 255, 193, 179, 103, 255, 155, 146, 91, 255, 93, 91, 81, 255, 154, 145, 93, 255, 164, 154, 95, 255, 106, 103, 86, 255, 140, 132, 88, 255, 185, 172, 100, 255, 186, 173, 100, 255, 111, 106, 84, 255, 160, 149, 91, 204, 0, 0, 0, 0, 52, 52, 52, 24, 110, 110, 110, 242, 111, 99, 99, 255, 155, 0, 2, 255, 107, 12, 13, 163, 61, 59, 59, 16, 63, 63, 63, 60, 100, 100, 100, 204, 123, 123, 123, 255, 87, 87, 87, 215, 55, 55, 55, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 105, 68, 127, 173, 161, 93, 255, 152, 141, 81, 255, 191, 177, 102, 255, 146, 137, 83, 192, 73, 70, 54, 49, 64, 43, 43, 115, 101, 92, 92, 255, 93, 87, 88, 254, 49, 49, 49, 28, 0, 0, 0, 0, 92, 87, 61, 78, 93, 91, 80, 255, 105, 101, 79, 255, 131, 115, 75, 255, 135, 127, 92, 255, 158, 148, 91, 255, 159, 148, 94, 255, 161, 142, 88, 255, 158, 148, 92, 255, 141, 134, 97, 255, 133, 115, 72, 255, 104, 101, 84, 255, 92, 90, 80, 255, 96, 90, 58, 119, 0, 0, 0, 0, 109, 109, 109, 8, 93, 93, 93, 244, 98, 83, 83, 255, 69, 53, 53, 148, 54, 54, 54, 29, 92, 92, 92, 165, 123, 123, 123, 254, 101, 101, 101, 255, 107, 107, 107, 255, 91, 91, 91, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 104, 69, 99, 140, 131, 80, 190, 201, 186, 107, 255, 163, 151, 90, 230, 143, 133, 77, 255, 160, 148, 86, 255, 186, 173, 100, 252, 97, 96, 89, 233, 57, 20, 20, 255, 93, 93, 93, 196, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 8, 120, 109, 65, 241, 160, 111, 64, 255, 133, 74, 43, 255, 136, 50, 30, 255, 120, 33, 20, 255, 143, 26, 16, 255, 142, 24, 15, 255, 121, 31, 19, 255, 136, 47, 28, 255, 135, 69, 40, 255, 153, 105, 61, 255, 137, 121, 71, 254, 57, 56, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 95, 166, 61, 24, 24, 255, 87, 87, 87, 234, 113, 113, 113, 244, 109, 109, 109, 255, 96, 96, 96, 255, 96, 96, 96, 228, 130, 130, 130, 255, 101, 101, 101, 205, 83, 83, 83, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 133, 133, 4, 157, 146, 87, 233, 206, 192, 111, 255, 83, 79, 55, 169, 67, 64, 52, 110, 190, 176, 102, 255, 193, 179, 103, 255, 115, 108, 66, 255, 106, 102, 102, 255, 93, 76, 76, 255, 81, 78, 61, 158, 79, 79, 79, 5, 0, 0, 0, 0, 0, 0, 0, 0, 47, 42, 42, 33, 80, 25, 25, 119, 145, 0, 2, 255, 168, 0, 2, 255, 110, 10, 11, 217, 132, 11, 12, 199, 132, 10, 12, 199, 103, 11, 12, 203, 165, 0, 2, 255, 163, 0, 2, 255, 76, 16, 17, 150, 40, 30, 30, 40, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 118, 0, 62, 62, 62, 123, 95, 85, 85, 255, 101, 91, 91, 255, 74, 74, 74, 255, 118, 118, 118, 255, 133, 133, 133, 255, 60, 60, 60, 130, 57, 57, 57, 145, 122, 122, 122, 255, 117, 117, 117, 254, 57, 57, 57, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 61, 47, 63, 135, 126, 78, 190, 209, 194, 112, 255, 131, 123, 78, 166, 114, 107, 68, 158, 158, 147, 88, 234, 103, 97, 64, 146, 86, 86, 86, 198, 104, 105, 109, 255, 68, 72, 77, 255, 115, 110, 75, 255, 52, 53, 47, 215, 18, 26, 44, 121, 20, 28, 46, 119, 21, 28, 46, 119, 57, 14, 26, 189, 118, 5, 15, 255, 96, 7, 16, 254, 27, 32, 47, 140, 22, 29, 46, 119, 22, 29, 46, 119, 24, 30, 47, 122, 81, 11, 20, 245, 118, 5, 15, 255, 75, 12, 23, 216, 21, 28, 46, 119, 20, 28, 46, 119, 19, 27, 46, 119, 29, 34, 46, 192, 71, 75, 84, 255, 65, 69, 79, 255, 96, 98, 103, 255, 96, 96, 96, 226, 48, 48, 48, 107, 111, 111, 111, 252, 83, 83, 83, 167, 70, 70, 70, 139, 133, 133, 133, 255, 103, 103, 103, 226, 48, 48, 48, 73, 141, 141, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 7, 131, 123, 76, 197, 154, 144, 87, 232, 172, 160, 94, 242, 98, 93, 62, 141, 207, 192, 111, 255, 209, 194, 112, 255, 141, 132, 81, 184, 109, 109, 109, 230, 51, 73, 131, 255, 6, 72, 241, 255, 13, 77, 242, 255, 19, 82, 242, 255, 25, 86, 243, 255, 29, 87, 235, 255, 35, 93, 241, 255, 39, 97, 243, 255, 42, 98, 241, 255, 45, 101, 244, 255, 47, 102, 244, 255, 48, 103, 244, 255, 48, 103, 244, 255, 47, 102, 244, 255, 45, 101, 244, 255, 42, 98, 241, 255, 40, 97, 243, 255, 36, 94, 243, 255, 30, 87, 233, 255, 26, 87, 243, 255, 20, 82, 242, 255, 14, 78, 242, 255, 7, 73, 241, 255, 36, 67, 148, 255, 112, 112, 112, 254, 83, 83, 83, 145, 135, 135, 135, 255, 135, 135, 135, 255, 92, 92, 92, 170, 103, 103, 103, 215, 105, 105, 105, 231, 99, 99, 99, 219, 51, 51, 51, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 221, 221, 1, 91, 91, 91, 7, 66, 64, 50, 124, 131, 122, 73, 241, 190, 177, 102, 254, 129, 120, 75, 152, 77, 73, 53, 50, 101, 101, 101, 195, 55, 76, 131, 255, 17, 80, 242, 255, 24, 85, 242, 255, 31, 90, 243, 255, 37, 95, 243, 255, 51, 82, 157, 255, 42, 91, 215, 255, 52, 105, 243, 255, 50, 74, 130, 255, 58, 110, 244, 255, 47, 84, 179, 255, 61, 112, 244, 255, 61, 112, 244, 255, 50, 88, 187, 255, 56, 107, 237, 255, 54, 80, 142, 255, 49, 100, 230, 255, 48, 103, 243, 255, 47, 72, 130, 255, 38, 95, 243, 255, 32, 91, 243, 255, 25, 86, 242, 255, 18, 81, 242, 255, 40, 71, 148, 255, 107, 107, 107, 227, 55, 55, 55, 22, 86, 86, 86, 145, 116, 116, 116, 243, 101, 101, 101, 254, 52, 52, 52, 128, 49, 49, 49, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 13, 82, 82, 82, 22, 152, 142, 83, 246, 85, 80, 56, 83, 0, 0, 0, 0, 63, 63, 63, 54, 41, 63, 118, 244, 27, 88, 243, 255, 40, 75, 161, 255, 40, 90, 219, 255, 49, 103, 244, 255, 89, 111, 156, 255, 61, 96, 184, 255, 57, 98, 200, 255, 100, 115, 140, 255, 70, 104, 187, 255, 82, 106, 160, 255, 74, 122, 245, 255, 74, 122, 245, 255, 68, 102, 186, 255, 84, 108, 160, 255, 85, 111, 167, 255, 73, 103, 174, 255, 54, 99, 215, 255, 97, 109, 124, 255, 50, 104, 244, 255, 42, 97, 237, 255, 40, 70, 143, 255, 28, 88, 243, 255, 35, 64, 139, 252, 71, 71, 71, 78, 0, 0, 0, 0, 48, 48, 48, 41, 106, 106, 106, 248, 60, 60, 60, 60, 78, 78, 78, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 63, 54, 35, 54, 53, 48, 24, 0, 0, 0, 0, 0, 0, 0, 0, 31, 57, 123, 194, 38, 95, 243, 255, 46, 88, 193, 255, 88, 106, 139, 255, 60, 112, 244, 255, 84, 110, 165, 255, 95, 116, 159, 255, 82, 110, 174, 255, 103, 122, 157, 255, 113, 125, 139, 255, 75, 109, 194, 255, 87, 131, 246, 255, 87, 131, 246, 255, 80, 122, 229, 255, 109, 113, 104, 255, 82, 111, 178, 255, 104, 121, 152, 255, 73, 105, 181, 255, 108, 123, 143, 255, 61, 112, 244, 255, 71, 100, 165, 255, 65, 96, 167, 255, 39, 96, 243, 255, 31, 62, 141, 229, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 69, 5, 53, 53, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 60, 123, 194, 48, 103, 244, 255, 56, 108, 242, 255, 119, 120, 99, 255, 68, 107, 205, 255, 70, 105, 192, 255, 124, 131, 126, 255, 98, 120, 167, 255, 111, 127, 156, 255, 117, 118, 98, 255, 92, 131, 230, 255, 100, 141, 247, 255, 100, 141, 247, 255, 99, 140, 247, 255, 113, 111, 86, 255, 90, 115, 173, 255, 118, 130, 144, 255, 109, 124, 151, 255, 88, 113, 168, 255, 67, 112, 226, 255, 125, 123, 93, 255, 54, 102, 227, 255, 49, 103, 244, 255, 36, 66, 141, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 63, 123, 194, 57, 110, 244, 255, 63, 111, 234, 255, 78, 107, 176, 255, 136, 135, 108, 255, 84, 126, 232, 255, 121, 118, 87, 255, 99, 118, 155, 255, 128, 136, 138, 255, 114, 111, 82, 255, 78, 102, 162, 255, 113, 151, 247, 255, 113, 151, 248, 255, 84, 110, 174, 255, 122, 122, 101, 255, 97, 110, 129, 255, 123, 133, 144, 255, 125, 125, 100, 255, 80, 118, 216, 255, 118, 126, 125, 255, 95, 114, 150, 255, 66, 115, 240, 255, 57, 108, 238, 255, 41, 69, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 65, 124, 194, 66, 116, 245, 255, 61, 79, 121, 255, 82, 125, 238, 255, 121, 127, 125, 255, 119, 126, 127, 255, 121, 131, 139, 255, 122, 121, 95, 255, 180, 169, 103, 255, 183, 171, 100, 255, 111, 128, 164, 255, 126, 160, 248, 255, 126, 160, 248, 255, 105, 129, 190, 255, 184, 171, 100, 255, 172, 161, 98, 255, 130, 128, 100, 255, 132, 134, 116, 255, 105, 121, 148, 255, 138, 137, 108, 255, 82, 125, 237, 255, 62, 81, 123, 255, 65, 113, 236, 255, 46, 73, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 68, 124, 194, 75, 123, 245, 255, 85, 113, 178, 255, 118, 123, 115, 255, 92, 127, 219, 255, 140, 139, 112, 255, 151, 145, 98, 255, 209, 194, 112, 255, 209, 194, 112, 255, 209, 194, 112, 255, 117, 137, 185, 255, 139, 170, 249, 255, 139, 170, 249, 255, 120, 146, 215, 255, 195, 181, 105, 255, 209, 194, 112, 255, 209, 194, 112, 255, 159, 152, 102, 255, 152, 146, 102, 255, 94, 128, 213, 255, 108, 119, 134, 255, 95, 113, 149, 255, 76, 124, 245, 255, 50, 76, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 71, 124, 194, 81, 125, 239, 255, 89, 129, 234, 255, 108, 122, 147, 255, 144, 141, 106, 255, 97, 120, 175, 255, 160, 152, 99, 255, 208, 193, 111, 255, 176, 164, 95, 255, 167, 156, 94, 255, 138, 163, 227, 255, 152, 179, 250, 255, 152, 180, 250, 255, 149, 177, 247, 255, 150, 143, 98, 255, 175, 162, 94, 255, 205, 190, 110, 255, 182, 169, 98, 255, 91, 113, 168, 255, 135, 137, 118, 255, 119, 126, 125, 255, 92, 133, 238, 255, 79, 121, 231, 255, 54, 79, 142, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 73, 124, 194, 90, 133, 244, 255, 73, 87, 115, 255, 100, 126, 189, 255, 112, 129, 165, 255, 186, 173, 102, 255, 208, 193, 111, 255, 146, 146, 122, 255, 147, 172, 237, 255, 147, 170, 230, 255, 163, 188, 250, 255, 165, 189, 250, 255, 165, 189, 250, 255, 164, 188, 250, 255, 150, 173, 233, 255, 148, 174, 239, 255, 135, 140, 139, 255, 209, 194, 112, 255, 195, 181, 105, 255, 118, 129, 143, 255, 99, 128, 201, 255, 80, 91, 112, 255, 87, 127, 232, 255, 58, 82, 143, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 2, 80, 80, 80, 124, 105, 105, 105, 206, 101, 101, 101, 184, 66, 66, 66, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 75, 124, 194, 98, 139, 247, 255, 105, 142, 238, 255, 110, 122, 142, 255, 119, 121, 106, 255, 178, 167, 105, 255, 209, 194, 112, 255, 146, 151, 148, 255, 166, 189, 250, 255, 172, 194, 251, 255, 176, 197, 251, 255, 178, 199, 251, 255, 178, 199, 251, 255, 176, 197, 251, 255, 172, 194, 251, 255, 167, 190, 251, 255, 142, 150, 159, 255, 209, 194, 112, 255, 189, 176, 103, 255, 127, 129, 115, 255, 111, 119, 126, 255, 102, 137, 227, 255, 99, 140, 247, 255, 61, 84, 142, 229, 153, 153, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 66, 54, 33, 141, 132, 81, 167, 158, 148, 90, 210, 131, 122, 77, 149, 46, 45, 44, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 129, 118, 118, 118, 245, 87, 87, 87, 135, 97, 97, 97, 187, 114, 114, 114, 244, 56, 56, 56, 31, 87, 87, 87, 160, 79, 79, 79, 162, 62, 76, 113, 252, 104, 144, 247, 255, 78, 96, 139, 255, 111, 131, 177, 255, 104, 125, 179, 255, 178, 166, 100, 255, 209, 194, 112, 255, 156, 154, 129, 255, 177, 197, 251, 255, 183, 203, 251, 255, 188, 206, 252, 255, 191, 208, 252, 255, 191, 208, 252, 255, 189, 207, 252, 255, 184, 203, 252, 255, 178, 198, 251, 255, 156, 154, 127, 255, 209, 194, 112, 255, 196, 182, 105, 255, 101, 118, 160, 255, 110, 132, 183, 255, 82, 97, 131, 255, 102, 141, 240, 255, 70, 88, 129, 255, 134, 125, 77, 182, 132, 124, 77, 165, 57, 56, 47, 36, 154, 144, 86, 219, 157, 146, 86, 207, 125, 116, 71, 127, 170, 158, 93, 227, 138, 129, 78, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 106, 218, 88, 88, 88, 133, 0, 0, 0, 0, 78, 78, 78, 6, 110, 110, 110, 241, 77, 77, 77, 184, 104, 104, 104, 255, 100, 100, 100, 254, 62, 76, 114, 238, 109, 148, 247, 255, 117, 151, 240, 255, 120, 135, 162, 255, 140, 137, 108, 255, 185, 172, 100, 255, 195, 175, 109, 255, 162, 146, 122, 255, 197, 197, 232, 255, 210, 207, 233, 255, 216, 211, 233, 255, 208, 205, 232, 255, 206, 206, 235, 255, 216, 211, 233, 255, 212, 208, 233, 255, 199, 199, 233, 255, 163, 145, 117, 255, 196, 174, 112, 255, 198, 183, 106, 255, 138, 134, 99, 255, 127, 138, 152, 255, 114, 147, 230, 255, 110, 149, 247, 255, 68, 87, 133, 246, 139, 130, 77, 240, 184, 171, 99, 255, 98, 92, 59, 189, 181, 168, 97, 255, 53, 52, 49, 39, 0, 0, 0, 0, 81, 77, 55, 84, 172, 160, 93, 253, 112, 112, 112, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 56, 112, 112, 112, 238, 106, 106, 106, 212, 73, 73, 73, 95, 56, 56, 56, 43, 119, 119, 119, 251, 127, 127, 127, 255, 80, 80, 80, 194, 97, 97, 97, 246, 62, 78, 119, 213, 113, 151, 247, 255, 124, 158, 245, 255, 116, 140, 200, 255, 138, 143, 140, 255, 193, 179, 105, 255, 205, 186, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 255, 253, 253, 253, 255, 255, 254, 254, 255, 248, 235, 235, 255, 254, 254, 254, 255, 210, 210, 210, 255, 218, 218, 218, 255, 255, 255, 255, 255, 224, 207, 176, 255, 201, 187, 108, 255, 143, 144, 128, 255, 116, 138, 190, 255, 123, 156, 241, 255, 114, 152, 248, 255, 69, 90, 143, 229, 136, 127, 78, 203, 121, 113, 70, 200, 184, 170, 99, 254, 202, 187, 108, 255, 83, 79, 55, 86, 89, 84, 59, 68, 144, 134, 81, 193, 185, 172, 100, 255, 96, 91, 63, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 35, 115, 115, 115, 246, 100, 100, 100, 198, 95, 95, 95, 164, 117, 117, 117, 252, 105, 105, 105, 249, 105, 105, 105, 199, 115, 115, 115, 240, 94, 94, 94, 196, 163, 163, 163, 6, 64, 81, 125, 194, 116, 153, 248, 255, 110, 139, 212, 255, 120, 135, 166, 255, 118, 133, 165, 255, 164, 153, 95, 255, 205, 186, 142, 255, 255, 255, 255, 255, 37, 37, 37, 255, 1, 1, 1, 255, 120, 120, 120, 255, 255, 255, 255, 255, 248, 236, 236, 255, 82, 82, 82, 255, 77, 77, 77, 255, 33, 33, 33, 255, 165, 165, 165, 255, 224, 207, 176, 255, 184, 171, 99, 255, 110, 123, 150, 255, 125, 140, 168, 255, 105, 131, 197, 255, 117, 154, 248, 255, 71, 91, 143, 229, 180, 180, 180, 4, 124, 116, 73, 149, 181, 168, 98, 250, 155, 145, 89, 197, 159, 148, 87, 242, 181, 169, 98, 252, 145, 135, 81, 181, 145, 136, 83, 179, 182, 169, 98, 253, 89, 84, 57, 73, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 84, 84, 120, 108, 108, 108, 231, 69, 69, 69, 6, 0, 0, 0, 0, 92, 92, 92, 153, 102, 102, 102, 198, 0, 0, 0, 0, 60, 60, 60, 54, 119, 119, 119, 255, 46, 46, 46, 56, 64, 81, 125, 194, 117, 154, 248, 255, 123, 154, 234, 255, 124, 139, 169, 255, 160, 153, 106, 255, 188, 174, 101, 255, 205, 186, 142, 255, 255, 255, 255, 255, 104, 104, 104, 255, 35, 35, 35, 255, 177, 177, 177, 255, 255, 255, 255, 255, 203, 192, 192, 255, 100, 100, 100, 255, 255, 255, 255, 255, 222, 222, 222, 255, 60, 60, 60, 255, 224, 207, 176, 255, 193, 179, 103, 255, 166, 157, 100, 255, 128, 140, 159, 255, 120, 150, 225, 255, 119, 155, 248, 255, 71, 92, 143, 229, 88, 88, 88, 10, 171, 159, 93, 252, 92, 87, 59, 102, 0, 0, 0, 0, 138, 129, 81, 153, 154, 144, 88, 202, 153, 153, 153, 0, 221, 221, 221, 0, 150, 139, 84, 190, 144, 135, 81, 165, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 150, 112, 112, 112, 240, 50, 50, 50, 20, 136, 136, 136, 1, 95, 96, 97, 177, 91, 100, 127, 204, 83, 120, 235, 47, 63, 88, 167, 69, 103, 109, 131, 255, 49, 50, 53, 56, 61, 78, 121, 194, 118, 154, 248, 255, 98, 113, 145, 255, 135, 144, 156, 255, 123, 140, 179, 255, 155, 150, 112, 255, 205, 186, 142, 255, 243, 243, 243, 255, 18, 18, 18, 255, 63, 63, 63, 255, 65, 65, 65, 255, 255, 255, 255, 255, 210, 199, 199, 255, 120, 120, 120, 255, 255, 255, 255, 255, 241, 241, 241, 255, 77, 77, 77, 255, 224, 207, 176, 255, 171, 161, 105, 255, 120, 136, 176, 255, 134, 144, 160, 255, 105, 117, 139, 255, 114, 149, 237, 255, 68, 88, 138, 226, 93, 93, 93, 10, 153, 147, 107, 251, 65, 79, 118, 108, 83, 120, 235, 47, 114, 118, 117, 164, 150, 142, 93, 216, 90, 90, 90, 8, 56, 56, 56, 5, 155, 145, 88, 209, 140, 130, 79, 195, 95, 95, 95, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 134, 134, 6, 92, 92, 92, 240, 110, 110, 110, 242, 111, 111, 111, 233, 105, 105, 105, 215, 91, 107, 158, 255, 160, 162, 142, 255, 206, 192, 114, 255, 206, 192, 114, 255, 187, 179, 126, 255, 66, 106, 237, 20, 53, 70, 111, 180, 117, 154, 248, 255, 130, 163, 248, 255, 123, 144, 193, 255, 139, 135, 101, 255, 162, 154, 105, 255, 205, 186, 142, 255, 148, 148, 148, 255, 114, 114, 114, 255, 206, 206, 206, 255, 49, 49, 49, 255, 206, 206, 206, 255, 245, 234, 234, 255, 59, 59, 59, 255, 250, 250, 250, 255, 172, 172, 172, 255, 136, 136, 136, 255, 224, 207, 176, 255, 170, 161, 106, 255, 142, 137, 96, 255, 123, 140, 176, 255, 131, 164, 247, 255, 119, 155, 248, 255, 61, 81, 131, 211, 0, 0, 0, 0, 171, 169, 140, 219, 206, 192, 114, 255, 206, 192, 114, 255, 203, 190, 116, 255, 119, 133, 161, 255, 161, 150, 89, 224, 161, 150, 90, 223, 177, 165, 97, 247, 158, 147, 87, 248, 38, 38, 35, 42, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, 6, 47, 47, 47, 22, 83, 83, 83, 122, 91, 91, 91, 139, 23, 63, 194, 182, 128, 138, 149, 255, 121, 118, 89, 255, 152, 146, 100, 255, 182, 173, 114, 255, 66, 106, 234, 42, 47, 60, 93, 160, 116, 153, 248, 255, 106, 133, 202, 255, 118, 131, 157, 255, 130, 151, 205, 255, 151, 149, 120, 255, 205, 185, 142, 255, 126, 126, 126, 255, 183, 183, 183, 255, 255, 255, 255, 255, 158, 158, 158, 255, 180, 180, 180, 255, 236, 225, 225, 255, 94, 94, 94, 255, 216, 216, 216, 255, 140, 140, 140, 255, 144, 144, 144, 255, 224, 207, 176, 255, 166, 159, 110, 255, 128, 150, 203, 255, 122, 137, 165, 255, 101, 125, 184, 255, 117, 154, 248, 255, 57, 74, 118, 191, 163, 183, 250, 0, 176, 173, 136, 234, 209, 194, 112, 255, 155, 150, 113, 255, 186, 179, 126, 255, 17, 62, 211, 193, 127, 119, 75, 130, 129, 121, 76, 134, 64, 62, 48, 39, 130, 130, 130, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 62, 240, 146, 101, 123, 178, 255, 104, 112, 122, 255, 67, 90, 156, 255, 183, 173, 113, 255, 114, 134, 184, 82, 28, 33, 45, 121, 111, 149, 245, 255, 125, 160, 248, 255, 119, 142, 199, 255, 131, 129, 103, 255, 149, 143, 101, 255, 203, 182, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 202, 171, 255, 158, 151, 103, 255, 135, 130, 95, 255, 119, 138, 183, 255, 126, 160, 247, 255, 114, 152, 248, 255, 42, 54, 82, 152, 70, 110, 242, 22, 190, 182, 124, 255, 209, 194, 112, 255, 154, 150, 113, 255, 149, 154, 149, 255, 8, 62, 240, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 241, 134, 52, 90, 208, 255, 151, 147, 112, 255, 207, 193, 111, 255, 151, 146, 107, 255, 154, 159, 152, 148, 36, 36, 36, 56, 85, 115, 192, 255, 118, 153, 242, 255, 104, 126, 182, 255, 125, 150, 214, 255, 150, 148, 118, 255, 201, 185, 107, 255, 206, 181, 122, 255, 215, 191, 142, 255, 211, 188, 135, 255, 206, 182, 122, 255, 208, 185, 137, 255, 209, 180, 138, 255, 203, 179, 121, 255, 207, 184, 130, 255, 211, 188, 140, 255, 210, 186, 129, 255, 203, 184, 108, 255, 163, 156, 107, 255, 124, 148, 211, 255, 107, 130, 185, 255, 113, 146, 231, 255, 99, 133, 221, 255, 24, 25, 27, 87, 119, 137, 182, 88, 178, 167, 102, 255, 209, 194, 112, 255, 136, 133, 101, 255, 102, 123, 177, 255, 10, 64, 241, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 81, 242, 50, 37, 84, 237, 91, 141, 142, 122, 254, 60, 85, 156, 255, 105, 119, 147, 255, 157, 155, 127, 231, 82, 119, 237, 6, 55, 71, 113, 207, 115, 152, 248, 255, 117, 149, 230, 255, 94, 101, 108, 255, 131, 140, 149, 255, 145, 140, 102, 255, 144, 145, 128, 255, 172, 161, 96, 255, 132, 131, 109, 255, 158, 152, 110, 255, 150, 160, 181, 255, 151, 161, 181, 255, 153, 151, 123, 255, 137, 135, 111, 255, 185, 172, 100, 255, 129, 132, 123, 255, 154, 145, 89, 255, 124, 136, 157, 255, 105, 109, 104, 255, 110, 139, 213, 255, 116, 153, 248, 255, 60, 81, 132, 230, 66, 66, 66, 8, 161, 163, 147, 177, 91, 105, 136, 255, 63, 87, 156, 255, 118, 123, 118, 255, 100, 125, 192, 122, 31, 80, 242, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 148, 142, 188, 149, 142, 98, 255, 205, 191, 110, 255, 198, 184, 107, 255, 124, 140, 178, 99, 32, 33, 34, 54, 73, 97, 159, 246, 119, 155, 247, 255, 129, 162, 247, 255, 116, 141, 207, 255, 117, 134, 171, 255, 121, 140, 190, 255, 129, 140, 158, 255, 114, 128, 163, 255, 160, 179, 228, 255, 177, 198, 251, 255, 178, 198, 251, 255, 169, 189, 241, 255, 108, 120, 151, 255, 139, 152, 181, 255, 113, 129, 167, 255, 127, 146, 191, 255, 107, 129, 185, 255, 131, 164, 248, 255, 120, 155, 246, 255, 82, 110, 180, 253, 27, 29, 36, 77, 95, 123, 207, 42, 112, 121, 132, 251, 156, 153, 121, 255, 205, 190, 110, 255, 149, 148, 123, 240, 65, 106, 241, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 132, 190, 70, 168, 161, 112, 255, 169, 163, 115, 255, 63, 87, 156, 255, 145, 145, 123, 229, 70, 108, 230, 17, 34, 34, 35, 56, 58, 74, 113, 207, 87, 112, 176, 255, 117, 146, 221, 255, 135, 165, 241, 255, 147, 176, 249, 255, 154, 181, 250, 255, 159, 184, 250, 255, 162, 187, 250, 255, 164, 189, 250, 255, 165, 189, 250, 255, 163, 187, 250, 255, 159, 185, 250, 255, 154, 181, 250, 255, 148, 176, 249, 255, 137, 167, 243, 255, 120, 149, 225, 255, 91, 117, 183, 255, 61, 78, 123, 216, 30, 32, 36, 74, 119, 149, 247, 1, 140, 145, 142, 186, 152, 144, 95, 255, 105, 119, 147, 255, 80, 95, 129, 255, 146, 154, 159, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 202, 251, 0, 130, 137, 139, 184, 77, 96, 145, 255, 188, 176, 110, 255, 137, 137, 115, 255, 140, 147, 148, 173, 143, 168, 248, 3, 170, 170, 170, 0, 43, 43, 43, 35, 27, 27, 27, 82, 21, 22, 24, 103, 53, 61, 84, 156, 85, 101, 142, 237, 136, 163, 231, 255, 150, 178, 250, 255, 152, 179, 250, 255, 152, 179, 250, 255, 150, 178, 250, 255, 141, 168, 238, 255, 90, 107, 151, 243, 57, 67, 92, 165, 24, 25, 29, 108, 25, 25, 25, 85, 43, 43, 43, 43, 96, 96, 96, 1, 0, 0, 0, 0, 128, 142, 170, 116, 133, 136, 128, 255, 92, 102, 117, 255, 162, 157, 118, 255, 170, 165, 125, 237, 70, 109, 231, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 117, 207, 34, 162, 158, 121, 241, 137, 134, 101, 255, 92, 110, 154, 255, 140, 135, 97, 255, 139, 149, 162, 147, 132, 159, 248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 9, 38, 43, 54, 125, 97, 118, 172, 248, 138, 169, 249, 255, 138, 169, 249, 255, 106, 129, 188, 253, 40, 46, 62, 141, 43, 43, 43, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 144, 180, 95, 175, 167, 113, 253, 98, 105, 116, 255, 137, 139, 125, 255, 149, 148, 120, 255, 125, 141, 178, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 138, 176, 87, 113, 115, 104, 254, 120, 128, 136, 255, 208, 193, 112, 255, 196, 186, 121, 254, 96, 125, 212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 29, 61, 85, 108, 165, 244, 95, 120, 185, 251, 32, 34, 40, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 98, 241, 17, 172, 170, 137, 236, 209, 194, 112, 255, 209, 194, 112, 255, 139, 133, 90, 255, 142, 149, 155, 162, 197, 210, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 147, 169, 120, 202, 190, 116, 255, 197, 186, 119, 255, 161, 163, 143, 249, 127, 143, 177, 99, 204, 216, 252, 0, 80, 114, 217, 55, 91, 127, 245, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 35, 47, 98, 41, 49, 68, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 149, 247, 0, 78, 112, 218, 55, 159, 180, 249, 3, 132, 146, 171, 117, 162, 164, 142, 251, 182, 176, 129, 255, 209, 194, 112, 255, 158, 162, 149, 190, 77, 116, 244, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 75, 241, 20, 69, 102, 201, 231, 170, 168, 136, 255, 209, 194, 112, 255, 202, 190, 116, 255, 146, 154, 158, 174, 183, 177, 130, 246, 169, 167, 138, 220, 145, 153, 162, 125, 77, 111, 218, 44, 132, 159, 248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 229, 253, 1, 70, 108, 232, 32, 134, 147, 168, 107, 131, 138, 142, 200, 193, 183, 119, 255, 141, 150, 161, 206, 206, 192, 114, 255, 209, 194, 112, 255, 173, 171, 134, 255, 105, 126, 177, 252, 28, 78, 241, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 113, 204, 62, 185, 178, 130, 248, 209, 194, 112, 255, 209, 194, 112, 255, 209, 194, 112, 255, 174, 171, 133, 255, 128, 135, 136, 255, 104, 112, 124, 255, 128, 126, 100, 255, 165, 158, 109, 255, 129, 134, 131, 243, 166, 165, 138, 202, 168, 168, 143, 185, 163, 163, 141, 182, 153, 154, 136, 199, 151, 151, 129, 235, 145, 141, 107, 255, 104, 114, 130, 255, 110, 111, 94, 255, 192, 179, 106, 255, 176, 172, 132, 255, 209, 194, 112, 255, 209, 194, 112, 255, 209, 194, 112, 255, 184, 178, 129, 238, 88, 118, 210, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 132, 189, 59, 180, 176, 133, 231, 209, 194, 112, 255, 209, 194, 112, 255, 173, 170, 134, 255, 82, 100, 144, 255, 184, 171, 103, 255, 148, 145, 109, 255, 133, 139, 135, 255, 107, 113, 119, 255, 100, 114, 147, 255, 206, 191, 110, 255, 84, 97, 129, 255, 170, 163, 114, 255, 81, 100, 152, 255, 160, 150, 94, 255, 168, 162, 116, 255, 55, 79, 149, 255, 138, 133, 97, 255, 181, 175, 129, 255, 204, 191, 115, 255, 209, 194, 112, 255, 172, 171, 139, 217, 102, 128, 201, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 115, 225, 23, 154, 159, 154, 162, 195, 185, 121, 253, 71, 103, 201, 218, 144, 148, 141, 210, 123, 125, 111, 255, 151, 150, 124, 255, 89, 107, 153, 255, 63, 84, 144, 255, 165, 159, 112, 255, 154, 145, 94, 255, 67, 86, 137, 255, 170, 164, 115, 255, 109, 120, 141, 255, 150, 145, 108, 255, 206, 191, 111, 255, 107, 115, 122, 255, 139, 141, 128, 224, 78, 109, 197, 209, 181, 176, 131, 246, 143, 152, 162, 135, 70, 110, 241, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 121, 206, 44, 91, 120, 204, 62, 164, 184, 250, 1, 87, 118, 209, 52, 149, 156, 159, 133, 133, 138, 137, 190, 141, 143, 130, 236, 132, 136, 132, 255, 137, 135, 109, 255, 158, 154, 119, 255, 126, 133, 135, 255, 172, 170, 135, 238, 159, 160, 139, 195, 152, 158, 155, 140, 94, 122, 201, 62, 131, 158, 248, 4, 52, 94, 227, 41, 80, 116, 227, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 195, 250, 7, 71, 112, 244, 21, 70, 111, 244, 22, 165, 185, 250, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, 86, 137, 137, 137, 132, 135, 135, 135, 139, 135, 135, 135, 139, 135, 135, 135, 139, 140, 140, 140, 137, 141, 141, 141, 108, 150, 150, 150, 38, 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, 144, 59, 140, 140, 140, 123, 135, 135, 135, 139, 135, 135, 135, 139, 138, 138, 138, 128, 147, 147, 147, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 71, 138, 138, 138, 128, 135, 135, 135, 139, 138, 138, 138, 128, 140, 140, 140, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 148, 64, 139, 139, 139, 158, 141, 141, 141, 191, 141, 141, 141, 177, 141, 141, 141, 168, 143, 143, 143, 88, 161, 161, 161, 21, 146, 146, 146, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 68, 135, 135, 135, 255, 139, 139, 139, 208, 146, 146, 146, 69, 146, 146, 146, 82, 138, 138, 138, 193, 136, 136, 136, 253, 142, 142, 142, 131, 231, 231, 231, 0, 0, 0, 0, 0, 156, 156, 156, 16, 137, 137, 137, 244, 135, 135, 135, 255, 150, 150, 150, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 157, 157, 38, 137, 137, 137, 252, 152, 152, 152, 34, 0, 0, 0, 0, 0, 0, 0, 0, 157, 157, 157, 10, 140, 140, 140, 168, 137, 137, 137, 226, 145, 145, 145, 76, 198, 198, 198, 3, 0, 0, 0, 0, 161, 161, 161, 11, 140, 140, 140, 116, 137, 137, 137, 250, 139, 139, 139, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 161, 161, 161, 8, 137, 137, 137, 221, 135, 135, 135, 255, 146, 146, 146, 79, 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 137, 214, 135, 135, 135, 248, 217, 217, 217, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 141, 141, 228, 0, 0, 0, 0, 0, 0, 0, 0, 171, 171, 171, 1, 140, 140, 140, 177, 136, 136, 136, 245, 146, 146, 146, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 106, 140, 140, 140, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 141, 141, 144, 135, 135, 135, 255, 140, 140, 140, 156, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 87, 135, 135, 135, 255, 140, 140, 140, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 189, 189, 2, 144, 144, 144, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 139, 135, 135, 135, 255, 140, 140, 140, 153, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 197, 135, 135, 135, 255, 148, 148, 148, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 151, 151, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 167, 167, 167, 5, 137, 137, 137, 211, 135, 135, 135, 255, 144, 144, 144, 73, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 172, 172, 172, 11, 136, 136, 136, 252, 135, 135, 135, 255, 177, 177, 177, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 139, 139, 139, 212, 146, 146, 146, 84, 147, 147, 147, 83, 139, 139, 139, 187, 136, 136, 136, 251, 141, 141, 141, 129, 215, 215, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 160, 160, 160, 41, 135, 135, 135, 255, 138, 138, 138, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 141, 141, 141, 194, 143, 143, 143, 69, 144, 144, 144, 97, 144, 144, 144, 86, 153, 153, 153, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 135, 207, 135, 135, 135, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 227, 0, 0, 0, 0, 160, 160, 160, 36, 135, 135, 135, 255, 137, 137, 137, 255, 215, 215, 215, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 137, 207, 136, 136, 136, 250, 212, 212, 212, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 1, 141, 141, 141, 225, 0, 0, 0, 0, 175, 175, 175, 5, 137, 137, 137, 246, 135, 135, 135, 255, 157, 157, 157, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 193, 135, 135, 135, 255, 165, 165, 165, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 169, 169, 23, 139, 139, 139, 204, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 175, 135, 135, 135, 255, 142, 142, 142, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 9, 190, 190, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, 35, 135, 135, 135, 255, 140, 140, 140, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 140, 140, 145, 135, 135, 135, 255, 144, 144, 144, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 87, 139, 139, 139, 149, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 49, 136, 136, 136, 251, 137, 137, 137, 216, 157, 157, 157, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, 188, 6, 146, 146, 146, 138, 188, 188, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 152, 152, 40, 135, 135, 135, 255, 138, 138, 138, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 149, 149, 34, 137, 137, 137, 242, 138, 138, 138, 202, 156, 156, 156, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 53, 138, 138, 138, 217, 150, 150, 150, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 108, 136, 136, 136, 254, 138, 138, 138, 188, 149, 149, 149, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 154, 154, 17, 146, 146, 146, 158, 150, 150, 150, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 159, 159, 96, 146, 146, 146, 186, 141, 141, 141, 255, 142, 142, 142, 250, 150, 150, 150, 130, 158, 158, 158, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 147, 147, 56, 138, 138, 138, 211, 137, 137, 137, 235, 141, 141, 141, 165, 141, 141, 141, 154, 139, 139, 139, 196, 139, 139, 139, 208, 145, 145, 145, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 73, 139, 139, 139, 208, 137, 137, 137, 249, 139, 139, 139, 187, 139, 139, 139, 156, 140, 140, 140, 174, 140, 140, 140, 161, 147, 147, 147, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 223, 223, 1, 223, 223, 223, 1, 223, 223, 223, 1, 223, 223, 223, 1, 223, 223, 223, 1, 224, 224, 224, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 180, 180, 0, 159, 159, 159, 35, 148, 148, 148, 66, 148, 148, 148, 68, 159, 159, 159, 36, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, 202, 0, 158, 158, 158, 30, 147, 147, 147, 63, 150, 150, 150, 62, 162, 162, 162, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 75, 241, 115, 15, 68, 241, 141, 14, 67, 241, 133, 36, 84, 242, 38, 0, 0, 0, 0, 0, 0, 0, 0, 29, 78, 242, 75, 37, 85, 242, 45, 0, 0, 0, 0, 0, 0, 0, 0, 23, 74, 241, 38, 19, 71, 241, 140, 19, 71, 241, 138, 44, 90, 243, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 72, 241, 190, 96, 131, 246, 30, 61, 104, 244, 47, 12, 65, 241, 165, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64, 241, 116, 0, 56, 240, 59, 0, 0, 0, 0, 87, 124, 245, 7, 13, 66, 241, 187, 46, 92, 243, 14, 60, 103, 244, 17, 16, 69, 241, 189, 128, 156, 248, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 241, 190, 20, 72, 241, 147, 11, 65, 241, 223, 41, 88, 242, 54, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64, 241, 116, 0, 56, 240, 59, 0, 0, 0, 0, 57, 100, 243, 22, 12, 66, 241, 167, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64, 241, 171, 57, 101, 243, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 72, 241, 194, 115, 146, 247, 4, 32, 81, 242, 72, 18, 70, 241, 134, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64, 241, 120, 9, 63, 241, 64, 0, 0, 0, 0, 0, 0, 0, 0, 23, 74, 241, 150, 18, 70, 241, 124, 18, 70, 241, 125, 20, 72, 241, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 128, 245, 36, 91, 127, 245, 5, 134, 161, 248, 5, 88, 125, 245, 36, 0, 0, 0, 0, 0, 0, 0, 0, 92, 128, 245, 25, 95, 130, 246, 16, 0, 0, 0, 0, 0, 0, 0, 0, 153, 176, 249, 0, 43, 90, 243, 31, 45, 92, 243, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 79, imgdata); + return image; +} + +static Ihandle* load_image_LogoLua(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 35, 64, 64, 64, 8, 0, 0, 0, 0, 64, 64, 64, 25, 64, 64, 64, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 60, 64, 64, 64, 130, 64, 64, 64, 27, 0, 0, 0, 0, 64, 64, 64, 96, 64, 64, 64, 100, 64, 64, 64, 16, 0, 0, 0, 0, 64, 64, 64, 86, 64, 64, 64, 127, 64, 64, 64, 22, 0, 0, 0, 0, 64, 64, 64, 107, 64, 64, 64, 63, 64, 64, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 149, 5, 7, 7, 131, 108, 4, 4, 129, 199, 5, 5, 129, 236, 4, 4, 129, 222, 6, 6, 130, 158, 13, 13, 134, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 43, 64, 64, 64, 45, 0, 0, 0, 0, 64, 64, 64, 44, 64, 64, 64, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 13, 64, 64, 64, 77, 64, 64, 64, 6, 64, 64, 64, 3, 64, 64, 64, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 138, 15, 4, 4, 129, 199, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 8, 8, 131, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 66, 64, 64, 64, 106, 64, 64, 64, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 7, 64, 64, 64, 111, 64, 64, 64, 119, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 171, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 13, 13, 134, 39, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 9, 64, 64, 64, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 136, 41, 1, 1, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 158, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 130, 64, 64, 64, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 132, 107, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 222, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 42, 7, 7, 130, 100, 5, 5, 130, 143, 5, 5, 129, 172, 2, 2, 128, 183, 1, 1, 128, 182, 5, 5, 129, 171, 5, 5, 129, 141, 9, 9, 132, 99, 21, 21, 138, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 129, 118, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 236, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 85, 64, 64, 64, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 28, 8, 8, 131, 132, 4, 4, 129, 223, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 220, 7, 7, 131, 128, 21, 21, 138, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 132, 83, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 199, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 138, 19, 7, 7, 130, 149, 1, 1, 128, 250, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 6, 6, 130, 143, 18, 18, 136, 16, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 149, 12, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 131, 108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 132, 79, 2, 2, 128, 234, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 230, 10, 10, 132, 73, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 89, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 199, 43, 43, 149, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 11, 64, 64, 64, 154, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 153, 1, 9, 9, 131, 134, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 254, 7, 7, 131, 124, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 89, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 127, 255, 6, 6, 130, 171, 21, 21, 138, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 55, 64, 64, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 153, 1, 3, 3, 129, 150, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 49, 49, 152, 255, 118, 118, 186, 255, 134, 134, 194, 255, 100, 100, 177, 255, 22, 22, 138, 255, 0, 0, 127, 255, 0, 0, 127, 255, 13, 13, 134, 149, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 149, 12, 10, 10, 132, 83, 4, 4, 129, 118, 9, 9, 132, 107, 19, 19, 136, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 131, 135, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 15, 15, 135, 255, 175, 175, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 246, 250, 255, 113, 113, 184, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 131, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 83, 0, 0, 127, 254, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 255, 195, 195, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 113, 184, 255, 0, 0, 127, 255, 1, 1, 128, 254, 10, 10, 132, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 47, 64, 64, 64, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 137, 21, 2, 2, 128, 236, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 99, 99, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 246, 250, 255, 22, 22, 138, 255, 0, 0, 127, 255, 2, 2, 128, 230, 18, 18, 136, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 112, 64, 64, 64, 39, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 152, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 186, 186, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 100, 177, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 14, 64, 64, 64, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 139, 33, 1, 1, 128, 251, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 220, 220, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 134, 194, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 247, 21, 21, 138, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64, 64, 75, 64, 64, 64, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 138, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 203, 203, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 118, 118, 186, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 131, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 42, 64, 64, 64, 54, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64, 64, 114, 64, 64, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 191, 2, 3, 3, 129, 229, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 135, 135, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 49, 152, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 135, 49, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 237, 237, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 175, 215, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 21, 21, 138, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64, 64, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 131, 109, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 60, 60, 157, 255, 237, 237, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 195, 225, 255, 15, 15, 135, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 9, 9, 132, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 64, 23, 64, 64, 64, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 152, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 15, 15, 134, 255, 195, 195, 225, 255, 80, 80, 167, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 135, 135, 195, 255, 203, 203, 229, 255, 220, 220, 237, 255, 186, 186, 220, 255, 99, 99, 177, 255, 4, 4, 129, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 94, 64, 64, 64, 11, + 64, 64, 64, 34, 64, 64, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 181, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 100, 64, 64, 64, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 128, 195, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 21, 64, 64, 64, 11, + 64, 64, 64, 9, 64, 64, 64, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 128, 195, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 53, 53, 154, 255, 106, 106, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 11, 11, 132, 255, 120, 120, 187, 255, 28, 28, 141, 255, 0, 0, 127, 255, 0, 0, 127, 255, 38, 38, 146, 255, 138, 138, 196, 255, 176, 176, 216, 255, 169, 169, 212, 255, 112, 112, 183, 255, 9, 9, 131, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 64, 43, 64, 64, 64, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 129, 182, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 42, 42, 148, 255, 244, 244, 250, 255, 206, 206, 230, 255, 140, 140, 197, 255, 159, 159, 207, 255, 245, 245, 250, 255, 168, 168, 211, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 129, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 79, 64, 64, 64, 25, + 64, 64, 64, 20, 64, 64, 64, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 130, 154, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 125, 125, 190, 255, 228, 228, 241, 255, 7, 7, 130, 255, 0, 0, 127, 255, 0, 0, 127, 255, 116, 116, 185, 255, 237, 237, 246, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 5, 5, 130, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 122, 64, 64, 64, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 131, 110, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 6, 6, 130, 255, 145, 145, 200, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 130, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64, 64, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 136, 52, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 23, 23, 139, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 4, 4, 129, 255, 105, 105, 180, 255, 181, 181, 218, 255, 220, 220, 237, 255, 249, 249, 252, 255, 234, 234, 244, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 22, 22, 138, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64, 64, 136, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 170, 2, 4, 4, 129, 232, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 225, 225, 240, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 27, 27, 141, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 145, 145, 200, 255, 240, 240, 248, 255, 115, 115, 185, 255, 53, 53, 154, 255, 15, 15, 135, 255, 98, 98, 176, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 4, 4, 129, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 9, 64, 64, 64, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64, 64, 65, 64, 64, 64, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 141, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 105, 105, 180, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 113, 113, 184, 255, 229, 229, 242, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 76, 76, 165, 255, 255, 255, 255, 255, 60, 60, 157, 255, 0, 0, 127, 255, 227, 227, 241, 255, 132, 132, 193, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 111, 111, 183, 255, 240, 240, 247, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 8, 8, 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 73, 64, 64, 64, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 136, 35, 1, 1, 127, 251, 0, 0, 127, 255, 0, 0, 127, 255, 19, 19, 137, 255, 255, 255, 255, 255, 169, 169, 212, 255, 109, 109, 182, 255, 109, 109, 182, 255, 109, 109, 182, 255, 109, 109, 182, 255, 109, 109, 182, 255, 18, 18, 136, 255, 93, 93, 174, 255, 255, 255, 255, 255, 79, 79, 167, 255, 0, 0, 127, 255, 34, 34, 144, 255, 208, 208, 231, 255, 253, 253, 254, 255, 60, 60, 157, 255, 0, 0, 127, 255, 205, 205, 230, 255, 188, 188, 221, 255, 11, 11, 132, 255, 1, 1, 128, 255, 71, 71, 163, 255, 233, 233, 244, 255, 245, 245, 250, 255, 5, 5, 129, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 250, 22, 22, 138, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 50, 64, 64, 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 130, 159, 0, 0, 127, 255, 0, 0, 127, 255, 17, 17, 135, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 225, 225, 240, 255, 36, 36, 145, 255, 9, 9, 132, 255, 190, 190, 223, 255, 255, 255, 255, 255, 242, 242, 248, 255, 242, 242, 248, 255, 87, 87, 171, 255, 219, 219, 237, 255, 53, 53, 154, 255, 0, 0, 127, 255, 65, 65, 160, 255, 238, 238, 246, 255, 249, 249, 252, 255, 244, 244, 250, 255, 212, 212, 233, 255, 99, 99, 177, 255, 253, 253, 254, 255, 227, 227, 241, 255, 0, 0, 127, 255, 0, 0, 127, 255, 7, 7, 130, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 53, 64, 64, 64, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 135, 24, 1, 1, 128, 238, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 40, 40, 147, 255, 56, 56, 155, 255, 13, 13, 134, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 10, 10, 132, 255, 54, 54, 154, 255, 43, 43, 149, 255, 1, 1, 128, 255, 0, 0, 127, 255, 36, 36, 145, 255, 46, 46, 150, 255, 0, 0, 127, 255, 2, 2, 128, 234, 22, 22, 138, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 106, 64, 64, 64, 41, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 90, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 254, 9, 9, 132, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 130, 143, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 9, 9, 131, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 106, 64, 64, 64, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 161, 3, 6, 6, 130, 162, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 150, 51, 51, 153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 33, 64, 64, 64, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 161, 3, 7, 7, 130, 143, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 254, 8, 8, 131, 135, 51, 51, 153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 4, 64, 64, 64, 154, 64, 64, 64, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 133, 90, 1, 1, 128, 238, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 2, 2, 128, 236, 11, 11, 133, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 2, 64, 64, 64, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 19, 64, 64, 64, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 135, 24, 6, 6, 130, 159, 1, 1, 127, 251, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 1, 1, 128, 251, 5, 5, 129, 152, 20, 20, 137, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 92, 64, 64, 64, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 136, 35, 6, 6, 130, 141, 4, 4, 129, 232, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 0, 0, 127, 255, 3, 3, 129, 229, 6, 6, 130, 138, 23, 23, 139, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 109, 64, 64, 64, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 1, 64, 64, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 170, 2, 17, 17, 136, 52, 7, 7, 131, 110, 5, 5, 130, 154, 5, 5, 129, 182, 2, 2, 128, 195, 3, 3, 128, 195, 5, 5, 129, 181, 5, 5, 129, 152, 8, 8, 131, 109, 16, 16, 135, 49, 128, 128, 191, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 25, 64, 64, 64, 153, 64, 64, 64, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 32, 64, 64, 64, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 12, 64, 64, 64, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 108, 64, 64, 64, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 118, 64, 64, 64, 97, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 9, 64, 64, 64, 103, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 49, 64, 64, 64, 2, 64, 64, 64, 11, 64, 64, 64, 63, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 6, 64, 64, 64, 35, 0, 0, 0, 0, 64, 64, 64, 54, 64, 64, 64, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 6, 64, 64, 64, 78, 64, 64, 64, 110, 0, 0, 0, 0, 64, 64, 64, 28, 64, 64, 64, 112, 64, 64, 64, 71, 0, 0, 0, 0, 64, 64, 64, 18, 64, 64, 64, 92, 64, 64, 64, 86, 0, 0, 0, 0, 64, 64, 64, 35, 64, 64, 64, 134, 64, 64, 64, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 23, 64, 64, 64, 33, 0, 0, 0, 0, 64, 64, 64, 11, 64, 64, 64, 42, 64, 64, 64, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoPetrobras(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 204, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 15, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 25, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 16, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 3, 0, 0, 0, 0, 0, 0, 0, 0, 222, 234, 226, 18, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 196, 172, 25, 76, 167, 124, 83, 52, 161, 113, 125, 60, 162, 116, 144, 68, 167, 122, 144, 60, 162, 115, 100, 105, 179, 142, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 24, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 8, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 32, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 44, 217, 231, 222, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 212, 195, 16, 91, 174, 135, 73, 41, 154, 103, 104, 64, 165, 119, 144, 61, 163, 116, 144, 50, 160, 111, 120, 95, 174, 135, 79, 188, 213, 197, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 111, 187, 152, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 250, 255, 195, 225, 211, 255, 82, 174, 133, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 164, 211, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 252, 255, 194, 224, 210, 255, 59, 164, 118, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 5, 142, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 104, 137, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 2, 141, 81, 252, 27, 149, 95, 249, 30, 151, 97, 199, 55, 158, 109, 107, 185, 211, 194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 156, 104, 215, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 14, 145, 88, 255, 127, 189, 158, 38, 0, 0, 0, 0, 0, 0, 0, 0, 43, 156, 105, 143, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 16, 146, 89, 255, 131, 190, 160, 29, 0, 0, 0, 0, 0, 0, 0, 0, 42, 155, 104, 142, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 2, 141, 80, 251, 15, 144, 87, 249, 33, 153, 100, 236, 36, 153, 101, 175, 56, 160, 113, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 165, 120, 78, 33, 152, 99, 194, 9, 143, 84, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 253, 38, 154, 101, 195, 104, 178, 141, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 96, 206, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 1, 141, 80, 250, 28, 149, 95, 249, 32, 152, 98, 209, 44, 155, 104, 127, 153, 197, 171, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 159, 111, 115, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 3, 141, 81, 253, 10, 143, 84, 249, 29, 151, 97, 237, 34, 152, 98, 186, 72, 166, 122, 101, 217, 231, 222, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 172, 131, 46, 15, 146, 88, 250, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 5, 142, 83, 255, 17, 147, 90, 251, 209, 226, 215, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 179, 143, 51, 41, 155, 103, 172, 15, 145, 88, 248, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 19, 146, 89, 234, 65, 164, 118, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 180, 219, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 118, 190, 157, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 255, 230, 242, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 250, 248, 255, 55, 163, 115, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 209, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 153, 100, 205, 116, 176, 142, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 190, 163, 26, 7, 142, 83, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 92, 213, 227, 237, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 215, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 92, 204, 217, 231, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 101, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 63, 163, 117, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 175, 137, 32, 34, 151, 98, 190, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 246, 104, 178, 141, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 180, 145, 27, 6, 142, 83, 251, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 215, 136, 185, 157, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 151, 96, 187, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 155, 104, 169, 196, 218, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 218, 204, 6, 29, 149, 95, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 85, 255, 148, 190, 165, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 166, 127, 0, 55, 159, 111, 122, 8, 143, 83, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 82, 255, 72, 167, 123, 92, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 84, 255, 245, 249, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 250, 247, 255, 24, 149, 94, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 54, 162, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 223, 208, 255, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 180, 145, 29, 6, 142, 82, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 51, 159, 109, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 167, 123, 103, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 51, 159, 110, 150, 0, 0, 0, 0, 0, 0, 0, 0, 124, 186, 155, 34, 6, 142, 82, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 159, 110, 142, 0, 0, 0, 0, 0, 0, 0, 0, 141, 190, 162, 32, 5, 141, 82, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 88, 242, 152, 193, 168, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 177, 140, 67, 14, 145, 87, 234, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 99, 219, 192, 218, 202, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 166, 122, 104, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 66, 161, 116, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 217, 202, 18, 18, 146, 89, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 83, 255, 138, 197, 169, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 160, 113, 114, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 42, 152, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 160, 112, 125, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 151, 96, 212, 212, 228, 218, 1, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 72, 170, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 227, 213, 255, 83, 176, 135, 255, 83, 176, 135, 255, 83, 176, 135, 255, 85, 177, 137, 255, 183, 220, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 169, 124, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 127, 195, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 206, 182, 255, 83, 176, 135, 255, 83, 176, 135, 255, 83, 176, 135, 255, 103, 185, 149, 255, 214, 235, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 250, 248, 255, 8, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 163, 117, 105, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 243, 0, 140, 79, 240, 10, 144, 85, 253, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 155, 104, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 103, 174, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 254, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 0, 140, 79, 240, 1, 140, 79, 240, 76, 167, 124, 69, 0, 0, 0, 0, 0, 0, 0, 0, 73, 167, 123, 111, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 140, 80, 255, 84, 170, 129, 62, 0, 0, 0, 0, 0, 0, 0, 0, 65, 165, 120, 110, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 242, 0, 140, 79, 240, 0, 140, 79, 240, 6, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 255, 136, 184, 155, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 164, 120, 46, 15, 145, 87, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 21, 148, 92, 233, 20, 145, 89, 190, 20, 147, 91, 236, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 105, 179, 143, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 150, 96, 167, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 254, 0, 140, 79, 240, 0, 140, 79, 240, 6, 143, 83, 248, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 63, 161, 114, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 166, 122, 76, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 245, 0, 140, 79, 240, 0, 140, 79, 240, 8, 143, 84, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 134, 196, 167, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 167, 125, 30, 15, 146, 88, 245, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 121, 188, 156, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 161, 115, 37, 7, 142, 83, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 32, 152, 99, 202, 48, 156, 106, 141, 34, 151, 98, 152, 10, 143, 84, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 148, 93, 255, 139, 186, 157, 6, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 146, 203, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, 187, 152, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 153, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 168, 122, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 200, 228, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 44, 158, 107, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 74, 172, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 251, 255, 9, 144, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 170, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 247, 170, 203, 182, 13, 0, 0, 0, 0, 190, 215, 200, 32, 58, 159, 112, 95, 6, 142, 82, 251, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 155, 105, 186, 0, 0, 0, 0, 0, 0, 0, 0, 215, 230, 221, 10, 21, 148, 92, 238, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 153, 100, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 165, 122, 83, 43, 153, 102, 135, 43, 153, 102, 135, 43, 153, 102, 135, 43, 153, 102, 135, 27, 150, 95, 237, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 242, 44, 153, 102, 136, 43, 153, 102, 135, 43, 153, 102, 135, 43, 153, 102, 135, 52, 156, 107, 130, 176, 206, 187, 8, 0, 0, 0, 0, 0, 0, 0, 0, 39, 154, 102, 181, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 146, 89, 243, 157, 197, 172, 12, 0, 0, 0, 0, 0, 0, 0, 0, 119, 184, 152, 44, 16, 146, 89, 218, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 149, 93, 229, 214, 229, 220, 5, 0, 0, 0, 0, 0, 0, 0, 0, 158, 202, 178, 17, 29, 150, 96, 225, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 9, 144, 85, 252, 63, 162, 116, 111, 201, 221, 208, 7, 0, 0, 0, 0, 155, 200, 176, 12, 35, 152, 99, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 157, 107, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 208, 189, 7, 22, 148, 92, 238, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 197, 0, 0, 0, 0, 0, 0, 0, 0, 207, 225, 214, 18, 50, 157, 108, 137, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 142, 83, 252, 115, 184, 151, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 158, 108, 154, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 253, 113, 181, 146, 35, 0, 0, 0, 0, 0, 0, 0, 0, 160, 203, 180, 42, 27, 148, 93, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 248, 131, 187, 157, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 189, 163, 1, 33, 151, 98, 181, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 71, 162, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 100, 151, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 147, 91, 230, 164, 202, 179, 3, 0, 0, 0, 0, 0, 0, 0, 0, 37, 151, 98, 113, 0, 140, 79, 235, 0, 140, 79, 235, 0, 140, 79, 235, 0, 140, 79, 235, 23, 148, 92, 235, 135, 184, 154, 5, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 220, 237, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 39, 156, 104, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 106, 184, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 249, 247, 255, 20, 148, 91, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 149, 93, 255, 252, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 240, 232, 255, 5, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 107, 186, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 234, 224, 255, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 201, 180, 8, 20, 147, 90, 239, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 153, 100, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 218, 204, 3, 23, 148, 92, 241, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 158, 108, 137, 0, 0, 0, 0, 0, 0, 0, 0, 94, 174, 135, 61, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 158, 108, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 203, 181, 13, 16, 145, 88, 243, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 155, 103, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 4, 19, 147, 90, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 151, 98, 179, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 150, 96, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 156, 105, 139, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 68, 165, 120, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 165, 122, 85, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 57, 161, 114, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 171, 130, 61, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 38, 153, 100, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 155, 103, 137, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 155, 104, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 151, 97, 225, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 22, 147, 91, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 162, 114, 153, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 150, 96, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 168, 124, 100, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 45, 157, 106, 240, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 50, 161, 112, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 235, 228, 2, 28, 150, 96, 226, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 43, 156, 105, 148, 99, 174, 136, 45, 217, 231, 222, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 155, 104, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, 250, 255, 167, 212, 191, 255, 164, 211, 190, 255, 164, 211, 190, 255, 164, 211, 190, 255, 187, 222, 206, 255, 251, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 199, 171, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 94, 179, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 209, 186, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 255, 82, 174, 132, 255, 236, 245, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 188, 154, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 167, 123, 63, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 156, 106, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 163, 118, 91, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 253, 99, 175, 137, 57, 0, 0, 0, 0, 0, 0, 0, 0, 37, 153, 101, 127, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 151, 98, 205, 32, 149, 96, 180, 32, 149, 96, 180, 32, 149, 96, 180, 32, 149, 96, 180, 32, 149, 96, 180, 37, 151, 98, 179, 180, 208, 190, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 174, 134, 78, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 57, 161, 113, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 171, 131, 67, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 50, 157, 108, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 178, 140, 88, 11, 144, 85, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 143, 85, 240, 83, 168, 126, 30, 0, 0, 0, 0, 0, 0, 0, 0, 110, 174, 137, 16, 15, 145, 88, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 151, 97, 192, 161, 197, 174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 181, 148, 69, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 59, 163, 117, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 159, 110, 137, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 74, 163, 119, 125, 73, 161, 117, 80, 50, 154, 105, 80, 38, 154, 102, 145, 10, 143, 85, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 145, 89, 203, 119, 181, 149, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 191, 161, 47, 5, 142, 82, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 156, 105, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 168, 126, 49, 16, 146, 89, 237, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 252, 83, 170, 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 178, 142, 21, 13, 144, 86, 231, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 219, 79, 173, 131, 155, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 67, 165, 120, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 232, 223, 8, 35, 155, 102, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 255, 28, 151, 96, 233, 34, 151, 98, 157, 77, 169, 126, 83, 174, 206, 186, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 111, 188, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 255, 163, 210, 188, 255, 7, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 167, 213, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 250, 248, 255, 235, 246, 241, 255, 235, 246, 241, 255, 235, 246, 241, 255, 243, 249, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 221, 205, 255, 6, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 157, 106, 140, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 30, 151, 98, 128, 0, 140, 79, 85, 11, 145, 86, 90, 41, 155, 104, 151, 8, 142, 83, 245, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 148, 93, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 150, 96, 202, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 148, 93, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 156, 105, 148, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 255, 121, 183, 150, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 100, 135, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 13, 145, 88, 207, 0, 140, 79, 185, 0, 140, 79, 185, 30, 151, 98, 233, 4, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 85, 252, 76, 170, 127, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 157, 107, 113, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 71, 165, 121, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 165, 121, 96, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 60, 161, 114, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 203, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 45, 156, 106, 178, 129, 187, 157, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 159, 110, 112, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 141, 81, 209, 0, 140, 79, 185, 0, 140, 79, 185, 28, 151, 96, 222, 4, 141, 81, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 253, 72, 166, 121, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 1, 41, 154, 103, 166, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 71, 165, 120, 86, 8, 144, 85, 99, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 147, 91, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 237, 231, 1, 28, 150, 96, 200, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 25, 149, 93, 226, 76, 169, 125, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 184, 221, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 246, 243, 255, 53, 161, 112, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 236, 245, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 159, 209, 186, 255, 13, 144, 86, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 147, 91, 205, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 143, 85, 244, 110, 180, 145, 52, 0, 0, 0, 0, 0, 0, 0, 0, 117, 182, 148, 23, 8, 143, 84, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 155, 103, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 1, 26, 149, 95, 216, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 150, 95, 217, 207, 225, 214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 209, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 28, 150, 95, 195, 91, 173, 133, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 150, 96, 196, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 239, 156, 197, 172, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 155, 103, 156, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 142, 192, 165, 34, 0, 0, 0, 0, 0, 0, 0, 0, 130, 190, 160, 28, 12, 144, 86, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 28, 150, 95, 224, 117, 183, 149, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 96, 180, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 27, 149, 95, 210, 75, 168, 124, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 170, 128, 78, 5, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 24, 147, 92, 188, 117, 174, 140, 1, 0, 140, 79, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 46, 159, 109, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 177, 139, 69, 18, 146, 89, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 9, 143, 84, 253, 86, 171, 130, 71, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 87, 255, 244, 249, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 251, 249, 255, 182, 219, 201, 255, 182, 219, 201, 255, 182, 219, 201, 255, 186, 220, 204, 255, 228, 241, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 239, 231, 255, 12, 144, 86, 255, 0, 140, 79, 255, 0, 140, 79, 255, 60, 165, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 230, 219, 255, 27, 150, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 184, 151, 30, 10, 143, 85, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 245, 48, 152, 102, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 166, 121, 97, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 78, 166, 123, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 186, 155, 35, 6, 142, 82, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 155, 104, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 184, 152, 28, 8, 142, 83, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 30, 150, 96, 202, 116, 188, 155, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 147, 91, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 149, 94, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 174, 137, 5, 20, 147, 90, 231, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 28, 150, 95, 199, 198, 218, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 165, 121, 99, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 153, 100, 255, 39, 156, 105, 255, 37, 155, 103, 255, 18, 146, 89, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 197, 174, 11, 16, 145, 88, 242, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 150, 96, 224, 63, 159, 112, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 182, 152, 9, 17, 146, 88, 222, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 250, 97, 176, 138, 60, 0, 0, 0, 0, 0, 140, 79, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 180, 143, 45, 44, 156, 106, 178, 13, 144, 86, 251, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 153, 101, 174, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 78, 172, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 221, 205, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 145, 88, 255, 233, 244, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 171, 127, 255, 0, 140, 79, 255, 0, 140, 79, 255, 132, 197, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 216, 195, 255, 104, 187, 151, 255, 104, 187, 151, 255, 118, 191, 158, 255, 189, 223, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 210, 188, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 160, 112, 101, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 82, 255, 37, 154, 102, 188, 105, 178, 141, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 150, 96, 160, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 85, 251, 90, 174, 135, 112, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 83, 171, 130, 104, 178, 208, 189, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 158, 109, 105, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 89, 173, 133, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 166, 121, 105, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 1, 140, 80, 255, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 151, 98, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 206, 187, 44, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 158, 109, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 163, 117, 102, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 76, 168, 124, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 154, 101, 170, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 143, 85, 255, 172, 205, 185, 24, 217, 231, 222, 4, 208, 225, 214, 4, 150, 197, 171, 9, 40, 153, 101, 165, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 80, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 163, 117, 69, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 1, 140, 80, 255, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 155, 103, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 157, 107, 148, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 41, 154, 103, 168, 217, 231, 222, 1, 217, 231, 222, 1, 1, 141, 80, 96, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 147, 90, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 199, 175, 20, 67, 164, 119, 91, 42, 156, 105, 160, 23, 148, 92, 223, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 155, 102, 197, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 152, 206, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 188, 154, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 79, 255, 219, 237, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 180, 142, 255, 0, 140, 79, 255, 0, 140, 79, 255, 206, 231, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 163, 115, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 141, 81, 255, 238, 245, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 231, 219, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 152, 98, 173, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 13, 145, 87, 254, 43, 156, 106, 199, 43, 156, 106, 199, 43, 156, 106, 199, 46, 158, 108, 194, 27, 148, 94, 149, 59, 162, 115, 113, 109, 180, 145, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 214, 198, 5, 24, 149, 94, 235, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 35, 154, 101, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 150, 96, 177, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 145, 88, 240, 128, 183, 151, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 95, 168, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 145, 87, 246, 202, 223, 210, 56, 217, 231, 222, 49, 194, 217, 202, 49, 81, 170, 128, 110, 6, 142, 82, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 175, 141, 45, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 98, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 185, 151, 38, 18, 147, 90, 239, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 152, 99, 217, 144, 191, 163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 171, 204, 184, 6, 23, 148, 93, 235, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 204, 227, 237, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 150, 96, 150, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 99, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 157, 106, 150, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 253, 159, 202, 179, 73, 217, 231, 222, 49, 203, 222, 210, 49, 68, 163, 117, 81, 15, 145, 88, 246, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 154, 102, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 180, 143, 67, 8, 143, 83, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 32, 153, 99, 255, 42, 157, 106, 255, 42, 157, 106, 255, 26, 151, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 42, 157, 106, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 229, 219, 10, 82, 170, 129, 106, 81, 170, 129, 106, 81, 170, 129, 106, 81, 170, 129, 106, 81, 170, 129, 106, 116, 186, 153, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 175, 136, 111, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 157, 108, 146, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 222, 238, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 253, 255, 40, 156, 105, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 102, 183, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 166, 120, 255, 0, 140, 79, 255, 29, 151, 97, 255, 252, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 243, 237, 255, 6, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 205, 233, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 235, 225, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 191, 163, 7, 18, 146, 89, 236, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 33, 152, 98, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 174, 136, 56, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 73, 168, 124, 163, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 177, 214, 195, 61, 178, 214, 196, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 205, 184, 3, 17, 146, 89, 247, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 102, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 213, 196, 7, 23, 149, 93, 240, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 154, 102, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 151, 97, 243, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 37, 153, 101, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 211, 194, 34, 3, 141, 81, 254, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 143, 85, 250, 76, 166, 122, 67, 196, 218, 204, 1, 185, 211, 194, 4, 90, 173, 133, 71, 22, 148, 92, 229, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 82, 246, 84, 171, 129, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 178, 140, 59, 2, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 75, 169, 125, 170, 177, 214, 195, 61, 177, 214, 195, 61, 154, 201, 177, 61, 45, 155, 104, 114, 9, 143, 84, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 60, 162, 116, 115, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 1, 23, 147, 92, 212, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 31, 151, 97, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 146, 88, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 31, 151, 98, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 210, 191, 9, 24, 148, 92, 210, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 25, 147, 92, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 188, 160, 47, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 159, 110, 159, 185, 211, 194, 1, 0, 0, 0, 0, 0, 0, 0, 0, 88, 173, 133, 84, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 254, 89, 172, 132, 53, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 45, 158, 108, 255, 253, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 252, 255, 191, 222, 206, 255, 190, 222, 206, 255, 190, 222, 206, 255, 192, 223, 208, 255, 219, 237, 228, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 243, 238, 255, 10, 144, 85, 255, 0, 140, 79, 255, 99, 182, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 213, 192, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 200, 229, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 239, 231, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 169, 127, 62, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 53, 159, 111, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 108, 130, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 34, 153, 100, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 172, 133, 73, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 52, 158, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 173, 134, 63, 2, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 48, 156, 106, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 194, 166, 35, 7, 142, 83, 253, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 64, 163, 117, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 149, 94, 227, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 255, 17, 145, 88, 219, 17, 146, 89, 231, 3, 141, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 5, 142, 82, 253, 67, 165, 121, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 162, 115, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 17, 145, 88, 228, 173, 206, 186, 17, 0, 0, 0, 0, 0, 0, 0, 0, 118, 184, 151, 37, 9, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 43, 156, 105, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 209, 191, 8, 20, 147, 91, 241, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 44, 156, 105, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 158, 109, 129, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 10, 144, 86, 242, 217, 231, 222, 12, 0, 0, 0, 0, 0, 0, 0, 0, 172, 204, 184, 44, 3, 141, 81, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 255, 27, 149, 94, 193, 48, 157, 108, 167, 30, 151, 97, 196, 9, 143, 85, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 40, 154, 102, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 116, 190, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 106, 185, 149, 255, 0, 140, 79, 255, 0, 140, 79, 255, 173, 216, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 180, 142, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 195, 226, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 242, 236, 255, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 157, 107, 140, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 113, 181, 147, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 198, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 47, 156, 106, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 151, 98, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 255, 114, 181, 147, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 109, 138, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 3, 141, 81, 254, 120, 185, 152, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 165, 119, 102, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 7, 142, 83, 250, 136, 191, 162, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 164, 118, 129, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 83, 249, 65, 164, 118, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 237, 231, 1, 29, 150, 96, 202, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 15, 146, 88, 251, 89, 173, 132, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 159, 111, 107, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 73, 165, 121, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 171, 130, 65, 1, 140, 80, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 255, 103, 177, 140, 66, 0, 0, 0, 0, 0, 0, 0, 0, 105, 180, 144, 50, 12, 144, 86, 249, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 2, 141, 80, 254, 6, 142, 82, 191, 0, 140, 79, 183, 0, 140, 79, 183, 0, 140, 79, 183, 0, 140, 79, 183, 0, 140, 79, 210, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 16, 146, 89, 255, 171, 203, 183, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 101, 224, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 39, 154, 102, 224, 103, 175, 137, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 191, 224, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 250, 247, 255, 109, 186, 151, 255, 1, 140, 80, 255, 0, 140, 79, 255, 9, 143, 84, 255, 238, 246, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 252, 251, 255, 29, 151, 96, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 190, 223, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 246, 242, 255, 10, 143, 84, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 224, 213, 1, 22, 148, 92, 204, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 29, 151, 96, 233, 178, 209, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 190, 160, 22, 13, 145, 87, 252, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 123, 186, 154, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 150, 95, 215, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 148, 92, 214, 217, 231, 222, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 149, 95, 205, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 23, 148, 92, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 153, 100, 153, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 26, 149, 94, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 202, 182, 6, 27, 148, 93, 176, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 30, 151, 97, 220, 77, 168, 125, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 198, 173, 25, 13, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 1, 140, 80, 255, 31, 151, 98, 217, 80, 168, 126, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 153, 101, 183, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 18, 146, 89, 248, 212, 228, 218, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 159, 110, 125, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 20, 147, 91, 246, 196, 218, 204, 4, 0, 0, 0, 0, 133, 182, 152, 3, 29, 149, 95, 194, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 36, 153, 100, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 79, 95, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 6, 142, 82, 255, 59, 157, 110, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 170, 127, 68, 13, 145, 87, 250, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 4, 141, 81, 255, 37, 153, 100, 180, 106, 177, 140, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 11, 144, 86, 255, 205, 230, 218, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 212, 233, 223, 255, 202, 228, 215, 255, 169, 215, 194, 255, 120, 191, 159, 255, 33, 153, 100, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 49, 160, 111, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 215, 236, 226, 255, 179, 218, 200, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 172, 213, 193, 255, 245, 249, 246, 255, 245, 249, 246, 255, 245, 249, 246, 255, 235, 243, 238, 255, 13, 145, 87, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 192, 163, 20, 38, 155, 103, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 54, 161, 113, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 181, 145, 95, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 47, 158, 108, 239, 149, 196, 171, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 200, 176, 32, 32, 153, 100, 254, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 56, 160, 112, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 193, 165, 23, 38, 155, 103, 253, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 58, 162, 115, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 158, 109, 187, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 41, 156, 105, 234, 180, 208, 190, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 190, 164, 6, 57, 160, 112, 129, 25, 149, 93, 238, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 12, 144, 86, 255, 27, 149, 95, 202, 73, 167, 123, 106, 153, 196, 171, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 173, 133, 85, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 151, 97, 254, 12, 143, 85, 223, 34, 153, 100, 209, 46, 156, 106, 158, 88, 172, 131, 80, 173, 205, 185, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 212, 195, 9, 45, 158, 108, 240, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 55, 161, 113, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 166, 120, 160, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 39, 155, 104, 252, 132, 190, 160, 38, 0, 0, 0, 0, 96, 178, 139, 108, 29, 152, 98, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 26, 150, 95, 247, 91, 172, 132, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 97, 95, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 27, 152, 97, 255, 142, 199, 172, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 176, 138, 61, 20, 146, 90, 189, 7, 142, 83, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 14, 144, 86, 242, 35, 153, 100, 180, 92, 174, 135, 78, 217, 231, 222, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 8, 143, 84, 255, 12, 144, 86, 255, 12, 144, 86, 255, 12, 144, 86, 255, 12, 144, 86, 255, 1, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 1, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 234, 226, 8, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 219, 232, 224, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 3, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 2, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 13, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 192, 165, 8, 105, 178, 141, 61, 66, 166, 121, 103, 73, 167, 124, 118, 79, 171, 129, 118, 56, 158, 110, 69, 134, 192, 163, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 234, 226, 8, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 219, 232, 224, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 237, 231, 1, 218, 232, 223, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 220, 233, 225, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 9, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 227, 237, 231, 3, 0, 0, 0, 0, 217, 231, 222, 9, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 231, 222, 7, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 18, 217, 231, 222, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 218, 204, 1, 128, 189, 159, 41, 73, 168, 124, 92, 74, 167, 124, 118, 73, 167, 124, 118, 67, 168, 123, 99, 106, 178, 142, 58, 131, 183, 152, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 0, 140, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(236, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoMessageInfo(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 212, 237, 31, 204, 220, 235, 169, 215, 225, 233, 227, 226, 230, 235, 248, 233, 234, 235, 254, 235, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 235, 234, 236, 255, 232, 234, 236, 254, 226, 230, 236, 249, 214, 226, 237, 228, 199, 215, 234, 174, 136, 161, 191, 44, 21, 42, 85, 12, 21, 42, 85, 7, 21, 42, 85, 3, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 208, 223, 238, 184, 227, 233, 237, 244, 235, 236, 237, 255, 236, 236, 236, 255, 238, 238, 238, 255, 241, 241, 241, 255, 243, 242, 243, 255, 243, 243, 243, 255, 242, 242, 243, 255, 242, 243, 243, 255, 243, 243, 243, 255, 243, 243, 244, 255, 242, 243, 244, 255, 242, 243, 244, 255, 241, 243, 244, 255, 239, 241, 242, 255, 238, 239, 241, 255, 234, 237, 240, 255, 222, 231, 239, 246, 197, 214, 231, 193, 21, 42, 85, 22, 21, 42, 85, 13, 21, 42, 85, 6, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 182, 211, 5, 213, 224, 237, 207, 231, 234, 236, 252, 237, 237, 237, 255, 238, 237, 238, 255, 239, 240, 240, 255, 241, 242, 242, 255, 244, 244, 245, 255, 247, 248, 248, 255, 250, 251, 252, 255, 252, 253, 254, 255, 253, 254, 255, 255, 252, 254, 255, 255, 252, 254, 255, 255, 252, 253, 255, 255, 252, 254, 255, 255, 250, 253, 254, 255, 247, 249, 251, 255, 244, 245, 248, 255, 242, 243, 245, 255, 238, 241, 243, 255, 237, 239, 242, 255, 236, 239, 241, 255, 226, 233, 239, 253, 198, 215, 231, 217, 40, 61, 103, 35, 21, 42, 85, 16, 21, 42, 85, 7, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 220, 235, 177, 228, 231, 234, 251, 235, 236, 236, 255, 237, 238, 238, 255, 240, 240, 241, 255, 242, 243, 244, 255, 245, 247, 247, 255, 247, 248, 249, 255, 251, 252, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 231, 255, 207, 211, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 245, 249, 252, 255, 243, 246, 250, 255, 240, 244, 247, 255, 237, 241, 244, 255, 234, 238, 242, 255, 233, 236, 241, 255, 220, 229, 237, 252, 182, 201, 223, 195, 21, 42, 85, 33, 21, 42, 85, 16, 21, 42, 85, 6, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 207, 234, 21, 214, 223, 231, 230, 231, 231, 233, 255, 234, 234, 235, 255, 237, 238, 239, 255, 241, 241, 243, 255, 244, 246, 247, 255, 248, 250, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 197, 209, 255, 77, 94, 127, 255, 0, 26, 78, 255, 0, 27, 81, 255, 29, 53, 102, 255, 158, 168, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 249, 254, 255, 241, 246, 250, 255, 238, 242, 247, 255, 233, 238, 244, 255, 230, 235, 241, 255, 225, 232, 238, 255, 198, 213, 228, 239, 64, 88, 128, 73, 21, 42, 85, 28, 21, 42, 85, 10, 21, 42, 85, 3, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 214, 236, 90, 217, 223, 229, 246, 227, 229, 230, 255, 231, 233, 234, 255, 237, 239, 240, 255, 243, 244, 246, 255, 246, 249, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 253, 255, 255, 44, 67, 113, 255, 0, 32, 96, 255, 0, 36, 110, 255, 0, 38, 114, 255, 0, 35, 105, 255, 0, 31, 95, 255, 216, 224, 235, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 249, 254, 255, 237, 243, 250, 255, 233, 239, 245, 255, 227, 233, 240, 255, 223, 230, 237, 255, 204, 217, 232, 251, 122, 148, 182, 142, 21, 42, 85, 39, 21, 42, 85, 15, 21, 42, 85, 4, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 214, 237, 101, 218, 224, 229, 249, 225, 227, 228, 255, 228, 230, 232, 255, 235, 237, 239, 255, 241, 244, 246, 255, 249, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 249, 252, 255, 255, 247, 251, 255, 255, 184, 195, 214, 255, 0, 33, 99, 255, 0, 39, 118, 255, 0, 50, 151, 255, 0, 50, 151, 255, 0, 48, 144, 255, 0, 39, 118, 255, 105, 129, 174, 255, 244, 249, 255, 255, 244, 250, 255, 255, 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 235, 243, 250, 255, 229, 237, 245, 255, 224, 231, 239, 255, 219, 227, 236, 255, 204, 217, 231, 253, 121, 147, 181, 159, 21, 42, 85, 50, 21, 42, 85, 20, 21, 42, 85, 6, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 211, 237, 59, 214, 222, 229, 248, 224, 226, 228, 255, 226, 229, 232, 255, 233, 236, 238, 255, 239, 242, 245, 255, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 253, 255, 255, 247, 251, 255, 255, 246, 251, 255, 255, 245, 250, 255, 255, 245, 250, 255, 255, 183, 196, 216, 255, 0, 36, 110, 255, 0, 42, 127, 255, 0, 50, 151, 255, 0, 51, 152, 255, 6, 55, 154, 255, 10, 56, 149, 255, 89, 120, 179, 255, 241, 247, 255, 255, 240, 247, 255, 255, 240, 248, 255, 255, 240, 247, 255, 255, 242, 250, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 241, 250, 255, 226, 235, 244, 255, 221, 229, 238, 255, 217, 226, 236, 255, 197, 213, 230, 253, 83, 109, 147, 144, 21, 42, 85, 57, 21, 42, 85, 21, 21, 42, 85, 5, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 217, 227, 239, 221, 225, 227, 255, 225, 227, 231, 255, 231, 234, 238, 255, 237, 241, 245, 255, 248, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 253, 255, 255, 245, 250, 255, 255, 244, 250, 255, 255, 244, 249, 255, 255, 244, 249, 255, 255, 243, 249, 255, 255, 242, 249, 255, 255, 242, 249, 255, 255, 27, 64, 136, 255, 1, 45, 135, 255, 54, 101, 196, 255, 135, 183, 255, 255, 118, 167, 255, 255, 5, 54, 152, 255, 209, 222, 241, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 237, 245, 255, 255, 236, 245, 255, 255, 236, 245, 255, 255, 239, 249, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 239, 250, 255, 223, 234, 244, 255, 217, 228, 238, 255, 213, 225, 235, 255, 185, 205, 226, 250, 21, 42, 85, 114, 21, 42, 85, 55, 21, 42, 85, 18, 21, 42, 85, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 211, 227, 202, 217, 221, 225, 255, 221, 225, 229, 255, 228, 232, 237, 255, 235, 239, 244, 255, 245, 250, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 245, 250, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 242, 248, 255, 255, 242, 248, 255, 255, 241, 248, 255, 255, 240, 248, 255, 255, 240, 247, 255, 255, 180, 196, 223, 255, 42, 81, 160, 255, 20, 69, 168, 255, 63, 113, 214, 255, 41, 87, 178, 255, 132, 159, 208, 255, 236, 246, 255, 255, 236, 245, 255, 255, 235, 245, 255, 255, 235, 245, 255, 255, 234, 245, 255, 255, 234, 245, 255, 255, 234, 244, 255, 255, 233, 244, 255, 255, 234, 246, 255, 255, 246, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 225, 238, 249, 255, 219, 231, 243, 255, 212, 225, 237, 255, 206, 220, 233, 255, 155, 180, 209, 238, 21, 42, 85, 104, 21, 42, 85, 44, 21, 42, 85, 12, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 181, 207, 234, 66, 206, 214, 221, 253, 216, 220, 224, 255, 222, 227, 233, 255, 231, 236, 242, 255, 241, 246, 251, 255, 255, 255, 255, 255, 252, 255, 255, 255, 244, 249, 255, 255, 241, 248, 255, 255, 241, 248, 255, 255, 241, 248, 255, 255, 240, 248, 255, 255, 239, 247, 255, 255, 239, 248, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 246, 255, 255, 237, 247, 255, 255, 237, 246, 255, 255, 211, 225, 245, 255, 194, 215, 247, 255, 235, 245, 255, 255, 235, 245, 255, 255, 234, 245, 255, 255, 233, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 231, 244, 255, 255, 231, 243, 255, 255, 230, 243, 255, 255, 230, 242, 255, 255, 230, 243, 255, 255, 243, 255, 255, 255, 255, 255, 255, 255, 239, 252, 255, 255, 220, 234, 247, 255, 213, 227, 240, 255, 207, 220, 233, 255, 190, 209, 227, 255, 72, 98, 138, 184, 21, 42, 85, 88, 21, 42, 85, 32, 21, 42, 85, 7, 21, 42, 85, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 205, 222, 223, 211, 216, 221, 255, 216, 221, 227, 255, 224, 231, 237, 255, 233, 240, 245, 255, 252, 255, 255, 255, 249, 255, 255, 255, 241, 248, 255, 255, 240, 248, 255, 255, 240, 247, 255, 255, 239, 247, 255, 255, 239, 247, 255, 255, 238, 247, 255, 255, 237, 246, 255, 255, 237, 246, 255, 255, 236, 246, 255, 255, 236, 245, 255, 255, 236, 245, 255, 255, 235, 245, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 230, 243, 255, 255, 229, 243, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 228, 242, 255, 255, 240, 255, 255, 255, 255, 255, 255, 255, 223, 238, 252, 255, 214, 229, 243, 255, 206, 220, 235, 255, 202, 216, 231, 255, 156, 183, 211, 249, 21, 42, 85, 140, 21, 42, 85, 66, 21, 42, 85, 20, 21, 42, 85, 4, 0, 0, 0, 0, + 161, 191, 223, 9, 201, 209, 219, 253, 210, 216, 222, 255, 217, 224, 231, 255, 226, 233, 241, 255, 238, 245, 253, 255, 248, 255, 255, 255, 241, 248, 255, 255, 237, 246, 255, 255, 237, 247, 255, 255, 237, 246, 255, 255, 237, 246, 255, 255, 236, 246, 255, 255, 235, 246, 255, 255, 235, 245, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 234, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 230, 243, 255, 255, 230, 243, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 226, 240, 255, 255, 226, 240, 255, 255, 225, 240, 255, 255, 225, 240, 255, 255, 224, 239, 255, 255, 224, 239, 255, 255, 226, 242, 255, 255, 242, 255, 255, 255, 235, 252, 255, 255, 213, 230, 246, 255, 206, 222, 238, 255, 199, 216, 231, 255, 183, 203, 225, 255, 27, 49, 92, 186, 21, 42, 85, 107, 21, 42, 85, 40, 21, 42, 85, 9, 21, 42, 85, 1, + 178, 201, 222, 177, 205, 212, 219, 255, 209, 217, 224, 255, 219, 226, 235, 255, 228, 235, 244, 255, 243, 252, 255, 255, 241, 250, 255, 255, 236, 245, 255, 255, 236, 245, 255, 255, 235, 245, 255, 255, 234, 244, 255, 255, 234, 243, 255, 255, 233, 243, 255, 255, 233, 243, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 202, 216, 233, 255, 143, 160, 185, 255, 114, 133, 164, 255, 113, 133, 167, 255, 113, 133, 168, 255, 112, 133, 168, 255, 84, 107, 147, 255, 54, 79, 125, 255, 54, 79, 125, 255, 141, 160, 191, 255, 226, 241, 255, 255, 225, 240, 255, 255, 225, 239, 255, 255, 224, 240, 255, 255, 223, 239, 255, 255, 222, 238, 255, 255, 223, 239, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 237, 255, 255, 220, 238, 255, 255, 227, 244, 255, 255, 240, 255, 255, 255, 215, 233, 251, 255, 206, 224, 242, 255, 198, 216, 233, 255, 194, 211, 228, 255, 123, 152, 187, 242, 21, 42, 85, 148, 21, 42, 85, 66, 21, 42, 85, 18, 21, 42, 85, 3, + 180, 197, 214, 236, 200, 208, 216, 255, 208, 217, 225, 255, 219, 228, 237, 255, 230, 239, 249, 255, 240, 251, 255, 255, 235, 246, 255, 255, 234, 244, 255, 255, 233, 243, 255, 255, 232, 244, 255, 255, 232, 243, 255, 255, 232, 243, 255, 255, 230, 243, 255, 255, 230, 243, 255, 255, 230, 242, 255, 255, 229, 242, 255, 255, 113, 136, 177, 255, 0, 35, 105, 255, 0, 37, 111, 255, 0, 42, 128, 255, 0, 41, 124, 255, 0, 40, 121, 255, 0, 40, 121, 255, 0, 37, 112, 255, 0, 35, 107, 255, 111, 136, 178, 255, 223, 239, 255, 255, 223, 238, 255, 255, 222, 238, 255, 255, 222, 238, 255, 255, 221, 238, 255, 255, 220, 238, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 219, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 219, 238, 255, 255, 231, 250, 255, 255, 222, 242, 255, 255, 206, 224, 243, 255, 197, 215, 234, 255, 189, 208, 226, 255, 152, 180, 210, 253, 21, 42, 85, 180, 21, 42, 85, 96, 21, 42, 85, 33, 21, 42, 85, 6, + 182, 195, 208, 252, 195, 203, 212, 255, 206, 215, 224, 255, 217, 227, 238, 255, 231, 241, 253, 255, 236, 248, 255, 255, 232, 243, 255, 255, 231, 243, 255, 255, 230, 242, 255, 255, 230, 242, 255, 255, 229, 243, 255, 255, 229, 242, 255, 255, 227, 242, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 226, 241, 255, 255, 198, 215, 239, 255, 111, 140, 192, 255, 26, 67, 147, 255, 0, 48, 142, 255, 0, 50, 151, 255, 0, 50, 152, 255, 0, 50, 152, 255, 0, 50, 151, 255, 0, 41, 125, 255, 109, 137, 185, 255, 220, 237, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 219, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 216, 235, 255, 255, 215, 235, 255, 255, 215, 234, 255, 255, 214, 235, 255, 255, 221, 242, 255, 255, 222, 242, 255, 255, 202, 223, 243, 255, 193, 212, 232, 255, 185, 204, 222, 255, 163, 188, 214, 255, 21, 42, 85, 206, 21, 42, 85, 131, 21, 42, 85, 52, 21, 42, 85, 12, + 183, 196, 206, 255, 190, 200, 209, 255, 201, 212, 222, 255, 213, 225, 237, 255, 229, 241, 253, 255, 232, 245, 255, 255, 229, 242, 255, 255, 229, 242, 255, 255, 228, 242, 255, 255, 227, 241, 255, 255, 226, 241, 255, 255, 227, 240, 255, 255, 225, 240, 255, 255, 225, 240, 255, 255, 224, 239, 255, 255, 224, 239, 255, 255, 223, 239, 255, 255, 223, 239, 255, 255, 208, 226, 247, 255, 25, 63, 140, 255, 0, 48, 145, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 136, 255, 108, 138, 189, 255, 218, 237, 255, 255, 217, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 214, 235, 255, 255, 214, 235, 255, 255, 213, 235, 255, 255, 213, 234, 255, 255, 213, 233, 255, 255, 212, 234, 255, 255, 215, 237, 255, 255, 216, 239, 255, 255, 200, 221, 242, 255, 190, 211, 231, 255, 180, 201, 219, 255, 169, 192, 215, 255, 21, 42, 85, 223, 21, 42, 85, 157, 21, 42, 85, 68, 21, 42, 85, 17, + 184, 195, 207, 255, 187, 197, 208, 255, 198, 210, 221, 255, 211, 223, 236, 255, 226, 239, 253, 255, 228, 242, 255, 255, 226, 240, 255, 255, 226, 240, 255, 255, 225, 240, 255, 255, 224, 239, 255, 255, 224, 240, 255, 255, 224, 239, 255, 255, 223, 238, 255, 255, 222, 239, 255, 255, 222, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 108, 136, 184, 255, 0, 45, 135, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 107, 137, 189, 255, 215, 236, 255, 255, 214, 235, 255, 255, 214, 234, 255, 255, 214, 235, 255, 255, 213, 234, 255, 255, 213, 234, 255, 255, 211, 233, 255, 255, 211, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 210, 233, 255, 255, 210, 232, 255, 255, 212, 235, 255, 255, 213, 236, 255, 255, 197, 220, 242, 255, 186, 208, 229, 255, 177, 198, 218, 255, 172, 195, 216, 255, 21, 42, 85, 230, 21, 42, 85, 169, 21, 42, 85, 75, 21, 42, 85, 19, + 184, 196, 207, 255, 184, 196, 208, 255, 195, 208, 221, 255, 208, 222, 236, 255, 223, 238, 253, 255, 226, 241, 255, 255, 224, 239, 255, 255, 223, 239, 255, 255, 222, 238, 255, 255, 222, 238, 255, 255, 222, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 220, 238, 255, 255, 219, 237, 255, 255, 218, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 216, 236, 255, 255, 107, 134, 180, 255, 0, 43, 130, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 105, 136, 189, 255, 211, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 211, 232, 255, 255, 210, 232, 255, 255, 209, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 208, 231, 255, 255, 207, 231, 255, 255, 208, 233, 255, 255, 210, 233, 255, 255, 194, 218, 241, 255, 183, 206, 229, 255, 174, 196, 218, 255, 173, 196, 218, 255, 21, 42, 85, 232, 21, 42, 85, 173, 21, 42, 85, 78, 21, 42, 85, 20, + 179, 193, 206, 255, 182, 195, 207, 255, 192, 206, 220, 255, 205, 220, 235, 255, 220, 236, 252, 255, 222, 239, 255, 255, 221, 238, 255, 255, 221, 237, 255, 255, 220, 238, 255, 255, 220, 237, 255, 255, 219, 237, 255, 255, 218, 236, 255, 255, 218, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 216, 236, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 106, 133, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 104, 136, 189, 255, 210, 232, 255, 255, 209, 232, 255, 255, 209, 232, 255, 255, 208, 231, 255, 255, 208, 231, 255, 255, 207, 231, 255, 255, 207, 231, 255, 255, 206, 231, 255, 255, 206, 231, 255, 255, 206, 230, 255, 255, 206, 230, 255, 255, 205, 230, 255, 255, 206, 232, 255, 255, 207, 231, 255, 255, 191, 216, 241, 255, 182, 205, 229, 255, 172, 194, 218, 255, 167, 192, 216, 255, 21, 42, 85, 233, 21, 42, 85, 174, 21, 42, 85, 79, 21, 42, 85, 20, + 171, 187, 204, 255, 179, 193, 207, 255, 190, 204, 219, 255, 202, 217, 234, 255, 217, 233, 251, 255, 220, 238, 255, 255, 218, 236, 255, 255, 218, 237, 255, 255, 218, 236, 255, 255, 217, 236, 255, 255, 216, 236, 255, 255, 216, 235, 255, 255, 215, 235, 255, 255, 214, 235, 255, 255, 214, 234, 255, 255, 214, 235, 255, 255, 213, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 104, 133, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 103, 135, 189, 255, 207, 231, 255, 255, 208, 231, 255, 255, 207, 231, 255, 255, 206, 230, 255, 255, 206, 231, 255, 255, 205, 230, 255, 255, 204, 230, 255, 255, 205, 229, 255, 255, 203, 230, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 202, 228, 255, 255, 203, 230, 255, 255, 203, 228, 255, 255, 189, 214, 239, 255, 179, 203, 227, 255, 170, 194, 217, 255, 156, 185, 213, 255, 21, 42, 85, 233, 21, 42, 85, 174, 21, 42, 85, 79, 21, 42, 85, 20, + 160, 181, 202, 252, 176, 189, 205, 255, 184, 201, 216, 255, 197, 213, 231, 255, 211, 229, 248, 255, 217, 237, 255, 255, 215, 235, 255, 255, 216, 235, 255, 255, 215, 235, 255, 255, 214, 235, 255, 255, 213, 234, 255, 255, 213, 234, 255, 255, 213, 234, 255, 255, 211, 234, 255, 255, 211, 233, 255, 255, 211, 233, 255, 255, 210, 233, 255, 255, 210, 233, 255, 255, 209, 232, 255, 255, 103, 132, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 102, 134, 189, 255, 206, 230, 255, 255, 205, 229, 255, 255, 204, 229, 255, 255, 204, 230, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 202, 229, 255, 255, 201, 227, 255, 255, 202, 228, 255, 255, 201, 228, 255, 255, 201, 228, 255, 255, 199, 227, 255, 255, 202, 229, 255, 255, 196, 223, 251, 255, 184, 209, 236, 255, 174, 200, 224, 255, 167, 190, 215, 255, 143, 173, 208, 255, 21, 42, 85, 233, 21, 42, 85, 174, 21, 42, 85, 79, 21, 42, 85, 20, + 149, 174, 201, 237, 171, 186, 201, 255, 177, 194, 210, 255, 189, 207, 225, 255, 201, 221, 240, 255, 212, 234, 254, 255, 213, 234, 255, 255, 213, 234, 255, 255, 212, 234, 255, 255, 212, 234, 255, 255, 211, 233, 255, 255, 210, 233, 255, 255, 210, 233, 255, 255, 209, 232, 255, 255, 209, 232, 255, 255, 209, 232, 255, 255, 208, 232, 255, 255, 208, 231, 255, 255, 206, 231, 255, 255, 102, 132, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 101, 134, 189, 255, 203, 229, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 201, 227, 255, 255, 201, 227, 255, 255, 200, 227, 255, 255, 200, 227, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 198, 226, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 188, 216, 243, 255, 177, 204, 231, 255, 167, 194, 219, 255, 161, 186, 211, 255, 124, 160, 197, 255, 21, 42, 85, 232, 21, 42, 85, 173, 21, 42, 85, 78, 21, 42, 85, 20, + 140, 171, 204, 182, 166, 182, 198, 255, 169, 186, 203, 255, 180, 198, 217, 255, 192, 212, 231, 255, 206, 228, 250, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 209, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 208, 232, 255, 255, 207, 231, 255, 255, 206, 230, 255, 255, 206, 231, 255, 255, 206, 230, 255, 255, 205, 230, 255, 255, 204, 230, 255, 255, 101, 131, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 100, 133, 189, 255, 201, 227, 255, 255, 201, 227, 255, 255, 200, 227, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 198, 227, 255, 255, 197, 226, 255, 255, 197, 225, 255, 255, 196, 226, 255, 255, 196, 225, 255, 255, 196, 226, 255, 255, 192, 222, 252, 255, 178, 207, 236, 255, 169, 197, 224, 255, 160, 186, 212, 255, 157, 181, 207, 255, 94, 129, 172, 253, 21, 42, 85, 230, 21, 42, 85, 169, 21, 42, 85, 75, 21, 42, 85, 19, + 65, 93, 135, 24, 146, 169, 192, 254, 162, 180, 197, 255, 172, 190, 209, 255, 184, 204, 224, 255, 196, 218, 240, 255, 207, 230, 253, 255, 208, 232, 255, 255, 208, 231, 255, 255, 206, 231, 255, 255, 206, 230, 255, 255, 206, 230, 255, 255, 205, 230, 255, 255, 205, 230, 255, 255, 204, 230, 255, 255, 203, 229, 255, 255, 203, 229, 255, 255, 203, 229, 255, 255, 203, 229, 255, 255, 100, 130, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 98, 133, 189, 255, 198, 227, 255, 255, 198, 226, 255, 255, 197, 226, 255, 255, 197, 226, 255, 255, 195, 225, 255, 255, 195, 225, 255, 255, 195, 225, 255, 255, 194, 225, 255, 255, 194, 224, 255, 255, 194, 224, 255, 255, 194, 225, 255, 255, 192, 224, 255, 255, 183, 212, 243, 255, 173, 201, 230, 255, 162, 189, 216, 255, 154, 180, 206, 255, 131, 164, 198, 255, 25, 46, 90, 248, 21, 42, 85, 223, 21, 42, 85, 157, 21, 42, 85, 68, 21, 42, 85, 17, + 21, 42, 85, 12, 132, 163, 193, 229, 158, 176, 194, 255, 163, 182, 201, 255, 174, 194, 215, 255, 185, 206, 229, 255, 199, 223, 247, 255, 205, 229, 254, 255, 205, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 203, 229, 255, 255, 202, 229, 255, 255, 202, 229, 255, 255, 201, 227, 255, 255, 201, 227, 255, 255, 200, 227, 255, 255, 200, 227, 255, 255, 200, 227, 255, 255, 98, 130, 179, 255, 0, 43, 129, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 96, 132, 189, 255, 195, 226, 255, 255, 195, 225, 255, 255, 195, 224, 255, 255, 194, 225, 255, 255, 194, 224, 255, 255, 193, 224, 255, 255, 192, 224, 255, 255, 192, 224, 255, 255, 191, 223, 255, 255, 190, 223, 255, 255, 190, 223, 255, 255, 185, 217, 248, 255, 173, 203, 233, 255, 164, 193, 221, 255, 154, 181, 209, 255, 149, 177, 203, 255, 105, 145, 186, 255, 21, 42, 85, 242, 21, 42, 85, 206, 21, 42, 85, 131, 21, 42, 85, 52, 21, 42, 85, 12, + 21, 42, 85, 6, 109, 144, 187, 90, 140, 165, 189, 254, 156, 175, 194, 255, 163, 183, 204, 255, 174, 196, 218, 255, 183, 207, 230, 255, 198, 223, 248, 255, 203, 229, 254, 255, 202, 229, 255, 255, 202, 228, 255, 255, 201, 227, 255, 255, 201, 228, 255, 255, 200, 228, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 197, 226, 255, 255, 97, 129, 179, 255, 0, 43, 130, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 1, 46, 137, 255, 95, 131, 189, 255, 193, 224, 255, 255, 193, 223, 255, 255, 192, 223, 255, 255, 192, 224, 255, 255, 191, 223, 255, 255, 190, 222, 255, 255, 190, 222, 255, 255, 189, 222, 255, 255, 189, 222, 255, 255, 188, 222, 255, 255, 183, 216, 250, 255, 171, 203, 234, 255, 164, 193, 223, 255, 154, 183, 211, 255, 147, 175, 203, 255, 124, 159, 195, 255, 48, 76, 121, 251, 21, 42, 85, 232, 21, 42, 85, 180, 21, 42, 85, 96, 21, 42, 85, 33, 21, 42, 85, 6, + 21, 42, 85, 3, 21, 42, 85, 18, 123, 156, 191, 216, 147, 168, 189, 255, 153, 173, 193, 255, 161, 184, 204, 255, 172, 195, 218, 255, 181, 206, 231, 255, 195, 222, 249, 255, 200, 227, 254, 255, 199, 227, 255, 255, 199, 227, 255, 255, 198, 226, 255, 255, 197, 226, 255, 255, 197, 226, 255, 255, 197, 226, 255, 255, 196, 225, 255, 255, 195, 225, 255, 255, 194, 225, 255, 255, 96, 128, 179, 255, 0, 44, 134, 255, 0, 50, 152, 255, 0, 51, 153, 255, 0, 50, 152, 255, 0, 47, 139, 255, 70, 107, 170, 255, 191, 222, 255, 255, 190, 223, 255, 255, 189, 222, 255, 255, 189, 222, 255, 255, 188, 222, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 186, 221, 255, 255, 186, 220, 255, 255, 182, 216, 250, 255, 170, 202, 234, 255, 162, 192, 223, 255, 152, 181, 211, 255, 144, 173, 201, 255, 136, 167, 198, 255, 93, 134, 178, 254, 21, 42, 85, 244, 21, 42, 85, 214, 21, 42, 85, 148, 21, 42, 85, 66, 21, 42, 85, 18, 21, 42, 85, 3, + 21, 42, 85, 1, 21, 42, 85, 9, 21, 42, 85, 40, 122, 153, 185, 246, 146, 168, 188, 255, 150, 171, 192, 255, 159, 182, 204, 255, 169, 194, 218, 255, 179, 204, 230, 255, 192, 220, 248, 255, 196, 225, 254, 255, 196, 225, 255, 255, 195, 226, 255, 255, 195, 225, 255, 255, 195, 224, 255, 255, 194, 225, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 192, 224, 255, 255, 58, 92, 153, 255, 0, 48, 145, 255, 0, 50, 152, 255, 0, 50, 152, 255, 0, 50, 152, 255, 1, 50, 147, 255, 21, 61, 137, 255, 176, 210, 246, 255, 188, 222, 255, 255, 187, 221, 255, 255, 187, 220, 255, 255, 186, 220, 255, 255, 185, 220, 255, 255, 185, 220, 255, 255, 184, 219, 255, 255, 180, 214, 249, 255, 168, 201, 234, 255, 159, 191, 223, 255, 150, 180, 210, 255, 141, 171, 199, 255, 138, 167, 195, 255, 103, 144, 185, 255, 21, 42, 85, 249, 21, 42, 85, 231, 21, 42, 85, 184, 21, 42, 85, 107, 21, 42, 85, 40, 21, 42, 85, 9, 21, 42, 85, 1, + 0, 0, 0, 0, 21, 42, 85, 4, 21, 42, 85, 20, 82, 116, 160, 109, 121, 151, 183, 252, 144, 164, 186, 255, 147, 170, 192, 255, 157, 180, 204, 255, 166, 192, 218, 255, 175, 202, 229, 255, 187, 216, 246, 255, 191, 223, 252, 255, 193, 224, 255, 255, 193, 224, 255, 255, 192, 223, 255, 255, 192, 223, 255, 255, 191, 223, 255, 255, 94, 126, 174, 255, 45, 81, 146, 255, 1, 48, 142, 255, 31, 79, 174, 255, 69, 117, 213, 255, 75, 123, 219, 255, 81, 129, 226, 255, 70, 118, 215, 255, 12, 60, 156, 255, 9, 50, 131, 255, 79, 116, 174, 255, 161, 197, 237, 255, 183, 219, 255, 255, 183, 219, 255, 255, 183, 219, 255, 255, 180, 217, 253, 255, 175, 211, 247, 255, 164, 198, 232, 255, 157, 190, 222, 255, 148, 179, 210, 255, 139, 169, 199, 255, 135, 165, 194, 255, 106, 145, 185, 255, 44, 72, 117, 252, 21, 42, 85, 239, 21, 42, 85, 205, 21, 42, 85, 140, 21, 42, 85, 66, 21, 42, 85, 20, 21, 42, 85, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 7, 21, 42, 85, 32, 92, 128, 171, 153, 119, 150, 181, 253, 141, 164, 186, 255, 145, 168, 192, 255, 153, 178, 203, 255, 162, 188, 215, 255, 169, 197, 225, 255, 177, 207, 237, 255, 185, 217, 248, 255, 188, 220, 252, 255, 189, 221, 254, 255, 189, 222, 255, 255, 188, 222, 255, 255, 0, 42, 127, 255, 10, 58, 152, 255, 41, 91, 190, 255, 34, 84, 184, 255, 31, 81, 181, 255, 31, 81, 182, 255, 32, 82, 182, 255, 39, 89, 189, 255, 79, 129, 229, 255, 121, 171, 255, 255, 4, 51, 147, 255, 136, 175, 225, 255, 181, 218, 255, 255, 179, 215, 253, 255, 175, 211, 248, 255, 168, 204, 238, 255, 160, 194, 228, 255, 153, 186, 219, 255, 145, 176, 208, 255, 138, 168, 198, 255, 133, 163, 194, 255, 106, 146, 186, 255, 57, 91, 137, 253, 21, 42, 85, 243, 21, 42, 85, 215, 21, 42, 85, 160, 21, 42, 85, 88, 21, 42, 85, 32, 21, 42, 85, 7, 21, 42, 85, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 12, 21, 42, 85, 44, 81, 116, 161, 157, 113, 147, 181, 252, 139, 163, 186, 255, 141, 165, 190, 255, 147, 173, 199, 255, 154, 181, 208, 255, 160, 189, 218, 255, 166, 195, 226, 255, 173, 204, 235, 255, 178, 212, 245, 255, 181, 215, 249, 255, 183, 217, 251, 255, 184, 218, 253, 255, 184, 218, 254, 255, 183, 220, 255, 255, 184, 219, 255, 255, 182, 219, 255, 255, 182, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 180, 218, 255, 255, 180, 218, 255, 255, 179, 217, 254, 255, 176, 214, 251, 255, 172, 210, 246, 255, 165, 201, 237, 255, 158, 193, 228, 255, 153, 187, 221, 255, 146, 180, 212, 255, 140, 172, 204, 255, 135, 165, 196, 255, 132, 162, 193, 255, 100, 141, 184, 255, 53, 85, 132, 252, 21, 42, 85, 243, 21, 42, 85, 221, 21, 42, 85, 172, 21, 42, 85, 104, 21, 42, 85, 44, 21, 42, 85, 12, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 4, 21, 42, 85, 18, 21, 42, 85, 55, 39, 64, 108, 125, 104, 140, 178, 247, 126, 154, 182, 255, 136, 162, 187, 255, 140, 166, 192, 255, 146, 172, 200, 255, 151, 180, 208, 255, 156, 185, 216, 255, 159, 189, 221, 255, 162, 193, 225, 255, 164, 196, 229, 255, 171, 204, 238, 255, 173, 209, 244, 255, 176, 212, 248, 255, 176, 213, 250, 255, 178, 214, 252, 255, 179, 216, 254, 255, 179, 217, 255, 255, 179, 217, 255, 255, 178, 217, 255, 255, 176, 213, 252, 255, 169, 207, 244, 255, 159, 195, 231, 255, 154, 189, 225, 255, 151, 184, 219, 255, 144, 178, 211, 255, 139, 171, 204, 255, 134, 166, 197, 255, 130, 161, 192, 255, 117, 153, 187, 255, 90, 133, 179, 255, 29, 52, 96, 250, 21, 42, 85, 241, 21, 42, 85, 219, 21, 42, 85, 175, 21, 42, 85, 114, 21, 42, 85, 55, 21, 42, 85, 18, 21, 42, 85, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 5, 21, 42, 85, 21, 21, 42, 85, 57, 21, 42, 85, 111, 90, 129, 171, 228, 109, 143, 177, 254, 133, 158, 184, 255, 134, 160, 187, 255, 137, 164, 191, 255, 140, 168, 197, 255, 142, 172, 201, 255, 145, 175, 205, 255, 145, 178, 211, 255, 146, 181, 216, 255, 150, 186, 220, 255, 155, 189, 223, 255, 157, 192, 226, 255, 160, 195, 231, 255, 169, 205, 244, 255, 173, 213, 251, 255, 175, 214, 254, 255, 172, 211, 251, 255, 162, 200, 238, 255, 154, 189, 226, 255, 147, 181, 216, 255, 140, 174, 207, 255, 135, 168, 201, 255, 132, 163, 195, 255, 129, 160, 191, 255, 127, 158, 189, 255, 99, 139, 180, 255, 75, 116, 163, 254, 21, 42, 85, 248, 21, 42, 85, 237, 21, 42, 85, 212, 21, 42, 85, 167, 21, 42, 85, 111, 21, 42, 85, 57, 21, 42, 85, 21, 21, 42, 85, 5, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 6, 21, 42, 85, 20, 21, 42, 85, 50, 21, 42, 85, 97, 24, 46, 89, 155, 90, 130, 172, 244, 106, 141, 177, 255, 129, 156, 184, 255, 130, 157, 184, 255, 130, 158, 185, 255, 128, 158, 188, 255, 127, 160, 192, 255, 129, 163, 197, 255, 131, 165, 200, 255, 134, 168, 202, 255, 140, 172, 206, 255, 146, 180, 214, 255, 153, 187, 223, 255, 162, 199, 238, 255, 169, 208, 248, 255, 163, 202, 240, 255, 152, 189, 226, 255, 144, 178, 213, 255, 135, 168, 201, 255, 129, 161, 193, 255, 126, 157, 189, 255, 123, 156, 187, 255, 97, 139, 180, 255, 80, 123, 170, 254, 22, 44, 87, 249, 21, 42, 85, 242, 21, 42, 85, 227, 21, 42, 85, 199, 21, 42, 85, 153, 21, 42, 85, 97, 21, 42, 85, 50, 21, 42, 85, 20, 21, 42, 85, 6, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 4, 21, 42, 85, 15, 21, 42, 85, 39, 21, 42, 85, 81, 21, 42, 85, 131, 21, 42, 85, 175, 70, 106, 152, 232, 82, 119, 163, 247, 104, 139, 175, 253, 123, 152, 183, 255, 121, 152, 184, 255, 121, 152, 184, 255, 121, 153, 184, 255, 122, 153, 186, 255, 125, 157, 190, 255, 131, 164, 198, 255, 141, 176, 210, 255, 150, 188, 224, 255, 162, 200, 241, 255, 154, 193, 232, 255, 145, 182, 220, 255, 136, 171, 205, 255, 129, 162, 195, 255, 106, 145, 183, 255, 88, 132, 177, 255, 73, 116, 164, 254, 21, 42, 85, 248, 21, 42, 85, 242, 21, 42, 85, 230, 21, 42, 85, 209, 21, 42, 85, 175, 21, 42, 85, 131, 21, 42, 85, 81, 21, 42, 85, 39, 21, 42, 85, 15, 21, 42, 85, 4, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 3, 21, 42, 85, 10, 21, 42, 85, 28, 21, 42, 85, 58, 21, 42, 85, 95, 21, 42, 85, 139, 21, 42, 85, 176, 25, 47, 90, 207, 52, 82, 128, 234, 83, 116, 159, 247, 97, 129, 167, 251, 101, 131, 169, 253, 110, 141, 176, 254, 120, 151, 183, 255, 125, 157, 190, 255, 132, 166, 200, 255, 144, 180, 217, 255, 156, 197, 238, 255, 153, 192, 232, 255, 143, 180, 218, 255, 113, 153, 194, 255, 74, 115, 163, 254, 32, 57, 102, 249, 21, 42, 85, 243, 21, 42, 85, 236, 21, 42, 85, 225, 21, 42, 85, 206, 21, 42, 85, 176, 21, 42, 85, 139, 21, 42, 85, 95, 21, 42, 85, 58, 21, 42, 85, 28, 21, 42, 85, 10, 21, 42, 85, 3, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 6, 21, 42, 85, 16, 21, 42, 85, 33, 21, 42, 85, 61, 21, 42, 85, 94, 21, 42, 85, 129, 21, 42, 85, 149, 21, 42, 85, 174, 23, 45, 88, 206, 24, 46, 89, 230, 31, 53, 96, 244, 72, 100, 142, 249, 119, 151, 187, 254, 129, 163, 197, 255, 138, 176, 213, 255, 154, 196, 237, 255, 154, 194, 235, 255, 145, 182, 220, 255, 102, 137, 179, 254, 28, 50, 93, 245, 21, 42, 85, 231, 21, 42, 85, 210, 21, 42, 85, 187, 21, 42, 85, 164, 21, 42, 85, 133, 21, 42, 85, 94, 21, 42, 85, 61, 21, 42, 85, 33, 21, 42, 85, 16, 21, 42, 85, 6, 21, 42, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 7, 21, 42, 85, 16, 21, 42, 85, 31, 21, 42, 85, 45, 21, 42, 85, 44, 21, 42, 85, 48, 21, 42, 85, 67, 21, 42, 85, 108, 22, 43, 86, 189, 27, 49, 92, 234, 86, 117, 158, 247, 127, 163, 198, 255, 134, 172, 209, 255, 147, 190, 231, 255, 153, 195, 237, 255, 145, 184, 223, 255, 98, 141, 190, 254, 23, 45, 88, 231, 21, 42, 85, 193, 21, 42, 85, 146, 21, 42, 85, 105, 21, 42, 85, 77, 21, 42, 85, 54, 21, 42, 85, 32, 21, 42, 85, 16, 21, 42, 85, 7, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 6, 21, 42, 85, 10, 21, 42, 85, 9, 21, 42, 85, 6, 21, 42, 85, 7, 21, 42, 85, 15, 21, 42, 85, 78, 22, 44, 87, 198, 48, 78, 124, 238, 126, 162, 198, 254, 130, 168, 205, 255, 142, 183, 224, 255, 152, 195, 239, 255, 144, 185, 226, 255, 82, 129, 181, 253, 21, 42, 85, 216, 21, 42, 85, 154, 21, 42, 85, 87, 21, 42, 85, 42, 21, 42, 85, 22, 21, 42, 85, 13, 21, 42, 85, 6, 21, 42, 85, 2, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 4, 21, 42, 85, 4, 21, 42, 85, 3, 21, 42, 85, 16, 21, 42, 85, 110, 21, 42, 85, 205, 74, 121, 172, 250, 120, 159, 198, 255, 133, 173, 213, 255, 143, 186, 229, 255, 142, 184, 227, 255, 75, 124, 178, 252, 21, 42, 85, 213, 21, 42, 85, 144, 21, 42, 85, 64, 21, 42, 85, 19, 21, 42, 85, 4, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 1, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 24, 21, 42, 85, 130, 21, 42, 85, 208, 61, 103, 154, 243, 122, 162, 201, 255, 134, 177, 218, 255, 138, 181, 225, 255, 72, 121, 177, 252, 21, 42, 85, 216, 21, 42, 85, 146, 21, 42, 85, 62, 21, 42, 85, 15, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 3, 21, 42, 85, 37, 21, 42, 85, 121, 21, 42, 85, 185, 72, 122, 175, 250, 125, 167, 208, 255, 133, 175, 218, 255, 71, 121, 177, 252, 21, 42, 85, 216, 21, 42, 85, 148, 21, 42, 85, 63, 21, 42, 85, 15, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 4, 21, 42, 85, 26, 21, 42, 85, 88, 21, 42, 85, 174, 71, 122, 176, 249, 123, 168, 213, 255, 70, 122, 178, 251, 21, 42, 85, 217, 21, 42, 85, 148, 21, 42, 85, 62, 21, 42, 85, 15, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 1, 21, 42, 85, 2, 21, 42, 85, 17, 21, 42, 85, 68, 21, 42, 85, 149, 55, 96, 148, 223, 51, 89, 141, 232, 21, 42, 85, 207, 21, 42, 85, 144, 21, 42, 85, 60, 21, 42, 85, 14, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 12, 21, 42, 85, 43, 21, 42, 85, 101, 21, 42, 85, 150, 21, 42, 85, 160, 21, 42, 85, 117, 21, 42, 85, 50, 21, 42, 85, 12, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 10, 21, 42, 85, 32, 21, 42, 85, 66, 21, 42, 85, 86, 21, 42, 85, 67, 21, 42, 85, 30, 21, 42, 85, 8, 21, 42, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 42, 85, 2, 21, 42, 85, 8, 21, 42, 85, 19, 21, 42, 85, 29, 21, 42, 85, 25, 21, 42, 85, 12, 21, 42, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceNetwork(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 165, 50, 117, 117, 156, 54, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 157, 33, 136, 136, 152, 68, 145, 145, 166, 134, 160, 160, 184, 167, 178, 178, 202, 213, 174, 174, 206, 255, 173, 173, 206, 255, 137, 137, 180, 243, 0, 0, 0, 47, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 148, 66, 145, 145, 145, 118, 176, 176, 178, 151, 179, 179, 189, 198, 195, 195, 204, 241, 208, 208, 222, 255, 200, 200, 216, 255, 190, 190, 211, 255, 169, 169, 198, 255, 152, 152, 187, 255, 138, 143, 182, 255, 139, 162, 201, 255, 129, 140, 188, 255, 0, 0, 0, 111, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 149, 149, 115, 217, 217, 217, 255, 229, 229, 230, 255, 199, 199, 205, 255, 182, 182, 193, 255, 162, 162, 178, 255, 146, 150, 168, 255, 154, 168, 189, 255, 171, 197, 211, 255, 182, 217, 229, 255, 175, 230, 245, 255, 169, 237, 255, 255, 159, 232, 255, 255, 128, 155, 204, 255, 36, 36, 53, 165, 0, 0, 0, 51, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 90, 236, 236, 236, 255, 144, 156, 170, 255, 143, 180, 200, 255, 148, 197, 220, 255, 160, 223, 243, 255, 180, 243, 255, 255, 188, 247, 255, 255, 198, 252, 255, 255, 188, 247, 255, 255, 180, 243, 255, 255, 162, 234, 255, 255, 156, 231, 255, 255, 129, 172, 219, 255, 44, 44, 67, 177, 0, 0, 0, 62, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 28, 210, 210, 216, 255, 142, 191, 218, 255, 130, 218, 255, 255, 139, 222, 255, 255, 158, 231, 255, 255, 163, 234, 255, 255, 177, 242, 255, 255, 181, 244, 255, 255, 177, 242, 255, 255, 163, 234, 255, 255, 159, 232, 255, 255, 146, 226, 255, 255, 129, 177, 224, 255, 67, 67, 105, 200, 0, 0, 0, 74, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 188, 188, 197, 217, 165, 190, 212, 255, 117, 212, 255, 255, 136, 221, 255, 255, 143, 224, 255, 255, 158, 231, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 149, 227, 255, 255, 136, 221, 255, 255, 120, 189, 239, 255, 71, 71, 116, 209, 0, 0, 0, 86, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 163, 163, 177, 174, 180, 192, 214, 255, 113, 210, 255, 255, 120, 213, 255, 255, 135, 220, 255, 255, 137, 222, 255, 255, 146, 226, 255, 255, 148, 227, 255, 255, 148, 227, 255, 255, 140, 223, 255, 255, 135, 220, 255, 255, 122, 214, 255, 255, 113, 198, 247, 255, 82, 82, 139, 222, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 140, 113, 201, 201, 220, 255, 102, 204, 255, 255, 113, 210, 255, 255, 114, 211, 255, 255, 123, 215, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 114, 211, 255, 255, 113, 210, 255, 255, 103, 205, 255, 255, 91, 91, 159, 234, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 127, 63, 189, 189, 212, 255, 102, 182, 234, 255, 97, 201, 255, 255, 109, 208, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 109, 208, 255, 255, 97, 201, 255, 255, 91, 198, 255, 255, 91, 106, 177, 241, 0, 0, 0, 118, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 178, 178, 208, 255, 104, 175, 227, 255, 88, 197, 255, 255, 91, 198, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 102, 204, 255, 255, 98, 202, 255, 255, 95, 200, 255, 255, 91, 198, 255, 255, 88, 197, 255, 255, 75, 190, 255, 255, 97, 127, 213, 255, 0, 0, 0, 128, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 160, 160, 192, 203, 116, 175, 228, 255, 68, 187, 255, 255, 77, 191, 255, 255, 82, 194, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 77, 191, 255, 255, 68, 187, 255, 255, 65, 186, 255, 255, 84, 132, 222, 255, 0, 0, 0, 139, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 175, 145, 131, 164, 215, 255, 54, 180, 255, 255, 61, 184, 255, 255, 67, 186, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 67, 186, 255, 255, 61, 184, 255, 255, 92, 178, 241, 255, 114, 155, 220, 255, 111, 111, 194, 251, 0, 0, 0, 142, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 156, 96, 153, 161, 208, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 64, 179, 251, 255, 117, 183, 239, 255, 141, 157, 217, 255, 110, 110, 185, 247, 47, 47, 94, 209, 10, 10, 19, 168, 0, 0, 0, 110, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 128, 45, 154, 154, 202, 255, 31, 162, 251, 255, 31, 169, 255, 255, 34, 170, 255, 255, 102, 192, 250, 255, 148, 189, 236, 255, 156, 156, 214, 255, 111, 111, 198, 255, 81, 81, 181, 255, 0, 0, 0, 176, 0, 0, 0, 134, 0, 0, 0, 87, 0, 0, 0, 46, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 148, 148, 197, 230, 69, 161, 238, 255, 135, 206, 254, 255, 173, 191, 232, 255, 155, 155, 211, 255, 110, 110, 199, 255, 103, 103, 203, 255, 100, 100, 202, 255, 96, 96, 198, 255, 27, 27, 55, 175, 0, 0, 0, 77, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 183, 17, 179, 179, 207, 147, 169, 169, 210, 255, 149, 149, 205, 255, 147, 147, 205, 255, 182, 182, 214, 255, 165, 165, 207, 255, 155, 155, 205, 255, 113, 113, 193, 255, 109, 109, 197, 255, 106, 106, 200, 255, 138, 138, 194, 249, 87, 87, 116, 136, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 202, 178, 238, 238, 238, 255, 231, 231, 240, 255, 223, 223, 237, 255, 239, 239, 239, 255, 228, 228, 228, 255, 185, 185, 208, 255, 175, 175, 212, 255, 132, 132, 191, 255, 119, 119, 187, 255, 116, 116, 190, 255, 154, 154, 203, 255, 160, 160, 204, 255, 83, 83, 113, 134, 0, 0, 0, 26, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 177, 50, 199, 199, 215, 255, 239, 239, 239, 255, 249, 249, 249, 255, 249, 249, 249, 255, 239, 239, 239, 255, 228, 228, 228, 255, 206, 206, 216, 255, 171, 171, 205, 255, 162, 162, 197, 255, 129, 129, 178, 255, 128, 128, 179, 255, 157, 157, 200, 255, 164, 164, 206, 255, 116, 116, 159, 227, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 109, 154, 54, 199, 199, 212, 255, 233, 233, 233, 255, 239, 239, 239, 255, 239, 239, 239, 255, 234, 234, 234, 255, 226, 226, 226, 255, 212, 212, 219, 255, 174, 174, 204, 255, 187, 187, 203, 255, 140, 140, 166, 255, 138, 138, 168, 255, 160, 160, 198, 255, 163, 163, 206, 255, 107, 107, 149, 235, 0, 0, 0, 109, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 147, 147, 177, 218, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 216, 216, 220, 255, 207, 207, 218, 255, 162, 162, 194, 255, 209, 209, 212, 255, 141, 141, 155, 255, 126, 126, 164, 255, 159, 159, 200, 255, 152, 152, 198, 255, 62, 62, 89, 210, 0, 0, 0, 112, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 36, 36, 52, 50, 133, 133, 160, 219, 201, 201, 211, 255, 214, 214, 220, 255, 212, 212, 219, 255, 207, 207, 218, 255, 199, 199, 216, 255, 189, 189, 211, 255, 146, 146, 185, 255, 151, 151, 189, 255, 172, 172, 209, 255, 143, 143, 187, 255, 68, 68, 97, 220, 0, 0, 0, 151, 0, 0, 0, 80, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 165, 50, 117, 117, 156, 54, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 52, 59, 59, 89, 165, 118, 118, 144, 223, 151, 151, 180, 250, 173, 173, 199, 255, 171, 171, 199, 255, 168, 168, 198, 255, 151, 151, 189, 255, 123, 123, 157, 243, 75, 75, 106, 222, 18, 18, 28, 179, 0, 0, 0, 141, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, 165, 50, 117, 117, 156, 54, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 157, 33, 136, 136, 152, 68, 145, 145, 166, 134, 160, 160, 184, 167, 178, 178, 202, 213, 174, 174, 206, 255, 173, 173, 206, 255, 137, 137, 180, 243, 0, 0, 0, 47, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 39, 0, 0, 0, 79, 0, 0, 0, 112, 0, 0, 0, 133, 0, 0, 0, 142, 38, 38, 38, 255, 0, 0, 0, 167, 0, 0, 0, 151, 0, 0, 0, 124, 0, 0, 0, 97, 0, 0, 0, 61, 0, 0, 0, 26, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 157, 33, 136, 136, 152, 68, 145, 145, 166, 134, 160, 160, 184, 167, 178, 178, 202, 213, 174, 174, 206, 255, 173, 173, 206, 255, 137, 137, 180, 243, 0, 0, 0, 47, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 148, 148, 148, 66, 145, 145, 145, 118, 176, 176, 178, 151, 179, 179, 189, 198, 195, 195, 204, 241, 208, 208, 222, 255, 200, 200, 216, 255, 190, 190, 211, 255, 169, 169, 198, 255, 152, 152, 187, 255, 138, 143, 182, 255, 139, 162, 201, 255, 129, 140, 188, 255, 0, 0, 0, 111, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 42, 0, 0, 0, 46, 38, 38, 38, 255, 0, 0, 0, 119, 0, 0, 0, 81, 0, 0, 0, 37, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 148, 148, 148, 66, 145, 145, 145, 118, 176, 176, 178, 151, 179, 179, 189, 198, 195, 195, 204, 241, 208, 208, 222, 255, 200, 200, 216, 255, 190, 190, 211, 255, 169, 169, 198, 255, 152, 152, 187, 255, 138, 143, 182, 255, 139, 162, 201, 255, 129, 140, 188, 255, 0, 0, 0, 111, 0, 0, 0, 36, 0, 0, 0, 0, + 149, 149, 149, 115, 217, 217, 217, 255, 229, 229, 230, 255, 199, 199, 205, 255, 182, 182, 193, 255, 162, 162, 178, 255, 146, 150, 168, 255, 154, 168, 189, 255, 171, 197, 211, 255, 182, 217, 229, 255, 175, 230, 245, 255, 169, 237, 255, 255, 159, 232, 255, 255, 128, 155, 204, 255, 36, 36, 53, 165, 0, 0, 0, 51, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 255, 0, 0, 0, 95, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 149, 149, 115, 217, 217, 217, 255, 229, 229, 230, 255, 199, 199, 205, 255, 182, 182, 193, 255, 162, 162, 178, 255, 146, 150, 168, 255, 154, 168, 189, 255, 171, 197, 211, 255, 182, 217, 229, 255, 175, 230, 245, 255, 169, 237, 255, 255, 159, 232, 255, 255, 128, 155, 204, 255, 36, 36, 53, 165, 0, 0, 0, 51, 0, 0, 0, 2, + 136, 136, 136, 90, 236, 236, 236, 255, 144, 156, 170, 255, 143, 180, 200, 255, 148, 197, 220, 255, 160, 223, 243, 255, 180, 243, 255, 255, 188, 247, 255, 255, 198, 252, 255, 255, 188, 247, 255, 255, 180, 243, 255, 255, 162, 234, 255, 255, 156, 231, 255, 255, 129, 172, 219, 255, 44, 44, 67, 177, 0, 0, 0, 62, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 0, 0, 0, 71, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 90, 236, 236, 236, 255, 144, 156, 170, 255, 143, 180, 200, 255, 148, 197, 220, 255, 160, 223, 243, 255, 180, 243, 255, 255, 188, 247, 255, 255, 198, 252, 255, 255, 188, 247, 255, 255, 180, 243, 255, 255, 162, 234, 255, 255, 156, 231, 255, 255, 129, 172, 219, 255, 44, 44, 67, 177, 0, 0, 0, 62, 0, 0, 0, 7, + 88, 88, 88, 28, 210, 210, 216, 255, 142, 191, 218, 255, 130, 218, 255, 255, 139, 222, 255, 255, 158, 231, 255, 255, 163, 234, 255, 255, 177, 242, 255, 255, 181, 244, 255, 255, 177, 242, 255, 255, 163, 234, 255, 255, 159, 232, 255, 255, 146, 226, 255, 255, 129, 177, 224, 255, 67, 67, 105, 200, 0, 0, 0, 74, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 119, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 28, 210, 210, 216, 255, 142, 191, 218, 255, 130, 218, 255, 255, 139, 222, 255, 255, 158, 231, 255, 255, 163, 234, 255, 255, 177, 242, 255, 255, 181, 244, 255, 255, 177, 242, 255, 255, 163, 234, 255, 255, 159, 232, 255, 255, 146, 226, 255, 255, 129, 177, 224, 255, 67, 67, 105, 200, 0, 0, 0, 74, 0, 0, 0, 13, + 0, 0, 0, 5, 188, 188, 197, 217, 165, 190, 212, 255, 117, 212, 255, 255, 136, 221, 255, 255, 143, 224, 255, 255, 158, 231, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 149, 227, 255, 255, 136, 221, 255, 255, 120, 189, 239, 255, 71, 71, 116, 209, 0, 0, 0, 86, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 188, 188, 197, 217, 165, 190, 212, 255, 117, 212, 255, 255, 136, 221, 255, 255, 143, 224, 255, 255, 158, 231, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 159, 232, 255, 255, 149, 227, 255, 255, 136, 221, 255, 255, 120, 189, 239, 255, 71, 71, 116, 209, 0, 0, 0, 86, 0, 0, 0, 19, + 0, 0, 0, 1, 163, 163, 177, 174, 180, 192, 214, 255, 113, 210, 255, 255, 120, 213, 255, 255, 135, 220, 255, 255, 137, 222, 255, 255, 146, 226, 255, 255, 148, 227, 255, 255, 148, 227, 255, 255, 140, 223, 255, 255, 135, 220, 255, 255, 122, 214, 255, 255, 113, 198, 247, 255, 82, 82, 139, 222, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 163, 163, 177, 174, 180, 192, 214, 255, 113, 210, 255, 255, 120, 213, 255, 255, 135, 220, 255, 255, 137, 222, 255, 255, 146, 226, 255, 255, 148, 227, 255, 255, 148, 227, 255, 255, 140, 223, 255, 255, 135, 220, 255, 255, 122, 214, 255, 255, 113, 198, 247, 255, 82, 82, 139, 222, 0, 0, 0, 97, 0, 0, 0, 24, + 0, 0, 0, 0, 121, 121, 140, 113, 201, 201, 220, 255, 102, 204, 255, 255, 113, 210, 255, 255, 114, 211, 255, 255, 123, 215, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 114, 211, 255, 255, 113, 210, 255, 255, 103, 205, 255, 255, 91, 91, 159, 234, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 140, 113, 201, 201, 220, 255, 102, 204, 255, 255, 113, 210, 255, 255, 114, 211, 255, 255, 123, 215, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 114, 211, 255, 255, 113, 210, 255, 255, 103, 205, 255, 255, 91, 91, 159, 234, 0, 0, 0, 107, 0, 0, 0, 29, + 0, 0, 0, 0, 106, 106, 127, 63, 189, 189, 212, 255, 102, 182, 234, 255, 97, 201, 255, 255, 109, 208, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 109, 208, 255, 255, 97, 201, 255, 255, 91, 198, 255, 255, 91, 106, 177, 241, 0, 0, 0, 118, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 153, 255, 224, 241, 255, 255, 38, 38, 38, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 127, 63, 189, 189, 212, 255, 102, 182, 234, 255, 97, 201, 255, 255, 109, 208, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 113, 210, 255, 255, 109, 208, 255, 255, 97, 201, 255, 255, 91, 198, 255, 255, 91, 106, 177, 241, 0, 0, 0, 118, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 0, 9, 178, 178, 208, 255, 104, 175, 227, 255, 88, 197, 255, 255, 91, 198, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 102, 204, 255, 255, 98, 202, 255, 255, 95, 200, 255, 255, 91, 198, 255, 255, 88, 197, 255, 255, 75, 190, 255, 255, 97, 127, 213, 255, 0, 0, 0, 128, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 167, 37, 255, 217, 178, 64, 255, 219, 183, 75, 255, 213, 171, 46, 255, 210, 174, 71, 255, 0, 0, 0, 71, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 178, 178, 208, 255, 104, 175, 227, 255, 88, 197, 255, 255, 91, 198, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 102, 204, 255, 255, 98, 202, 255, 255, 95, 200, 255, 255, 91, 198, 255, 255, 88, 197, 255, 255, 75, 190, 255, 255, 97, 127, 213, 255, 0, 0, 0, 128, 0, 0, 0, 40, + 0, 0, 0, 0, 0, 0, 0, 2, 160, 160, 192, 203, 116, 175, 228, 255, 68, 187, 255, 255, 77, 191, 255, 255, 82, 194, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 77, 191, 255, 255, 68, 187, 255, 255, 65, 186, 255, 255, 84, 132, 222, 255, 0, 0, 0, 139, 0, 0, 0, 45, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 216, 182, 77, 255, 239, 235, 218, 255, 255, 255, 255, 255, 245, 238, 212, 255, 190, 144, 21, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 0, 0, 0, 37, 157, 157, 189, 206, 116, 175, 228, 255, 68, 187, 255, 255, 77, 191, 255, 255, 82, 194, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 77, 191, 255, 255, 68, 187, 255, 255, 65, 186, 255, 255, 84, 132, 222, 255, 0, 0, 0, 139, 0, 0, 0, 45, + 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 175, 145, 131, 164, 215, 255, 54, 180, 255, 255, 61, 184, 255, 255, 67, 186, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 67, 186, 255, 255, 61, 184, 255, 255, 92, 178, 241, 255, 114, 155, 220, 255, 111, 111, 194, 255, 38, 38, 38, 255, 38, 38, 38, 255, 153, 153, 153, 255, 223, 241, 255, 255, 223, 241, 255, 255, 224, 241, 255, 255, 224, 241, 255, 255, 213, 173, 50, 255, 239, 229, 187, 255, 255, 247, 205, 255, 242, 228, 175, 255, 189, 143, 25, 255, 223, 241, 255, 255, 223, 241, 255, 255, 223, 241, 255, 255, 223, 241, 255, 255, 38, 38, 38, 255, 38, 38, 38, 255, 98, 98, 118, 255, 131, 164, 215, 255, 54, 180, 255, 255, 61, 184, 255, 255, 67, 186, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 68, 187, 255, 255, 67, 186, 255, 255, 61, 184, 255, 255, 92, 178, 241, 255, 114, 155, 220, 255, 111, 111, 194, 251, 0, 0, 0, 142, 0, 0, 0, 46, + 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 156, 96, 153, 161, 208, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 64, 179, 251, 255, 117, 183, 239, 255, 141, 157, 217, 255, 110, 110, 185, 247, 47, 47, 94, 209, 10, 10, 19, 169, 0, 0, 0, 137, 0, 0, 0, 108, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 217, 173, 21, 255, 235, 193, 43, 255, 223, 184, 42, 255, 234, 192, 40, 255, 175, 126, 5, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 0, 0, 0, 167, 64, 64, 87, 171, 153, 161, 208, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 45, 176, 255, 255, 64, 179, 251, 255, 117, 183, 239, 255, 141, 157, 217, 255, 110, 110, 185, 247, 47, 47, 94, 209, 10, 10, 19, 168, 0, 0, 0, 110, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 128, 45, 154, 154, 202, 255, 31, 162, 251, 255, 31, 169, 255, 255, 34, 170, 255, 255, 102, 192, 250, 255, 148, 189, 236, 255, 156, 156, 214, 255, 111, 111, 198, 255, 81, 81, 181, 255, 0, 0, 0, 176, 0, 0, 0, 134, 0, 0, 0, 88, 0, 0, 0, 59, 0, 0, 0, 49, 0, 0, 0, 71, 0, 0, 0, 119, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 143, 169, 118, 1, 255, 163, 113, 1, 255, 163, 113, 1, 255, 168, 117, 2, 255, 162, 111, 1, 255, 0, 0, 0, 179, 0, 0, 0, 155, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 119, 39, 39, 57, 102, 154, 154, 202, 255, 31, 162, 251, 255, 31, 169, 255, 255, 34, 170, 255, 255, 102, 192, 250, 255, 148, 189, 236, 255, 156, 156, 214, 255, 111, 111, 198, 255, 81, 81, 181, 255, 0, 0, 0, 176, 0, 0, 0, 134, 0, 0, 0, 87, 0, 0, 0, 46, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 148, 148, 197, 230, 69, 161, 238, 255, 135, 206, 254, 255, 173, 191, 232, 255, 155, 155, 211, 255, 110, 110, 199, 255, 103, 103, 203, 255, 100, 100, 202, 255, 96, 96, 198, 255, 27, 27, 55, 175, 0, 0, 0, 77, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 71, 0, 0, 0, 119, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 119, 0, 0, 0, 71, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 35, 0, 0, 0, 18, 148, 148, 197, 230, 69, 161, 238, 255, 135, 206, 254, 255, 173, 191, 232, 255, 155, 155, 211, 255, 110, 110, 199, 255, 103, 103, 203, 255, 100, 100, 202, 255, 96, 96, 198, 255, 27, 27, 55, 175, 0, 0, 0, 77, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 1, + 0, 0, 0, 0, 135, 135, 183, 17, 179, 179, 207, 147, 169, 169, 210, 255, 149, 149, 205, 255, 147, 147, 205, 255, 182, 182, 214, 255, 165, 165, 207, 255, 155, 155, 205, 255, 113, 113, 193, 255, 109, 109, 197, 255, 106, 106, 200, 255, 138, 138, 194, 249, 87, 87, 116, 136, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 35, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 35, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 183, 17, 179, 179, 207, 147, 169, 169, 210, 255, 149, 149, 205, 255, 147, 147, 205, 255, 182, 182, 214, 255, 165, 165, 207, 255, 155, 155, 205, 255, 113, 113, 193, 255, 109, 109, 197, 255, 106, 106, 200, 255, 138, 138, 194, 249, 87, 87, 116, 136, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 170, 170, 202, 178, 238, 238, 238, 255, 231, 231, 240, 255, 223, 223, 237, 255, 239, 239, 239, 255, 228, 228, 228, 255, 185, 185, 208, 255, 175, 175, 212, 255, 132, 132, 191, 255, 119, 119, 187, 255, 116, 116, 190, 255, 154, 154, 203, 255, 160, 160, 204, 255, 83, 83, 113, 134, 0, 0, 0, 26, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 202, 178, 238, 238, 238, 255, 231, 231, 240, 255, 223, 223, 237, 255, 239, 239, 239, 255, 228, 228, 228, 255, 185, 185, 208, 255, 175, 175, 212, 255, 132, 132, 191, 255, 119, 119, 187, 255, 116, 116, 190, 255, 154, 154, 203, 255, 160, 160, 204, 255, 83, 83, 113, 134, 0, 0, 0, 26, 0, 0, 0, 4, + 128, 128, 177, 50, 199, 199, 215, 255, 239, 239, 239, 255, 249, 249, 249, 255, 249, 249, 249, 255, 239, 239, 239, 255, 228, 228, 228, 255, 206, 206, 216, 255, 171, 171, 205, 255, 162, 162, 197, 255, 129, 129, 178, 255, 128, 128, 179, 255, 157, 157, 200, 255, 164, 164, 206, 255, 116, 116, 159, 227, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 177, 50, 199, 199, 215, 255, 239, 239, 239, 255, 249, 249, 249, 255, 249, 249, 249, 255, 239, 239, 239, 255, 228, 228, 228, 255, 206, 206, 216, 255, 171, 171, 205, 255, 162, 162, 197, 255, 129, 129, 178, 255, 128, 128, 179, 255, 157, 157, 200, 255, 164, 164, 206, 255, 116, 116, 159, 227, 0, 0, 0, 72, 0, 0, 0, 16, + 109, 109, 154, 54, 199, 199, 212, 255, 233, 233, 233, 255, 239, 239, 239, 255, 239, 239, 239, 255, 234, 234, 234, 255, 226, 226, 226, 255, 212, 212, 219, 255, 174, 174, 204, 255, 187, 187, 203, 255, 140, 140, 166, 255, 138, 138, 168, 255, 160, 160, 198, 255, 163, 163, 206, 255, 107, 107, 149, 235, 0, 0, 0, 109, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 109, 154, 54, 199, 199, 212, 255, 233, 233, 233, 255, 239, 239, 239, 255, 239, 239, 239, 255, 234, 234, 234, 255, 226, 226, 226, 255, 212, 212, 219, 255, 174, 174, 204, 255, 187, 187, 203, 255, 140, 140, 166, 255, 138, 138, 168, 255, 160, 160, 198, 255, 163, 163, 206, 255, 107, 107, 149, 235, 0, 0, 0, 109, 0, 0, 0, 30, + 0, 0, 0, 7, 147, 147, 177, 218, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 216, 216, 220, 255, 207, 207, 218, 255, 162, 162, 194, 255, 209, 209, 212, 255, 141, 141, 155, 255, 126, 126, 164, 255, 159, 159, 200, 255, 152, 152, 198, 255, 62, 62, 89, 210, 0, 0, 0, 112, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 147, 147, 177, 218, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 216, 216, 220, 255, 207, 207, 218, 255, 162, 162, 194, 255, 209, 209, 212, 255, 141, 141, 155, 255, 126, 126, 164, 255, 159, 159, 200, 255, 152, 152, 198, 255, 62, 62, 89, 210, 0, 0, 0, 112, 0, 0, 0, 31, + 0, 0, 0, 2, 36, 36, 52, 50, 133, 133, 160, 219, 201, 201, 211, 255, 214, 214, 220, 255, 212, 212, 219, 255, 207, 207, 218, 255, 199, 199, 216, 255, 189, 189, 211, 255, 146, 146, 185, 255, 151, 151, 189, 255, 172, 172, 209, 255, 143, 143, 187, 255, 68, 68, 97, 220, 0, 0, 0, 151, 0, 0, 0, 80, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 36, 36, 52, 50, 133, 133, 160, 219, 201, 201, 211, 255, 214, 214, 220, 255, 212, 212, 219, 255, 207, 207, 218, 255, 199, 199, 216, 255, 189, 189, 211, 255, 146, 146, 185, 255, 151, 151, 189, 255, 172, 172, 209, 255, 143, 143, 187, 255, 68, 68, 97, 220, 0, 0, 0, 151, 0, 0, 0, 80, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 52, 59, 59, 89, 165, 118, 118, 144, 223, 151, 151, 180, 250, 173, 173, 199, 255, 171, 171, 199, 255, 168, 168, 198, 255, 151, 151, 189, 255, 123, 123, 157, 243, 75, 75, 106, 222, 18, 18, 28, 179, 0, 0, 0, 141, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 52, 59, 59, 89, 165, 118, 118, 144, 223, 151, 151, 180, 250, 173, 173, 199, 255, 171, 171, 199, 255, 168, 168, 198, 255, 151, 151, 189, 255, 123, 123, 157, 243, 75, 75, 106, 222, 18, 18, 28, 179, 0, 0, 0, 141, 0, 0, 0, 90, 0, 0, 0, 34, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 39, 0, 0, 0, 79, 0, 0, 0, 112, 0, 0, 0, 133, 0, 0, 0, 142, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 139, 0, 0, 0, 124, 0, 0, 0, 97, 0, 0, 0, 61, 0, 0, 0, 26, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 39, 0, 0, 0, 79, 0, 0, 0, 112, 0, 0, 0, 133, 0, 0, 0, 142, 0, 0, 0, 143, 0, 0, 0, 143, 0, 0, 0, 139, 0, 0, 0, 124, 0, 0, 0, 97, 0, 0, 0, 61, 0, 0, 0, 26, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 42, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 42, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceCamera(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 4, 0, 0, 85, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 51, 20, 42, 45, 51, 68, 30, 35, 52, 43, 19, 28, 47, 27, 23, 35, 46, 22, 15, 30, 60, 17, 20, 39, 59, 13, 28, 28, 57, 9, 0, 51, 51, 5, 0, 0, 128, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 43, 51, 54, 43, 45, 51, 90, 46, 48, 51, 152, 47, 48, 51, 182, 49, 50, 51, 220, 51, 51, 51, 255, 74, 74, 74, 255, 85, 85, 85, 255, 49, 50, 51, 234, 46, 47, 51, 189, 42, 45, 51, 151, 39, 43, 52, 107, 24, 30, 53, 43, 18, 35, 53, 29, 26, 26, 51, 20, 16, 32, 48, 16, 20, 39, 59, 13, 28, 28, 57, 9, 0, 64, 64, 4, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 41, 46, 50, 88, 47, 48, 51, 151, 47, 48, 51, 182, 48, 49, 51, 208, 51, 51, 51, 255, 74, 74, 74, 255, 98, 98, 98, 255, 144, 144, 144, 255, 167, 167, 167, 255, 188, 188, 188, 255, 209, 209, 209, 255, 192, 192, 192, 255, 167, 167, 167, 255, 191, 191, 191, 255, 169, 169, 169, 255, 162, 162, 162, 255, 128, 128, 128, 255, 95, 95, 95, 255, 47, 49, 51, 214, 45, 47, 51, 177, 41, 45, 50, 138, 40, 44, 51, 105, 19, 31, 50, 41, 20, 29, 49, 26, 20, 39, 59, 13, 0, 51, 51, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 51, 51, 51, 64, 46, 48, 51, 137, 47, 48, 51, 168, 48, 49, 51, 208, 50, 51, 51, 244, 75, 75, 75, 255, 99, 99, 99, 255, 147, 147, 147, 255, 169, 169, 169, 255, 193, 193, 193, 255, 239, 239, 239, 255, 221, 221, 221, 255, 178, 178, 178, 255, 152, 152, 152, 255, 135, 135, 135, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 110, 110, 110, 255, 133, 133, 133, 255, 164, 164, 164, 255, 209, 209, 209, 255, 191, 191, 191, 255, 158, 158, 158, 255, 125, 125, 125, 255, 61, 61, 62, 246, 38, 43, 52, 136, 21, 31, 52, 49, 23, 35, 46, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 51, 51, 51, 96, 46, 48, 51, 155, 49, 49, 51, 207, 50, 51, 51, 244, 76, 76, 76, 255, 100, 100, 100, 255, 149, 149, 149, 255, 173, 173, 173, 255, 197, 197, 197, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 220, 220, 220, 255, 186, 186, 186, 255, 152, 152, 152, 255, 118, 118, 118, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 134, 134, 134, 255, 157, 157, 157, 255, 172, 172, 172, 255, 194, 194, 194, 255, 203, 203, 203, 255, 170, 170, 170, 255, 149, 149, 149, 255, 126, 126, 126, 255, 123, 123, 123, 255, 102, 102, 102, 255, 57, 57, 57, 255, 29, 37, 51, 141, 22, 30, 48, 59, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 51, 51, 51, 80, 51, 51, 51, 128, 49, 50, 51, 207, 50, 50, 51, 232, 64, 64, 64, 255, 101, 101, 101, 255, 151, 151, 151, 255, 176, 176, 176, 255, 200, 200, 200, 255, 249, 249, 249, 255, 248, 248, 248, 255, 247, 247, 247, 255, 246, 246, 246, 255, 245, 245, 245, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 237, 237, 237, 255, 236, 236, 236, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 215, 215, 215, 255, 198, 198, 198, 255, 214, 214, 214, 255, 195, 195, 195, 255, 172, 172, 172, 255, 146, 146, 146, 255, 121, 121, 121, 255, 114, 114, 114, 255, 122, 122, 122, 255, 115, 115, 115, 255, 115, 115, 115, 255, 96, 96, 96, 255, 77, 77, 77, 255, 154, 154, 154, 255, 109, 109, 109, 255, 43, 46, 51, 230, 19, 29, 51, 106, + 0, 0, 0, 0, 0, 0, 0, 0, 46, 48, 50, 96, 78, 79, 79, 229, 128, 128, 128, 255, 77, 77, 77, 255, 115, 115, 115, 255, 204, 204, 204, 255, 241, 241, 241, 255, 253, 253, 253, 255, 214, 214, 214, 255, 176, 176, 176, 255, 177, 177, 177, 255, 164, 164, 164, 255, 202, 202, 202, 255, 151, 151, 151, 255, 200, 200, 200, 255, 172, 172, 172, 255, 220, 220, 220, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 237, 237, 237, 255, 236, 236, 236, 255, 234, 234, 234, 255, 234, 234, 234, 255, 199, 199, 199, 255, 164, 164, 164, 255, 137, 137, 137, 255, 123, 123, 123, 255, 104, 104, 104, 255, 124, 124, 124, 255, 123, 123, 123, 255, 110, 110, 110, 255, 90, 90, 90, 255, 71, 71, 71, 255, 51, 51, 51, 255, 51, 51, 51, 255, 54, 54, 54, 255, 64, 64, 64, 255, 61, 61, 61, 255, 157, 157, 157, 255, 130, 130, 130, 255, 43, 46, 51, 244, 18, 30, 51, 145, + 0, 0, 0, 0, 46, 47, 51, 97, 127, 127, 127, 255, 242, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 216, 216, 255, 178, 178, 178, 255, 165, 165, 165, 255, 101, 101, 101, 255, 87, 87, 87, 255, 234, 234, 234, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 234, 234, 234, 255, 75, 75, 75, 255, 159, 159, 159, 255, 241, 241, 241, 255, 240, 240, 240, 255, 239, 239, 239, 255, 237, 237, 237, 255, 190, 190, 190, 255, 155, 155, 155, 255, 120, 120, 120, 255, 125, 125, 125, 255, 99, 99, 99, 255, 126, 126, 126, 255, 146, 146, 146, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 160, 160, 160, 255, 78, 78, 78, 255, 57, 57, 57, 255, 67, 67, 67, 255, 77, 77, 77, 255, 86, 86, 86, 255, 96, 96, 96, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 160, 160, 160, 255, 133, 133, 133, 255, 43, 46, 51, 248, 19, 28, 52, 163, + 51, 51, 51, 16, 63, 63, 64, 243, 240, 240, 240, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 64, 64, 64, 255, 63, 63, 63, 255, 131, 131, 131, 255, 174, 174, 174, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 174, 174, 174, 255, 120, 120, 120, 255, 51, 51, 51, 255, 86, 86, 86, 255, 157, 157, 157, 255, 122, 122, 122, 255, 115, 115, 115, 255, 100, 100, 100, 255, 121, 121, 121, 255, 142, 142, 142, 255, 163, 163, 163, 255, 163, 163, 163, 255, 147, 147, 147, 255, 136, 136, 136, 255, 128, 128, 128, 255, 128, 128, 128, 255, 163, 163, 163, 255, 163, 163, 163, 255, 163, 163, 163, 255, 125, 125, 125, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 163, 163, 163, 255, 135, 135, 135, 255, 43, 46, 51, 249, 18, 29, 52, 168, + 51, 51, 51, 96, 126, 126, 126, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 252, 252, 252, 255, 227, 227, 227, 255, 139, 139, 139, 255, 89, 89, 89, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 73, 73, 73, 255, 102, 102, 102, 255, 123, 123, 123, 255, 144, 144, 144, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 118, 118, 118, 255, 166, 166, 166, 255, 166, 166, 166, 255, 166, 166, 166, 255, 134, 134, 134, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 96, 96, 96, 255, 86, 86, 86, 255, 77, 77, 77, 255, 74, 74, 74, 255, 87, 87, 87, 255, 166, 166, 166, 255, 137, 137, 137, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 175, 157, 157, 157, 255, 244, 244, 244, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 250, 250, 250, 255, 225, 225, 225, 255, 98, 98, 98, 255, 153, 153, 153, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 102, 102, 102, 255, 102, 102, 102, 255, 114, 114, 114, 255, 123, 123, 123, 255, 143, 143, 143, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 122, 122, 122, 255, 73, 73, 73, 255, 78, 78, 78, 255, 91, 91, 91, 255, 110, 110, 110, 255, 131, 131, 131, 255, 153, 153, 153, 255, 168, 168, 168, 255, 168, 168, 168, 255, 168, 168, 168, 255, 139, 139, 139, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 152, 152, 152, 255, 153, 153, 153, 255, 177, 177, 177, 255, 207, 207, 207, 255, 237, 237, 237, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 88, 88, 88, 255, 156, 156, 156, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 154, 154, 154, 255, 171, 171, 171, 255, 197, 197, 197, 255, 224, 224, 224, 255, 239, 239, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 239, 239, 255, 209, 209, 209, 255, 185, 185, 185, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 171, 171, 171, 255, 141, 141, 141, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 174, 174, 174, 255, 229, 229, 229, 255, 194, 194, 194, 255, 165, 165, 165, 255, 153, 153, 153, 255, 171, 171, 171, 255, 206, 206, 206, 255, 229, 229, 229, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 186, 186, 186, 255, 82, 82, 82, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 193, 193, 193, 255, 241, 241, 241, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 251, 251, 251, 255, 231, 231, 231, 255, 184, 184, 184, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 143, 143, 143, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 149, 149, 149, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 229, 229, 229, 255, 200, 200, 200, 255, 170, 170, 170, 255, 153, 153, 153, 255, 165, 165, 165, 255, 229, 229, 229, 255, 246, 246, 246, 255, 246, 246, 246, 255, 149, 149, 149, 255, 67, 67, 67, 255, 114, 114, 114, 255, 153, 153, 153, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 216, 216, 216, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 235, 235, 235, 255, 198, 198, 198, 255, 235, 235, 235, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 242, 242, 242, 255, 190, 190, 190, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 177, 177, 177, 255, 146, 146, 146, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 148, 148, 148, 255, 245, 245, 245, 255, 245, 245, 245, 255, 182, 182, 182, 255, 233, 233, 233, 255, 245, 245, 245, 255, 245, 245, 245, 255, 233, 233, 233, 255, 153, 153, 153, 255, 222, 222, 222, 255, 245, 245, 245, 255, 245, 245, 245, 255, 199, 199, 199, 255, 170, 170, 170, 255, 170, 170, 170, 255, 147, 147, 147, 255, 110, 110, 110, 255, 140, 140, 140, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 218, 218, 218, 255, 242, 242, 242, 255, 242, 242, 242, 255, 242, 242, 242, 255, 230, 230, 230, 255, 147, 147, 147, 255, 75, 75, 75, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 75, 75, 75, 255, 147, 147, 147, 255, 242, 242, 242, 255, 242, 242, 242, 255, 238, 238, 238, 255, 188, 188, 188, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 180, 180, 180, 255, 148, 148, 148, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 147, 147, 147, 255, 243, 243, 243, 255, 243, 243, 243, 255, 153, 153, 153, 255, 221, 221, 221, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 153, 153, 153, 255, 221, 221, 221, 255, 243, 243, 243, 255, 243, 243, 243, 255, 198, 198, 198, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 169, 169, 169, 255, 113, 113, 113, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 207, 207, 207, 255, 237, 237, 237, 255, 237, 237, 237, 255, 237, 237, 237, 255, 191, 191, 191, 255, 63, 63, 63, 255, 51, 51, 51, 255, 70, 70, 70, 255, 96, 96, 96, 255, 102, 102, 102, 255, 96, 96, 96, 255, 64, 64, 64, 255, 51, 51, 51, 255, 86, 86, 86, 255, 226, 226, 226, 255, 237, 237, 237, 255, 223, 223, 223, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 183, 183, 183, 255, 150, 150, 150, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 146, 146, 146, 255, 242, 242, 242, 255, 242, 242, 242, 255, 153, 153, 153, 255, 219, 219, 219, 255, 242, 242, 242, 255, 242, 242, 242, 255, 242, 242, 242, 255, 153, 153, 153, 255, 219, 219, 219, 255, 242, 242, 242, 255, 242, 242, 242, 255, 197, 197, 197, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 191, 191, 191, 255, 119, 119, 119, 255, 186, 186, 186, 255, 186, 186, 186, 255, 192, 192, 192, 255, 233, 233, 233, 255, 233, 233, 233, 255, 233, 233, 233, 255, 188, 188, 188, 255, 51, 51, 51, 255, 63, 63, 63, 255, 127, 127, 127, 255, 152, 152, 152, 255, 152, 152, 152, 255, 152, 152, 152, 255, 152, 152, 152, 255, 152, 152, 152, 255, 107, 107, 107, 255, 57, 57, 57, 255, 85, 85, 85, 255, 222, 222, 222, 255, 233, 233, 233, 255, 204, 204, 204, 255, 186, 186, 186, 255, 186, 186, 186, 255, 186, 186, 186, 255, 152, 152, 152, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 146, 146, 146, 255, 240, 240, 240, 255, 240, 240, 240, 255, 153, 153, 153, 255, 218, 218, 218, 255, 240, 240, 240, 255, 240, 240, 240, 255, 240, 240, 240, 255, 153, 153, 153, 255, 218, 218, 218, 255, 240, 240, 240, 255, 240, 240, 240, 255, 197, 197, 197, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 85, 85, 85, 255, 188, 188, 188, 255, 188, 188, 188, 255, 218, 218, 218, 255, 228, 228, 228, 255, 228, 228, 228, 255, 206, 206, 206, 255, 62, 62, 62, 255, 69, 69, 69, 255, 142, 142, 142, 255, 136, 136, 136, 255, 88, 88, 88, 255, 57, 57, 57, 255, 51, 51, 51, 255, 63, 63, 63, 255, 100, 100, 100, 255, 148, 148, 148, 255, 124, 124, 124, 255, 51, 51, 51, 255, 140, 140, 140, 255, 228, 228, 228, 255, 221, 221, 221, 255, 188, 188, 188, 255, 188, 188, 188, 255, 188, 188, 188, 255, 154, 154, 154, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 145, 145, 145, 255, 239, 239, 239, 255, 239, 239, 239, 255, 153, 153, 153, 255, 217, 217, 217, 255, 239, 239, 239, 255, 239, 239, 239, 255, 239, 239, 239, 255, 153, 153, 153, 255, 217, 217, 217, 255, 239, 239, 239, 255, 239, 239, 239, 255, 196, 196, 196, 255, 170, 170, 170, 255, 181, 181, 181, 255, 179, 179, 179, 255, 217, 217, 217, 255, 242, 242, 242, 255, 255, 255, 255, 255, 86, 86, 86, 255, 191, 191, 191, 255, 197, 197, 197, 255, 225, 225, 225, 255, 225, 225, 225, 255, 225, 225, 225, 255, 106, 106, 106, 255, 57, 57, 57, 255, 139, 139, 139, 255, 127, 127, 127, 255, 57, 57, 57, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 69, 69, 69, 255, 145, 145, 145, 255, 98, 98, 98, 255, 62, 62, 62, 255, 214, 214, 214, 255, 225, 225, 225, 255, 195, 195, 195, 255, 191, 191, 191, 255, 191, 191, 191, 255, 156, 156, 156, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 144, 144, 144, 255, 237, 237, 237, 255, 237, 237, 237, 255, 153, 153, 153, 255, 216, 216, 216, 255, 237, 237, 237, 255, 237, 237, 237, 255, 237, 237, 237, 255, 153, 153, 153, 255, 216, 216, 216, 255, 237, 237, 237, 255, 237, 237, 237, 255, 195, 195, 195, 255, 170, 170, 170, 255, 172, 172, 172, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 255, 255, 255, 255, 87, 87, 87, 255, 194, 194, 194, 255, 209, 209, 209, 255, 221, 221, 221, 255, 221, 221, 221, 255, 200, 200, 200, 255, 51, 51, 51, 255, 107, 107, 107, 255, 135, 135, 135, 255, 57, 57, 57, 255, 51, 51, 51, 255, 67, 67, 67, 255, 96, 96, 96, 255, 102, 102, 102, 255, 89, 89, 89, 255, 61, 61, 61, 255, 51, 51, 51, 255, 96, 96, 96, 255, 130, 130, 130, 255, 51, 51, 51, 255, 157, 157, 157, 255, 221, 221, 221, 255, 204, 204, 204, 255, 194, 194, 194, 255, 194, 194, 194, 255, 158, 158, 158, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 143, 143, 143, 255, 236, 236, 236, 255, 236, 236, 236, 255, 153, 153, 153, 255, 215, 215, 215, 255, 236, 236, 236, 255, 236, 236, 236, 255, 220, 220, 220, 255, 153, 153, 153, 255, 215, 215, 215, 255, 236, 236, 236, 255, 236, 236, 236, 255, 194, 194, 194, 255, 170, 170, 170, 255, 185, 185, 185, 255, 191, 191, 191, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 88, 88, 88, 255, 197, 197, 197, 255, 213, 213, 213, 255, 216, 216, 216, 255, 216, 216, 216, 255, 133, 133, 133, 255, 56, 56, 56, 255, 137, 137, 137, 255, 83, 83, 83, 255, 51, 51, 51, 255, 70, 70, 70, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 99, 99, 99, 255, 54, 54, 54, 255, 56, 56, 56, 255, 137, 137, 137, 255, 73, 73, 73, 255, 133, 133, 133, 255, 216, 216, 216, 255, 206, 206, 206, 255, 197, 197, 197, 255, 197, 197, 197, 255, 161, 161, 161, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 191, 143, 143, 143, 255, 234, 234, 234, 255, 234, 234, 234, 255, 153, 153, 153, 255, 214, 214, 214, 255, 234, 234, 234, 255, 234, 234, 234, 255, 214, 214, 214, 255, 153, 153, 153, 255, 214, 214, 214, 255, 234, 234, 234, 255, 234, 234, 234, 255, 194, 194, 194, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 88, 88, 88, 255, 201, 201, 201, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 91, 91, 91, 255, 77, 77, 77, 255, 133, 133, 133, 255, 56, 56, 56, 255, 54, 54, 54, 255, 99, 99, 99, 255, 89, 107, 120, 255, 13, 140, 230, 255, 0, 147, 249, 255, 51, 123, 174, 255, 102, 102, 102, 255, 73, 73, 73, 255, 51, 51, 51, 255, 118, 118, 118, 255, 82, 82, 82, 255, 91, 91, 91, 255, 211, 211, 211, 255, 206, 206, 206, 255, 200, 200, 200, 255, 200, 200, 200, 255, 163, 163, 163, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 143, 142, 142, 142, 255, 233, 233, 233, 255, 233, 233, 233, 255, 153, 153, 153, 255, 213, 213, 213, 255, 233, 233, 233, 255, 233, 233, 233, 255, 213, 213, 213, 255, 153, 153, 153, 255, 213, 213, 213, 255, 233, 233, 233, 255, 233, 233, 233, 255, 193, 193, 193, 255, 170, 170, 170, 255, 187, 187, 187, 255, 194, 194, 194, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 89, 89, 89, 255, 204, 204, 204, 255, 207, 207, 207, 255, 207, 207, 207, 255, 207, 207, 207, 255, 61, 61, 61, 255, 90, 90, 90, 255, 114, 114, 114, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 38, 113, 177, 255, 0, 122, 224, 255, 0, 122, 224, 255, 0, 122, 224, 255, 102, 102, 102, 255, 77, 77, 77, 255, 51, 51, 51, 255, 110, 110, 110, 255, 90, 90, 90, 255, 90, 90, 90, 255, 207, 207, 207, 255, 205, 205, 205, 255, 203, 203, 203, 255, 203, 203, 203, 255, 165, 165, 165, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 128, 141, 141, 141, 255, 231, 231, 231, 255, 231, 231, 231, 255, 153, 153, 153, 255, 212, 212, 212, 255, 231, 231, 231, 255, 231, 231, 231, 255, 212, 212, 212, 255, 153, 153, 153, 255, 212, 212, 212, 255, 231, 231, 231, 255, 231, 231, 231, 255, 192, 192, 192, 255, 170, 170, 170, 255, 172, 172, 172, 255, 153, 153, 153, 255, 208, 208, 208, 255, 242, 242, 242, 255, 255, 255, 255, 255, 90, 90, 90, 255, 205, 205, 205, 255, 203, 203, 203, 255, 203, 203, 203, 255, 203, 203, 203, 255, 51, 51, 51, 255, 89, 89, 89, 255, 108, 108, 108, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 26, 93, 169, 255, 0, 90, 192, 255, 0, 90, 192, 255, 0, 90, 192, 255, 102, 102, 102, 255, 77, 77, 77, 255, 51, 51, 51, 255, 113, 113, 113, 255, 80, 80, 80, 255, 108, 108, 108, 255, 203, 203, 203, 255, 204, 204, 204, 255, 206, 206, 206, 255, 206, 206, 206, 255, 167, 167, 167, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 128, 140, 140, 140, 255, 230, 230, 230, 255, 230, 230, 230, 255, 153, 153, 153, 255, 211, 211, 211, 255, 230, 230, 230, 255, 230, 230, 230, 255, 211, 211, 211, 255, 153, 153, 153, 255, 211, 211, 211, 255, 230, 230, 230, 255, 230, 230, 230, 255, 191, 191, 191, 255, 170, 170, 170, 255, 181, 181, 181, 255, 175, 175, 175, 255, 217, 217, 217, 255, 242, 242, 242, 255, 255, 255, 255, 255, 90, 90, 90, 255, 206, 206, 206, 255, 198, 198, 198, 255, 198, 198, 198, 255, 198, 198, 198, 255, 51, 51, 51, 255, 87, 87, 87, 255, 109, 109, 109, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 64, 86, 124, 255, 0, 58, 160, 255, 0, 58, 160, 255, 45, 78, 136, 255, 102, 102, 102, 255, 67, 67, 67, 255, 55, 55, 55, 255, 123, 123, 123, 255, 65, 65, 65, 255, 125, 125, 125, 255, 198, 198, 198, 255, 204, 204, 204, 255, 209, 209, 209, 255, 209, 209, 209, 255, 169, 169, 169, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 128, 140, 140, 140, 255, 229, 229, 229, 255, 229, 229, 229, 255, 153, 153, 153, 255, 210, 210, 210, 255, 229, 229, 229, 255, 229, 229, 229, 255, 210, 210, 210, 255, 153, 153, 153, 255, 210, 210, 210, 255, 229, 229, 229, 255, 229, 229, 229, 255, 191, 191, 191, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 91, 91, 91, 255, 207, 207, 207, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 78, 78, 78, 255, 81, 81, 81, 255, 119, 119, 119, 255, 55, 55, 55, 255, 51, 51, 51, 255, 96, 96, 96, 255, 102, 102, 102, 255, 83, 92, 112, 255, 77, 89, 115, 255, 102, 102, 102, 255, 89, 89, 89, 255, 51, 51, 51, 255, 76, 76, 76, 255, 111, 111, 111, 255, 51, 51, 51, 255, 167, 167, 167, 255, 194, 194, 194, 255, 207, 207, 207, 255, 212, 212, 212, 255, 212, 212, 212, 255, 171, 171, 171, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 128, 139, 139, 139, 255, 227, 227, 227, 255, 227, 227, 227, 255, 153, 153, 153, 255, 208, 208, 208, 255, 227, 227, 227, 255, 227, 227, 227, 255, 208, 208, 208, 255, 153, 153, 153, 255, 222, 222, 222, 255, 227, 227, 227, 255, 227, 227, 227, 255, 190, 190, 190, 255, 170, 170, 170, 255, 187, 187, 187, 255, 191, 191, 191, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 92, 92, 92, 255, 210, 210, 210, 255, 189, 189, 189, 255, 189, 189, 189, 255, 189, 189, 189, 255, 103, 103, 103, 255, 59, 59, 59, 255, 115, 115, 115, 255, 79, 79, 79, 255, 51, 51, 51, 255, 61, 61, 61, 255, 92, 92, 92, 255, 102, 102, 102, 255, 102, 102, 102, 255, 83, 83, 83, 255, 54, 54, 54, 255, 55, 55, 55, 255, 107, 107, 107, 255, 83, 83, 83, 255, 68, 68, 68, 255, 189, 189, 189, 255, 191, 191, 191, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 174, 174, 174, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 128, 138, 138, 138, 255, 226, 226, 226, 255, 226, 226, 226, 255, 153, 153, 153, 255, 207, 207, 207, 255, 226, 226, 226, 255, 226, 226, 226, 255, 207, 207, 207, 255, 153, 153, 153, 255, 226, 226, 226, 255, 226, 226, 226, 255, 226, 226, 226, 255, 189, 189, 189, 255, 170, 170, 170, 255, 176, 176, 176, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 255, 255, 255, 255, 93, 93, 93, 255, 218, 218, 218, 255, 186, 186, 186, 255, 184, 184, 184, 255, 184, 184, 184, 255, 151, 151, 151, 255, 51, 51, 51, 255, 93, 93, 93, 255, 108, 108, 108, 255, 62, 62, 62, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 89, 89, 89, 255, 105, 105, 105, 255, 55, 55, 55, 255, 142, 142, 142, 255, 184, 184, 184, 255, 197, 197, 197, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 176, 176, 176, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 128, 137, 137, 137, 255, 224, 224, 224, 255, 224, 224, 224, 255, 153, 153, 153, 255, 206, 206, 206, 255, 224, 224, 224, 255, 224, 224, 224, 255, 206, 206, 206, 255, 153, 153, 153, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 188, 188, 188, 255, 170, 170, 170, 255, 183, 183, 183, 255, 179, 179, 179, 255, 217, 217, 217, 255, 242, 242, 242, 255, 255, 255, 255, 255, 93, 93, 93, 255, 221, 221, 221, 255, 196, 196, 196, 255, 181, 181, 181, 255, 181, 181, 181, 255, 181, 181, 181, 255, 84, 84, 84, 255, 58, 58, 58, 255, 105, 105, 105, 255, 104, 104, 104, 255, 72, 72, 72, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 65, 65, 65, 255, 97, 97, 97, 255, 105, 105, 105, 255, 62, 62, 62, 255, 92, 92, 92, 255, 181, 181, 181, 255, 181, 181, 181, 255, 213, 213, 213, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 178, 178, 178, 255, 43, 46, 51, 249, 18, 29, 51, 169, + 51, 51, 51, 128, 137, 137, 137, 255, 223, 223, 223, 255, 223, 223, 223, 255, 153, 153, 153, 255, 205, 205, 205, 255, 223, 223, 223, 255, 223, 223, 223, 255, 205, 205, 205, 255, 153, 153, 153, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 188, 188, 188, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 94, 94, 94, 255, 223, 223, 223, 255, 211, 211, 211, 255, 176, 176, 176, 255, 176, 176, 176, 255, 176, 176, 176, 255, 160, 160, 160, 255, 59, 59, 59, 255, 61, 61, 61, 255, 94, 94, 94, 255, 104, 104, 104, 255, 104, 104, 104, 255, 104, 104, 104, 255, 104, 104, 104, 255, 104, 104, 104, 255, 91, 91, 91, 255, 58, 58, 58, 255, 74, 74, 74, 255, 168, 168, 168, 255, 176, 176, 176, 255, 191, 191, 191, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 169, 169, 169, 255, 43, 46, 51, 249, 18, 29, 52, 167, + 51, 51, 51, 128, 136, 136, 136, 255, 221, 221, 221, 255, 221, 221, 221, 255, 153, 153, 153, 255, 204, 204, 204, 255, 221, 221, 221, 255, 221, 221, 221, 255, 204, 204, 204, 255, 153, 153, 153, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 187, 187, 187, 255, 170, 170, 170, 255, 187, 187, 187, 255, 191, 191, 191, 255, 221, 221, 221, 255, 242, 242, 242, 255, 255, 255, 255, 255, 95, 95, 95, 255, 226, 226, 226, 255, 226, 226, 226, 255, 186, 186, 186, 255, 172, 172, 172, 255, 172, 172, 172, 255, 172, 172, 172, 255, 149, 149, 149, 255, 66, 66, 66, 255, 51, 51, 51, 255, 67, 67, 67, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 64, 64, 64, 255, 51, 51, 51, 255, 89, 89, 89, 255, 164, 164, 164, 255, 172, 172, 172, 255, 176, 176, 176, 255, 222, 222, 222, 255, 226, 226, 226, 255, 226, 226, 226, 255, 226, 226, 226, 255, 226, 226, 226, 255, 127, 127, 127, 255, 35, 40, 51, 240, 19, 29, 51, 159, + 51, 51, 51, 128, 106, 106, 106, 255, 219, 219, 219, 255, 219, 219, 219, 255, 203, 203, 203, 255, 211, 211, 211, 255, 219, 219, 219, 255, 219, 219, 219, 255, 203, 203, 203, 255, 153, 153, 153, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 186, 186, 186, 255, 170, 170, 170, 255, 174, 174, 174, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 217, 217, 217, 255, 95, 95, 95, 255, 229, 229, 229, 255, 229, 229, 229, 255, 217, 217, 217, 255, 171, 171, 171, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 160, 160, 160, 255, 109, 109, 109, 255, 73, 73, 73, 255, 51, 51, 51, 255, 51, 51, 51, 255, 58, 58, 58, 255, 87, 87, 87, 255, 138, 138, 138, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 214, 214, 214, 255, 229, 229, 229, 255, 229, 229, 229, 255, 229, 229, 229, 255, 229, 229, 229, 255, 218, 218, 218, 255, 62, 62, 62, 255, 21, 31, 51, 216, 18, 30, 50, 138, + 51, 51, 51, 128, 96, 96, 96, 255, 161, 161, 161, 255, 194, 194, 194, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 202, 202, 202, 255, 153, 153, 153, 255, 218, 218, 218, 255, 218, 218, 218, 255, 218, 218, 218, 255, 186, 186, 186, 255, 170, 170, 170, 255, 183, 183, 183, 255, 172, 172, 172, 255, 217, 217, 217, 255, 242, 242, 242, 255, 204, 204, 204, 255, 96, 96, 96, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 206, 206, 206, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 162, 162, 162, 255, 167, 167, 167, 255, 206, 206, 206, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 220, 220, 220, 255, 164, 164, 164, 255, 85, 85, 85, 255, 34, 40, 51, 241, 17, 28, 51, 179, 20, 30, 50, 103, + 51, 51, 51, 128, 88, 88, 88, 255, 177, 177, 177, 255, 153, 153, 153, 255, 161, 161, 161, 255, 188, 188, 188, 255, 212, 212, 212, 255, 216, 216, 216, 255, 200, 200, 200, 255, 153, 153, 153, 255, 216, 216, 216, 255, 216, 216, 216, 255, 216, 216, 216, 255, 185, 185, 185, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 204, 204, 204, 255, 97, 97, 97, 255, 235, 235, 235, 255, 235, 235, 235, 255, 235, 235, 235, 255, 235, 235, 235, 255, 211, 211, 211, 255, 163, 163, 163, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 158, 158, 158, 255, 168, 168, 168, 255, 221, 221, 221, 255, 235, 235, 235, 255, 223, 223, 223, 255, 165, 165, 165, 255, 108, 108, 108, 255, 49, 50, 51, 254, 38, 42, 51, 247, 25, 34, 52, 227, 17, 28, 51, 185, 18, 30, 51, 129, 20, 28, 49, 63, + 51, 51, 51, 128, 92, 92, 92, 255, 215, 215, 215, 255, 211, 211, 211, 255, 184, 184, 184, 255, 157, 157, 157, 255, 157, 157, 157, 255, 184, 184, 184, 255, 196, 196, 196, 255, 153, 153, 153, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 184, 184, 184, 255, 170, 170, 170, 255, 187, 187, 187, 255, 194, 194, 194, 255, 221, 221, 221, 255, 242, 242, 242, 255, 204, 204, 204, 255, 144, 144, 144, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 233, 233, 233, 255, 185, 185, 185, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 153, 153, 153, 255, 164, 164, 164, 255, 206, 206, 206, 255, 214, 214, 214, 255, 167, 167, 167, 255, 109, 109, 109, 255, 49, 50, 51, 254, 38, 42, 51, 247, 27, 35, 51, 232, 15, 28, 50, 202, 16, 28, 51, 179, 17, 29, 51, 151, 18, 29, 52, 113, 23, 30, 49, 67, 19, 28, 47, 27, + 51, 51, 51, 96, 92, 92, 92, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 209, 209, 209, 255, 183, 183, 183, 255, 157, 157, 157, 255, 153, 153, 153, 255, 153, 153, 153, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 183, 183, 183, 255, 170, 170, 170, 255, 174, 174, 174, 255, 153, 153, 153, 255, 204, 204, 204, 255, 242, 242, 242, 255, 204, 204, 204, 255, 146, 146, 146, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 219, 219, 219, 255, 219, 219, 219, 255, 214, 214, 214, 255, 219, 219, 219, 255, 206, 206, 206, 255, 157, 157, 157, 255, 86, 86, 86, 255, 49, 50, 51, 254, 38, 42, 51, 247, 27, 35, 51, 232, 15, 28, 50, 202, 16, 28, 51, 180, 16, 28, 51, 155, 16, 29, 51, 125, 16, 30, 52, 93, 19, 30, 53, 68, 23, 29, 52, 44, 23, 35, 58, 22, 32, 32, 64, 8, + 51, 51, 51, 32, 71, 71, 71, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 209, 209, 209, 255, 183, 183, 183, 255, 157, 157, 157, 255, 212, 212, 212, 255, 212, 212, 212, 255, 212, 212, 212, 255, 183, 183, 183, 255, 170, 170, 170, 255, 183, 183, 183, 255, 172, 172, 172, 255, 217, 217, 217, 255, 242, 242, 242, 255, 204, 204, 204, 255, 147, 147, 147, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 219, 219, 219, 255, 159, 159, 159, 255, 87, 87, 87, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 15, 27, 51, 205, 15, 28, 51, 181, 16, 28, 51, 155, 16, 29, 51, 125, 16, 30, 52, 94, 18, 30, 52, 69, 21, 31, 52, 49, 17, 34, 51, 30, 14, 28, 57, 18, 26, 26, 51, 10, 0, 64, 64, 4, 0, 0, 0, 1, + 0, 0, 0, 0, 47, 48, 51, 222, 111, 111, 111, 255, 201, 201, 201, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 182, 182, 182, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 242, 242, 242, 255, 166, 166, 166, 255, 185, 185, 185, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 246, 246, 246, 255, 222, 222, 222, 255, 161, 161, 161, 255, 88, 88, 88, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 18, 30, 51, 129, 16, 29, 50, 96, 18, 29, 51, 70, 21, 31, 52, 49, 17, 34, 51, 30, 14, 28, 57, 18, 23, 23, 46, 11, 0, 51, 51, 5, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 33, 49, 89, 44, 46, 51, 221, 71, 71, 71, 255, 160, 160, 160, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 209, 209, 209, 255, 181, 181, 181, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 230, 230, 230, 255, 101, 101, 101, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 249, 249, 249, 255, 212, 212, 212, 255, 138, 138, 138, 255, 76, 76, 76, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 20, 29, 49, 52, 16, 33, 49, 31, 13, 27, 54, 19, 23, 23, 46, 11, 0, 51, 51, 5, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 28, 48, 37, 20, 32, 52, 89, 32, 39, 51, 183, 47, 49, 51, 248, 90, 90, 90, 255, 188, 188, 188, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 208, 208, 208, 255, 170, 170, 170, 255, 170, 170, 170, 255, 187, 187, 187, 255, 204, 204, 204, 255, 221, 221, 221, 255, 134, 134, 134, 255, 214, 214, 214, 255, 252, 252, 252, 255, 214, 214, 214, 255, 139, 139, 139, 255, 76, 76, 76, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 21, 43, 43, 12, 0, 43, 43, 6, 0, 0, 128, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 20, 39, 13, 21, 34, 48, 37, 20, 29, 52, 78, 18, 28, 51, 126, 37, 42, 51, 213, 49, 50, 51, 252, 129, 129, 129, 255, 197, 197, 197, 255, 206, 206, 206, 255, 206, 206, 206, 255, 206, 206, 206, 255, 206, 206, 206, 255, 166, 166, 166, 255, 170, 170, 170, 255, 187, 187, 187, 255, 194, 194, 194, 255, 166, 166, 166, 255, 179, 179, 179, 255, 140, 140, 140, 255, 77, 77, 77, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 26, 26, 51, 10, 19, 28, 47, 27, 19, 28, 52, 54, 19, 30, 52, 93, 20, 31, 51, 147, 40, 44, 51, 228, 70, 70, 70, 255, 148, 148, 148, 255, 205, 205, 205, 255, 205, 205, 205, 255, 205, 205, 205, 255, 166, 166, 166, 255, 163, 163, 163, 255, 128, 128, 128, 255, 61, 61, 61, 255, 51, 51, 51, 255, 51, 51, 51, 255, 40, 44, 51, 249, 30, 37, 51, 236, 18, 29, 51, 210, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 51, 51, 5, 18, 36, 55, 14, 15, 31, 54, 33, 20, 28, 52, 64, 17, 29, 51, 104, 27, 35, 51, 171, 44, 46, 51, 239, 70, 70, 70, 255, 118, 118, 118, 255, 128, 128, 128, 255, 80, 80, 80, 255, 51, 51, 51, 255, 49, 50, 51, 254, 38, 42, 51, 247, 30, 37, 51, 235, 18, 29, 51, 209, 15, 28, 51, 185, 17, 29, 51, 161, 17, 29, 50, 132, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 36, 36, 36, 7, 13, 27, 54, 19, 19, 32, 51, 40, 21, 31, 52, 74, 18, 29, 51, 116, 23, 32, 51, 168, 27, 35, 52, 200, 27, 34, 51, 211, 26, 34, 51, 214, 23, 33, 52, 209, 15, 27, 51, 190, 16, 28, 51, 175, 16, 28, 51, 156, 18, 29, 51, 131, 18, 30, 50, 101, 20, 31, 51, 75, 19, 33, 52, 54, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 85, 3, 28, 28, 57, 9, 22, 33, 55, 23, 22, 33, 50, 46, 17, 28, 52, 73, 18, 29, 50, 97, 18, 29, 52, 113, 19, 30, 51, 119, 18, 29, 51, 116, 17, 29, 51, 104, 18, 30, 50, 86, 18, 30, 52, 69, 20, 29, 49, 52, 23, 30, 53, 34, 24, 36, 49, 21, 20, 39, 59, 13, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64, 64, 4, 23, 23, 46, 11, 24, 24, 49, 21, 24, 32, 48, 32, 25, 31, 50, 41, 23, 34, 51, 45, 24, 30, 47, 43, 21, 28, 50, 36, 20, 31, 51, 25, 14, 28, 43, 18, 21, 21, 43, 12, 36, 36, 36, 7, 0, 0, 85, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceMP3(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 65, 50, 50, 50, 115, 49, 49, 49, 133, 45, 45, 45, 73, 46, 46, 46, 53, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 51, 51, 51, 143, 51, 51, 51, 255, 49, 49, 49, 214, 45, 45, 45, 180, 41, 41, 41, 176, 46, 46, 46, 211, 49, 49, 49, 230, 50, 50, 50, 242, 48, 48, 48, 169, 44, 44, 44, 75, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 207, 48, 48, 48, 187, 14, 14, 14, 115, 0, 0, 0, 133, 0, 0, 0, 122, 0, 0, 0, 103, 0, 0, 0, 98, 0, 0, 0, 112, 11, 11, 11, 144, 34, 34, 34, 192, 50, 50, 50, 245, 47, 47, 47, 206, 31, 31, 31, 53, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 80, 50, 50, 50, 226, 0, 0, 0, 116, 0, 0, 0, 101, 0, 0, 0, 52, 0, 0, 0, 22, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 46, 8, 8, 8, 98, 37, 37, 37, 199, 50, 50, 50, 246, 38, 38, 38, 128, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 146, 41, 41, 41, 160, 0, 0, 0, 122, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0, 42, 24, 24, 24, 135, 49, 49, 49, 247, 36, 36, 36, 157, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 115, 115, 115, 255, 72, 72, 72, 255, 18, 18, 18, 134, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 24, 24, 24, 104, 49, 49, 49, 247, 33, 33, 33, 150, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 67, 162, 162, 162, 255, 88, 88, 88, 255, 18, 18, 18, 184, 0, 0, 0, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 25, 25, 25, 99, 51, 51, 51, 255, 21, 21, 21, 115, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 129, 129, 129, 255, 77, 77, 77, 255, 17, 17, 17, 194, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 39, 39, 39, 148, 46, 46, 46, 230, 0, 0, 0, 61, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 49, 49, 49, 66, 50, 50, 50, 115, 49, 49, 49, 165, 101, 101, 101, 255, 68, 68, 68, 255, 51, 51, 51, 255, 100, 100, 100, 255, 98, 98, 98, 255, 78, 78, 78, 241, 49, 49, 49, 167, 27, 27, 27, 30, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 49, 49, 49, 234, 29, 29, 29, 166, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 49, 49, 49, 66, 49, 49, 49, 100, 49, 49, 49, 132, 49, 49, 49, 164, 85, 85, 85, 195, 90, 90, 90, 225, 111, 111, 111, 255, 118, 118, 118, 255, 141, 141, 141, 255, 147, 147, 147, 255, 67, 67, 67, 255, 70, 70, 70, 255, 57, 57, 57, 255, 65, 65, 65, 255, 140, 140, 140, 255, 158, 158, 158, 255, 156, 156, 156, 255, 136, 136, 136, 255, 68, 68, 68, 218, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 115, 48, 48, 48, 238, 0, 0, 0, 78, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 102, 102, 102, 159, 98, 98, 98, 225, 123, 123, 123, 255, 132, 132, 132, 255, 160, 160, 160, 255, 167, 167, 167, 255, 193, 193, 193, 255, 199, 199, 199, 255, 196, 196, 196, 255, 191, 191, 191, 255, 186, 186, 186, 255, 183, 183, 183, 255, 177, 177, 177, 255, 174, 174, 174, 255, 167, 167, 167, 255, 163, 163, 163, 255, 159, 159, 159, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 157, 157, 157, 255, 160, 160, 160, 255, 106, 106, 106, 255, 17, 17, 17, 146, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 50, 50, 50, 244, 16, 16, 16, 149, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 159, 118, 118, 118, 255, 135, 135, 135, 255, 159, 159, 159, 255, 170, 170, 170, 255, 205, 205, 205, 255, 200, 200, 200, 255, 195, 195, 195, 255, 190, 190, 190, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 129, 129, 129, 255, 73, 128, 61, 255, 91, 100, 90, 255, 162, 162, 162, 255, 107, 107, 107, 255, 17, 17, 17, 188, 0, 0, 0, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 171, 34, 34, 34, 193, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63, 195, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 135, 135, 135, 255, 197, 197, 197, 255, 193, 193, 193, 255, 189, 189, 189, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 140, 155, 133, 255, 200, 255, 171, 255, 41, 96, 38, 255, 164, 164, 164, 255, 108, 108, 108, 255, 17, 17, 17, 194, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 105, 45, 45, 45, 217, 0, 0, 0, 85, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 160, 160, 160, 255, 193, 193, 193, 255, 189, 189, 189, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 157, 157, 157, 255, 147, 152, 145, 255, 94, 139, 77, 255, 93, 102, 92, 255, 166, 166, 166, 255, 109, 109, 109, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 55, 49, 49, 49, 232, 0, 0, 0, 113, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 158, 158, 158, 255, 189, 189, 189, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 153, 153, 153, 255, 155, 155, 155, 255, 157, 157, 157, 255, 160, 160, 160, 255, 162, 162, 162, 255, 164, 164, 164, 255, 166, 166, 166, 255, 168, 168, 168, 255, 111, 111, 111, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 51, 51, 51, 255, 0, 0, 0, 130, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 154, 154, 154, 255, 186, 186, 186, 255, 181, 181, 181, 255, 177, 177, 177, 255, 174, 174, 174, 255, 170, 170, 170, 255, 165, 165, 165, 255, 161, 161, 161, 255, 158, 158, 158, 255, 153, 153, 153, 255, 147, 147, 147, 255, 142, 142, 142, 255, 133, 133, 133, 255, 131, 131, 131, 255, 117, 117, 117, 255, 117, 117, 117, 255, 122, 122, 122, 255, 143, 143, 143, 255, 171, 171, 171, 255, 112, 112, 112, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 140, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 152, 152, 152, 255, 181, 181, 181, 255, 177, 177, 177, 255, 162, 162, 162, 255, 155, 155, 155, 255, 137, 137, 137, 255, 135, 135, 135, 255, 121, 121, 121, 255, 117, 117, 117, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 108, 108, 108, 255, 156, 156, 156, 255, 113, 113, 113, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 143, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 116, 116, 116, 255, 119, 119, 119, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 115, 115, 115, 255, 112, 112, 112, 255, 112, 112, 112, 255, 114, 114, 114, 255, 115, 115, 115, 255, 110, 110, 110, 255, 157, 157, 157, 255, 114, 114, 114, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 143, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 86, 86, 86, 255, 117, 117, 117, 255, 121, 121, 121, 255, 121, 121, 121, 255, 121, 121, 121, 255, 103, 103, 103, 255, 94, 94, 94, 255, 117, 117, 117, 255, 121, 121, 121, 255, 121, 121, 121, 255, 121, 121, 121, 255, 121, 121, 121, 255, 117, 117, 117, 255, 140, 140, 140, 255, 173, 173, 173, 255, 155, 155, 155, 255, 161, 161, 161, 255, 125, 125, 125, 255, 109, 109, 109, 255, 160, 160, 160, 255, 115, 115, 115, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 0, 0, 0, 143, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 127, 127, 127, 255, 127, 127, 127, 255, 127, 127, 127, 255, 108, 108, 108, 255, 137, 137, 137, 255, 117, 117, 117, 255, 100, 100, 100, 255, 127, 127, 127, 255, 127, 127, 127, 255, 127, 127, 127, 255, 127, 127, 127, 255, 130, 130, 130, 255, 189, 189, 189, 255, 126, 126, 126, 255, 155, 155, 155, 255, 186, 186, 186, 255, 177, 177, 177, 255, 110, 110, 110, 255, 150, 150, 150, 255, 116, 116, 116, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 50, 50, 50, 213, 0, 0, 0, 139, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 102, 102, 102, 255, 102, 102, 102, 255, 98, 98, 98, 255, 133, 133, 133, 255, 133, 133, 133, 255, 131, 131, 131, 255, 113, 113, 113, 255, 189, 189, 189, 255, 149, 149, 149, 255, 122, 122, 122, 255, 133, 133, 133, 255, 133, 133, 133, 255, 133, 133, 133, 255, 123, 123, 123, 255, 178, 178, 178, 255, 133, 133, 133, 255, 155, 155, 155, 255, 186, 186, 186, 255, 217, 217, 217, 255, 247, 247, 247, 255, 114, 114, 114, 255, 148, 148, 148, 255, 117, 117, 117, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 84, 48, 48, 48, 204, 0, 0, 0, 125, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 196, 102, 102, 102, 255, 99, 99, 99, 255, 112, 112, 112, 255, 140, 140, 140, 255, 140, 140, 140, 255, 140, 140, 140, 255, 113, 113, 113, 255, 119, 119, 119, 255, 112, 112, 112, 255, 137, 137, 137, 255, 115, 115, 115, 255, 98, 98, 98, 255, 111, 111, 111, 255, 121, 121, 121, 255, 178, 178, 178, 255, 155, 155, 155, 255, 186, 186, 186, 255, 217, 217, 217, 255, 247, 247, 247, 255, 245, 245, 245, 255, 118, 118, 118, 255, 151, 151, 151, 255, 118, 118, 118, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 131, 41, 41, 41, 161, 0, 0, 0, 110, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 89, 89, 89, 255, 134, 134, 134, 255, 136, 136, 136, 255, 107, 107, 107, 255, 95, 95, 95, 255, 127, 127, 127, 255, 161, 161, 161, 255, 159, 159, 159, 255, 125, 125, 125, 255, 197, 197, 197, 255, 143, 143, 143, 255, 115, 115, 115, 255, 124, 124, 124, 255, 160, 160, 160, 255, 186, 186, 186, 255, 217, 217, 217, 255, 247, 247, 247, 255, 245, 245, 245, 255, 216, 216, 216, 255, 121, 121, 121, 255, 154, 154, 154, 255, 119, 119, 119, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 194, 30, 30, 30, 138, 0, 0, 0, 85, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 83, 83, 83, 255, 154, 154, 154, 255, 109, 109, 109, 255, 205, 205, 205, 255, 169, 169, 169, 255, 106, 106, 106, 255, 154, 154, 154, 255, 152, 152, 152, 255, 106, 106, 106, 255, 126, 126, 126, 255, 116, 116, 116, 255, 146, 146, 146, 255, 144, 144, 144, 255, 121, 121, 121, 255, 201, 201, 201, 255, 247, 247, 247, 255, 245, 245, 245, 255, 228, 228, 228, 255, 157, 157, 157, 255, 125, 125, 125, 255, 157, 157, 157, 255, 120, 120, 120, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 255, 7, 7, 7, 124, 0, 0, 0, 61, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 84, 84, 84, 255, 153, 153, 153, 255, 115, 115, 115, 255, 162, 162, 162, 255, 145, 145, 145, 255, 134, 134, 134, 255, 148, 148, 148, 255, 147, 147, 147, 255, 139, 139, 139, 255, 154, 154, 154, 255, 176, 176, 176, 255, 164, 164, 164, 255, 160, 160, 160, 255, 139, 139, 139, 255, 116, 116, 116, 255, 175, 175, 175, 255, 175, 175, 175, 255, 172, 172, 172, 255, 137, 137, 137, 255, 129, 129, 129, 255, 159, 159, 159, 255, 121, 121, 121, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 227, 0, 0, 0, 136, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 105, 105, 105, 255, 167, 167, 167, 255, 140, 140, 140, 255, 129, 129, 129, 255, 140, 140, 140, 255, 147, 147, 147, 255, 157, 157, 157, 255, 152, 152, 152, 255, 137, 137, 137, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 167, 167, 167, 255, 149, 149, 149, 255, 132, 132, 132, 255, 162, 162, 162, 255, 122, 122, 122, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 83, 48, 48, 48, 203, 0, 0, 0, 130, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 107, 107, 107, 255, 173, 173, 173, 255, 173, 173, 173, 255, 182, 182, 182, 255, 176, 176, 176, 255, 116, 116, 116, 255, 165, 165, 165, 255, 158, 158, 158, 255, 155, 155, 155, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 173, 173, 173, 255, 154, 154, 154, 255, 135, 135, 135, 255, 165, 165, 165, 255, 124, 124, 124, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 131, 41, 41, 41, 160, 0, 0, 0, 112, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 108, 108, 108, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 138, 138, 138, 255, 106, 106, 106, 255, 130, 130, 130, 255, 189, 189, 189, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 179, 179, 179, 255, 166, 166, 166, 255, 138, 138, 138, 255, 167, 167, 167, 255, 124, 124, 124, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 39, 39, 39, 167, 0, 0, 0, 90, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 110, 110, 110, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 189, 189, 189, 255, 211, 211, 211, 255, 209, 209, 209, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 185, 185, 185, 255, 159, 159, 159, 255, 176, 176, 176, 255, 185, 185, 185, 255, 185, 185, 185, 255, 180, 180, 180, 255, 142, 142, 142, 255, 171, 171, 171, 255, 125, 125, 125, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 194, 29, 29, 29, 142, 0, 0, 0, 79, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 112, 112, 112, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 173, 173, 173, 255, 147, 147, 147, 255, 121, 121, 121, 255, 86, 86, 86, 255, 51, 51, 51, 255, 51, 51, 51, 255, 156, 156, 156, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 152, 152, 152, 255, 173, 173, 173, 255, 127, 127, 127, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 22, 22, 22, 146, 0, 0, 0, 66, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 86, 86, 86, 255, 198, 198, 198, 255, 198, 198, 198, 255, 198, 198, 198, 255, 179, 179, 179, 255, 151, 151, 151, 255, 124, 124, 124, 255, 87, 87, 87, 255, 60, 60, 60, 255, 50, 62, 51, 255, 49, 72, 50, 255, 48, 83, 50, 255, 47, 94, 50, 255, 46, 108, 49, 255, 49, 80, 50, 255, 133, 133, 133, 255, 198, 198, 198, 255, 198, 198, 198, 255, 198, 198, 198, 255, 170, 170, 170, 255, 176, 176, 176, 255, 128, 128, 128, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 196, 22, 22, 22, 149, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 89, 89, 89, 255, 204, 204, 204, 255, 204, 204, 204, 255, 127, 127, 127, 255, 54, 61, 54, 255, 57, 75, 59, 255, 61, 89, 64, 255, 66, 108, 70, 255, 70, 122, 74, 255, 71, 127, 76, 255, 71, 127, 76, 255, 71, 127, 76, 255, 71, 127, 76, 255, 71, 127, 76, 255, 64, 99, 67, 255, 79, 79, 79, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 197, 197, 197, 255, 180, 180, 180, 255, 129, 129, 129, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 151, 36, 36, 36, 182, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 89, 89, 89, 255, 190, 190, 190, 255, 210, 210, 210, 255, 130, 130, 130, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 95, 145, 103, 255, 92, 139, 100, 255, 51, 51, 51, 255, 190, 190, 190, 255, 210, 210, 210, 255, 210, 210, 210, 255, 210, 210, 210, 255, 201, 201, 201, 255, 130, 130, 130, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 37, 37, 37, 175, 0, 0, 0, 79, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 165, 165, 165, 255, 217, 217, 217, 255, 165, 165, 165, 255, 115, 157, 125, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 119, 164, 130, 255, 102, 136, 110, 255, 96, 118, 101, 255, 125, 139, 128, 255, 139, 142, 139, 255, 176, 176, 176, 255, 206, 206, 206, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 210, 210, 210, 255, 131, 131, 131, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 88, 46, 46, 46, 211, 0, 0, 0, 90, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 147, 147, 147, 255, 223, 223, 223, 255, 202, 202, 202, 255, 115, 142, 124, 255, 144, 183, 157, 255, 132, 167, 144, 255, 109, 134, 117, 255, 136, 154, 142, 255, 145, 152, 148, 255, 170, 170, 170, 255, 202, 202, 202, 255, 221, 221, 221, 255, 215, 215, 215, 255, 210, 210, 210, 255, 206, 206, 206, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 132, 132, 132, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 35, 23, 51, 51, 51, 255, 7, 7, 7, 124, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 116, 116, 116, 255, 234, 234, 234, 255, 234, 234, 234, 255, 167, 172, 169, 255, 173, 175, 174, 255, 200, 200, 200, 255, 234, 234, 234, 255, 225, 225, 225, 255, 216, 216, 216, 255, 207, 207, 207, 255, 201, 201, 201, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 133, 133, 133, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 48, 48, 48, 187, 34, 34, 34, 194, 0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 83, 83, 83, 255, 238, 238, 238, 255, 242, 242, 242, 255, 228, 228, 228, 255, 216, 216, 216, 255, 201, 201, 201, 255, 191, 191, 191, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 216, 216, 216, 255, 135, 135, 135, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 77, 50, 50, 50, 246, 8, 8, 8, 98, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 147, 147, 147, 255, 182, 182, 182, 255, 184, 184, 184, 255, 186, 186, 186, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 187, 187, 187, 255, 167, 167, 167, 255, 135, 135, 135, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 43, 43, 43, 171, 44, 44, 44, 222, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 149, 149, 149, 255, 184, 184, 184, 255, 186, 186, 186, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 208, 208, 208, 255, 210, 210, 210, 255, 212, 212, 212, 255, 214, 214, 214, 255, 216, 216, 216, 255, 167, 167, 167, 255, 132, 132, 132, 255, 115, 115, 115, 255, 9, 9, 9, 183, 0, 0, 0, 57, 50, 50, 50, 131, 51, 51, 51, 225, 51, 51, 51, 255, 50, 50, 50, 212, 49, 49, 49, 166, 45, 45, 45, 90, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 34, 47, 47, 47, 225, 41, 41, 41, 199, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 151, 151, 151, 255, 186, 186, 186, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 147, 147, 147, 255, 90, 90, 90, 255, 91, 91, 91, 255, 91, 91, 91, 255, 163, 163, 163, 255, 216, 216, 216, 255, 218, 218, 218, 255, 210, 210, 210, 255, 147, 147, 147, 255, 41, 41, 41, 239, 25, 25, 25, 198, 50, 50, 50, 229, 49, 49, 49, 214, 25, 25, 25, 130, 0, 0, 0, 125, 24, 24, 24, 173, 48, 48, 48, 239, 51, 51, 51, 255, 49, 49, 49, 232, 49, 49, 49, 198, 50, 50, 50, 196, 45, 45, 45, 108, 13, 13, 13, 61, 46, 46, 46, 228, 47, 47, 47, 225, 26, 26, 26, 62, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 152, 152, 152, 255, 188, 188, 188, 255, 190, 190, 190, 255, 192, 192, 192, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 118, 118, 118, 255, 51, 51, 51, 255, 51, 51, 51, 255, 80, 80, 80, 255, 75, 75, 75, 255, 51, 51, 51, 255, 114, 114, 114, 255, 83, 83, 83, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 45, 45, 45, 236, 31, 31, 31, 156, 6, 6, 6, 129, 0, 0, 0, 118, 24, 24, 24, 100, 50, 50, 50, 242, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 45, 45, 45, 200, 28, 28, 28, 116, 37, 37, 37, 195, 50, 50, 50, 246, 35, 35, 35, 117, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 171, 171, 171, 255, 157, 157, 157, 255, 169, 169, 169, 255, 194, 194, 194, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 202, 202, 202, 255, 205, 205, 205, 255, 61, 61, 61, 255, 58, 58, 58, 255, 171, 171, 171, 255, 202, 202, 202, 255, 157, 157, 157, 255, 123, 123, 123, 255, 51, 51, 51, 255, 49, 49, 49, 251, 51, 51, 51, 255, 51, 51, 51, 255, 46, 46, 46, 247, 33, 33, 33, 221, 49, 49, 49, 247, 51, 51, 51, 255, 50, 50, 50, 243, 50, 50, 50, 213, 51, 51, 51, 255, 45, 45, 45, 235, 27, 27, 27, 214, 17, 17, 17, 197, 17, 17, 17, 191, 17, 17, 17, 189, 28, 28, 28, 206, 49, 49, 49, 249, 48, 48, 48, 238, 40, 40, 40, 184, 22, 22, 22, 150, 50, 50, 50, 246, 22, 22, 22, 109, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 58, 58, 196, 102, 102, 102, 255, 102, 102, 102, 255, 89, 89, 89, 255, 190, 190, 190, 255, 130, 130, 130, 255, 137, 137, 137, 255, 196, 196, 196, 255, 198, 198, 198, 255, 200, 200, 200, 255, 164, 164, 164, 255, 128, 128, 128, 255, 90, 90, 90, 255, 49, 49, 49, 251, 80, 80, 80, 255, 133, 133, 133, 255, 112, 112, 112, 255, 106, 106, 106, 255, 142, 142, 142, 255, 43, 43, 43, 243, 51, 51, 51, 255, 61, 61, 61, 255, 101, 101, 101, 255, 99, 99, 99, 255, 61, 61, 61, 255, 23, 23, 23, 176, 0, 0, 0, 143, 15, 15, 15, 163, 45, 45, 45, 233, 51, 51, 51, 255, 41, 41, 41, 236, 32, 32, 32, 205, 36, 36, 36, 179, 39, 39, 39, 166, 44, 44, 44, 186, 50, 50, 50, 244, 38, 38, 38, 194, 32, 32, 32, 203, 43, 43, 43, 225, 0, 0, 0, 112, 49, 49, 49, 233, 28, 28, 28, 176, 0, 0, 0, 49, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 107, 76, 76, 76, 247, 99, 99, 99, 255, 92, 92, 92, 255, 192, 192, 192, 255, 194, 194, 194, 255, 160, 160, 160, 255, 124, 124, 124, 255, 88, 88, 88, 255, 41, 41, 41, 239, 30, 30, 30, 220, 16, 16, 16, 198, 0, 0, 0, 173, 17, 17, 17, 188, 49, 49, 49, 249, 92, 92, 92, 255, 70, 70, 70, 255, 80, 80, 80, 255, 74, 74, 74, 239, 49, 49, 49, 250, 61, 61, 61, 255, 181, 181, 181, 255, 205, 205, 205, 255, 147, 147, 147, 255, 97, 97, 97, 255, 17, 17, 17, 187, 0, 0, 0, 82, 0, 0, 0, 36, 19, 19, 19, 84, 49, 49, 49, 247, 49, 49, 49, 250, 47, 47, 47, 242, 50, 50, 50, 246, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 47, 47, 47, 240, 32, 32, 32, 180, 47, 47, 47, 227, 48, 48, 48, 219, 0, 0, 0, 134, 0, 0, 0, 61, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 17, 17, 17, 98, 42, 42, 42, 215, 66, 66, 66, 246, 85, 85, 85, 251, 41, 41, 41, 239, 30, 30, 30, 220, 16, 16, 16, 198, 0, 0, 0, 173, 0, 0, 0, 161, 0, 0, 0, 131, 0, 0, 0, 96, 0, 0, 0, 60, 0, 0, 0, 36, 10, 10, 10, 81, 19, 19, 19, 173, 17, 17, 17, 193, 13, 13, 13, 188, 0, 0, 0, 166, 51, 51, 51, 255, 80, 80, 80, 255, 154, 154, 154, 255, 120, 120, 120, 255, 92, 92, 92, 255, 80, 80, 80, 251, 0, 0, 0, 172, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 7, 27, 27, 27, 92, 41, 41, 41, 220, 51, 51, 51, 255, 44, 44, 44, 238, 39, 39, 39, 227, 31, 31, 31, 213, 31, 31, 31, 213, 39, 39, 39, 231, 44, 44, 44, 239, 49, 49, 49, 248, 37, 37, 37, 197, 6, 6, 6, 129, 0, 0, 0, 119, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 49, 0, 0, 0, 107, 0, 0, 0, 145, 0, 0, 0, 152, 0, 0, 0, 130, 0, 0, 0, 96, 0, 0, 0, 60, 0, 0, 0, 30, 0, 0, 0, 18, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 48, 50, 50, 50, 242, 65, 65, 65, 255, 128, 128, 128, 255, 77, 77, 77, 255, 68, 68, 68, 255, 25, 25, 25, 214, 0, 0, 0, 146, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 57, 0, 0, 0, 116, 18, 18, 18, 178, 26, 26, 26, 187, 34, 34, 34, 193, 35, 35, 35, 184, 33, 33, 33, 175, 20, 20, 20, 162, 0, 0, 0, 143, 0, 0, 0, 133, 0, 0, 0, 97, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 15, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 18, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 4, 37, 37, 37, 66, 41, 41, 41, 220, 41, 41, 41, 237, 38, 38, 38, 233, 16, 16, 16, 202, 0, 0, 0, 158, 0, 0, 0, 82, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 52, 0, 0, 0, 70, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 76, 0, 0, 0, 54, 0, 0, 0, 28, 0, 0, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 61, 0, 0, 0, 128, 0, 0, 0, 146, 0, 0, 0, 130, 0, 0, 0, 70, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoMessageSecurity(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 204, 127, 255, 229, 204, 127, 255, 229, 204, 127, 255, 229, 204, 127, 255, 102, 77, 0, 64, 0, 0, 0, 14, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 144, 0, 17, 199, 149, 0, 131, 206, 159, 10, 240, 223, 191, 57, 255, 230, 204, 77, 255, 233, 210, 86, 255, 230, 204, 77, 255, 214, 172, 29, 255, 186, 139, 0, 210, 129, 97, 0, 76, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 148, 0, 83, 206, 159, 10, 240, 236, 217, 96, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 242, 230, 115, 255, 205, 162, 19, 246, 143, 107, 0, 137, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 146, 220, 185, 48, 255, 252, 249, 143, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 252, 249, 143, 255, 206, 167, 30, 248, 87, 65, 0, 112, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 162, 223, 191, 57, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 236, 217, 96, 255, 217, 179, 38, 255, 188, 144, 10, 247, 201, 159, 19, 251, 223, 191, 57, 255, 249, 242, 134, 255, 255, 255, 153, 255, 255, 255, 153, 255, 245, 236, 124, 255, 173, 130, 0, 226, 0, 0, 0, 65, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 98, 220, 185, 48, 255, 255, 255, 153, 255, 255, 255, 153, 255, 252, 249, 143, 255, 214, 172, 29, 255, 118, 89, 0, 220, 19, 14, 0, 173, 0, 0, 0, 148, 0, 0, 0, 136, 78, 58, 0, 169, 199, 154, 10, 249, 249, 239, 131, 255, 255, 249, 147, 255, 255, 248, 146, 255, 220, 182, 45, 255, 70, 52, 0, 140, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 144, 0, 17, 206, 159, 10, 240, 252, 249, 143, 255, 255, 253, 151, 255, 252, 246, 141, 255, 204, 165, 30, 251, 66, 49, 0, 200, 0, 0, 0, 148, 0, 0, 0, 100, 0, 0, 0, 61, 0, 0, 0, 45, 0, 0, 0, 50, 103, 77, 0, 127, 220, 180, 43, 255, 255, 239, 137, 255, 255, 236, 135, 255, 236, 204, 83, 255, 130, 97, 0, 202, 0, 0, 0, 65, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 162, 236, 209, 88, 255, 255, 242, 140, 255, 255, 242, 140, 255, 217, 175, 35, 255, 80, 60, 0, 204, 0, 0, 0, 142, 0, 0, 0, 79, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 22, 190, 143, 0, 222, 252, 224, 119, 255, 255, 226, 125, 255, 245, 212, 101, 255, 146, 110, 0, 221, 0, 0, 0, 91, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 144, 0, 17, 210, 163, 16, 255, 255, 232, 131, 255, 255, 232, 131, 255, 236, 201, 80, 255, 130, 97, 0, 225, 0, 0, 0, 151, 0, 0, 0, 82, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 175, 131, 0, 149, 214, 172, 48, 255, 255, 217, 115, 255, 255, 215, 113, 255, 166, 125, 0, 234, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 148, 0, 116, 233, 193, 69, 255, 255, 223, 122, 255, 255, 222, 121, 255, 201, 154, 15, 251, 19, 14, 0, 173, 0, 0, 0, 103, 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 139, 0, 141, 214, 172, 48, 255, 255, 204, 102, 255, 255, 204, 102, 255, 165, 124, 0, 236, 0, 0, 0, 116, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 148, 0, 181, 249, 207, 98, 255, 255, 214, 112, 255, 239, 194, 76, 255, 130, 98, 0, 224, 0, 0, 0, 138, 0, 0, 0, 57, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 140, 0, 140, 214, 172, 48, 255, 253, 202, 98, 255, 252, 201, 95, 255, 165, 124, 0, 236, 0, 0, 0, 119, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 155, 7, 227, 255, 204, 102, 255, 255, 204, 102, 255, 226, 175, 45, 255, 68, 51, 0, 192, 0, 0, 0, 103, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 140, 0, 140, 214, 172, 48, 255, 248, 197, 87, 255, 248, 197, 86, 255, 165, 124, 0, 236, 0, 0, 0, 119, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 165, 25, 255, 252, 201, 95, 255, 252, 201, 95, 255, 216, 165, 24, 255, 0, 0, 0, 156, 0, 0, 0, 73, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 148, 0, 66, 194, 145, 0, 118, 193, 145, 0, 151, 197, 148, 0, 198, 198, 148, 0, 230, 214, 172, 48, 255, 240, 189, 73, 255, 240, 189, 73, 255, 204, 153, 0, 255, 190, 142, 0, 240, 182, 137, 0, 196, 117, 88, 0, 56, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 164, 22, 255, 247, 196, 85, 255, 246, 195, 84, 255, 215, 164, 21, 255, 0, 0, 0, 146, 0, 0, 0, 53, 192, 144, 0, 85, 196, 147, 0, 149, 198, 148, 0, 197, 204, 153, 0, 255, 217, 177, 37, 255, 226, 192, 61, 255, 233, 197, 73, 255, 242, 208, 94, 255, 223, 178, 44, 255, 214, 172, 48, 255, 235, 184, 62, 255, 235, 184, 62, 255, 214, 163, 19, 255, 242, 191, 77, 255, 228, 177, 48, 255, 201, 151, 3, 245, 103, 77, 0, 95, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 162, 18, 255, 240, 189, 73, 255, 240, 189, 73, 255, 213, 162, 18, 255, 150, 113, 0, 216, 200, 150, 0, 244, 220, 185, 48, 255, 233, 210, 86, 255, 245, 236, 124, 255, 255, 249, 147, 255, 255, 240, 138, 255, 255, 231, 130, 255, 255, 223, 122, 255, 255, 215, 113, 255, 230, 181, 53, 255, 214, 172, 48, 255, 230, 179, 53, 255, 230, 179, 51, 255, 213, 162, 18, 255, 232, 182, 58, 255, 229, 179, 51, 255, 221, 170, 34, 255, 190, 143, 0, 239, 0, 0, 0, 65, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 161, 15, 255, 235, 184, 62, 255, 233, 182, 58, 255, 211, 160, 15, 255, 236, 217, 96, 255, 252, 249, 143, 255, 255, 255, 153, 255, 255, 253, 151, 255, 255, 244, 142, 255, 255, 236, 134, 255, 255, 227, 126, 255, 255, 219, 117, 255, 255, 211, 109, 255, 255, 204, 102, 255, 207, 158, 38, 255, 214, 172, 48, 255, 226, 175, 43, 255, 224, 173, 40, 255, 193, 144, 10, 255, 217, 168, 47, 255, 221, 170, 34, 255, 217, 166, 26, 255, 208, 157, 8, 255, 85, 64, 0, 154, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 98, 210, 159, 13, 255, 230, 179, 51, 255, 228, 177, 48, 255, 210, 159, 12, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 249, 147, 255, 255, 240, 139, 255, 255, 231, 130, 255, 255, 224, 122, 255, 255, 216, 114, 255, 255, 207, 105, 255, 255, 204, 102, 255, 217, 169, 78, 255, 171, 125, 17, 255, 215, 164, 22, 255, 219, 168, 29, 255, 218, 167, 27, 255, 187, 139, 9, 255, 197, 149, 28, 255, 216, 165, 24, 255, 210, 159, 11, 255, 204, 153, 0, 255, 204, 153, 0, 255, 0, 0, 0, 82, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 148, 0, 66, 202, 152, 0, 225, 230, 204, 77, 255, 209, 158, 10, 255, 224, 173, 40, 255, 224, 173, 39, 255, 209, 158, 9, 255, 255, 253, 151, 255, 255, 245, 143, 255, 255, 236, 135, 255, 255, 228, 127, 255, 255, 220, 118, 255, 255, 211, 109, 255, 255, 205, 103, 255, 254, 203, 100, 255, 246, 195, 85, 255, 196, 149, 58, 255, 158, 114, 23, 255, 206, 155, 4, 255, 210, 159, 11, 255, 205, 154, 3, 255, 162, 117, 21, 255, 204, 154, 21, 255, 206, 155, 3, 255, 210, 166, 32, 255, 233, 210, 143, 255, 204, 153, 0, 255, 0, 0, 0, 125, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 150, 0, 146, 217, 179, 38, 255, 249, 242, 134, 255, 255, 255, 153, 255, 208, 157, 7, 255, 219, 168, 29, 255, 219, 168, 29, 255, 207, 156, 6, 255, 255, 241, 139, 255, 255, 232, 131, 255, 255, 224, 122, 255, 255, 216, 114, 255, 255, 207, 105, 255, 255, 204, 102, 255, 251, 200, 94, 255, 243, 192, 79, 255, 241, 190, 75, 255, 227, 178, 58, 255, 160, 117, 38, 255, 141, 100, 32, 255, 154, 110, 26, 255, 150, 108, 29, 255, 185, 137, 14, 255, 204, 153, 0, 255, 226, 197, 107, 255, 251, 247, 231, 255, 242, 228, 184, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 151, 0, 177, 226, 198, 67, 255, 255, 255, 153, 255, 255, 255, 153, 255, 211, 195, 108, 255, 206, 155, 5, 255, 211, 160, 15, 255, 211, 160, 15, 255, 206, 155, 4, 255, 181, 145, 68, 255, 255, 220, 118, 255, 255, 211, 109, 255, 255, 205, 103, 255, 254, 203, 100, 255, 246, 195, 85, 255, 242, 191, 77, 255, 238, 187, 69, 255, 230, 180, 53, 255, 228, 178, 49, 255, 222, 172, 37, 255, 207, 157, 27, 255, 197, 148, 18, 255, 206, 155, 3, 255, 223, 191, 92, 255, 248, 241, 214, 255, 254, 253, 243, 255, 254, 252, 241, 255, 242, 229, 176, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 153, 0, 255, 223, 191, 57, 255, 255, 255, 153, 255, 255, 255, 153, 255, 152, 116, 49, 255, 205, 154, 2, 255, 206, 155, 5, 255, 206, 155, 4, 255, 200, 150, 3, 255, 167, 125, 53, 255, 255, 207, 105, 255, 255, 204, 102, 255, 251, 200, 94, 255, 243, 192, 79, 255, 241, 190, 75, 255, 235, 184, 62, 255, 229, 179, 51, 255, 226, 176, 45, 255, 215, 164, 23, 255, 209, 158, 10, 255, 211, 166, 31, 255, 232, 209, 136, 255, 248, 239, 210, 255, 254, 251, 239, 255, 254, 251, 238, 255, 254, 253, 229, 255, 255, 255, 218, 255, 242, 230, 163, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 175, 35, 255, 223, 185, 52, 255, 223, 191, 57, 255, 252, 248, 143, 255, 167, 133, 61, 255, 158, 114, 23, 255, 171, 125, 17, 255, 171, 125, 17, 255, 157, 113, 32, 255, 218, 170, 81, 255, 254, 203, 100, 255, 246, 195, 85, 255, 242, 191, 77, 255, 239, 188, 71, 255, 226, 176, 45, 255, 218, 168, 29, 255, 215, 167, 31, 255, 220, 184, 76, 255, 232, 208, 134, 255, 248, 239, 208, 255, 254, 251, 238, 255, 254, 251, 238, 255, 254, 251, 236, 255, 254, 252, 224, 255, 255, 255, 210, 255, 255, 255, 207, 255, 255, 255, 207, 255, 242, 230, 155, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 174, 34, 255, 255, 236, 134, 255, 236, 204, 83, 255, 214, 169, 26, 255, 229, 196, 78, 255, 191, 150, 53, 255, 193, 152, 67, 255, 196, 150, 68, 255, 228, 178, 68, 255, 241, 190, 75, 255, 227, 176, 46, 255, 221, 170, 34, 255, 223, 181, 64, 255, 223, 190, 89, 255, 232, 208, 134, 255, 245, 233, 193, 255, 254, 251, 238, 255, 254, 251, 237, 255, 254, 251, 236, 255, 253, 250, 234, 255, 253, 251, 227, 255, 254, 253, 211, 255, 255, 254, 201, 255, 255, 255, 198, 255, 255, 255, 198, 255, 255, 255, 198, 255, 255, 255, 198, 255, 242, 230, 148, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 172, 32, 255, 255, 229, 128, 255, 255, 229, 128, 255, 249, 220, 112, 255, 223, 186, 70, 255, 242, 228, 184, 255, 235, 216, 153, 255, 229, 203, 122, 255, 232, 209, 136, 255, 242, 227, 180, 255, 242, 227, 179, 255, 254, 251, 238, 255, 254, 251, 238, 255, 254, 251, 237, 255, 254, 251, 235, 255, 253, 250, 233, 255, 253, 250, 231, 255, 254, 251, 217, 255, 254, 253, 208, 255, 255, 254, 195, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 188, 255, 242, 230, 141, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 170, 30, 255, 255, 221, 119, 255, 255, 221, 119, 255, 255, 221, 119, 255, 229, 195, 90, 255, 254, 252, 241, 255, 254, 252, 235, 255, 254, 251, 238, 255, 254, 251, 238, 255, 254, 251, 236, 255, 254, 251, 234, 255, 254, 251, 226, 255, 254, 251, 218, 255, 254, 252, 208, 255, 254, 253, 201, 255, 255, 254, 189, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 249, 169, 255, 255, 239, 155, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 255, 255, 179, 255, 242, 230, 134, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 169, 29, 255, 255, 217, 115, 255, 255, 217, 115, 255, 255, 217, 115, 255, 229, 193, 88, 255, 254, 251, 236, 255, 254, 253, 200, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 250, 159, 255, 255, 232, 136, 255, 255, 218, 118, 255, 255, 212, 110, 255, 255, 222, 124, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 255, 255, 166, 255, 242, 230, 125, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 167, 27, 255, 255, 211, 109, 255, 255, 211, 109, 255, 255, 211, 109, 255, 229, 192, 85, 255, 253, 250, 230, 255, 254, 252, 192, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 247, 147, 255, 220, 195, 119, 255, 155, 143, 113, 255, 129, 122, 105, 255, 225, 204, 122, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 255, 255, 156, 255, 242, 230, 117, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 166, 26, 255, 255, 204, 102, 255, 255, 204, 102, 255, 255, 204, 102, 255, 229, 190, 82, 255, 253, 248, 223, 255, 254, 252, 188, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 249, 147, 255, 189, 175, 120, 255, 129, 122, 105, 255, 139, 124, 94, 255, 228, 209, 122, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 255, 255, 153, 255, 242, 230, 115, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 165, 25, 255, 254, 203, 100, 255, 254, 203, 100, 255, 254, 203, 100, 255, 229, 189, 80, 255, 252, 247, 218, 255, 254, 250, 183, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 248, 146, 255, 193, 180, 120, 255, 139, 124, 94, 255, 149, 126, 81, 255, 230, 210, 120, 255, 255, 249, 147, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 255, 252, 150, 255, 242, 227, 113, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 165, 23, 255, 250, 199, 93, 255, 250, 199, 93, 255, 250, 199, 93, 255, 228, 188, 77, 255, 252, 247, 213, 255, 254, 248, 180, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 248, 145, 255, 190, 177, 115, 255, 147, 126, 84, 255, 156, 127, 70, 255, 199, 172, 88, 255, 255, 244, 142, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 255, 249, 147, 255, 242, 225, 110, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 164, 21, 255, 246, 195, 83, 255, 246, 195, 83, 255, 246, 195, 83, 255, 227, 187, 73, 255, 252, 246, 209, 255, 254, 246, 175, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 248, 145, 255, 233, 230, 142, 255, 147, 126, 84, 255, 156, 127, 70, 255, 163, 128, 56, 255, 173, 136, 58, 255, 246, 236, 136, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 255, 246, 143, 255, 242, 223, 107, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 163, 20, 255, 244, 193, 79, 255, 244, 193, 79, 255, 244, 193, 79, 255, 226, 186, 70, 255, 252, 245, 203, 255, 254, 244, 172, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 249, 147, 255, 196, 183, 112, 255, 156, 127, 70, 255, 163, 128, 56, 255, 173, 136, 58, 255, 182, 142, 60, 255, 250, 246, 146, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 255, 242, 140, 255, 242, 220, 105, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 162, 18, 255, 240, 189, 72, 255, 240, 189, 72, 255, 240, 189, 72, 255, 225, 185, 67, 255, 252, 243, 197, 255, 254, 241, 166, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 243, 141, 255, 193, 172, 97, 255, 163, 128, 56, 255, 173, 136, 58, 255, 182, 142, 60, 255, 214, 182, 88, 255, 255, 243, 141, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 255, 238, 136, 255, 242, 217, 102, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 161, 16, 255, 236, 185, 65, 255, 236, 185, 65, 255, 236, 185, 65, 255, 224, 183, 65, 255, 252, 243, 192, 255, 253, 239, 162, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 236, 134, 255, 238, 216, 120, 255, 183, 147, 67, 255, 182, 142, 60, 255, 196, 152, 63, 255, 245, 218, 116, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 255, 235, 133, 255, 242, 215, 100, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 160, 15, 255, 233, 182, 58, 255, 233, 182, 58, 255, 233, 182, 58, 255, 224, 185, 55, 255, 255, 253, 157, 255, 255, 244, 142, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 235, 191, 92, 255, 196, 152, 63, 255, 208, 161, 65, 255, 245, 218, 116, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 255, 233, 131, 255, 242, 213, 98, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 159, 13, 255, 230, 179, 51, 255, 230, 179, 51, 255, 230, 179, 51, 255, 223, 185, 53, 255, 255, 255, 163, 255, 255, 242, 147, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 228, 127, 255, 235, 191, 92, 255, 206, 160, 65, 255, 218, 169, 67, 255, 249, 212, 109, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 255, 229, 128, 255, 242, 210, 96, 255, 204, 153, 0, 255, 0, 0, 0, 143, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 159, 11, 255, 226, 175, 44, 255, 226, 175, 44, 255, 226, 175, 44, 255, 222, 184, 55, 255, 255, 255, 174, 255, 255, 240, 151, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 222, 120, 255, 235, 191, 92, 255, 215, 167, 66, 255, 235, 183, 74, 255, 251, 211, 108, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 255, 225, 123, 255, 249, 216, 108, 255, 214, 167, 23, 255, 79, 59, 0, 206, 0, 0, 0, 127, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 158, 9, 255, 223, 172, 37, 255, 223, 172, 37, 255, 223, 172, 37, 255, 222, 183, 56, 255, 255, 255, 187, 255, 255, 239, 156, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 218, 116, 255, 250, 203, 101, 255, 250, 203, 101, 255, 255, 212, 110, 255, 255, 218, 116, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 255, 222, 120, 255, 233, 192, 68, 255, 188, 143, 8, 247, 51, 38, 0, 192, 0, 0, 0, 142, 0, 0, 0, 76, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 157, 8, 255, 219, 168, 30, 255, 219, 168, 30, 255, 219, 168, 30, 255, 221, 182, 58, 255, 255, 255, 204, 255, 255, 237, 161, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 217, 115, 255, 255, 212, 110, 255, 255, 216, 114, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 255, 219, 117, 255, 242, 203, 88, 255, 210, 162, 15, 255, 130, 97, 0, 225, 19, 14, 0, 172, 0, 0, 0, 126, 0, 0, 0, 70, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 149, 2, 215, 214, 163, 20, 255, 216, 165, 24, 255, 216, 165, 24, 255, 220, 181, 59, 255, 255, 255, 216, 255, 255, 236, 166, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 255, 216, 114, 255, 252, 212, 107, 255, 236, 193, 72, 255, 210, 161, 14, 255, 142, 106, 0, 229, 36, 27, 0, 182, 0, 0, 0, 143, 0, 0, 0, 100, 0, 0, 0, 51, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 55, 0, 45, 186, 139, 0, 228, 210, 159, 12, 255, 213, 162, 19, 255, 219, 181, 61, 255, 255, 255, 228, 255, 255, 234, 170, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 255, 213, 111, 255, 239, 194, 76, 255, 223, 176, 42, 255, 188, 142, 7, 247, 119, 89, 0, 219, 37, 28, 0, 178, 0, 0, 0, 143, 0, 0, 0, 106, 0, 0, 0, 63, 0, 0, 0, 28, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 37, 0, 67, 176, 132, 0, 221, 206, 155, 4, 255, 218, 180, 62, 255, 255, 255, 240, 255, 255, 232, 174, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 255, 208, 106, 255, 252, 205, 99, 255, 242, 194, 80, 255, 230, 181, 53, 255, 217, 167, 27, 255, 174, 130, 0, 243, 131, 98, 0, 222, 53, 40, 0, 185, 0, 0, 0, 151, 0, 0, 0, 127, 0, 0, 0, 95, 0, 0, 0, 61, 0, 0, 0, 31, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 52, 161, 121, 0, 202, 214, 172, 48, 255, 249, 242, 223, 255, 249, 224, 167, 255, 245, 196, 85, 255, 242, 193, 79, 255, 242, 193, 79, 255, 230, 181, 53, 255, 223, 174, 40, 255, 214, 163, 20, 255, 164, 123, 0, 238, 131, 98, 0, 222, 83, 62, 0, 196, 20, 15, 0, 164, 0, 0, 0, 144, 0, 0, 0, 124, 0, 0, 0, 98, 0, 0, 0, 68, 0, 0, 0, 43, 0, 0, 0, 23, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 45, 134, 101, 0, 170, 129, 97, 0, 203, 167, 125, 0, 233, 155, 116, 0, 230, 122, 91, 0, 215, 123, 92, 0, 212, 98, 73, 0, 200, 55, 41, 0, 178, 0, 0, 0, 152, 0, 0, 0, 139, 0, 0, 0, 121, 0, 0, 0, 100, 0, 0, 0, 77, 0, 0, 0, 55, 0, 0, 0, 39, 0, 0, 0, 25, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 37, 0, 0, 0, 76, 0, 0, 0, 100, 0, 0, 0, 112, 0, 0, 0, 110, 0, 0, 0, 100, 0, 0, 0, 92, 0, 0, 0, 82, 0, 0, 0, 65, 0, 0, 0, 49, 0, 0, 0, 36, 0, 0, 0, 25, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 0, 25, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 25, 0, 0, 0, 22, 0, 0, 0, 17, 0, 0, 0, 9, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DevicePrinter(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 22, 0, 0, 0, 27, 46, 46, 69, 71, 59, 59, 88, 111, 58, 58, 86, 113, 55, 55, 83, 118, 73, 73, 109, 179, 72, 72, 107, 182, 72, 72, 107, 182, 74, 74, 112, 196, 86, 86, 129, 227, 86, 86, 128, 228, 117, 117, 150, 229, 130, 130, 160, 238, 140, 140, 179, 255, 140, 140, 179, 255, 140, 140, 179, 255, 79, 79, 118, 206, 30, 30, 44, 55, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 67, 67, 100, 98, 99, 99, 148, 247, 140, 140, 179, 255, 177, 178, 204, 255, 177, 178, 204, 255, 187, 187, 210, 255, 215, 216, 230, 255, 215, 216, 230, 255, 215, 216, 230, 255, 234, 235, 242, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 225, 226, 236, 255, 101, 102, 145, 231, 31, 31, 46, 53, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 49, 73, 100, 111, 111, 159, 255, 221, 224, 236, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 248, 251, 255, 255, 202, 204, 223, 255, 78, 78, 116, 188, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 74, 74, 111, 176, 129, 130, 172, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 243, 249, 255, 255, 137, 139, 179, 255, 42, 42, 64, 77, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 94, 94, 142, 241, 187, 193, 217, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 238, 247, 255, 255, 204, 211, 230, 255, 81, 81, 122, 200, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 75, 75, 112, 175, 118, 120, 166, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 232, 244, 255, 255, 114, 116, 160, 249, 32, 32, 48, 51, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 30, 44, 55, 102, 102, 153, 255, 204, 215, 236, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 227, 241, 255, 255, 172, 180, 210, 255, 68, 68, 101, 145, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 84, 84, 126, 213, 154, 162, 198, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 221, 238, 255, 255, 199, 213, 236, 255, 84, 84, 126, 213, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 68, 68, 101, 145, 116, 119, 166, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 215, 235, 255, 255, 116, 119, 166, 255, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 31, 46, 53, 102, 102, 153, 255, 197, 216, 242, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 210, 232, 255, 255, 143, 151, 191, 255, 60, 60, 90, 109, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 87, 87, 130, 224, 159, 174, 210, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 204, 230, 255, 255, 159, 174, 210, 255, 74, 74, 111, 176, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 74, 74, 111, 176, 132, 141, 185, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 198, 227, 255, 255, 174, 196, 230, 255, 87, 87, 130, 224, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 60, 60, 90, 109, 113, 117, 166, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 193, 224, 255, 255, 98, 98, 147, 249, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 102, 102, 153, 255, 182, 214, 249, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 187, 221, 255, 255, 113, 117, 166, 255, 47, 47, 71, 69, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 87, 87, 130, 224, 161, 189, 230, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 181, 218, 255, 255, 178, 216, 255, 255, 174, 215, 255, 255, 120, 130, 179, 255, 54, 54, 82, 120, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 76, 76, 115, 191, 139, 159, 204, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 176, 215, 255, 255, 170, 209, 255, 255, 167, 206, 255, 255, 165, 203, 255, 255, 160, 201, 255, 255, 157, 200, 255, 255, 153, 198, 255, 255, 153, 198, 255, 255, 153, 198, 255, 255, 137, 159, 210, 255, 140, 140, 159, 255, 116, 116, 116, 224, 77, 77, 77, 170, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 53, 53, 53, 93, 75, 75, 100, 195, 123, 137, 185, 255, 167, 207, 255, 255, 166, 205, 255, 255, 162, 196, 255, 255, 159, 192, 255, 255, 157, 188, 255, 255, 154, 183, 255, 255, 153, 182, 255, 255, 153, 182, 255, 255, 153, 182, 255, 255, 159, 187, 255, 255, 179, 201, 255, 255, 198, 215, 255, 255, 210, 225, 255, 255, 230, 239, 255, 255, 242, 244, 248, 255, 242, 242, 242, 255, 232, 232, 232, 255, 204, 204, 204, 255, 87, 87, 87, 224, 0, 0, 0, 33, 0, 0, 0, 12, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 100, 100, 100, 219, 159, 159, 159, 255, 179, 179, 185, 255, 151, 155, 198, 255, 159, 172, 255, 255, 153, 166, 255, 255, 153, 166, 255, 255, 153, 166, 255, 255, 179, 188, 255, 255, 191, 199, 255, 255, 204, 211, 255, 255, 230, 233, 255, 255, 249, 249, 255, 255, 237, 237, 237, 255, 229, 229, 229, 255, 218, 218, 218, 255, 209, 209, 209, 255, 201, 201, 201, 255, 202, 202, 202, 255, 206, 206, 206, 255, 211, 211, 211, 255, 215, 215, 215, 255, 102, 102, 102, 255, 80, 80, 80, 204, 75, 75, 75, 175, 65, 65, 65, 126, 33, 33, 33, 50, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 87, 87, 87, 223, 223, 223, 223, 255, 251, 251, 251, 255, 252, 252, 252, 255, 254, 254, 254, 255, 249, 249, 255, 255, 242, 242, 255, 255, 243, 243, 243, 255, 232, 232, 232, 255, 211, 211, 211, 255, 198, 198, 198, 255, 191, 191, 191, 255, 180, 180, 180, 255, 184, 184, 184, 255, 189, 189, 189, 255, 192, 192, 192, 255, 197, 197, 197, 255, 202, 202, 202, 255, 206, 206, 206, 255, 211, 211, 211, 255, 215, 215, 215, 255, 220, 220, 220, 255, 124, 124, 124, 255, 158, 158, 158, 255, 173, 173, 173, 255, 160, 160, 160, 255, 106, 106, 106, 249, 80, 80, 80, 200, 43, 43, 43, 75, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 80, 80, 203, 207, 207, 207, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 243, 243, 243, 255, 180, 180, 180, 255, 161, 161, 161, 255, 166, 166, 166, 255, 172, 172, 172, 255, 176, 176, 176, 255, 180, 180, 180, 255, 184, 184, 184, 255, 189, 189, 189, 255, 192, 192, 192, 255, 197, 197, 197, 255, 202, 202, 202, 255, 206, 206, 206, 255, 211, 211, 211, 255, 187, 187, 187, 255, 168, 168, 168, 255, 147, 147, 147, 255, 109, 109, 109, 255, 196, 196, 196, 255, 198, 198, 198, 255, 173, 173, 173, 255, 207, 207, 207, 255, 173, 173, 173, 255, 104, 104, 104, 248, 68, 68, 68, 161, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 24, 27, 27, 27, 58, 78, 78, 78, 206, 185, 185, 185, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 198, 198, 198, 255, 166, 166, 166, 255, 172, 172, 172, 255, 176, 176, 176, 255, 180, 180, 180, 255, 184, 184, 184, 255, 189, 189, 189, 255, 192, 192, 192, 255, 179, 179, 179, 255, 164, 164, 164, 255, 147, 147, 147, 255, 122, 122, 122, 255, 119, 119, 119, 255, 144, 144, 144, 255, 169, 169, 169, 255, 202, 202, 202, 255, 226, 226, 226, 255, 234, 234, 234, 255, 233, 233, 233, 255, 227, 227, 227, 255, 187, 187, 187, 255, 182, 182, 182, 255, 216, 216, 216, 255, 122, 122, 122, 255, 78, 78, 78, 199, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 29, 29, 29, 53, 73, 73, 73, 187, 93, 93, 93, 248, 103, 103, 103, 255, 106, 106, 106, 255, 133, 133, 133, 255, 164, 164, 164, 255, 164, 164, 164, 255, 194, 194, 194, 255, 223, 223, 223, 255, 195, 195, 195, 255, 172, 172, 172, 255, 176, 176, 176, 255, 170, 170, 170, 255, 158, 158, 158, 255, 145, 145, 145, 255, 124, 124, 124, 255, 111, 111, 111, 255, 137, 137, 137, 255, 171, 171, 171, 255, 196, 196, 196, 255, 221, 221, 221, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 201, 201, 201, 255, 172, 172, 172, 255, 219, 219, 219, 255, 121, 121, 121, 255, 77, 77, 77, 199, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 39, 39, 39, 77, 87, 87, 87, 240, 132, 132, 132, 255, 183, 183, 183, 255, 205, 205, 205, 255, 203, 203, 203, 255, 210, 210, 210, 255, 202, 202, 202, 255, 174, 174, 174, 255, 146, 146, 146, 255, 123, 123, 123, 255, 149, 149, 149, 255, 124, 124, 124, 255, 107, 107, 107, 255, 138, 138, 138, 255, 164, 164, 164, 255, 190, 190, 190, 255, 225, 225, 225, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 228, 228, 228, 255, 190, 190, 190, 255, 189, 189, 189, 255, 217, 217, 217, 255, 102, 102, 102, 255, 65, 65, 65, 161, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 83, 83, 83, 231, 141, 141, 141, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 213, 213, 213, 255, 241, 241, 241, 255, 225, 225, 225, 255, 182, 182, 182, 255, 146, 146, 146, 255, 219, 219, 219, 255, 245, 245, 245, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 228, 228, 228, 255, 219, 219, 219, 255, 199, 199, 199, 255, 153, 153, 153, 255, 220, 220, 220, 255, 175, 175, 175, 255, 89, 89, 89, 248, 38, 38, 38, 77, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 58, 58, 58, 125, 99, 99, 99, 255, 215, 215, 215, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 207, 207, 207, 255, 239, 239, 239, 255, 247, 247, 247, 255, 205, 205, 205, 255, 176, 176, 176, 255, 239, 239, 239, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 225, 225, 225, 255, 205, 205, 205, 255, 181, 181, 181, 255, 162, 162, 162, 255, 171, 171, 171, 255, 189, 189, 189, 255, 211, 211, 211, 255, 224, 224, 224, 255, 222, 222, 222, 255, 107, 107, 107, 255, 74, 74, 74, 211, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 65, 65, 65, 173, 123, 123, 123, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 207, 207, 207, 255, 238, 238, 238, 255, 245, 245, 245, 255, 210, 210, 210, 255, 170, 170, 170, 255, 237, 237, 237, 255, 241, 241, 241, 255, 241, 241, 241, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 228, 228, 228, 255, 207, 207, 207, 255, 187, 187, 187, 255, 167, 167, 167, 255, 167, 167, 167, 255, 191, 191, 191, 255, 209, 209, 209, 255, 226, 226, 226, 255, 225, 225, 225, 255, 225, 225, 225, 255, 224, 224, 224, 255, 222, 222, 222, 255, 221, 221, 221, 255, 150, 150, 150, 255, 88, 88, 88, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 63, 63, 63, 176, 122, 122, 122, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 207, 207, 207, 255, 237, 237, 237, 255, 243, 243, 243, 255, 209, 209, 209, 255, 170, 170, 170, 255, 235, 235, 235, 255, 239, 239, 239, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 214, 214, 214, 255, 194, 194, 194, 255, 173, 173, 173, 255, 168, 168, 168, 255, 187, 187, 187, 255, 206, 206, 206, 255, 224, 224, 224, 255, 228, 228, 228, 255, 228, 228, 228, 255, 226, 226, 226, 255, 225, 225, 225, 255, 225, 225, 225, 255, 216, 216, 216, 255, 204, 204, 204, 255, 193, 193, 193, 255, 185, 185, 185, 255, 137, 137, 137, 255, 87, 87, 87, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 62, 62, 62, 176, 122, 122, 122, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 212, 212, 212, 255, 240, 240, 240, 255, 241, 241, 241, 255, 202, 202, 202, 255, 185, 185, 185, 255, 238, 238, 238, 255, 222, 222, 222, 255, 200, 200, 200, 255, 174, 174, 174, 255, 163, 163, 163, 255, 183, 183, 183, 255, 208, 208, 208, 255, 226, 226, 226, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 228, 228, 228, 255, 228, 228, 228, 255, 223, 223, 223, 255, 210, 210, 210, 255, 196, 196, 196, 255, 185, 185, 185, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 137, 137, 137, 255, 85, 85, 85, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 60, 60, 60, 176, 121, 121, 121, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 221, 221, 221, 255, 241, 241, 241, 255, 239, 239, 239, 255, 174, 174, 174, 255, 169, 169, 169, 255, 184, 184, 184, 255, 204, 204, 204, 255, 224, 224, 224, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 231, 231, 231, 255, 230, 230, 230, 255, 229, 229, 229, 255, 218, 218, 218, 255, 200, 200, 200, 255, 184, 184, 184, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 180, 180, 180, 255, 155, 155, 155, 255, 129, 129, 129, 255, 93, 93, 93, 255, 83, 83, 83, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 59, 59, 59, 176, 92, 92, 92, 255, 127, 127, 127, 255, 184, 184, 184, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 231, 231, 231, 255, 238, 238, 238, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 231, 231, 231, 255, 222, 222, 222, 255, 206, 206, 206, 255, 191, 191, 191, 255, 173, 173, 173, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 171, 171, 171, 255, 148, 148, 148, 255, 123, 123, 123, 255, 102, 102, 102, 255, 113, 113, 113, 255, 142, 142, 142, 255, 126, 126, 126, 255, 81, 81, 81, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 59, 59, 59, 173, 111, 111, 111, 255, 171, 171, 171, 255, 111, 111, 111, 255, 118, 118, 118, 255, 182, 182, 182, 255, 221, 221, 221, 255, 227, 227, 227, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 214, 214, 214, 255, 238, 238, 238, 255, 237, 237, 237, 255, 235, 235, 235, 255, 234, 234, 234, 255, 234, 234, 234, 255, 215, 215, 215, 255, 193, 193, 193, 255, 176, 176, 176, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 163, 163, 163, 255, 141, 141, 141, 255, 117, 117, 117, 255, 102, 102, 102, 255, 118, 118, 118, 255, 145, 145, 145, 255, 147, 147, 147, 255, 85, 111, 72, 255, 94, 120, 82, 255, 119, 119, 119, 255, 79, 79, 79, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 44, 44, 44, 113, 78, 78, 78, 255, 242, 242, 242, 255, 231, 231, 231, 255, 178, 178, 178, 255, 119, 119, 119, 255, 110, 110, 110, 255, 165, 165, 165, 255, 219, 219, 219, 255, 224, 224, 224, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 210, 210, 210, 255, 226, 226, 226, 255, 226, 226, 226, 255, 200, 200, 200, 255, 182, 182, 182, 255, 164, 164, 164, 255, 162, 162, 162, 255, 164, 164, 164, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 151, 151, 151, 255, 134, 134, 134, 255, 111, 111, 111, 255, 102, 102, 102, 255, 117, 117, 117, 255, 148, 148, 148, 255, 175, 175, 175, 255, 187, 187, 187, 255, 189, 189, 189, 255, 107, 120, 101, 255, 153, 255, 102, 255, 128, 204, 89, 255, 101, 101, 101, 255, 78, 78, 78, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 45, 45, 45, 109, 76, 76, 76, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 185, 185, 185, 255, 118, 118, 118, 255, 102, 102, 102, 255, 148, 148, 148, 255, 209, 209, 209, 255, 221, 221, 221, 255, 218, 218, 218, 255, 215, 215, 215, 255, 212, 212, 212, 255, 182, 182, 182, 255, 156, 156, 156, 255, 158, 158, 158, 255, 160, 160, 160, 255, 162, 162, 162, 255, 164, 164, 164, 255, 165, 165, 165, 255, 163, 163, 163, 255, 148, 148, 148, 255, 128, 128, 128, 255, 106, 106, 106, 255, 102, 102, 102, 255, 126, 126, 126, 255, 151, 151, 151, 255, 176, 176, 176, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 192, 192, 192, 255, 111, 117, 107, 255, 128, 204, 89, 255, 111, 162, 86, 255, 119, 119, 119, 255, 76, 76, 76, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 44, 44, 44, 109, 74, 74, 74, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 183, 183, 183, 255, 134, 134, 134, 255, 102, 102, 102, 255, 148, 148, 148, 255, 191, 191, 191, 255, 218, 218, 218, 255, 215, 215, 215, 255, 184, 184, 184, 255, 158, 158, 158, 255, 160, 160, 160, 255, 162, 162, 162, 255, 160, 160, 160, 255, 141, 141, 141, 255, 122, 122, 122, 255, 102, 102, 102, 255, 106, 106, 106, 255, 125, 125, 125, 255, 148, 148, 148, 255, 173, 173, 173, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 192, 192, 192, 255, 194, 194, 194, 255, 187, 187, 187, 255, 161, 161, 161, 255, 181, 181, 181, 255, 137, 137, 137, 255, 74, 74, 74, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 42, 42, 42, 109, 72, 72, 72, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 197, 197, 197, 255, 134, 134, 134, 255, 102, 102, 102, 255, 132, 132, 132, 255, 181, 181, 181, 255, 187, 187, 187, 255, 152, 152, 152, 255, 136, 136, 136, 255, 113, 113, 113, 255, 102, 102, 102, 255, 106, 106, 106, 255, 128, 128, 128, 255, 150, 150, 150, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 192, 192, 192, 255, 194, 194, 194, 255, 187, 187, 187, 255, 142, 142, 142, 255, 181, 181, 181, 255, 201, 201, 201, 255, 137, 137, 137, 255, 72, 72, 72, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 41, 41, 41, 109, 70, 70, 70, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 204, 204, 204, 255, 148, 148, 148, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 110, 110, 110, 255, 130, 130, 130, 255, 147, 147, 147, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 187, 187, 187, 255, 189, 189, 189, 255, 182, 182, 182, 255, 159, 159, 159, 255, 101, 101, 101, 255, 51, 51, 51, 255, 51, 51, 51, 255, 164, 164, 164, 255, 203, 203, 203, 255, 128, 128, 128, 255, 70, 70, 70, 255, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 41, 41, 41, 107, 68, 68, 68, 255, 255, 255, 255, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 209, 209, 209, 255, 147, 147, 147, 255, 152, 152, 152, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 183, 183, 183, 255, 185, 185, 185, 255, 176, 176, 176, 255, 152, 152, 152, 255, 127, 127, 127, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 129, 129, 129, 255, 102, 102, 102, 255, 103, 103, 103, 255, 74, 74, 74, 255, 62, 62, 62, 255, 62, 62, 62, 249, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 36, 36, 36, 87, 66, 66, 66, 255, 113, 113, 113, 255, 220, 220, 220, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 227, 227, 227, 255, 194, 194, 194, 255, 165, 165, 165, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 171, 171, 171, 255, 140, 140, 140, 255, 111, 111, 111, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 165, 165, 165, 255, 176, 176, 176, 255, 187, 187, 187, 255, 179, 179, 179, 255, 149, 149, 149, 255, 108, 108, 108, 255, 38, 38, 38, 170, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 27, 27, 27, 77, 54, 54, 54, 211, 65, 65, 65, 255, 136, 136, 136, 255, 241, 241, 241, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 229, 229, 229, 255, 197, 197, 197, 255, 167, 167, 167, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 164, 164, 164, 255, 131, 131, 131, 255, 91, 91, 91, 255, 81, 81, 81, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 165, 165, 165, 255, 176, 176, 176, 255, 187, 187, 187, 255, 196, 196, 196, 255, 224, 224, 224, 255, 244, 244, 244, 255, 255, 255, 255, 255, 38, 38, 38, 174, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 22, 35, 35, 35, 116, 59, 59, 59, 240, 74, 74, 74, 255, 157, 157, 157, 255, 250, 250, 250, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 231, 231, 231, 255, 198, 198, 198, 255, 169, 169, 169, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 99, 99, 99, 255, 60, 60, 60, 255, 69, 69, 69, 255, 81, 81, 81, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 165, 165, 165, 255, 176, 176, 176, 255, 195, 195, 195, 255, 227, 227, 227, 255, 252, 252, 252, 255, 255, 255, 255, 255, 230, 230, 230, 255, 153, 153, 153, 255, 35, 35, 35, 141, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 31, 42, 42, 42, 161, 59, 59, 59, 248, 84, 84, 84, 255, 179, 179, 179, 255, 247, 247, 247, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 234, 234, 234, 255, 201, 201, 201, 255, 172, 172, 172, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 92, 92, 92, 255, 69, 69, 69, 255, 81, 81, 81, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 153, 153, 153, 255, 170, 170, 170, 255, 205, 205, 205, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 204, 204, 255, 114, 114, 114, 249, 39, 39, 39, 188, 22, 22, 22, 75, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 17, 17, 17, 56, 47, 47, 47, 200, 59, 59, 59, 255, 106, 106, 106, 255, 200, 200, 200, 255, 245, 245, 245, 255, 242, 242, 242, 255, 239, 239, 239, 255, 237, 237, 237, 255, 204, 204, 204, 255, 174, 174, 174, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 181, 181, 181, 255, 136, 136, 177, 255, 108, 108, 127, 255, 91, 91, 91, 255, 100, 100, 100, 255, 112, 112, 112, 255, 122, 122, 122, 255, 131, 131, 131, 255, 143, 143, 143, 255, 171, 171, 171, 255, 219, 219, 219, 255, 250, 250, 250, 255, 255, 255, 255, 255, 242, 242, 242, 255, 166, 166, 166, 255, 74, 74, 74, 241, 37, 37, 37, 175, 15, 15, 15, 53, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 28, 28, 28, 97, 49, 49, 49, 222, 57, 57, 57, 255, 128, 128, 128, 255, 221, 221, 221, 255, 242, 242, 242, 255, 239, 239, 239, 255, 206, 206, 206, 255, 176, 176, 176, 255, 178, 178, 178, 255, 180, 180, 180, 255, 165, 165, 165, 255, 119, 119, 119, 255, 128, 128, 166, 255, 153, 153, 204, 255, 146, 146, 191, 255, 127, 127, 146, 255, 122, 122, 122, 255, 138, 138, 138, 255, 192, 192, 192, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 128, 128, 128, 255, 60, 60, 60, 232, 34, 34, 34, 145, 0, 0, 0, 30, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 27, 37, 37, 37, 147, 51, 51, 51, 241, 67, 67, 67, 255, 149, 149, 149, 255, 231, 231, 231, 255, 208, 208, 208, 255, 170, 170, 170, 255, 133, 133, 133, 255, 87, 87, 87, 255, 55, 55, 55, 255, 55, 55, 55, 255, 52, 52, 52, 255, 86, 86, 102, 255, 140, 140, 185, 255, 153, 153, 204, 255, 150, 150, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 179, 179, 255, 102, 102, 102, 255, 42, 42, 42, 212, 29, 29, 29, 112, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 17, 17, 17, 53, 39, 39, 39, 176, 54, 54, 54, 255, 65, 65, 65, 255, 116, 116, 116, 255, 61, 61, 61, 255, 54, 54, 54, 255, 54, 54, 54, 255, 44, 44, 44, 213, 34, 34, 34, 128, 0, 0, 0, 40, 33, 33, 33, 147, 47, 47, 47, 241, 89, 89, 108, 255, 140, 140, 185, 255, 236, 236, 236, 255, 153, 153, 153, 255, 77, 77, 77, 255, 41, 41, 41, 200, 21, 21, 21, 77, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 15, 22, 22, 22, 77, 43, 43, 43, 211, 52, 52, 52, 255, 48, 48, 48, 241, 36, 36, 36, 161, 16, 16, 16, 53, 0, 0, 0, 18, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 33, 37, 37, 37, 175, 49, 49, 49, 248, 49, 49, 49, 248, 37, 37, 37, 176, 15, 15, 15, 55, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19, 26, 26, 26, 63, 0, 0, 0, 24, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 19, 19, 19, 42, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceCD(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 48, 100, 100, 100, 98, 99, 99, 99, 132, 99, 99, 99, 164, 100, 100, 100, 195, 99, 99, 99, 196, 99, 99, 99, 196, 98, 98, 98, 166, 97, 97, 97, 135, 95, 95, 95, 103, 89, 89, 89, 55, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 64, 101, 101, 101, 161, 101, 101, 101, 225, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 99, 99, 99, 229, 96, 96, 96, 168, 87, 87, 87, 75, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 96, 102, 102, 102, 224, 102, 102, 102, 255, 102, 102, 102, 255, 129, 129, 131, 255, 165, 165, 169, 255, 201, 201, 207, 255, 226, 226, 236, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 217, 217, 236, 255, 200, 200, 217, 255, 166, 166, 179, 255, 126, 126, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 98, 98, 98, 231, 87, 87, 87, 113, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 64, 102, 102, 102, 224, 102, 102, 102, 255, 112, 112, 112, 255, 168, 168, 169, 255, 230, 230, 236, 255, 247, 247, 255, 255, 246, 246, 255, 255, 244, 244, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 210, 210, 236, 255, 163, 163, 179, 255, 110, 110, 112, 255, 102, 102, 102, 255, 95, 95, 95, 222, 77, 77, 77, 85, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 143, 102, 102, 102, 255, 102, 102, 102, 255, 179, 179, 179, 255, 245, 245, 245, 255, 254, 254, 255, 255, 247, 247, 255, 255, 246, 246, 255, 255, 244, 244, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 213, 213, 245, 255, 161, 161, 179, 255, 109, 109, 112, 255, 102, 102, 102, 255, 85, 85, 85, 172, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 207, 102, 102, 102, 255, 131, 131, 131, 255, 226, 226, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 255, 255, 244, 244, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 202, 202, 236, 255, 130, 130, 140, 255, 102, 102, 102, 255, 94, 94, 94, 226, 35, 35, 35, 47, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 208, 102, 102, 102, 255, 159, 159, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 242, 242, 255, 255, 241, 241, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 157, 157, 179, 255, 102, 102, 102, 255, 92, 92, 92, 231, 28, 28, 28, 58, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 208, 102, 102, 102, 255, 188, 188, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 242, 255, 255, 239, 239, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 168, 168, 198, 255, 102, 102, 102, 255, 92, 92, 92, 231, 28, 28, 28, 58, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 207, 102, 102, 102, 255, 188, 188, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 249, 255, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 166, 166, 198, 255, 102, 102, 102, 255, 92, 92, 92, 231, 0, 0, 0, 45, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 143, 102, 102, 102, 255, 159, 159, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 236, 236, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 161, 161, 188, 255, 102, 102, 102, 255, 73, 73, 73, 199, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 64, 102, 102, 102, 255, 131, 131, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 243, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 135, 135, 150, 255, 102, 102, 102, 255, 47, 47, 47, 140, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 224, 102, 102, 102, 255, 226, 226, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 205, 205, 245, 255, 109, 109, 112, 255, 94, 94, 94, 243, 0, 0, 0, 69, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 96, 102, 102, 102, 255, 179, 179, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 237, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 165, 165, 188, 255, 102, 102, 102, 255, 54, 54, 54, 181, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 224, 112, 112, 112, 255, 245, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 117, 117, 121, 255, 93, 93, 93, 245, 0, 0, 0, 81, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 80, 102, 102, 102, 255, 163, 163, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 228, 255, 255, 237, 218, 255, 255, 240, 212, 255, 255, 246, 209, 255, 255, 239, 214, 255, 255, 233, 217, 255, 255, 219, 215, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 168, 168, 188, 255, 102, 102, 102, 255, 46, 46, 46, 176, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 162, 102, 102, 102, 255, 191, 191, 236, 255, 207, 207, 255, 255, 226, 226, 255, 255, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 238, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 255, 206, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 239, 224, 255, 255, 213, 211, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 215, 215, 245, 255, 102, 102, 102, 255, 78, 78, 78, 229, 0, 0, 0, 70, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 240, 121, 121, 131, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 217, 217, 255, 255, 236, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 236, 255, 255, 255, 228, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 255, 206, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 255, 232, 255, 255, 252, 235, 255, 255, 215, 213, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 140, 140, 150, 255, 102, 102, 102, 255, 0, 0, 0, 121, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 102, 102, 48, 102, 102, 102, 255, 153, 153, 179, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 207, 207, 255, 255, 226, 226, 255, 255, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 235, 255, 255, 255, 228, 255, 255, 255, 228, 255, 255, 241, 228, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 225, 214, 255, 255, 247, 222, 255, 255, 255, 232, 255, 255, 255, 238, 255, 255, 252, 241, 255, 255, 207, 207, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 173, 173, 188, 255, 102, 102, 102, 255, 36, 36, 36, 184, 0, 0, 0, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 100, 100, 100, 98, 102, 102, 102, 255, 179, 179, 217, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 217, 217, 255, 255, 236, 236, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 255, 242, 255, 255, 255, 235, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 231, 231, 236, 255, 152, 152, 169, 255, 130, 130, 140, 255, 150, 150, 169, 255, 183, 183, 217, 255, 208, 208, 255, 255, 237, 223, 255, 255, 255, 238, 255, 255, 255, 244, 255, 255, 237, 233, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 206, 206, 226, 255, 102, 102, 102, 255, 55, 55, 55, 209, 0, 0, 0, 58, 0, 0, 0, 6, + 0, 0, 0, 0, 99, 99, 99, 132, 102, 102, 102, 255, 198, 198, 245, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 214, 214, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 198, 198, 198, 255, 112, 112, 112, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 167, 167, 198, 255, 204, 204, 255, 255, 245, 232, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 215, 215, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 102, 102, 102, 255, 66, 66, 66, 221, 0, 0, 0, 85, 0, 0, 0, 10, + 0, 0, 0, 0, 100, 100, 100, 179, 102, 102, 102, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 226, 226, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 226, 221, 255, 255, 220, 220, 236, 255, 112, 112, 112, 255, 87, 87, 87, 243, 32, 32, 32, 204, 0, 0, 0, 173, 18, 18, 18, 178, 88, 88, 88, 239, 102, 102, 102, 255, 179, 179, 217, 255, 221, 217, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 231, 231, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 110, 110, 112, 255, 82, 82, 82, 236, 0, 0, 0, 106, 0, 0, 0, 13, + 0, 0, 0, 0, 100, 100, 100, 195, 108, 108, 112, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 236, 236, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 204, 204, 255, 255, 153, 153, 179, 255, 102, 102, 102, 255, 24, 24, 24, 200, 0, 0, 0, 136, 0, 0, 0, 67, 0, 0, 0, 33, 24, 24, 24, 68, 102, 102, 102, 255, 141, 141, 159, 255, 208, 208, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 240, 240, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 136, 136, 140, 255, 82, 82, 82, 237, 0, 0, 0, 127, 0, 0, 0, 18, + 0, 0, 0, 0, 99, 99, 99, 196, 130, 130, 140, 255, 213, 213, 255, 255, 212, 212, 255, 255, 212, 212, 255, 255, 211, 211, 255, 255, 211, 211, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 210, 210, 255, 255, 209, 209, 255, 255, 209, 209, 255, 255, 209, 209, 255, 255, 208, 208, 255, 255, 243, 243, 255, 255, 255, 250, 255, 255, 249, 238, 255, 255, 206, 206, 255, 255, 147, 147, 169, 255, 102, 102, 102, 255, 0, 0, 0, 172, 0, 0, 0, 61, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 4, 96, 96, 96, 203, 128, 128, 140, 255, 207, 207, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 244, 244, 255, 255, 210, 210, 255, 255, 211, 211, 255, 255, 212, 212, 255, 255, 213, 213, 255, 255, 214, 214, 255, 255, 214, 214, 255, 255, 216, 216, 255, 255, 217, 217, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 219, 219, 255, 255, 220, 220, 255, 255, 132, 132, 140, 255, 82, 82, 82, 237, 0, 0, 0, 131, 0, 0, 0, 18, + 0, 0, 0, 0, 99, 99, 99, 196, 119, 119, 121, 255, 237, 237, 255, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 243, 243, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 213, 213, 255, 255, 143, 143, 159, 255, 102, 102, 102, 255, 10, 10, 10, 173, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 16, 102, 102, 102, 255, 134, 134, 150, 255, 204, 204, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 236, 236, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 128, 128, 140, 255, 82, 82, 82, 237, 0, 0, 0, 131, 0, 0, 0, 18, + 0, 0, 0, 0, 99, 99, 99, 196, 102, 102, 102, 255, 235, 235, 255, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 236, 236, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 222, 218, 255, 255, 183, 183, 217, 255, 102, 102, 102, 255, 78, 78, 78, 228, 28, 28, 28, 59, 0, 0, 0, 3, 102, 102, 102, 16, 102, 102, 102, 192, 102, 102, 102, 255, 185, 185, 198, 255, 226, 222, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 226, 226, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 128, 128, 140, 255, 82, 82, 82, 237, 0, 0, 0, 131, 0, 0, 0, 18, + 0, 0, 0, 0, 95, 95, 95, 137, 102, 102, 102, 255, 234, 234, 255, 255, 232, 232, 255, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 219, 219, 255, 255, 255, 250, 255, 255, 255, 242, 255, 255, 244, 229, 255, 255, 208, 208, 255, 255, 141, 141, 159, 255, 102, 102, 102, 255, 99, 99, 99, 246, 96, 96, 96, 202, 102, 102, 102, 240, 102, 102, 102, 255, 159, 159, 159, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 210, 210, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 108, 108, 112, 255, 71, 71, 71, 229, 0, 0, 0, 128, 0, 0, 0, 18, + 0, 0, 0, 0, 96, 96, 96, 119, 102, 102, 102, 255, 200, 200, 217, 255, 231, 231, 255, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 244, 239, 255, 255, 255, 242, 255, 255, 255, 235, 255, 255, 237, 220, 255, 255, 204, 204, 255, 255, 172, 172, 207, 255, 135, 135, 150, 255, 129, 129, 140, 255, 129, 129, 140, 255, 187, 187, 198, 255, 255, 255, 255, 255, 255, 241, 255, 255, 255, 238, 255, 255, 255, 244, 255, 255, 255, 251, 255, 255, 252, 252, 255, 255, 233, 233, 255, 255, 210, 210, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 198, 198, 245, 255, 102, 102, 102, 255, 60, 60, 60, 219, 0, 0, 0, 113, 0, 0, 0, 15, + 0, 0, 0, 0, 88, 88, 88, 56, 102, 102, 102, 255, 175, 175, 188, 255, 229, 229, 255, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 216, 215, 255, 255, 252, 240, 255, 255, 255, 235, 255, 255, 255, 228, 255, 255, 242, 217, 255, 255, 218, 208, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 229, 220, 255, 255, 255, 233, 255, 255, 255, 232, 255, 255, 255, 238, 255, 255, 255, 244, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 242, 255, 255, 223, 223, 255, 255, 207, 207, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 172, 172, 207, 255, 102, 102, 102, 255, 33, 33, 33, 198, 0, 0, 0, 93, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 4, 101, 101, 101, 242, 142, 142, 150, 255, 227, 227, 255, 255, 226, 226, 255, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 215, 212, 255, 255, 252, 233, 255, 255, 255, 228, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 244, 207, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 255, 232, 255, 255, 255, 238, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 236, 236, 255, 255, 214, 214, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 147, 147, 169, 255, 102, 102, 102, 255, 9, 9, 9, 178, 0, 0, 0, 61, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 169, 102, 102, 102, 255, 218, 218, 245, 255, 225, 225, 255, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 211, 208, 255, 255, 243, 222, 255, 255, 255, 221, 255, 255, 255, 213, 255, 255, 255, 206, 255, 255, 255, 206, 255, 255, 255, 212, 255, 255, 255, 219, 255, 255, 255, 225, 255, 255, 255, 237, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 255, 255, 223, 223, 255, 255, 207, 207, 255, 255, 204, 204, 255, 255, 115, 115, 121, 255, 82, 82, 82, 239, 0, 0, 0, 163, 0, 0, 0, 36, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 90, 102, 102, 102, 255, 171, 171, 188, 255, 223, 223, 255, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 218, 211, 255, 255, 234, 213, 255, 255, 242, 208, 255, 255, 245, 208, 255, 255, 243, 213, 255, 255, 237, 219, 255, 255, 227, 221, 255, 255, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 255, 255, 194, 194, 207, 255, 102, 102, 102, 255, 46, 46, 46, 211, 0, 0, 0, 128, 0, 0, 0, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 98, 98, 98, 232, 117, 117, 121, 255, 221, 221, 255, 255, 219, 219, 255, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 140, 140, 140, 255, 97, 97, 97, 251, 9, 9, 9, 180, 0, 0, 0, 79, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 87, 87, 113, 102, 102, 102, 255, 175, 175, 198, 255, 218, 218, 255, 255, 216, 216, 255, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 102, 102, 102, 255, 58, 58, 58, 223, 0, 0, 0, 151, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 98, 98, 98, 233, 109, 109, 112, 255, 209, 209, 245, 255, 214, 214, 255, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 131, 131, 255, 97, 97, 97, 251, 9, 9, 9, 183, 0, 0, 0, 96, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 81, 81, 101, 102, 102, 102, 255, 137, 137, 150, 255, 213, 213, 255, 255, 211, 211, 255, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 233, 233, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 179, 179, 255, 102, 102, 102, 255, 52, 52, 52, 219, 0, 0, 0, 149, 0, 0, 0, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 87, 87, 87, 187, 102, 102, 102, 255, 170, 170, 198, 255, 210, 210, 255, 255, 208, 208, 255, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 102, 102, 102, 255, 82, 82, 82, 239, 0, 0, 0, 172, 0, 0, 0, 88, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 37, 93, 93, 93, 228, 102, 102, 102, 255, 181, 181, 217, 255, 206, 206, 255, 255, 204, 204, 255, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 239, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 226, 226, 255, 112, 112, 112, 255, 97, 97, 97, 251, 9, 9, 9, 188, 0, 0, 0, 121, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 31, 31, 53, 99, 99, 99, 247, 109, 109, 112, 255, 179, 179, 217, 255, 204, 204, 255, 255, 206, 206, 255, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 226, 226, 255, 112, 112, 112, 255, 97, 97, 97, 251, 24, 24, 24, 201, 0, 0, 0, 143, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 56, 56, 56, 87, 98, 98, 98, 248, 102, 102, 102, 255, 167, 167, 198, 255, 208, 208, 255, 255, 209, 209, 255, 255, 211, 211, 255, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 112, 112, 112, 255, 97, 97, 97, 251, 24, 24, 24, 201, 0, 0, 0, 146, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 38, 38, 38, 87, 90, 90, 90, 234, 102, 102, 102, 255, 142, 142, 159, 255, 205, 205, 245, 255, 213, 213, 255, 255, 215, 215, 255, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 244, 244, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 179, 179, 255, 102, 102, 102, 255, 97, 97, 97, 251, 24, 24, 24, 201, 0, 0, 0, 146, 0, 0, 0, 63, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 24, 24, 24, 67, 83, 83, 83, 216, 102, 102, 102, 255, 116, 116, 121, 255, 172, 172, 198, 255, 217, 217, 255, 255, 218, 218, 255, 255, 220, 220, 255, 255, 222, 222, 255, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 244, 244, 255, 255, 245, 245, 255, 255, 250, 250, 255, 255, 255, 255, 255, 255, 217, 217, 217, 255, 131, 131, 131, 255, 102, 102, 102, 255, 82, 82, 82, 239, 9, 9, 9, 188, 0, 0, 0, 143, 0, 0, 0, 63, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42, 51, 51, 51, 159, 93, 93, 93, 244, 102, 102, 102, 255, 117, 117, 121, 255, 176, 176, 198, 255, 215, 215, 245, 255, 224, 224, 255, 255, 225, 225, 255, 255, 228, 228, 255, 255, 230, 230, 255, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 244, 244, 255, 255, 245, 245, 255, 255, 238, 238, 245, 255, 194, 194, 198, 255, 140, 140, 140, 255, 102, 102, 102, 255, 97, 97, 97, 251, 52, 52, 52, 219, 0, 0, 0, 172, 0, 0, 0, 121, 0, 0, 0, 46, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 24, 19, 19, 19, 86, 66, 66, 66, 198, 98, 98, 98, 250, 102, 102, 102, 255, 110, 110, 112, 255, 148, 148, 159, 255, 180, 180, 198, 255, 214, 214, 236, 255, 231, 231, 255, 255, 233, 233, 255, 255, 235, 235, 255, 255, 237, 237, 255, 255, 238, 238, 255, 255, 240, 240, 255, 255, 242, 242, 255, 255, 226, 226, 236, 255, 191, 191, 198, 255, 156, 156, 159, 255, 111, 111, 112, 255, 102, 102, 102, 255, 97, 97, 97, 251, 58, 58, 58, 223, 9, 9, 9, 183, 0, 0, 0, 149, 0, 0, 0, 88, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 39, 0, 0, 0, 96, 52, 52, 52, 189, 78, 78, 78, 230, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 127, 127, 131, 255, 136, 136, 140, 255, 136, 136, 140, 255, 137, 137, 140, 255, 128, 128, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 87, 87, 87, 243, 53, 53, 53, 217, 9, 9, 9, 181, 0, 0, 0, 151, 0, 0, 0, 96, 0, 0, 0, 40, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 31, 0, 0, 0, 76, 12, 12, 12, 130, 35, 35, 35, 185, 61, 61, 61, 214, 77, 77, 77, 231, 82, 82, 82, 237, 82, 82, 82, 237, 82, 82, 82, 237, 82, 82, 82, 237, 82, 82, 82, 237, 77, 77, 77, 233, 59, 59, 59, 220, 40, 40, 40, 203, 9, 9, 9, 180, 0, 0, 0, 164, 0, 0, 0, 136, 0, 0, 0, 87, 0, 0, 0, 39, 0, 0, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 36, 0, 0, 0, 61, 0, 0, 0, 94, 0, 0, 0, 119, 0, 0, 0, 130, 0, 0, 0, 131, 0, 0, 0, 131, 0, 0, 0, 131, 0, 0, 0, 130, 0, 0, 0, 119, 0, 0, 0, 96, 0, 0, 0, 67, 0, 0, 0, 37, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceComputer(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, 171, 64, 130, 129, 168, 116, 150, 150, 186, 148, 161, 161, 197, 195, 155, 155, 193, 255, 120, 118, 164, 142, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 140, 166, 32, 136, 136, 165, 82, 144, 143, 172, 132, 162, 161, 189, 179, 177, 177, 204, 225, 180, 180, 208, 255, 186, 186, 215, 255, 184, 184, 214, 255, 165, 165, 200, 255, 151, 151, 191, 255, 138, 138, 182, 255, 125, 124, 172, 250, 26, 4, 57, 110, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 161, 16, 143, 143, 160, 65, 140, 139, 159, 116, 163, 163, 183, 164, 173, 173, 192, 195, 181, 181, 201, 255, 199, 199, 219, 255, 207, 207, 227, 255, 194, 194, 218, 255, 173, 173, 201, 255, 158, 158, 190, 255, 143, 143, 179, 255, 133, 133, 173, 255, 132, 132, 174, 255, 131, 131, 175, 255, 130, 130, 176, 255, 129, 129, 177, 255, 128, 128, 178, 255, 24, 4, 56, 173, 26, 9, 60, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 150, 156, 48, 145, 144, 153, 83, 156, 155, 165, 132, 175, 175, 186, 195, 190, 190, 201, 226, 201, 201, 213, 255, 209, 209, 222, 255, 228, 228, 242, 255, 205, 205, 222, 255, 182, 182, 202, 255, 165, 165, 188, 255, 149, 149, 176, 255, 138, 138, 168, 255, 137, 137, 169, 255, 136, 136, 170, 255, 134, 134, 172, 255, 133, 133, 173, 255, 132, 132, 174, 255, 131, 131, 175, 255, 130, 130, 176, 255, 129, 129, 177, 255, 130, 140, 188, 255, 126, 126, 180, 255, 110, 106, 157, 239, 110, 107, 158, 152, 115, 111, 164, 90, 111, 108, 159, 55, 43, 0, 43, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 153, 153, 153, 16, 152, 152, 153, 113, 168, 168, 170, 164, 190, 189, 193, 195, 200, 200, 204, 255, 216, 216, 221, 255, 232, 232, 238, 255, 241, 241, 247, 255, 215, 215, 225, 255, 196, 196, 208, 255, 177, 177, 193, 255, 159, 159, 178, 255, 142, 142, 164, 255, 141, 141, 165, 255, 140, 140, 166, 255, 139, 139, 167, 255, 138, 138, 168, 255, 137, 137, 169, 255, 136, 136, 170, 255, 134, 134, 172, 255, 133, 133, 173, 255, 142, 154, 189, 255, 149, 173, 205, 255, 154, 197, 225, 255, 155, 214, 240, 255, 153, 229, 255, 255, 136, 176, 218, 255, 125, 125, 181, 255, 163, 163, 207, 255, 176, 176, 215, 255, 165, 165, 206, 255, 158, 158, 201, 255, 147, 147, 192, 255, 136, 135, 183, 213, 120, 118, 169, 168, 113, 111, 163, 136, 105, 101, 153, 74, 90, 80, 135, 23, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 152, 152, 153, 176, 236, 236, 236, 255, 253, 253, 254, 255, 225, 225, 228, 255, 205, 205, 210, 255, 184, 184, 193, 255, 165, 165, 176, 255, 146, 146, 160, 255, 145, 145, 161, 255, 144, 144, 162, 255, 143, 143, 163, 255, 142, 142, 164, 255, 141, 141, 165, 255, 140, 140, 166, 255, 139, 139, 167, 255, 138, 138, 168, 255, 145, 152, 180, 255, 157, 173, 197, 255, 169, 195, 213, 255, 184, 224, 234, 255, 193, 250, 255, 255, 185, 245, 255, 255, 177, 242, 255, 255, 169, 237, 255, 255, 160, 233, 255, 255, 153, 229, 255, 255, 139, 194, 232, 255, 124, 124, 182, 255, 165, 165, 208, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 191, 191, 223, 255, 182, 182, 216, 255, 174, 174, 210, 255, 154, 154, 195, 255, 140, 139, 184, 242, 129, 129, 174, 198, 106, 104, 156, 152, 101, 99, 150, 106, 99, 97, 150, 71, 32, 0, 64, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 149, 149, 151, 196, 253, 253, 254, 255, 175, 175, 180, 255, 149, 149, 157, 255, 148, 148, 158, 255, 147, 147, 159, 255, 146, 146, 160, 255, 145, 145, 161, 255, 144, 144, 162, 255, 143, 143, 163, 255, 142, 142, 164, 255, 141, 141, 165, 255, 152, 167, 188, 255, 167, 195, 211, 255, 182, 218, 228, 255, 196, 240, 244, 255, 204, 255, 255, 255, 204, 255, 255, 255, 203, 255, 255, 255, 198, 252, 255, 255, 191, 249, 255, 255, 183, 244, 255, 255, 175, 241, 255, 255, 168, 237, 255, 255, 160, 233, 255, 255, 152, 229, 255, 255, 139, 200, 237, 255, 123, 123, 183, 255, 164, 164, 207, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 205, 205, 230, 255, 188, 188, 218, 255, 170, 170, 204, 255, 158, 158, 195, 255, 133, 133, 176, 227, 109, 108, 157, 183, 97, 95, 147, 137, 32, 0, 64, 14, + 143, 142, 149, 152, 238, 238, 240, 255, 186, 186, 192, 255, 148, 148, 158, 255, 147, 147, 159, 255, 146, 146, 160, 255, 145, 145, 161, 255, 145, 160, 179, 255, 148, 181, 203, 255, 155, 200, 221, 255, 165, 220, 238, 255, 177, 242, 255, 255, 185, 245, 255, 255, 191, 249, 255, 255, 197, 251, 255, 255, 201, 253, 255, 255, 203, 254, 255, 255, 202, 254, 255, 255, 198, 252, 255, 255, 193, 250, 255, 255, 187, 246, 255, 255, 180, 243, 255, 255, 172, 239, 255, 255, 165, 235, 255, 255, 157, 232, 255, 255, 150, 228, 255, 255, 141, 224, 255, 255, 122, 122, 184, 255, 157, 157, 204, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 219, 219, 237, 255, 196, 196, 230, 255, 159, 159, 219, 255, 109, 109, 168, 255, 25, 4, 57, 117, + 135, 132, 144, 91, 216, 216, 221, 255, 202, 202, 210, 255, 147, 147, 159, 255, 132, 184, 213, 255, 133, 200, 231, 255, 137, 222, 255, 255, 145, 225, 255, 255, 152, 229, 255, 255, 159, 233, 255, 255, 167, 236, 255, 255, 173, 240, 255, 255, 180, 243, 255, 255, 186, 246, 255, 255, 190, 248, 255, 255, 193, 250, 255, 255, 194, 250, 255, 255, 194, 250, 255, 255, 191, 249, 255, 255, 187, 246, 255, 255, 182, 244, 255, 255, 175, 241, 255, 255, 169, 237, 255, 255, 162, 234, 255, 255, 154, 230, 255, 255, 147, 226, 255, 255, 139, 223, 255, 255, 121, 121, 185, 255, 148, 148, 201, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 234, 234, 244, 255, 192, 192, 230, 255, 160, 160, 220, 255, 121, 121, 207, 255, 105, 105, 202, 255, 105, 105, 202, 255, 103, 103, 165, 255, 26, 4, 58, 208, + 108, 99, 122, 24, 190, 190, 197, 255, 223, 223, 231, 255, 146, 146, 160, 255, 121, 208, 249, 255, 126, 216, 255, 255, 134, 220, 255, 255, 141, 224, 255, 255, 149, 227, 255, 255, 155, 230, 255, 255, 162, 234, 255, 255, 168, 237, 255, 255, 174, 240, 255, 255, 179, 242, 255, 255, 183, 244, 255, 255, 185, 246, 255, 255, 186, 246, 255, 255, 186, 246, 255, 255, 184, 245, 255, 255, 180, 243, 255, 255, 175, 241, 255, 255, 170, 238, 255, 255, 164, 235, 255, 255, 157, 232, 255, 255, 151, 228, 255, 255, 143, 225, 255, 255, 136, 221, 255, 255, 123, 144, 204, 255, 133, 133, 194, 255, 196, 196, 222, 255, 204, 204, 227, 255, 216, 216, 234, 255, 231, 231, 242, 255, 248, 248, 252, 255, 248, 248, 252, 255, 248, 248, 252, 255, 248, 248, 252, 255, 239, 239, 248, 255, 203, 203, 235, 255, 159, 159, 219, 255, 116, 116, 204, 255, 108, 108, 201, 255, 108, 108, 201, 255, 108, 108, 201, 255, 108, 108, 201, 255, 108, 108, 201, 255, 103, 103, 165, 255, 25, 4, 57, 222, + 0, 0, 128, 2, 163, 162, 175, 215, 238, 238, 247, 255, 145, 145, 161, 255, 124, 195, 232, 255, 123, 215, 255, 255, 131, 218, 255, 255, 137, 222, 255, 255, 144, 225, 255, 255, 151, 228, 255, 255, 157, 231, 255, 255, 163, 234, 255, 255, 168, 237, 255, 255, 172, 239, 255, 255, 175, 241, 255, 255, 177, 242, 255, 255, 178, 242, 255, 255, 178, 242, 255, 255, 176, 241, 255, 255, 173, 240, 255, 255, 169, 237, 255, 255, 164, 235, 255, 255, 158, 232, 255, 255, 152, 229, 255, 255, 146, 226, 255, 255, 139, 223, 255, 255, 132, 219, 255, 255, 121, 149, 209, 255, 117, 117, 189, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 194, 194, 223, 255, 203, 203, 230, 255, 156, 156, 217, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 110, 110, 200, 255, 104, 104, 165, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 138, 136, 153, 154, 235, 235, 245, 255, 166, 166, 183, 255, 129, 176, 209, 255, 119, 213, 255, 255, 126, 216, 255, 255, 133, 219, 255, 255, 139, 223, 255, 255, 145, 226, 255, 255, 151, 228, 255, 255, 156, 231, 255, 255, 161, 233, 255, 255, 165, 235, 255, 255, 168, 237, 255, 255, 169, 237, 255, 255, 170, 238, 255, 255, 170, 238, 255, 255, 168, 237, 255, 255, 166, 236, 255, 255, 162, 234, 255, 255, 157, 232, 255, 255, 152, 229, 255, 255, 147, 227, 255, 255, 141, 224, 255, 255, 135, 220, 255, 255, 128, 217, 255, 255, 120, 166, 222, 255, 116, 116, 190, 255, 188, 188, 218, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 162, 162, 210, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 112, 112, 199, 255, 111, 111, 193, 255, 107, 107, 176, 255, 110, 110, 190, 255, 105, 105, 164, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 131, 127, 148, 91, 209, 209, 222, 255, 180, 180, 198, 255, 132, 163, 192, 255, 115, 210, 255, 255, 121, 214, 255, 255, 128, 217, 255, 255, 133, 220, 255, 255, 139, 223, 255, 255, 145, 225, 255, 255, 150, 228, 255, 255, 154, 230, 255, 255, 157, 231, 255, 255, 160, 233, 255, 255, 161, 234, 255, 255, 162, 234, 255, 255, 162, 234, 255, 255, 160, 233, 255, 255, 158, 232, 255, 255, 155, 230, 255, 255, 151, 228, 255, 255, 146, 226, 255, 255, 141, 224, 255, 255, 135, 221, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 117, 170, 227, 255, 115, 115, 191, 255, 173, 173, 213, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 162, 162, 210, 255, 115, 115, 198, 255, 115, 115, 198, 255, 115, 115, 198, 255, 115, 115, 198, 255, 114, 114, 195, 255, 109, 109, 178, 255, 104, 104, 161, 255, 108, 108, 159, 255, 112, 112, 163, 255, 111, 111, 186, 255, 105, 105, 164, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 120, 115, 140, 40, 185, 185, 202, 255, 194, 194, 212, 255, 137, 149, 176, 255, 110, 208, 255, 255, 116, 211, 255, 255, 122, 214, 255, 255, 128, 217, 255, 255, 133, 220, 255, 255, 138, 222, 255, 255, 142, 224, 255, 255, 146, 226, 255, 255, 149, 227, 255, 255, 152, 229, 255, 255, 153, 229, 255, 255, 154, 230, 255, 255, 153, 229, 255, 255, 152, 229, 255, 255, 150, 228, 255, 255, 147, 227, 255, 255, 144, 225, 255, 255, 139, 223, 255, 255, 135, 220, 255, 255, 130, 218, 255, 255, 123, 215, 255, 255, 118, 212, 255, 255, 113, 186, 239, 255, 114, 114, 192, 255, 173, 173, 213, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 163, 163, 210, 255, 117, 117, 196, 255, 116, 116, 194, 255, 111, 111, 180, 255, 106, 106, 167, 255, 105, 105, 156, 255, 121, 121, 172, 255, 140, 140, 191, 255, 153, 153, 204, 255, 128, 128, 179, 255, 113, 113, 185, 255, 106, 106, 164, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 64, 3, 161, 161, 182, 229, 212, 212, 229, 255, 140, 140, 166, 255, 107, 201, 250, 255, 111, 208, 255, 255, 116, 211, 255, 255, 122, 214, 255, 255, 127, 216, 255, 255, 132, 219, 255, 255, 135, 221, 255, 255, 139, 223, 255, 255, 141, 224, 255, 255, 144, 225, 255, 255, 145, 225, 255, 255, 146, 226, 255, 255, 145, 226, 255, 255, 144, 225, 255, 255, 142, 224, 255, 255, 139, 223, 255, 255, 136, 221, 255, 255, 133, 219, 255, 255, 128, 217, 255, 255, 123, 215, 255, 255, 118, 212, 255, 255, 113, 209, 255, 255, 107, 195, 247, 255, 113, 113, 193, 255, 152, 152, 207, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 164, 164, 210, 255, 119, 119, 195, 255, 106, 106, 164, 255, 115, 115, 166, 255, 134, 134, 185, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 115, 115, 185, 255, 106, 106, 164, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 141, 140, 166, 170, 219, 219, 237, 255, 144, 144, 172, 255, 109, 186, 233, 255, 104, 205, 255, 255, 110, 208, 255, 255, 115, 210, 255, 255, 120, 213, 255, 255, 124, 215, 255, 255, 128, 217, 255, 255, 132, 219, 255, 255, 134, 220, 255, 255, 136, 221, 255, 255, 137, 222, 255, 255, 137, 222, 255, 255, 137, 222, 255, 255, 136, 221, 255, 255, 134, 220, 255, 255, 132, 219, 255, 255, 129, 217, 255, 255, 125, 216, 255, 255, 121, 214, 255, 255, 117, 211, 255, 255, 112, 209, 255, 255, 106, 206, 255, 255, 101, 203, 255, 255, 112, 112, 194, 255, 152, 152, 207, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 164, 164, 209, 255, 122, 122, 194, 255, 107, 107, 163, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 150, 150, 201, 255, 147, 147, 198, 255, 128, 128, 179, 255, 117, 117, 184, 255, 107, 107, 163, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 126, 156, 107, 202, 202, 223, 255, 157, 157, 185, 255, 116, 169, 212, 255, 99, 202, 255, 255, 104, 205, 255, 255, 109, 207, 255, 255, 113, 209, 255, 255, 117, 211, 255, 255, 120, 213, 255, 255, 124, 215, 255, 255, 126, 216, 255, 255, 128, 217, 255, 255, 129, 217, 255, 255, 129, 217, 255, 255, 129, 217, 255, 255, 128, 217, 255, 255, 127, 216, 255, 255, 124, 215, 255, 255, 121, 214, 255, 255, 118, 212, 255, 255, 115, 210, 255, 255, 110, 208, 255, 255, 105, 206, 255, 255, 100, 203, 255, 255, 95, 200, 255, 255, 108, 122, 202, 255, 136, 136, 203, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 124, 124, 193, 255, 108, 108, 163, 255, 140, 140, 191, 255, 153, 153, 204, 255, 137, 137, 188, 255, 121, 121, 172, 255, 102, 102, 153, 255, 131, 131, 182, 255, 128, 128, 179, 255, 119, 119, 183, 255, 108, 108, 163, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 113, 108, 145, 41, 180, 180, 205, 255, 173, 173, 201, 255, 121, 155, 197, 255, 92, 199, 255, 255, 97, 202, 255, 255, 102, 204, 255, 255, 106, 206, 255, 255, 110, 208, 255, 255, 113, 209, 255, 255, 116, 211, 255, 255, 118, 212, 255, 255, 119, 213, 255, 255, 121, 214, 255, 255, 121, 214, 255, 255, 121, 214, 255, 255, 120, 213, 255, 255, 118, 212, 255, 255, 117, 211, 255, 255, 114, 210, 255, 255, 111, 208, 255, 255, 107, 207, 255, 255, 103, 205, 255, 255, 99, 202, 255, 255, 94, 200, 255, 255, 88, 197, 255, 255, 104, 131, 211, 255, 130, 130, 203, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 127, 127, 192, 255, 108, 108, 163, 255, 140, 140, 191, 255, 118, 118, 169, 255, 105, 105, 156, 255, 124, 124, 175, 255, 147, 147, 198, 255, 147, 147, 198, 255, 124, 124, 175, 255, 120, 120, 182, 255, 108, 108, 163, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 164, 163, 192, 230, 185, 185, 212, 255, 128, 142, 182, 255, 86, 196, 255, 255, 90, 198, 255, 255, 95, 200, 255, 255, 99, 202, 255, 255, 102, 204, 255, 255, 105, 206, 255, 255, 108, 207, 255, 255, 110, 208, 255, 255, 112, 209, 255, 255, 112, 209, 255, 255, 113, 209, 255, 255, 113, 209, 255, 255, 112, 209, 255, 255, 111, 208, 255, 255, 108, 207, 255, 255, 106, 206, 255, 255, 103, 205, 255, 255, 100, 203, 255, 255, 96, 201, 255, 255, 91, 199, 255, 255, 87, 197, 255, 255, 82, 194, 255, 255, 96, 145, 223, 255, 113, 113, 200, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 129, 129, 191, 255, 109, 109, 162, 255, 140, 140, 191, 255, 140, 140, 191, 255, 153, 153, 204, 255, 134, 134, 185, 255, 115, 115, 166, 255, 102, 102, 153, 255, 115, 115, 166, 255, 122, 122, 181, 255, 109, 109, 162, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 141, 176, 184, 199, 199, 226, 255, 133, 133, 173, 255, 83, 189, 250, 255, 84, 195, 255, 255, 87, 197, 255, 255, 91, 199, 255, 255, 95, 200, 255, 255, 98, 202, 255, 255, 100, 203, 255, 255, 102, 204, 255, 255, 103, 205, 255, 255, 104, 205, 255, 255, 104, 205, 255, 255, 104, 205, 255, 255, 104, 205, 255, 255, 102, 204, 255, 255, 101, 203, 255, 255, 98, 202, 255, 255, 96, 201, 255, 255, 92, 199, 255, 255, 89, 198, 255, 255, 85, 195, 255, 255, 80, 193, 255, 255, 75, 191, 255, 255, 90, 149, 227, 255, 107, 107, 199, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 131, 131, 189, 255, 109, 109, 162, 255, 134, 134, 185, 255, 121, 121, 172, 255, 105, 105, 156, 255, 105, 105, 156, 255, 124, 124, 175, 255, 147, 147, 198, 255, 128, 128, 179, 255, 124, 124, 180, 255, 109, 109, 162, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 122, 162, 123, 192, 192, 221, 255, 140, 140, 180, 255, 87, 175, 235, 255, 76, 191, 255, 255, 81, 193, 255, 255, 84, 195, 255, 255, 87, 197, 255, 255, 90, 198, 255, 255, 92, 199, 255, 255, 94, 200, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 96, 201, 255, 255, 94, 200, 255, 255, 93, 199, 255, 255, 90, 198, 255, 255, 88, 197, 255, 255, 85, 195, 255, 255, 82, 194, 255, 255, 78, 192, 255, 255, 73, 190, 255, 255, 69, 187, 255, 255, 78, 161, 238, 255, 106, 106, 200, 255, 179, 179, 217, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 134, 134, 188, 255, 110, 110, 162, 255, 115, 115, 166, 255, 112, 112, 163, 255, 134, 134, 185, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 126, 126, 179, 255, 110, 110, 162, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 110, 153, 58, 177, 177, 210, 255, 151, 151, 191, 255, 98, 158, 215, 255, 69, 187, 255, 255, 73, 190, 255, 255, 76, 191, 255, 255, 80, 193, 255, 255, 82, 194, 255, 255, 84, 195, 255, 255, 86, 196, 255, 255, 87, 197, 255, 255, 88, 197, 255, 255, 88, 197, 255, 255, 88, 197, 255, 255, 87, 197, 255, 255, 86, 196, 255, 255, 85, 195, 255, 255, 83, 194, 255, 255, 80, 193, 255, 255, 77, 192, 255, 255, 74, 190, 255, 255, 70, 188, 255, 255, 67, 186, 255, 255, 62, 184, 255, 255, 70, 163, 241, 255, 105, 105, 201, 255, 168, 168, 215, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 137, 137, 187, 255, 111, 111, 161, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 128, 128, 178, 255, 111, 111, 161, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 43, 5, 158, 158, 196, 243, 161, 161, 200, 255, 108, 146, 201, 255, 62, 184, 255, 255, 66, 186, 255, 255, 69, 187, 255, 255, 71, 189, 255, 255, 74, 190, 255, 255, 76, 191, 255, 255, 78, 192, 255, 255, 79, 192, 255, 255, 80, 193, 255, 255, 80, 193, 255, 255, 80, 193, 255, 255, 79, 193, 255, 255, 78, 192, 255, 255, 77, 191, 255, 255, 74, 190, 255, 255, 72, 189, 255, 255, 70, 188, 255, 255, 67, 186, 255, 255, 64, 185, 255, 255, 59, 183, 255, 255, 55, 181, 255, 255, 60, 171, 249, 255, 104, 104, 203, 255, 168, 168, 215, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 139, 139, 186, 255, 111, 111, 161, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 128, 128, 179, 255, 130, 130, 177, 255, 111, 111, 161, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 138, 182, 185, 173, 173, 211, 255, 119, 135, 188, 255, 54, 180, 255, 255, 58, 182, 255, 255, 61, 184, 255, 255, 64, 185, 255, 255, 66, 186, 255, 255, 68, 187, 255, 255, 70, 188, 255, 255, 70, 188, 255, 255, 71, 189, 255, 255, 72, 189, 255, 255, 71, 189, 255, 255, 71, 188, 255, 255, 70, 188, 255, 255, 69, 187, 255, 255, 67, 186, 255, 255, 65, 185, 255, 255, 62, 184, 255, 255, 59, 183, 255, 255, 56, 181, 255, 255, 86, 173, 240, 255, 122, 162, 221, 255, 127, 127, 204, 255, 104, 104, 204, 255, 173, 173, 216, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 144, 144, 186, 255, 112, 112, 161, 255, 140, 140, 191, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 140, 140, 191, 255, 118, 118, 169, 255, 117, 117, 165, 255, 139, 139, 183, 255, 112, 112, 161, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 120, 169, 137, 185, 185, 220, 255, 126, 126, 180, 255, 53, 173, 250, 255, 51, 178, 255, 255, 53, 180, 255, 255, 56, 181, 255, 255, 58, 182, 255, 255, 60, 183, 255, 255, 62, 184, 255, 255, 63, 184, 255, 255, 64, 185, 255, 255, 64, 185, 255, 255, 64, 185, 255, 255, 63, 184, 255, 255, 62, 184, 255, 255, 61, 183, 255, 255, 59, 182, 255, 255, 57, 181, 255, 255, 69, 180, 250, 255, 119, 174, 231, 255, 144, 160, 215, 255, 133, 133, 205, 255, 110, 110, 203, 255, 126, 126, 208, 255, 159, 159, 214, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 152, 152, 191, 255, 120, 120, 166, 255, 140, 140, 191, 255, 153, 153, 204, 255, 134, 134, 185, 255, 114, 114, 164, 255, 121, 121, 166, 255, 139, 139, 179, 255, 144, 144, 183, 255, 133, 133, 176, 255, 107, 107, 157, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 164, 74, 168, 168, 208, 255, 135, 135, 188, 255, 61, 161, 237, 255, 43, 175, 255, 255, 46, 176, 255, 255, 48, 177, 255, 255, 51, 178, 255, 255, 52, 179, 255, 255, 54, 180, 255, 255, 54, 180, 255, 255, 55, 181, 255, 255, 55, 181, 255, 255, 55, 181, 255, 255, 54, 180, 255, 255, 54, 180, 255, 255, 52, 179, 255, 255, 103, 182, 242, 255, 149, 181, 227, 255, 155, 155, 211, 255, 126, 126, 205, 255, 105, 105, 201, 255, 122, 122, 203, 255, 172, 172, 215, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 154, 154, 190, 255, 124, 124, 168, 255, 118, 118, 169, 255, 114, 114, 163, 255, 127, 127, 169, 255, 144, 144, 180, 255, 146, 146, 182, 255, 129, 129, 171, 255, 113, 113, 160, 255, 102, 102, 153, 255, 102, 102, 153, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 64, 7, 151, 151, 199, 255, 143, 143, 195, 255, 78, 146, 219, 255, 35, 171, 255, 255, 38, 172, 255, 255, 40, 173, 255, 255, 42, 174, 255, 255, 44, 175, 255, 255, 45, 176, 255, 255, 47, 176, 255, 255, 47, 176, 255, 255, 47, 176, 255, 255, 47, 176, 255, 255, 76, 181, 250, 255, 141, 189, 237, 255, 173, 181, 222, 255, 143, 143, 208, 255, 116, 116, 202, 255, 100, 100, 195, 255, 121, 121, 188, 255, 163, 163, 209, 255, 153, 153, 204, 255, 153, 153, 204, 255, 158, 158, 206, 255, 175, 175, 213, 255, 185, 185, 217, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 156, 156, 189, 255, 134, 134, 172, 255, 132, 132, 170, 255, 149, 149, 181, 255, 149, 149, 181, 255, 131, 131, 171, 255, 108, 108, 157, 255, 102, 102, 153, 255, 105, 105, 155, 255, 126, 126, 167, 255, 111, 111, 158, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 135, 187, 200, 154, 154, 203, 255, 92, 136, 206, 255, 27, 167, 255, 255, 30, 168, 255, 255, 32, 169, 255, 255, 35, 171, 255, 255, 36, 171, 255, 255, 37, 172, 255, 255, 38, 172, 255, 255, 49, 175, 254, 255, 105, 189, 247, 255, 177, 202, 236, 255, 168, 168, 217, 255, 131, 131, 205, 255, 108, 108, 198, 255, 96, 96, 191, 255, 80, 80, 180, 255, 66, 66, 168, 255, 125, 125, 170, 255, 203, 203, 224, 255, 195, 195, 221, 255, 176, 176, 213, 255, 158, 158, 206, 255, 153, 153, 204, 255, 153, 153, 204, 255, 162, 162, 208, 255, 173, 173, 212, 255, 181, 181, 215, 255, 180, 180, 215, 255, 178, 178, 214, 255, 157, 157, 188, 255, 151, 151, 180, 255, 148, 148, 178, 255, 129, 129, 168, 255, 108, 108, 156, 255, 102, 102, 153, 255, 105, 105, 155, 255, 127, 127, 166, 255, 148, 148, 178, 255, 151, 151, 180, 255, 114, 114, 160, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 120, 178, 138, 160, 160, 207, 255, 108, 126, 194, 255, 20, 163, 255, 255, 22, 164, 255, 255, 24, 165, 255, 255, 26, 166, 255, 255, 28, 167, 255, 255, 79, 183, 252, 255, 152, 203, 246, 255, 206, 206, 232, 255, 156, 156, 213, 255, 116, 116, 198, 255, 107, 107, 196, 255, 96, 96, 192, 255, 83, 83, 184, 255, 79, 79, 181, 255, 79, 79, 181, 255, 79, 79, 181, 255, 99, 99, 162, 255, 203, 203, 224, 255, 201, 201, 223, 255, 198, 198, 222, 255, 195, 195, 221, 255, 183, 183, 216, 255, 167, 167, 210, 255, 153, 153, 204, 255, 153, 153, 204, 255, 153, 153, 204, 255, 163, 163, 208, 255, 170, 170, 211, 255, 156, 156, 186, 255, 128, 128, 166, 255, 105, 105, 155, 255, 102, 102, 153, 255, 105, 105, 155, 255, 128, 128, 166, 255, 150, 150, 177, 255, 154, 154, 179, 255, 153, 198, 145, 255, 153, 166, 169, 255, 115, 115, 159, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 108, 172, 90, 157, 157, 206, 255, 120, 120, 186, 255, 19, 157, 251, 255, 15, 160, 255, 255, 31, 167, 255, 255, 116, 197, 252, 255, 209, 226, 246, 255, 186, 186, 224, 255, 140, 140, 206, 255, 111, 111, 195, 255, 108, 108, 196, 255, 99, 99, 196, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 92, 92, 194, 255, 101, 101, 168, 255, 191, 191, 215, 255, 201, 201, 223, 255, 198, 198, 222, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 186, 186, 217, 255, 173, 173, 212, 255, 159, 159, 206, 255, 153, 153, 204, 255, 153, 153, 204, 255, 115, 115, 166, 255, 102, 102, 153, 255, 105, 105, 155, 255, 129, 129, 165, 255, 153, 153, 176, 255, 156, 156, 177, 255, 156, 156, 177, 255, 156, 156, 177, 255, 153, 255, 102, 255, 155, 187, 154, 255, 116, 116, 159, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 81, 140, 24, 144, 144, 199, 255, 129, 129, 193, 255, 80, 165, 238, 255, 175, 222, 254, 255, 230, 230, 243, 255, 170, 170, 217, 255, 121, 121, 196, 255, 112, 112, 194, 255, 135, 135, 199, 255, 143, 143, 203, 255, 117, 117, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 102, 102, 203, 255, 103, 103, 179, 255, 178, 178, 207, 255, 201, 201, 223, 255, 198, 198, 222, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 177, 177, 214, 255, 164, 164, 209, 255, 120, 120, 168, 255, 130, 130, 165, 255, 155, 155, 175, 255, 158, 158, 176, 255, 158, 158, 176, 255, 158, 158, 176, 255, 158, 158, 176, 255, 158, 158, 176, 255, 157, 176, 162, 255, 158, 158, 176, 255, 116, 116, 159, 255, 25, 4, 57, 222, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, 195, 80, 170, 170, 207, 224, 150, 150, 202, 255, 137, 137, 198, 255, 142, 142, 202, 255, 141, 141, 203, 255, 114, 114, 192, 255, 128, 128, 197, 255, 175, 175, 210, 255, 212, 212, 219, 255, 182, 182, 210, 255, 158, 158, 205, 255, 160, 160, 207, 255, 137, 137, 205, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 110, 110, 204, 255, 107, 107, 180, 255, 133, 133, 182, 255, 160, 160, 200, 255, 190, 190, 217, 255, 195, 195, 221, 255, 193, 193, 220, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 165, 165, 187, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 161, 161, 175, 255, 146, 146, 170, 255, 110, 107, 149, 251, 52, 38, 91, 230, 25, 4, 57, 203, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 193, 159, 195, 195, 217, 255, 238, 238, 238, 255, 176, 176, 214, 255, 142, 142, 200, 255, 115, 115, 191, 255, 154, 154, 207, 255, 198, 198, 222, 255, 231, 231, 231, 255, 226, 226, 226, 255, 221, 221, 221, 255, 208, 208, 217, 255, 152, 152, 200, 255, 169, 169, 210, 255, 161, 161, 209, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 120, 120, 204, 255, 116, 116, 192, 255, 132, 132, 179, 255, 147, 147, 196, 255, 123, 121, 172, 251, 144, 143, 186, 253, 176, 176, 209, 255, 190, 190, 219, 255, 188, 188, 218, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 170, 170, 193, 255, 163, 163, 174, 255, 163, 163, 174, 255, 163, 163, 174, 255, 163, 163, 174, 255, 163, 163, 174, 255, 156, 156, 172, 255, 123, 122, 158, 253, 58, 46, 98, 233, 25, 4, 57, 201, 25, 4, 58, 161, 26, 5, 58, 96, + 0, 0, 0, 0, 0, 0, 0, 0, 138, 138, 189, 159, 198, 198, 217, 255, 237, 237, 237, 255, 242, 242, 242, 255, 238, 238, 243, 255, 215, 215, 234, 255, 230, 230, 240, 255, 243, 243, 243, 255, 238, 238, 238, 255, 233, 233, 233, 255, 228, 228, 228, 255, 223, 223, 223, 255, 217, 217, 220, 255, 166, 166, 203, 255, 173, 173, 211, 255, 175, 175, 213, 255, 134, 134, 205, 255, 129, 129, 204, 255, 129, 129, 204, 255, 129, 129, 204, 255, 129, 129, 204, 255, 129, 129, 204, 255, 122, 122, 192, 255, 136, 136, 181, 255, 164, 164, 206, 255, 143, 143, 193, 255, 80, 69, 121, 228, 76, 66, 118, 222, 131, 128, 174, 249, 164, 164, 202, 255, 185, 185, 217, 255, 183, 183, 216, 255, 180, 180, 215, 255, 178, 178, 214, 255, 171, 171, 193, 255, 165, 165, 173, 255, 165, 165, 173, 255, 165, 165, 173, 255, 162, 162, 172, 255, 125, 124, 159, 253, 70, 60, 112, 238, 31, 12, 65, 209, 25, 4, 57, 172, 26, 5, 56, 96, 26, 6, 57, 35, 26, 0, 51, 9, + 0, 0, 0, 0, 135, 135, 186, 96, 176, 176, 205, 255, 233, 233, 233, 255, 238, 238, 238, 255, 244, 244, 244, 255, 249, 249, 249, 255, 253, 253, 253, 255, 250, 250, 250, 255, 245, 245, 245, 255, 239, 239, 239, 255, 234, 234, 234, 255, 229, 229, 229, 255, 223, 223, 223, 255, 218, 218, 220, 255, 192, 192, 212, 255, 161, 161, 204, 255, 184, 184, 216, 255, 157, 157, 209, 255, 138, 138, 204, 255, 138, 138, 204, 255, 138, 138, 204, 255, 138, 138, 204, 255, 138, 138, 204, 255, 130, 130, 192, 255, 136, 136, 181, 255, 166, 166, 207, 255, 160, 160, 205, 255, 131, 130, 180, 252, 48, 32, 84, 155, 25, 4, 57, 117, 73, 61, 113, 199, 114, 111, 161, 245, 156, 156, 197, 255, 176, 176, 212, 255, 178, 178, 214, 255, 172, 172, 192, 255, 168, 168, 172, 255, 164, 164, 171, 255, 139, 139, 167, 255, 79, 71, 120, 241, 31, 12, 65, 211, 25, 4, 57, 175, 26, 4, 58, 111, 28, 5, 57, 47, 18, 0, 55, 12, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 131, 182, 209, 216, 216, 222, 255, 233, 233, 233, 255, 238, 238, 238, 255, 243, 243, 243, 255, 248, 248, 248, 255, 252, 252, 252, 255, 250, 250, 250, 255, 245, 245, 245, 255, 239, 239, 239, 255, 234, 234, 234, 255, 229, 229, 229, 255, 223, 223, 223, 255, 218, 218, 220, 255, 213, 213, 219, 255, 152, 152, 197, 255, 193, 193, 220, 255, 177, 177, 214, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 149, 149, 204, 255, 128, 128, 174, 255, 166, 166, 207, 255, 161, 161, 206, 255, 142, 142, 192, 255, 95, 87, 139, 220, 26, 7, 56, 68, 23, 6, 58, 38, 24, 5, 55, 92, 58, 45, 97, 181, 104, 100, 150, 240, 144, 144, 189, 255, 165, 165, 186, 255, 146, 146, 168, 255, 87, 79, 128, 243, 38, 20, 73, 217, 25, 4, 57, 185, 26, 4, 58, 119, 27, 5, 59, 49, 28, 0, 57, 16, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 129, 180, 255, 226, 226, 226, 255, 231, 231, 231, 255, 237, 237, 237, 255, 241, 241, 241, 255, 245, 245, 245, 255, 247, 247, 247, 255, 246, 246, 246, 255, 242, 242, 242, 255, 238, 238, 238, 255, 233, 233, 233, 255, 228, 228, 228, 255, 222, 222, 222, 255, 217, 217, 220, 255, 213, 213, 219, 255, 166, 166, 201, 255, 194, 194, 219, 255, 196, 196, 221, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 158, 158, 204, 255, 119, 119, 167, 255, 166, 166, 207, 255, 161, 161, 206, 255, 143, 143, 192, 255, 107, 102, 153, 243, 25, 4, 56, 114, 28, 0, 57, 16, 21, 0, 64, 10, 23, 8, 60, 30, 26, 3, 58, 77, 52, 38, 90, 166, 82, 75, 127, 227, 51, 36, 89, 221, 26, 3, 57, 191, 26, 3, 57, 128, 26, 4, 56, 59, 23, 0, 58, 19, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 125, 125, 176, 255, 224, 224, 224, 255, 229, 229, 229, 255, 233, 233, 233, 255, 237, 237, 237, 255, 240, 240, 240, 255, 241, 241, 241, 255, 240, 240, 240, 255, 238, 238, 238, 255, 234, 234, 234, 255, 230, 230, 230, 255, 225, 225, 225, 255, 220, 220, 221, 255, 216, 216, 220, 255, 212, 212, 218, 255, 186, 186, 209, 255, 183, 183, 213, 255, 208, 208, 226, 255, 173, 173, 207, 255, 168, 168, 204, 255, 168, 168, 204, 255, 168, 168, 204, 255, 168, 168, 204, 255, 168, 168, 204, 255, 119, 119, 167, 255, 165, 165, 207, 255, 161, 161, 206, 255, 141, 141, 191, 255, 103, 98, 150, 245, 26, 5, 57, 147, 21, 0, 53, 21, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 64, 7, 26, 9, 60, 26, 24, 3, 59, 64, 26, 4, 57, 102, 25, 3, 56, 71, 27, 0, 55, 24, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 120, 119, 170, 212, 197, 197, 209, 255, 226, 226, 226, 255, 230, 230, 230, 255, 232, 232, 232, 255, 235, 235, 235, 255, 235, 235, 235, 255, 235, 235, 235, 255, 233, 233, 233, 255, 230, 230, 230, 255, 227, 227, 227, 255, 222, 222, 222, 255, 218, 218, 220, 255, 214, 214, 219, 255, 210, 210, 218, 255, 202, 202, 216, 255, 168, 168, 204, 255, 217, 217, 229, 255, 189, 189, 212, 255, 177, 177, 204, 255, 177, 177, 204, 255, 177, 177, 204, 255, 177, 177, 204, 255, 177, 177, 204, 255, 119, 119, 167, 255, 164, 164, 207, 255, 160, 160, 206, 255, 133, 133, 183, 255, 84, 75, 127, 237, 26, 5, 57, 147, 21, 0, 53, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 43, 5, 28, 0, 57, 16, 32, 0, 64, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 104, 99, 152, 96, 144, 144, 182, 255, 222, 222, 222, 255, 225, 225, 225, 255, 228, 228, 228, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 229, 229, 229, 255, 226, 226, 226, 255, 223, 223, 223, 255, 219, 219, 220, 255, 215, 215, 220, 255, 212, 212, 219, 255, 208, 208, 218, 255, 204, 204, 217, 255, 158, 158, 198, 255, 226, 226, 233, 255, 205, 205, 218, 255, 186, 186, 204, 255, 186, 186, 204, 255, 186, 186, 204, 255, 186, 186, 204, 255, 150, 150, 183, 255, 139, 139, 184, 255, 163, 163, 207, 255, 149, 149, 197, 255, 114, 113, 164, 253, 39, 21, 74, 214, 25, 4, 56, 114, 28, 0, 57, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 0, 51, 9, 101, 97, 148, 191, 154, 154, 187, 255, 220, 220, 221, 255, 223, 223, 223, 255, 224, 224, 224, 255, 225, 225, 225, 255, 224, 224, 224, 255, 223, 223, 223, 255, 221, 221, 221, 255, 218, 218, 220, 255, 216, 216, 220, 255, 212, 212, 219, 255, 209, 209, 218, 255, 206, 206, 217, 255, 202, 202, 216, 255, 164, 164, 200, 255, 215, 215, 227, 255, 221, 221, 226, 255, 196, 196, 204, 255, 196, 196, 204, 255, 175, 175, 194, 255, 135, 135, 175, 255, 142, 142, 186, 255, 167, 167, 207, 255, 154, 154, 199, 255, 118, 118, 169, 255, 62, 50, 102, 233, 24, 4, 56, 173, 24, 4, 56, 56, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 60, 26, 88, 82, 134, 197, 138, 138, 177, 255, 204, 204, 213, 255, 219, 219, 220, 255, 219, 219, 221, 255, 219, 219, 221, 255, 218, 218, 220, 255, 216, 216, 220, 255, 214, 214, 219, 255, 212, 212, 219, 255, 209, 209, 218, 255, 206, 206, 217, 255, 203, 203, 217, 255, 200, 200, 215, 255, 189, 189, 211, 255, 151, 151, 193, 255, 195, 195, 211, 255, 158, 158, 187, 255, 138, 138, 179, 255, 142, 142, 186, 255, 165, 165, 203, 255, 169, 169, 208, 255, 145, 145, 190, 255, 110, 109, 160, 253, 61, 49, 101, 233, 25, 5, 57, 187, 26, 5, 56, 96, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 7, 60, 33, 61, 48, 101, 152, 108, 106, 154, 247, 155, 155, 185, 255, 201, 201, 212, 255, 214, 214, 219, 255, 214, 214, 219, 255, 212, 212, 219, 255, 211, 211, 218, 255, 208, 208, 218, 255, 206, 206, 217, 255, 203, 203, 217, 255, 200, 200, 216, 255, 197, 197, 215, 255, 194, 194, 214, 255, 190, 190, 213, 255, 161, 161, 198, 255, 168, 168, 202, 255, 179, 179, 211, 255, 175, 175, 210, 255, 152, 152, 193, 255, 123, 123, 172, 255, 90, 85, 137, 247, 37, 19, 72, 218, 24, 4, 56, 173, 26, 5, 56, 96, 21, 11, 53, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 59, 23, 25, 3, 55, 80, 60, 48, 100, 189, 85, 79, 131, 237, 125, 125, 168, 255, 158, 158, 187, 255, 183, 183, 203, 255, 200, 200, 214, 255, 205, 205, 217, 255, 202, 202, 216, 255, 200, 200, 216, 255, 197, 197, 215, 255, 194, 194, 214, 255, 191, 191, 213, 255, 188, 188, 213, 255, 175, 175, 205, 255, 153, 153, 190, 255, 133, 133, 176, 255, 105, 104, 154, 253, 78, 71, 123, 242, 43, 27, 79, 220, 25, 5, 58, 192, 25, 5, 58, 142, 26, 4, 58, 61, 32, 0, 64, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 64, 7, 27, 7, 60, 33, 24, 3, 57, 82, 34, 16, 68, 147, 55, 42, 94, 208, 69, 60, 111, 229, 86, 81, 133, 243, 85, 80, 132, 245, 127, 127, 169, 255, 126, 126, 169, 255, 125, 125, 168, 255, 125, 125, 168, 255, 109, 108, 155, 253, 85, 80, 132, 246, 81, 75, 126, 242, 68, 58, 110, 234, 48, 33, 86, 220, 24, 4, 57, 199, 25, 4, 57, 177, 26, 3, 57, 128, 27, 3, 57, 66, 26, 9, 60, 26, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 51, 9, 21, 0, 53, 21, 26, 5, 56, 44, 26, 3, 57, 78, 26, 4, 57, 113, 26, 5, 58, 145, 25, 4, 57, 159, 25, 4, 57, 187, 25, 5, 57, 194, 25, 5, 57, 194, 25, 5, 57, 192, 25, 4, 57, 180, 26, 4, 57, 156, 26, 5, 58, 138, 26, 4, 57, 110, 26, 3, 57, 70, 27, 7, 54, 33, 26, 0, 64, 17, 43, 0, 43, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 2, 26, 0, 51, 9, 32, 0, 64, 14, 21, 0, 53, 21, 21, 0, 53, 21, 24, 8, 56, 28, 24, 8, 56, 28, 24, 8, 56, 28, 24, 8, 56, 28, 26, 9, 60, 26, 21, 0, 53, 21, 23, 0, 58, 19, 32, 0, 64, 14, 32, 0, 64, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceScanner(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 145, 67, 67, 67, 194, 105, 105, 105, 240, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 128, 255, 77, 77, 128, 255, 78, 78, 136, 197, 66, 66, 99, 196, 60, 60, 83, 137, 46, 46, 46, 88, 43, 43, 43, 38, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 70, 70, 176, 230, 230, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 188, 233, 255, 102, 102, 204, 255, 102, 102, 204, 255, 102, 102, 204, 255, 102, 102, 204, 255, 118, 118, 201, 255, 118, 118, 124, 255, 64, 64, 64, 228, 47, 47, 47, 154, 46, 46, 46, 89, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 116, 116, 240, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 220, 220, 239, 255, 175, 175, 226, 255, 175, 175, 226, 255, 202, 202, 234, 255, 247, 247, 247, 255, 247, 247, 247, 255, 247, 247, 247, 255, 210, 210, 210, 255, 137, 137, 137, 255, 76, 76, 76, 243, 48, 48, 48, 170, 41, 41, 41, 60, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 98, 98, 98, 255, 168, 168, 168, 255, 215, 215, 215, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 238, 238, 238, 255, 203, 203, 203, 255, 133, 133, 133, 255, 62, 62, 62, 218, 44, 44, 44, 111, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 20, 40, 40, 40, 123, 37, 37, 37, 217, 49, 49, 49, 250, 73, 73, 73, 255, 107, 107, 107, 255, 152, 152, 152, 255, 196, 196, 196, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 230, 230, 230, 255, 163, 163, 163, 255, 74, 74, 74, 233, 43, 43, 43, 115, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 0, 0, 0, 76, 0, 0, 0, 115, 22, 22, 22, 184, 36, 36, 36, 224, 46, 46, 46, 246, 51, 51, 51, 255, 62, 62, 62, 255, 94, 94, 94, 255, 136, 136, 136, 255, 179, 179, 179, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 221, 221, 221, 255, 142, 142, 142, 255, 115, 115, 115, 255, 63, 63, 63, 233, 46, 46, 46, 143, 30, 30, 30, 27, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 15, 0, 0, 0, 30, 0, 0, 0, 69, 0, 0, 0, 112, 15, 15, 15, 167, 34, 34, 34, 217, 44, 44, 44, 241, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 81, 81, 81, 255, 122, 122, 122, 255, 162, 162, 162, 255, 203, 203, 203, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 213, 213, 213, 255, 138, 138, 144, 255, 153, 153, 161, 255, 153, 153, 161, 255, 115, 115, 122, 255, 76, 76, 79, 245, 44, 44, 44, 148, 29, 29, 29, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 55, 0, 0, 0, 101, 11, 11, 11, 154, 28, 28, 28, 205, 44, 44, 44, 241, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 71, 71, 71, 255, 111, 111, 111, 255, 149, 149, 149, 255, 178, 178, 178, 255, 206, 206, 206, 255, 158, 158, 158, 255, 153, 153, 173, 255, 153, 153, 173, 255, 153, 153, 173, 255, 153, 153, 173, 255, 153, 153, 173, 255, 128, 128, 144, 255, 76, 76, 82, 245, 44, 44, 44, 148, 38, 38, 38, 43, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 22, 0, 0, 0, 46, 0, 0, 0, 88, 6, 6, 6, 143, 25, 25, 25, 198, 39, 39, 39, 230, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 61, 61, 61, 255, 83, 83, 86, 255, 134, 134, 159, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 153, 153, 184, 255, 134, 134, 161, 255, 89, 89, 102, 255, 46, 46, 46, 177, 34, 34, 34, 48, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 78, 0, 0, 0, 122, 21, 21, 21, 190, 36, 36, 36, 225, 49, 49, 49, 250, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 70, 70, 77, 255, 108, 108, 131, 255, 147, 147, 186, 255, 153, 153, 195, 255, 153, 153, 195, 255, 153, 153, 195, 255, 153, 153, 195, 255, 153, 153, 195, 255, 140, 140, 178, 255, 89, 89, 106, 255, 55, 55, 59, 178, 34, 34, 34, 48, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 69, 0, 0, 0, 113, 18, 18, 18, 178, 36, 36, 36, 224, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 89, 89, 108, 255, 121, 121, 157, 255, 153, 153, 207, 255, 153, 153, 207, 255, 153, 153, 207, 255, 153, 153, 207, 255, 153, 153, 207, 255, 147, 147, 198, 255, 102, 102, 131, 255, 55, 55, 60, 191, 42, 42, 42, 78, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 69, 60, 60, 60, 138, 96, 96, 96, 215, 113, 113, 113, 255, 141, 141, 141, 255, 136, 136, 136, 255, 114, 114, 114, 255, 99, 99, 99, 255, 72, 72, 72, 255, 51, 51, 51, 255, 51, 51, 51, 255, 64, 64, 71, 255, 102, 102, 133, 255, 140, 140, 197, 255, 153, 153, 218, 255, 153, 153, 218, 255, 153, 153, 218, 255, 153, 153, 218, 255, 147, 147, 208, 255, 108, 108, 147, 255, 63, 63, 73, 207, 40, 40, 40, 82, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 50, 50, 50, 98, 94, 94, 94, 178, 114, 114, 114, 240, 143, 143, 143, 255, 156, 156, 156, 255, 136, 136, 136, 255, 145, 152, 160, 255, 143, 167, 191, 255, 140, 179, 217, 255, 129, 167, 204, 255, 114, 136, 158, 255, 116, 124, 132, 255, 116, 116, 116, 255, 104, 104, 104, 255, 79, 79, 79, 255, 60, 60, 60, 255, 51, 51, 51, 255, 83, 83, 105, 255, 115, 115, 161, 255, 153, 153, 229, 255, 153, 153, 229, 255, 153, 153, 229, 255, 153, 153, 229, 255, 153, 153, 229, 255, 115, 115, 164, 255, 62, 62, 74, 208, 43, 43, 43, 96, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 81, 79, 79, 79, 146, 107, 107, 107, 225, 141, 141, 141, 255, 171, 171, 171, 255, 156, 156, 156, 255, 150, 153, 155, 255, 165, 168, 172, 255, 207, 207, 207, 255, 227, 236, 245, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 105, 160, 213, 255, 98, 137, 177, 255, 102, 121, 139, 255, 114, 114, 114, 255, 105, 105, 105, 255, 90, 90, 90, 255, 68, 68, 68, 255, 57, 57, 62, 255, 96, 96, 132, 255, 134, 134, 205, 255, 153, 153, 241, 255, 153, 153, 241, 255, 153, 153, 241, 255, 153, 153, 241, 255, 102, 102, 148, 255, 28, 28, 28, 118, 0, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 114, 112, 112, 112, 194, 134, 134, 134, 255, 168, 168, 168, 255, 181, 181, 181, 255, 155, 155, 155, 255, 154, 163, 169, 255, 136, 164, 193, 255, 165, 195, 226, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 73, 146, 220, 255, 75, 126, 178, 255, 85, 117, 149, 255, 105, 110, 116, 255, 108, 108, 108, 255, 93, 93, 93, 255, 74, 74, 74, 255, 77, 77, 94, 255, 115, 115, 176, 255, 147, 147, 240, 255, 153, 153, 252, 255, 102, 102, 152, 255, 10, 10, 10, 169, 0, 0, 0, 57, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 97, 100, 100, 100, 162, 127, 127, 127, 240, 162, 162, 162, 255, 209, 209, 209, 255, 179, 179, 179, 255, 161, 163, 164, 255, 187, 187, 187, 255, 197, 201, 204, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 71, 149, 228, 255, 59, 141, 224, 255, 50, 135, 221, 255, 38, 128, 217, 255, 41, 117, 192, 255, 59, 107, 156, 255, 86, 105, 124, 255, 106, 106, 106, 255, 96, 96, 96, 255, 80, 80, 80, 255, 102, 102, 140, 255, 64, 64, 77, 255, 0, 0, 0, 170, 0, 0, 0, 45, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 71, 71, 71, 146, 120, 120, 120, 209, 163, 163, 163, 255, 204, 204, 204, 255, 208, 208, 208, 255, 171, 174, 177, 255, 156, 170, 180, 255, 154, 172, 183, 255, 190, 210, 223, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 71, 149, 228, 255, 59, 141, 224, 255, 50, 135, 221, 255, 38, 128, 217, 255, 27, 120, 213, 255, 22, 113, 204, 255, 60, 110, 160, 255, 105, 112, 118, 255, 110, 110, 110, 255, 106, 106, 106, 255, 121, 121, 159, 255, 77, 77, 96, 255, 0, 0, 0, 167, 0, 0, 0, 27, + 51, 51, 51, 16, 51, 51, 51, 113, 103, 103, 103, 178, 149, 149, 149, 255, 196, 196, 196, 255, 240, 240, 240, 255, 211, 211, 211, 255, 168, 178, 187, 255, 140, 162, 185, 255, 140, 179, 217, 255, 153, 204, 255, 255, 160, 206, 243, 255, 181, 215, 234, 255, 202, 225, 240, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 71, 149, 228, 255, 59, 141, 224, 255, 50, 135, 221, 255, 62, 129, 196, 255, 89, 124, 159, 255, 123, 123, 123, 255, 120, 120, 120, 255, 118, 118, 124, 255, 133, 133, 179, 255, 148, 148, 232, 255, 153, 153, 255, 255, 74, 74, 100, 251, 0, 0, 0, 166, 0, 0, 0, 24, + 50, 50, 50, 65, 185, 185, 185, 255, 247, 247, 247, 255, 250, 250, 250, 255, 246, 246, 246, 255, 244, 244, 244, 255, 240, 240, 240, 255, 207, 220, 233, 255, 184, 216, 248, 255, 158, 206, 254, 255, 153, 204, 255, 255, 160, 206, 243, 255, 181, 215, 234, 255, 202, 225, 240, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 94, 165, 235, 255, 82, 157, 231, 255, 76, 149, 223, 255, 95, 141, 188, 255, 126, 136, 147, 255, 134, 134, 134, 255, 130, 130, 130, 255, 130, 130, 140, 255, 141, 141, 193, 255, 153, 153, 241, 255, 153, 153, 246, 255, 153, 153, 250, 255, 153, 153, 255, 255, 68, 68, 95, 239, 0, 0, 0, 155, 0, 0, 0, 22, + 48, 48, 48, 68, 167, 167, 167, 255, 206, 206, 206, 255, 215, 215, 215, 255, 234, 234, 234, 255, 243, 243, 243, 255, 244, 244, 244, 255, 240, 240, 240, 255, 236, 236, 236, 255, 233, 233, 233, 255, 206, 222, 238, 255, 181, 212, 237, 255, 181, 215, 234, 255, 202, 225, 240, 255, 224, 236, 246, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 129, 188, 247, 255, 118, 180, 243, 255, 106, 173, 239, 255, 106, 159, 212, 255, 125, 153, 181, 255, 147, 147, 147, 255, 144, 144, 144, 255, 140, 140, 140, 255, 140, 140, 158, 255, 148, 148, 204, 255, 153, 153, 232, 255, 153, 153, 236, 255, 153, 153, 241, 255, 153, 153, 246, 255, 153, 153, 250, 255, 153, 153, 255, 255, 62, 62, 82, 237, 0, 0, 0, 136, 0, 0, 0, 18, + 48, 48, 48, 68, 141, 141, 141, 255, 211, 211, 211, 255, 211, 211, 211, 255, 211, 211, 211, 255, 213, 213, 213, 255, 224, 224, 224, 255, 236, 236, 236, 255, 240, 240, 240, 255, 236, 236, 236, 255, 233, 233, 233, 255, 229, 229, 229, 255, 224, 225, 227, 255, 216, 224, 230, 255, 224, 232, 238, 255, 255, 255, 255, 255, 242, 247, 251, 255, 213, 231, 243, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 153, 204, 255, 255, 141, 196, 251, 255, 132, 187, 242, 255, 135, 169, 205, 255, 150, 158, 166, 255, 158, 158, 158, 255, 154, 154, 154, 255, 151, 151, 154, 255, 149, 149, 171, 255, 152, 152, 209, 255, 153, 153, 223, 255, 153, 153, 227, 255, 153, 153, 232, 255, 153, 153, 236, 255, 153, 153, 241, 255, 153, 153, 246, 255, 128, 128, 200, 255, 74, 74, 100, 251, 27, 27, 27, 215, 0, 0, 0, 124, 0, 0, 0, 18, + 37, 37, 37, 22, 133, 133, 133, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 215, 215, 215, 255, 219, 219, 219, 255, 228, 228, 228, 255, 234, 234, 234, 255, 233, 233, 233, 255, 229, 229, 229, 255, 226, 226, 226, 255, 223, 223, 223, 255, 221, 221, 221, 255, 225, 227, 229, 255, 212, 225, 233, 255, 186, 217, 235, 255, 153, 204, 255, 255, 179, 217, 255, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 236, 245, 255, 255, 198, 227, 255, 255, 173, 214, 255, 255, 158, 199, 241, 255, 163, 183, 204, 255, 167, 167, 167, 255, 168, 168, 168, 255, 164, 164, 164, 255, 159, 159, 165, 255, 155, 155, 180, 255, 153, 153, 205, 255, 153, 153, 212, 255, 153, 153, 218, 255, 153, 153, 223, 255, 153, 153, 227, 255, 153, 153, 232, 255, 153, 153, 236, 255, 128, 128, 194, 255, 74, 74, 98, 251, 29, 29, 29, 223, 4, 4, 4, 183, 0, 0, 0, 149, 0, 0, 0, 82, 0, 0, 0, 10, + 0, 0, 0, 1, 135, 135, 135, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 219, 219, 219, 255, 224, 224, 224, 255, 228, 228, 228, 255, 229, 229, 229, 255, 226, 226, 226, 255, 223, 223, 223, 255, 219, 219, 219, 255, 216, 216, 216, 255, 211, 213, 214, 255, 189, 208, 227, 255, 186, 215, 243, 255, 211, 233, 255, 255, 236, 245, 255, 255, 255, 255, 255, 255, 234, 242, 251, 255, 195, 213, 230, 255, 183, 190, 197, 255, 182, 182, 182, 255, 179, 179, 179, 255, 175, 175, 175, 255, 167, 167, 174, 255, 158, 158, 184, 255, 153, 153, 198, 255, 153, 153, 203, 255, 153, 153, 208, 255, 153, 153, 212, 255, 153, 153, 218, 255, 153, 153, 223, 255, 153, 153, 227, 255, 128, 128, 187, 255, 77, 77, 97, 255, 35, 35, 35, 231, 4, 4, 4, 186, 0, 0, 0, 151, 0, 0, 0, 96, 0, 0, 0, 40, 0, 0, 0, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 74, 74, 74, 226, 158, 158, 158, 255, 212, 212, 212, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 223, 223, 223, 255, 224, 224, 224, 255, 225, 225, 225, 255, 226, 226, 226, 255, 223, 223, 223, 255, 219, 219, 219, 255, 216, 216, 216, 255, 212, 212, 212, 255, 209, 209, 209, 255, 207, 209, 212, 255, 217, 221, 225, 255, 220, 220, 220, 255, 199, 199, 199, 255, 192, 192, 192, 255, 188, 188, 188, 255, 184, 184, 184, 255, 171, 171, 181, 255, 160, 160, 183, 255, 153, 153, 189, 255, 153, 153, 194, 255, 153, 153, 198, 255, 153, 153, 203, 255, 153, 153, 208, 255, 153, 153, 212, 255, 153, 153, 218, 255, 128, 128, 180, 255, 77, 77, 95, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 109, 0, 0, 0, 43, 0, 0, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 24, 24, 24, 170, 51, 51, 51, 229, 116, 116, 116, 255, 194, 194, 194, 255, 212, 212, 212, 255, 156, 156, 156, 255, 122, 122, 122, 255, 112, 112, 112, 255, 116, 116, 116, 255, 121, 121, 121, 255, 158, 158, 158, 255, 209, 209, 209, 255, 228, 228, 228, 255, 228, 228, 228, 255, 227, 227, 227, 255, 226, 226, 226, 255, 220, 220, 220, 255, 216, 216, 216, 255, 212, 212, 212, 255, 209, 209, 209, 255, 205, 205, 205, 255, 202, 202, 202, 255, 199, 199, 199, 255, 192, 192, 193, 255, 175, 175, 183, 255, 157, 157, 177, 255, 153, 153, 180, 255, 153, 153, 184, 255, 153, 153, 189, 255, 153, 153, 194, 255, 153, 153, 198, 255, 153, 153, 203, 255, 153, 153, 208, 255, 128, 128, 172, 255, 77, 77, 93, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 70, 12, 12, 12, 138, 31, 31, 31, 209, 56, 56, 56, 245, 50, 50, 50, 247, 49, 49, 49, 251, 63, 63, 63, 255, 68, 68, 68, 255, 74, 74, 74, 255, 101, 101, 101, 255, 135, 135, 135, 255, 203, 203, 203, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 232, 232, 232, 255, 228, 228, 228, 255, 222, 222, 222, 255, 212, 212, 212, 255, 209, 209, 209, 255, 198, 198, 199, 255, 174, 174, 179, 255, 156, 156, 168, 255, 153, 153, 171, 255, 153, 153, 175, 255, 153, 153, 180, 255, 153, 153, 184, 255, 153, 153, 189, 255, 153, 153, 194, 255, 153, 153, 198, 255, 134, 134, 174, 255, 77, 77, 90, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 19, 0, 0, 0, 48, 0, 0, 0, 96, 0, 0, 0, 140, 0, 0, 0, 151, 0, 0, 0, 158, 5, 5, 5, 172, 21, 21, 21, 196, 41, 41, 41, 235, 73, 73, 73, 255, 145, 145, 145, 255, 231, 231, 231, 255, 236, 236, 236, 255, 236, 236, 236, 255, 211, 211, 211, 255, 171, 178, 168, 255, 211, 211, 211, 255, 235, 235, 235, 255, 199, 199, 199, 255, 153, 153, 157, 255, 153, 153, 161, 255, 153, 153, 166, 255, 153, 153, 171, 255, 153, 153, 175, 255, 153, 153, 180, 255, 153, 153, 184, 255, 153, 153, 189, 255, 140, 140, 176, 255, 89, 89, 106, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0, 0, 37, 0, 0, 0, 73, 28, 28, 28, 175, 70, 70, 70, 255, 202, 202, 202, 255, 241, 241, 241, 255, 241, 241, 241, 255, 158, 184, 145, 255, 153, 255, 102, 255, 138, 177, 119, 255, 241, 241, 241, 255, 197, 197, 197, 255, 153, 153, 157, 255, 153, 153, 161, 255, 153, 153, 166, 255, 153, 153, 171, 255, 153, 153, 175, 255, 153, 153, 180, 255, 140, 140, 167, 255, 89, 89, 103, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 27, 41, 41, 41, 180, 143, 143, 143, 255, 246, 246, 246, 255, 246, 246, 246, 255, 181, 193, 174, 255, 140, 217, 102, 255, 136, 168, 120, 255, 246, 246, 246, 255, 199, 199, 199, 255, 153, 153, 157, 255, 153, 153, 161, 255, 153, 153, 166, 255, 153, 153, 171, 255, 140, 140, 159, 255, 89, 89, 99, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22, 37, 31, 31, 31, 160, 59, 59, 59, 244, 138, 138, 138, 255, 213, 213, 213, 255, 214, 214, 214, 255, 232, 232, 232, 255, 250, 250, 250, 255, 202, 202, 202, 255, 153, 153, 157, 255, 153, 153, 161, 255, 140, 140, 151, 255, 89, 89, 96, 255, 35, 35, 35, 231, 9, 9, 9, 191, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 82, 19, 19, 19, 169, 36, 36, 36, 223, 89, 89, 89, 255, 178, 178, 178, 255, 241, 241, 241, 255, 204, 204, 204, 255, 140, 140, 143, 255, 89, 89, 92, 255, 38, 38, 38, 235, 8, 8, 8, 193, 0, 0, 0, 161, 0, 0, 0, 110, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 27, 0, 0, 0, 63, 7, 7, 7, 122, 28, 28, 28, 202, 60, 60, 60, 245, 89, 89, 89, 255, 41, 41, 41, 239, 16, 16, 16, 203, 0, 0, 0, 166, 0, 0, 0, 116, 0, 0, 0, 52, 0, 0, 0, 18, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 40, 0, 0, 0, 88, 10, 10, 10, 156, 0, 0, 0, 161, 0, 0, 0, 125, 0, 0, 0, 66, 0, 0, 0, 22, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 24, 0, 0, 0, 36, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DevicePDA(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 50, 50, 50, 65, 50, 50, 50, 115, 49, 49, 49, 133, 49, 49, 49, 134, 49, 49, 49, 164, 50, 50, 50, 195, 50, 50, 50, 196, 50, 50, 50, 196, 116, 93, 60, 196, 116, 92, 59, 196, 116, 90, 57, 196, 116, 89, 55, 196, 83, 69, 53, 196, 49, 49, 49, 181, 48, 48, 48, 136, 49, 49, 49, 134, 45, 45, 45, 73, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 50, 50, 50, 130, 50, 50, 50, 179, 65, 63, 56, 240, 102, 96, 71, 255, 153, 138, 87, 255, 179, 157, 93, 255, 204, 175, 99, 255, 230, 191, 102, 255, 255, 207, 105, 255, 255, 202, 100, 255, 204, 160, 84, 255, 204, 156, 80, 255, 179, 136, 72, 255, 153, 117, 66, 255, 178, 124, 62, 255, 166, 137, 67, 255, 153, 146, 69, 255, 128, 130, 66, 255, 128, 128, 65, 255, 164, 103, 49, 255, 89, 68, 50, 255, 30, 30, 30, 109, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 50, 50, 50, 177, 105, 105, 78, 240, 140, 138, 94, 255, 191, 185, 115, 255, 230, 217, 128, 255, 255, 236, 134, 255, 230, 209, 120, 255, 204, 182, 105, 255, 153, 136, 85, 255, 164, 126, 72, 255, 151, 108, 62, 255, 161, 96, 48, 255, 161, 91, 44, 255, 198, 106, 43, 255, 223, 117, 42, 255, 248, 128, 41, 255, 248, 130, 42, 255, 150, 91, 47, 255, 102, 153, 77, 255, 153, 255, 102, 255, 153, 255, 102, 255, 102, 153, 77, 255, 202, 119, 47, 255, 202, 119, 47, 255, 32, 32, 32, 205, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 131, 128, 108, 70, 255, 179, 159, 96, 255, 153, 139, 88, 255, 162, 118, 69, 255, 198, 128, 64, 255, 171, 89, 40, 255, 196, 98, 39, 255, 220, 107, 37, 255, 244, 116, 36, 255, 245, 118, 37, 255, 245, 120, 38, 255, 246, 122, 39, 255, 247, 124, 40, 255, 247, 126, 40, 255, 248, 128, 41, 255, 248, 130, 42, 255, 248, 131, 42, 255, 150, 92, 47, 255, 70, 89, 61, 255, 77, 102, 64, 255, 114, 119, 63, 255, 114, 99, 56, 255, 215, 126, 48, 255, 202, 121, 49, 255, 30, 30, 30, 217, 0, 0, 0, 90, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 204, 165, 89, 255, 255, 204, 102, 255, 255, 204, 102, 255, 195, 95, 38, 255, 243, 111, 34, 255, 244, 113, 35, 255, 244, 115, 35, 255, 244, 116, 36, 255, 245, 118, 37, 255, 245, 120, 38, 255, 246, 122, 39, 255, 247, 124, 40, 255, 247, 126, 40, 255, 248, 128, 41, 255, 248, 130, 42, 255, 248, 131, 42, 255, 249, 133, 43, 255, 225, 125, 45, 255, 250, 137, 44, 255, 251, 139, 45, 255, 252, 141, 46, 255, 252, 143, 47, 255, 253, 145, 48, 255, 203, 123, 49, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 204, 164, 87, 255, 255, 201, 100, 255, 255, 201, 100, 255, 195, 96, 38, 255, 244, 113, 35, 255, 244, 115, 35, 255, 244, 116, 36, 255, 233, 114, 41, 255, 197, 103, 54, 255, 173, 95, 63, 255, 149, 87, 71, 255, 125, 79, 79, 255, 100, 70, 87, 255, 211, 115, 53, 255, 248, 131, 42, 255, 249, 133, 43, 255, 250, 135, 44, 255, 250, 137, 44, 255, 239, 134, 45, 255, 202, 119, 47, 255, 164, 102, 48, 255, 139, 92, 50, 255, 177, 111, 50, 255, 203, 124, 50, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 162, 86, 255, 254, 199, 98, 255, 254, 199, 98, 255, 196, 98, 39, 255, 244, 115, 35, 255, 135, 79, 73, 255, 51, 51, 102, 255, 51, 51, 102, 255, 51, 51, 102, 255, 51, 51, 102, 255, 88, 65, 91, 255, 100, 70, 87, 255, 137, 86, 73, 255, 174, 101, 52, 255, 162, 97, 47, 255, 138, 88, 48, 255, 101, 72, 49, 255, 64, 57, 51, 255, 55, 57, 54, 255, 66, 78, 65, 255, 78, 99, 77, 255, 68, 79, 67, 255, 152, 100, 50, 255, 203, 125, 50, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 160, 85, 255, 254, 196, 97, 255, 254, 196, 97, 255, 196, 99, 39, 255, 244, 116, 36, 255, 172, 93, 61, 255, 136, 82, 71, 255, 149, 87, 58, 255, 124, 79, 56, 255, 137, 83, 46, 255, 100, 70, 49, 255, 63, 56, 50, 255, 51, 51, 51, 255, 74, 86, 74, 255, 83, 101, 83, 255, 111, 134, 110, 255, 126, 157, 124, 255, 104, 148, 102, 255, 110, 156, 107, 255, 113, 159, 110, 255, 117, 163, 114, 255, 85, 108, 83, 255, 153, 101, 51, 255, 204, 127, 51, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 158, 84, 255, 254, 194, 95, 255, 254, 194, 95, 255, 196, 100, 40, 255, 245, 118, 37, 255, 100, 68, 48, 255, 51, 51, 51, 255, 88, 101, 88, 255, 102, 121, 102, 255, 119, 141, 119, 255, 160, 187, 159, 255, 186, 211, 186, 255, 206, 236, 206, 255, 209, 238, 208, 255, 229, 255, 229, 255, 223, 255, 223, 255, 219, 255, 219, 255, 110, 156, 107, 255, 113, 159, 110, 255, 117, 163, 114, 255, 120, 166, 117, 255, 87, 110, 86, 255, 153, 102, 51, 255, 204, 128, 51, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 157, 83, 255, 253, 192, 93, 255, 253, 192, 93, 255, 196, 102, 40, 255, 245, 120, 38, 255, 100, 69, 48, 255, 220, 255, 220, 255, 240, 253, 240, 255, 246, 254, 246, 255, 246, 255, 246, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 220, 255, 220, 255, 217, 255, 217, 255, 113, 159, 110, 255, 117, 163, 114, 255, 120, 166, 117, 255, 123, 170, 121, 255, 89, 112, 88, 255, 153, 102, 51, 255, 204, 128, 52, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 155, 81, 255, 253, 189, 91, 255, 253, 189, 91, 255, 197, 103, 41, 255, 246, 122, 39, 255, 100, 69, 48, 255, 224, 250, 224, 255, 250, 255, 250, 255, 246, 255, 246, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 117, 163, 114, 255, 120, 167, 118, 255, 123, 170, 121, 255, 127, 174, 125, 255, 90, 113, 89, 255, 153, 103, 52, 255, 204, 129, 53, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 203, 153, 80, 255, 253, 187, 90, 255, 253, 187, 90, 255, 197, 104, 42, 255, 247, 124, 40, 255, 100, 70, 48, 255, 218, 245, 217, 255, 246, 255, 246, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 197, 244, 197, 255, 121, 167, 118, 255, 123, 170, 121, 255, 127, 174, 125, 255, 130, 177, 128, 255, 92, 115, 91, 255, 153, 104, 53, 255, 204, 131, 55, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 202, 151, 79, 255, 252, 184, 88, 255, 252, 184, 88, 255, 198, 106, 43, 255, 247, 126, 40, 255, 100, 70, 49, 255, 208, 238, 208, 255, 242, 255, 242, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 208, 255, 208, 255, 178, 228, 178, 255, 123, 170, 121, 255, 127, 174, 125, 255, 130, 177, 128, 255, 133, 180, 131, 255, 94, 117, 93, 255, 153, 105, 54, 255, 204, 132, 56, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 202, 149, 77, 255, 252, 182, 86, 255, 252, 182, 86, 255, 198, 108, 43, 255, 248, 128, 41, 255, 100, 71, 49, 255, 202, 233, 202, 255, 237, 255, 237, 255, 234, 255, 234, 255, 230, 255, 230, 255, 224, 255, 224, 255, 221, 255, 221, 255, 217, 255, 217, 255, 211, 255, 211, 255, 208, 255, 208, 255, 204, 255, 204, 255, 154, 202, 152, 255, 127, 174, 125, 255, 130, 177, 128, 255, 133, 180, 131, 255, 137, 184, 135, 255, 95, 118, 94, 255, 153, 105, 54, 255, 204, 133, 56, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 202, 147, 76, 255, 252, 179, 84, 255, 252, 179, 84, 255, 199, 109, 44, 255, 248, 130, 42, 255, 100, 71, 49, 255, 193, 227, 193, 255, 235, 255, 235, 255, 230, 255, 230, 255, 226, 255, 226, 255, 222, 255, 222, 255, 217, 255, 217, 255, 212, 255, 212, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 131, 179, 130, 255, 130, 177, 128, 255, 133, 180, 131, 255, 137, 184, 135, 255, 140, 187, 138, 255, 97, 120, 96, 255, 153, 106, 55, 255, 204, 135, 58, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 201, 146, 75, 255, 251, 177, 83, 255, 251, 177, 83, 255, 199, 110, 44, 255, 249, 132, 43, 255, 101, 72, 49, 255, 187, 222, 186, 255, 230, 255, 230, 255, 226, 255, 226, 255, 222, 255, 222, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 172, 221, 172, 255, 130, 177, 128, 255, 133, 180, 131, 255, 137, 184, 135, 255, 140, 187, 138, 255, 144, 191, 142, 255, 99, 123, 98, 255, 153, 107, 56, 255, 204, 136, 59, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 201, 143, 74, 255, 251, 174, 81, 255, 251, 174, 81, 255, 199, 112, 45, 255, 249, 134, 43, 255, 101, 72, 49, 255, 178, 214, 177, 255, 226, 255, 226, 255, 222, 255, 222, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 198, 248, 199, 255, 139, 186, 137, 255, 133, 180, 131, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 100, 124, 100, 255, 153, 108, 57, 255, 204, 137, 61, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 201, 142, 72, 255, 251, 172, 79, 255, 251, 172, 79, 255, 200, 113, 45, 255, 250, 136, 44, 255, 101, 72, 49, 255, 171, 210, 170, 255, 222, 255, 222, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 198, 248, 199, 255, 164, 213, 164, 255, 133, 180, 131, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 101, 125, 101, 255, 153, 109, 58, 255, 204, 139, 62, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 141, 71, 255, 250, 171, 78, 255, 250, 171, 78, 255, 200, 115, 46, 255, 251, 138, 45, 255, 101, 73, 50, 255, 164, 205, 163, 255, 217, 255, 217, 255, 213, 255, 213, 255, 209, 255, 209, 255, 204, 255, 204, 255, 203, 254, 203, 255, 198, 248, 199, 255, 187, 236, 188, 255, 138, 185, 136, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 104, 128, 103, 255, 153, 110, 59, 255, 204, 140, 63, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 139, 69, 255, 250, 168, 76, 255, 250, 168, 76, 255, 201, 116, 46, 255, 251, 140, 45, 255, 101, 74, 50, 255, 163, 205, 162, 255, 214, 255, 214, 255, 210, 255, 210, 255, 204, 255, 204, 255, 204, 255, 204, 255, 199, 249, 200, 255, 194, 244, 197, 255, 156, 204, 156, 255, 137, 184, 135, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 156, 204, 155, 255, 105, 129, 104, 255, 153, 111, 60, 255, 204, 141, 64, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 137, 68, 255, 250, 166, 74, 255, 250, 166, 74, 255, 201, 118, 47, 255, 252, 142, 46, 255, 101, 74, 50, 255, 163, 207, 161, 255, 210, 255, 210, 255, 205, 255, 205, 255, 204, 255, 204, 255, 199, 249, 200, 255, 195, 244, 197, 255, 188, 236, 191, 255, 141, 188, 139, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 156, 204, 155, 255, 160, 209, 158, 255, 107, 131, 106, 255, 153, 111, 60, 255, 204, 142, 65, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 135, 67, 255, 249, 163, 73, 255, 249, 163, 73, 255, 202, 119, 47, 255, 253, 144, 47, 255, 102, 75, 50, 255, 163, 209, 162, 255, 205, 255, 205, 255, 204, 255, 204, 255, 199, 249, 200, 255, 196, 245, 198, 255, 191, 240, 194, 255, 168, 215, 170, 255, 141, 188, 139, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 157, 205, 156, 255, 160, 209, 158, 255, 164, 213, 162, 255, 109, 133, 108, 255, 153, 112, 61, 255, 204, 143, 67, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 133, 66, 255, 249, 161, 71, 255, 249, 161, 71, 255, 202, 121, 48, 255, 253, 145, 48, 255, 102, 75, 50, 255, 162, 210, 160, 255, 204, 255, 204, 255, 199, 249, 200, 255, 196, 245, 198, 255, 192, 241, 195, 255, 187, 234, 191, 255, 152, 199, 152, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 157, 205, 156, 255, 161, 210, 159, 255, 164, 213, 162, 255, 167, 216, 165, 255, 110, 135, 110, 255, 153, 113, 62, 255, 204, 144, 68, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 200, 131, 64, 255, 249, 158, 69, 255, 249, 158, 69, 255, 203, 122, 49, 255, 253, 147, 49, 255, 102, 75, 51, 255, 163, 212, 162, 255, 199, 249, 200, 255, 196, 245, 198, 255, 192, 241, 195, 255, 187, 235, 191, 255, 180, 227, 184, 255, 144, 191, 142, 255, 146, 194, 145, 255, 150, 198, 149, 255, 153, 201, 152, 255, 157, 205, 156, 255, 161, 210, 159, 255, 164, 213, 162, 255, 167, 216, 165, 255, 170, 220, 169, 255, 111, 136, 111, 255, 153, 114, 63, 255, 204, 146, 69, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 63, 58, 52, 255, 101, 78, 55, 255, 248, 156, 67, 255, 203, 123, 50, 255, 254, 149, 50, 255, 102, 76, 51, 255, 163, 211, 162, 255, 196, 245, 198, 255, 192, 241, 195, 255, 187, 235, 191, 255, 184, 230, 188, 255, 169, 216, 172, 255, 146, 194, 145, 255, 150, 198, 149, 255, 154, 202, 153, 255, 157, 205, 156, 255, 157, 206, 155, 255, 150, 198, 147, 255, 137, 185, 135, 255, 127, 174, 125, 255, 133, 180, 130, 255, 113, 138, 113, 255, 153, 114, 63, 255, 204, 147, 71, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 174, 114, 60, 255, 199, 127, 62, 255, 248, 153, 66, 255, 203, 125, 50, 255, 254, 151, 50, 255, 102, 76, 51, 255, 163, 211, 163, 255, 192, 241, 195, 255, 187, 235, 191, 255, 184, 230, 188, 255, 180, 226, 185, 255, 160, 206, 162, 255, 139, 187, 138, 255, 133, 180, 131, 255, 126, 173, 124, 255, 114, 161, 112, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 125, 172, 123, 255, 115, 140, 115, 255, 153, 116, 65, 255, 204, 148, 72, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 51, 51, 51, 255, 51, 51, 51, 255, 248, 151, 64, 255, 203, 126, 50, 255, 255, 153, 51, 255, 102, 77, 51, 255, 162, 210, 163, 255, 187, 235, 191, 255, 184, 230, 188, 255, 180, 226, 185, 255, 175, 220, 182, 255, 120, 166, 119, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 126, 173, 124, 255, 117, 142, 117, 255, 153, 116, 65, 255, 204, 149, 73, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 174, 112, 58, 255, 248, 149, 62, 255, 248, 149, 62, 255, 204, 128, 51, 255, 255, 153, 51, 255, 102, 77, 51, 255, 162, 209, 163, 255, 184, 230, 188, 255, 180, 226, 185, 255, 175, 220, 182, 255, 172, 216, 179, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 112, 158, 109, 255, 119, 165, 116, 255, 140, 188, 139, 255, 118, 143, 118, 255, 153, 117, 66, 255, 204, 151, 75, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 63, 57, 52, 255, 63, 57, 52, 255, 247, 146, 61, 255, 204, 128, 51, 255, 255, 155, 53, 255, 102, 77, 52, 255, 161, 208, 163, 255, 180, 226, 185, 255, 175, 220, 182, 255, 172, 216, 179, 255, 153, 198, 158, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 108, 154, 105, 255, 110, 157, 108, 255, 118, 164, 115, 255, 125, 172, 123, 255, 129, 177, 128, 255, 135, 183, 134, 255, 153, 201, 152, 255, 121, 146, 120, 255, 153, 118, 67, 255, 204, 152, 76, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 174, 109, 56, 255, 223, 132, 58, 255, 247, 144, 59, 255, 204, 129, 52, 255, 255, 156, 54, 255, 102, 78, 52, 255, 161, 208, 163, 255, 175, 220, 182, 255, 172, 216, 179, 255, 168, 212, 176, 255, 140, 184, 143, 255, 108, 154, 105, 255, 109, 155, 106, 255, 116, 163, 114, 255, 123, 170, 121, 255, 128, 175, 126, 255, 134, 182, 133, 255, 140, 188, 139, 255, 146, 194, 145, 255, 154, 202, 152, 255, 167, 216, 166, 255, 122, 147, 122, 255, 153, 119, 68, 255, 204, 153, 77, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 51, 51, 51, 255, 76, 62, 52, 255, 222, 130, 56, 255, 204, 130, 54, 255, 255, 158, 56, 255, 102, 78, 53, 255, 160, 207, 163, 255, 172, 216, 179, 255, 168, 212, 176, 255, 163, 206, 172, 255, 139, 184, 143, 255, 121, 168, 119, 255, 127, 174, 125, 255, 133, 180, 131, 255, 139, 187, 138, 255, 146, 194, 145, 255, 152, 201, 151, 255, 159, 207, 157, 255, 165, 214, 163, 255, 170, 219, 168, 255, 180, 230, 179, 255, 123, 148, 123, 255, 153, 119, 68, 255, 204, 154, 78, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 197, 117, 54, 255, 197, 117, 54, 255, 246, 139, 55, 255, 204, 132, 55, 255, 255, 160, 58, 255, 102, 78, 53, 255, 160, 207, 164, 255, 168, 212, 176, 255, 163, 206, 172, 255, 160, 202, 169, 255, 138, 184, 139, 255, 139, 187, 138, 255, 145, 193, 144, 255, 150, 198, 149, 255, 157, 206, 156, 255, 164, 212, 162, 255, 168, 218, 167, 255, 176, 225, 174, 255, 183, 233, 182, 255, 187, 238, 187, 255, 194, 245, 194, 255, 125, 151, 125, 255, 153, 120, 69, 255, 204, 156, 79, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 63, 56, 51, 255, 100, 73, 52, 255, 246, 137, 53, 255, 204, 133, 56, 255, 255, 162, 60, 255, 102, 79, 54, 255, 160, 206, 164, 255, 163, 206, 172, 255, 160, 202, 169, 255, 156, 197, 166, 255, 150, 197, 151, 255, 155, 203, 153, 255, 162, 211, 160, 255, 167, 216, 165, 255, 174, 224, 173, 255, 181, 231, 180, 255, 186, 236, 185, 255, 192, 243, 192, 255, 198, 249, 198, 255, 204, 255, 204, 255, 203, 254, 203, 255, 127, 153, 127, 255, 153, 121, 70, 255, 204, 157, 80, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 185, 108, 51, 255, 209, 118, 51, 255, 246, 134, 52, 255, 204, 134, 58, 255, 255, 163, 61, 255, 102, 79, 54, 255, 159, 205, 163, 255, 160, 202, 169, 255, 156, 197, 166, 255, 151, 191, 163, 255, 167, 216, 165, 255, 173, 223, 172, 255, 179, 229, 178, 255, 185, 235, 184, 255, 191, 241, 190, 255, 195, 246, 195, 255, 200, 251, 200, 255, 198, 249, 198, 255, 162, 200, 162, 255, 125, 151, 125, 255, 89, 102, 89, 255, 77, 69, 56, 255, 179, 140, 76, 255, 204, 158, 82, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 197, 111, 50, 255, 245, 132, 50, 255, 245, 132, 50, 255, 204, 135, 59, 255, 255, 165, 63, 255, 102, 80, 54, 255, 159, 205, 163, 255, 156, 197, 166, 255, 151, 191, 163, 255, 148, 187, 160, 255, 184, 234, 183, 255, 184, 234, 183, 255, 187, 237, 186, 255, 191, 241, 190, 255, 155, 192, 154, 255, 121, 146, 120, 255, 86, 99, 86, 255, 89, 77, 57, 255, 128, 102, 64, 255, 179, 137, 74, 255, 230, 174, 84, 255, 255, 192, 90, 255, 255, 194, 92, 255, 204, 159, 83, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 197, 110, 49, 255, 245, 129, 48, 255, 245, 129, 48, 255, 204, 137, 60, 255, 255, 167, 65, 255, 102, 80, 55, 255, 160, 205, 164, 255, 151, 191, 163, 255, 154, 197, 163, 255, 160, 204, 166, 255, 146, 183, 145, 255, 116, 141, 115, 255, 84, 96, 84, 255, 89, 76, 56, 255, 140, 109, 64, 255, 191, 143, 73, 255, 242, 178, 82, 255, 255, 187, 85, 255, 255, 189, 87, 255, 255, 191, 89, 255, 249, 163, 86, 255, 245, 145, 89, 255, 245, 131, 50, 255, 203, 158, 82, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 108, 48, 255, 245, 127, 47, 255, 245, 127, 47, 255, 204, 138, 62, 255, 255, 168, 66, 255, 102, 81, 55, 255, 136, 172, 136, 255, 111, 136, 110, 255, 81, 94, 81, 255, 102, 83, 57, 255, 153, 115, 64, 255, 204, 148, 71, 255, 242, 173, 78, 255, 250, 157, 64, 255, 251, 172, 78, 255, 255, 186, 84, 255, 253, 172, 75, 255, 246, 146, 81, 255, 244, 125, 52, 255, 236, 147, 71, 255, 190, 182, 177, 255, 191, 191, 191, 255, 221, 171, 118, 255, 202, 158, 85, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 106, 46, 255, 244, 125, 45, 255, 244, 125, 45, 255, 204, 139, 63, 255, 255, 170, 68, 255, 140, 104, 59, 255, 153, 112, 61, 255, 204, 144, 68, 255, 255, 176, 74, 255, 255, 178, 76, 255, 255, 180, 78, 255, 255, 181, 79, 255, 228, 179, 125, 255, 177, 177, 177, 255, 162, 158, 153, 255, 239, 203, 115, 255, 216, 168, 131, 255, 204, 204, 204, 255, 206, 193, 183, 255, 217, 159, 88, 255, 77, 77, 77, 255, 77, 77, 77, 255, 212, 196, 123, 255, 204, 166, 90, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 104, 45, 255, 244, 122, 44, 255, 244, 122, 44, 255, 204, 140, 64, 255, 255, 171, 69, 255, 255, 173, 71, 255, 255, 175, 73, 255, 255, 176, 74, 255, 253, 169, 70, 255, 249, 144, 55, 255, 250, 154, 62, 255, 255, 183, 81, 255, 165, 157, 152, 255, 83, 83, 83, 255, 145, 124, 93, 255, 236, 191, 101, 255, 132, 107, 79, 255, 77, 77, 77, 255, 124, 120, 95, 255, 254, 216, 116, 255, 217, 182, 100, 255, 230, 202, 112, 255, 255, 212, 110, 255, 204, 165, 88, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 196, 102, 44, 255, 244, 120, 42, 255, 244, 120, 42, 255, 204, 141, 65, 255, 254, 168, 68, 255, 249, 146, 55, 255, 249, 142, 53, 255, 251, 156, 62, 255, 237, 173, 134, 255, 239, 206, 187, 255, 240, 152, 87, 255, 252, 175, 79, 255, 231, 176, 93, 255, 192, 158, 107, 255, 166, 150, 124, 255, 229, 171, 96, 255, 242, 191, 96, 255, 204, 178, 101, 255, 242, 210, 114, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 204, 166, 89, 255, 30, 30, 30, 217, 0, 0, 0, 96, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 195, 101, 42, 255, 243, 117, 40, 255, 243, 117, 40, 255, 204, 142, 66, 255, 240, 151, 80, 255, 228, 211, 202, 255, 228, 182, 153, 255, 228, 146, 74, 255, 128, 128, 128, 255, 128, 128, 128, 255, 189, 164, 118, 255, 253, 194, 96, 255, 169, 165, 158, 255, 104, 104, 104, 255, 77, 77, 77, 255, 234, 209, 120, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 255, 204, 102, 255, 115, 99, 67, 255, 24, 24, 24, 208, 0, 0, 0, 93, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 195, 99, 41, 255, 243, 115, 38, 255, 243, 115, 38, 255, 204, 144, 68, 255, 164, 135, 107, 255, 128, 128, 128, 255, 137, 135, 129, 255, 251, 204, 110, 255, 115, 108, 76, 255, 115, 115, 83, 255, 242, 223, 128, 255, 255, 188, 86, 255, 222, 169, 94, 255, 190, 159, 111, 255, 204, 173, 97, 255, 255, 198, 96, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 242, 194, 99, 255, 102, 89, 64, 255, 23, 23, 23, 215, 0, 0, 0, 161, 0, 0, 0, 72, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 195, 97, 40, 255, 243, 112, 37, 255, 207, 101, 39, 255, 204, 145, 69, 255, 216, 164, 84, 255, 127, 125, 87, 255, 204, 195, 118, 255, 255, 197, 95, 255, 255, 185, 83, 255, 255, 187, 85, 255, 255, 188, 86, 255, 255, 189, 87, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 230, 185, 96, 255, 88, 78, 58, 251, 19, 19, 19, 210, 0, 0, 0, 160, 0, 0, 0, 84, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 119, 170, 88, 41, 255, 242, 110, 35, 255, 194, 95, 39, 255, 204, 147, 70, 255, 255, 180, 78, 255, 255, 182, 80, 255, 217, 158, 75, 255, 153, 118, 67, 255, 242, 178, 83, 255, 255, 188, 86, 255, 255, 189, 87, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 255, 203, 101, 255, 191, 156, 86, 255, 54, 51, 44, 239, 8, 8, 8, 193, 0, 0, 0, 148, 0, 0, 0, 76, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 39, 39, 39, 167, 97, 61, 42, 244, 158, 83, 41, 255, 204, 148, 71, 255, 255, 182, 80, 255, 255, 183, 81, 255, 89, 76, 57, 255, 51, 51, 51, 255, 128, 102, 64, 255, 255, 189, 87, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 255, 201, 99, 255, 230, 184, 94, 255, 113, 97, 65, 251, 26, 26, 26, 219, 0, 0, 0, 172, 0, 0, 0, 122, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 93, 26, 26, 26, 185, 99, 80, 54, 245, 153, 117, 66, 255, 204, 152, 75, 255, 51, 51, 51, 255, 51, 51, 51, 255, 102, 86, 60, 255, 255, 191, 89, 255, 255, 193, 91, 255, 255, 194, 92, 255, 255, 196, 94, 255, 255, 198, 96, 255, 255, 199, 97, 255, 191, 154, 84, 255, 127, 106, 68, 251, 29, 29, 29, 223, 4, 4, 4, 183, 0, 0, 0, 149, 0, 0, 0, 88, 0, 0, 0, 28, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 30, 0, 0, 0, 81, 11, 11, 11, 154, 21, 21, 21, 195, 30, 30, 30, 215, 39, 39, 39, 231, 55, 51, 44, 237, 96, 79, 52, 237, 96, 80, 53, 237, 96, 80, 53, 237, 96, 81, 53, 237, 96, 81, 53, 237, 30, 30, 30, 220, 20, 20, 20, 203, 0, 0, 0, 173, 0, 0, 0, 149, 0, 0, 0, 96, 0, 0, 0, 40, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 24, 0, 0, 0, 46, 0, 0, 0, 76, 0, 0, 0, 108, 0, 0, 0, 136, 0, 0, 0, 148, 0, 0, 0, 149, 0, 0, 0, 149, 0, 0, 0, 149, 0, 0, 0, 149, 0, 0, 0, 143, 0, 0, 0, 109, 0, 0, 0, 73, 0, 0, 0, 30, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceVideo(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 49, 49, 49, 67, 49, 49, 49, 100, 49, 49, 49, 132, 49, 49, 49, 134, 49, 49, 49, 148, 50, 50, 50, 194, 89, 89, 89, 196, 75, 75, 75, 196, 48, 48, 48, 137, 49, 49, 49, 134, 48, 48, 48, 119, 46, 46, 46, 71, 48, 48, 48, 68, 37, 37, 37, 22, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 77, 77, 77, 255, 204, 204, 204, 255, 200, 200, 200, 255, 223, 223, 223, 255, 226, 226, 226, 255, 222, 222, 222, 255, 212, 212, 212, 255, 210, 210, 210, 255, 207, 207, 207, 255, 205, 205, 205, 255, 203, 203, 203, 255, 164, 164, 164, 255, 161, 161, 161, 255, 133, 133, 133, 255, 123, 123, 123, 255, 103, 103, 103, 255, 92, 92, 92, 212, 60, 60, 60, 196, 48, 48, 48, 151, 49, 49, 49, 134, 45, 45, 45, 73, 44, 44, 44, 37, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 192, 128, 128, 128, 255, 206, 206, 206, 255, 126, 126, 126, 255, 189, 189, 189, 255, 242, 242, 242, 255, 245, 245, 245, 255, 243, 243, 243, 255, 236, 236, 236, 255, 229, 229, 229, 255, 219, 219, 219, 255, 213, 213, 213, 255, 207, 207, 207, 255, 196, 196, 196, 255, 194, 194, 194, 255, 192, 192, 192, 255, 190, 190, 190, 255, 188, 188, 188, 255, 186, 186, 186, 255, 184, 184, 184, 255, 148, 148, 148, 255, 131, 131, 131, 255, 106, 106, 106, 255, 83, 83, 83, 242, 49, 49, 49, 183, 47, 47, 47, 121, 33, 33, 33, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 96, 92, 92, 92, 240, 64, 64, 64, 255, 134, 134, 134, 255, 157, 157, 157, 255, 85, 85, 85, 255, 128, 128, 128, 255, 166, 166, 166, 255, 175, 175, 175, 255, 191, 191, 191, 255, 204, 204, 204, 255, 212, 212, 212, 255, 222, 222, 222, 255, 229, 229, 229, 255, 230, 230, 230, 255, 227, 227, 227, 255, 218, 218, 218, 255, 210, 210, 210, 255, 202, 202, 202, 255, 192, 192, 192, 255, 184, 184, 184, 255, 181, 181, 181, 255, 179, 179, 179, 255, 177, 177, 177, 255, 175, 175, 175, 255, 172, 172, 172, 255, 163, 163, 163, 255, 109, 109, 109, 255, 58, 58, 58, 244, 43, 43, 43, 134, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 51, 32, 113, 113, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 204, 204, 255, 166, 166, 166, 255, 155, 155, 155, 255, 138, 138, 138, 255, 123, 123, 123, 255, 148, 148, 148, 255, 173, 173, 173, 255, 176, 176, 176, 255, 180, 180, 180, 255, 184, 184, 184, 255, 187, 187, 187, 255, 192, 192, 192, 255, 202, 202, 202, 255, 209, 209, 209, 255, 212, 212, 212, 255, 215, 215, 215, 255, 217, 217, 217, 255, 212, 212, 212, 255, 202, 202, 202, 255, 189, 189, 189, 255, 175, 175, 175, 255, 172, 172, 172, 255, 170, 170, 170, 255, 168, 168, 168, 255, 166, 166, 166, 255, 156, 156, 156, 255, 99, 99, 99, 255, 46, 46, 46, 213, 19, 19, 19, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 50, 50, 82, 136, 136, 136, 255, 229, 229, 229, 255, 235, 235, 235, 255, 241, 241, 241, 255, 248, 248, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 204, 204, 255, 166, 166, 166, 255, 159, 159, 159, 255, 146, 146, 146, 255, 142, 142, 142, 255, 170, 170, 170, 255, 190, 190, 190, 255, 193, 193, 193, 255, 197, 197, 197, 255, 200, 200, 200, 255, 203, 203, 203, 255, 188, 188, 188, 255, 51, 51, 51, 255, 142, 142, 142, 255, 209, 209, 209, 255, 200, 200, 200, 255, 174, 174, 174, 255, 168, 168, 168, 255, 166, 166, 166, 255, 163, 163, 163, 255, 162, 162, 162, 255, 160, 160, 160, 255, 130, 130, 130, 255, 55, 55, 55, 238, 29, 29, 29, 85, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 50, 50, 131, 178, 178, 178, 255, 219, 219, 219, 255, 217, 217, 217, 255, 185, 185, 185, 255, 215, 215, 215, 255, 213, 213, 213, 255, 223, 223, 223, 255, 230, 230, 230, 255, 238, 238, 238, 255, 246, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 201, 201, 201, 255, 170, 170, 170, 255, 159, 159, 159, 255, 160, 160, 160, 255, 153, 153, 153, 255, 184, 184, 184, 255, 207, 207, 207, 255, 150, 150, 150, 255, 204, 204, 204, 255, 215, 215, 215, 255, 207, 207, 207, 255, 195, 195, 195, 255, 166, 166, 166, 255, 163, 163, 163, 255, 162, 162, 162, 255, 160, 160, 160, 255, 157, 157, 157, 255, 155, 155, 155, 255, 115, 115, 115, 255, 49, 49, 49, 248, 33, 33, 33, 122, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 50, 50, 194, 198, 198, 198, 255, 207, 207, 207, 255, 72, 97, 69, 255, 54, 121, 45, 255, 144, 152, 142, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 209, 209, 209, 255, 207, 207, 207, 255, 206, 206, 206, 255, 217, 217, 217, 255, 223, 223, 223, 255, 230, 230, 230, 255, 237, 237, 237, 255, 244, 244, 244, 255, 242, 242, 242, 255, 239, 239, 239, 255, 202, 202, 202, 255, 175, 175, 175, 255, 170, 170, 170, 255, 177, 177, 177, 255, 165, 165, 165, 255, 194, 194, 194, 255, 194, 194, 194, 255, 107, 107, 107, 255, 107, 107, 107, 255, 78, 78, 78, 255, 78, 78, 78, 255, 51, 51, 51, 255, 54, 54, 54, 255, 64, 64, 64, 255, 64, 64, 64, 255, 57, 57, 57, 255, 37, 37, 37, 155, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 32, 49, 49, 49, 50, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 50, 50, 210, 217, 217, 217, 255, 175, 175, 175, 255, 80, 169, 61, 255, 211, 255, 188, 255, 162, 182, 151, 255, 211, 211, 211, 255, 209, 209, 209, 255, 209, 209, 209, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 207, 207, 207, 255, 213, 213, 213, 255, 218, 218, 218, 255, 222, 222, 222, 255, 230, 230, 230, 255, 228, 228, 228, 255, 225, 225, 225, 255, 190, 190, 190, 255, 51, 51, 51, 255, 65, 65, 65, 255, 78, 78, 78, 255, 84, 84, 84, 255, 80, 80, 80, 255, 89, 89, 89, 255, 89, 89, 89, 255, 93, 93, 93, 255, 103, 103, 103, 255, 97, 97, 97, 255, 51, 51, 51, 255, 0, 0, 0, 90, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 80, 142, 142, 142, 177, 168, 168, 168, 255, 175, 175, 175, 255, 79, 79, 79, 202, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 72, 72, 255, 216, 216, 216, 255, 205, 205, 205, 255, 111, 124, 107, 255, 162, 188, 149, 255, 201, 201, 201, 255, 209, 209, 209, 255, 209, 209, 209, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 195, 195, 195, 255, 200, 200, 200, 255, 178, 178, 178, 255, 87, 87, 87, 255, 108, 108, 108, 255, 93, 93, 93, 255, 58, 58, 58, 255, 62, 62, 62, 255, 89, 89, 89, 255, 88, 88, 88, 255, 51, 51, 51, 255, 62, 62, 62, 255, 97, 97, 97, 255, 51, 51, 51, 255, 0, 0, 0, 154, 21, 21, 21, 38, 74, 74, 74, 113, 147, 147, 147, 224, 200, 200, 200, 255, 213, 213, 213, 255, 187, 187, 187, 255, 169, 169, 169, 255, 100, 100, 100, 244, 0, 0, 0, 116, 0, 0, 0, 18, + 0, 0, 0, 0, 92, 92, 92, 255, 215, 215, 215, 255, 213, 213, 213, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 83, 83, 83, 255, 111, 111, 111, 255, 89, 89, 89, 255, 62, 62, 62, 255, 157, 157, 157, 255, 201, 201, 201, 255, 166, 166, 166, 255, 156, 156, 156, 255, 143, 143, 143, 255, 111, 111, 111, 255, 55, 55, 55, 255, 51, 51, 51, 255, 35, 35, 35, 211, 139, 139, 139, 255, 210, 210, 210, 255, 204, 204, 204, 255, 179, 179, 179, 255, 162, 162, 162, 255, 166, 166, 166, 255, 170, 170, 170, 255, 112, 112, 112, 255, 0, 0, 0, 149, 0, 0, 0, 21, + 51, 51, 51, 32, 92, 92, 92, 255, 213, 213, 213, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 207, 207, 207, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 142, 142, 142, 255, 100, 100, 100, 255, 96, 96, 96, 255, 83, 83, 83, 255, 210, 210, 210, 255, 153, 153, 153, 255, 61, 61, 61, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 65, 65, 65, 255, 96, 96, 96, 255, 51, 51, 51, 255, 58, 58, 58, 241, 102, 102, 102, 255, 122, 122, 122, 255, 160, 160, 160, 255, 164, 164, 164, 255, 167, 167, 167, 255, 171, 171, 171, 255, 174, 174, 174, 255, 114, 114, 114, 255, 0, 0, 0, 164, 0, 0, 0, 24, + 49, 49, 49, 66, 112, 112, 112, 255, 212, 212, 212, 255, 211, 211, 211, 255, 209, 209, 209, 255, 199, 199, 199, 255, 178, 178, 178, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 184, 184, 184, 255, 109, 109, 109, 255, 116, 116, 116, 255, 68, 68, 68, 255, 196, 196, 196, 255, 134, 134, 134, 255, 48, 54, 61, 255, 38, 64, 89, 255, 27, 76, 126, 255, 20, 82, 145, 255, 27, 75, 123, 255, 49, 53, 58, 255, 57, 57, 57, 255, 86, 86, 86, 255, 64, 64, 64, 255, 102, 102, 102, 255, 104, 104, 104, 255, 165, 165, 165, 255, 168, 168, 168, 255, 172, 172, 172, 255, 176, 176, 176, 255, 180, 180, 180, 255, 117, 117, 117, 255, 13, 13, 13, 184, 0, 0, 0, 28, + 48, 48, 48, 68, 131, 131, 131, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 168, 168, 168, 255, 204, 204, 204, 255, 174, 174, 174, 255, 172, 172, 172, 255, 171, 171, 171, 255, 180, 180, 180, 255, 189, 189, 189, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 184, 184, 184, 255, 182, 182, 182, 255, 99, 99, 99, 255, 92, 92, 92, 255, 153, 153, 153, 255, 255, 255, 255, 255, 46, 56, 65, 255, 44, 58, 72, 255, 39, 63, 87, 255, 34, 69, 104, 255, 25, 78, 130, 255, 13, 89, 166, 255, 15, 87, 159, 255, 51, 51, 51, 255, 82, 82, 82, 255, 64, 64, 64, 255, 102, 102, 102, 255, 106, 106, 106, 255, 170, 170, 170, 255, 173, 173, 173, 255, 177, 177, 177, 255, 181, 181, 181, 255, 186, 186, 186, 255, 154, 154, 154, 255, 17, 17, 17, 193, 0, 0, 0, 52, + 48, 48, 48, 68, 131, 131, 131, 255, 209, 209, 209, 255, 208, 208, 208, 255, 207, 207, 207, 255, 196, 196, 196, 255, 202, 202, 202, 255, 200, 200, 200, 255, 196, 196, 196, 255, 194, 194, 194, 255, 191, 191, 191, 255, 170, 170, 170, 255, 161, 161, 161, 255, 162, 162, 162, 255, 162, 162, 162, 255, 165, 165, 165, 255, 190, 190, 190, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 185, 185, 185, 255, 184, 184, 184, 255, 182, 182, 182, 255, 181, 181, 181, 255, 104, 104, 104, 255, 70, 70, 70, 255, 182, 182, 182, 255, 139, 141, 143, 255, 40, 62, 84, 255, 51, 51, 51, 255, 43, 59, 75, 255, 35, 67, 99, 255, 26, 77, 128, 255, 13, 89, 166, 255, 7, 96, 185, 255, 32, 70, 108, 255, 67, 67, 67, 255, 60, 60, 60, 255, 102, 102, 102, 255, 113, 113, 113, 255, 174, 174, 174, 255, 179, 179, 179, 255, 182, 182, 182, 255, 187, 187, 187, 255, 191, 191, 191, 255, 158, 158, 158, 255, 17, 17, 17, 194, 0, 0, 0, 64, + 48, 48, 48, 68, 130, 130, 130, 255, 208, 208, 208, 255, 207, 207, 207, 255, 205, 205, 205, 255, 165, 165, 165, 255, 200, 200, 200, 255, 196, 196, 196, 255, 194, 194, 194, 255, 191, 191, 191, 255, 187, 187, 187, 255, 185, 185, 185, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 140, 140, 140, 255, 150, 150, 150, 255, 152, 152, 152, 255, 157, 157, 157, 255, 184, 184, 184, 255, 182, 182, 182, 255, 181, 181, 181, 255, 148, 148, 148, 255, 112, 112, 112, 255, 51, 51, 51, 255, 203, 203, 203, 255, 51, 70, 89, 255, 95, 135, 174, 255, 139, 195, 250, 255, 84, 142, 200, 255, 30, 73, 116, 255, 24, 79, 133, 255, 13, 89, 166, 255, 4, 98, 192, 255, 16, 88, 159, 255, 51, 51, 51, 255, 87, 87, 87, 255, 102, 102, 102, 255, 89, 89, 89, 255, 180, 180, 180, 255, 184, 184, 184, 255, 187, 187, 187, 255, 192, 192, 192, 255, 196, 196, 196, 255, 163, 163, 163, 255, 17, 17, 17, 194, 0, 0, 0, 66, + 48, 48, 48, 68, 129, 129, 129, 255, 207, 207, 207, 255, 205, 205, 205, 255, 204, 204, 204, 255, 164, 164, 164, 255, 196, 196, 196, 255, 194, 194, 194, 255, 191, 191, 191, 255, 187, 187, 187, 255, 185, 185, 185, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 157, 157, 157, 255, 182, 182, 182, 255, 181, 181, 181, 255, 180, 180, 180, 255, 147, 147, 147, 255, 115, 115, 115, 255, 88, 88, 88, 255, 190, 190, 190, 255, 33, 70, 106, 255, 123, 179, 234, 255, 101, 169, 238, 255, 50, 136, 221, 255, 26, 77, 128, 255, 16, 86, 157, 255, 12, 90, 168, 255, 1, 101, 202, 255, 13, 106, 182, 255, 51, 51, 51, 255, 90, 90, 90, 255, 102, 102, 102, 255, 89, 89, 89, 255, 186, 186, 186, 255, 189, 189, 189, 255, 194, 194, 194, 255, 198, 198, 198, 255, 201, 201, 201, 255, 166, 166, 166, 255, 17, 17, 17, 194, 0, 0, 0, 66, + 48, 48, 48, 68, 129, 129, 129, 255, 205, 205, 205, 255, 204, 204, 204, 255, 202, 202, 202, 255, 162, 162, 162, 255, 194, 194, 194, 255, 191, 191, 191, 255, 162, 162, 162, 255, 176, 176, 176, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 162, 162, 162, 255, 181, 181, 181, 255, 180, 180, 180, 255, 178, 178, 178, 255, 146, 146, 146, 255, 119, 119, 119, 255, 77, 77, 77, 255, 181, 181, 181, 255, 23, 79, 135, 255, 72, 142, 212, 255, 50, 136, 221, 255, 11, 103, 195, 255, 15, 88, 161, 255, 12, 90, 168, 255, 2, 100, 197, 255, 0, 110, 212, 255, 13, 125, 202, 255, 62, 62, 62, 255, 57, 57, 57, 255, 102, 102, 102, 255, 89, 89, 89, 255, 191, 191, 191, 255, 194, 194, 194, 255, 199, 199, 199, 255, 202, 202, 202, 255, 206, 206, 206, 255, 169, 169, 169, 255, 27, 27, 27, 209, 0, 0, 0, 70, + 48, 48, 48, 68, 128, 128, 128, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 161, 161, 161, 255, 191, 191, 191, 255, 181, 181, 181, 255, 181, 181, 181, 255, 194, 194, 194, 255, 178, 178, 178, 255, 165, 165, 165, 255, 167, 167, 167, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 155, 155, 155, 255, 159, 159, 159, 255, 180, 180, 180, 255, 178, 178, 178, 255, 177, 177, 177, 255, 160, 160, 160, 255, 121, 121, 121, 255, 57, 57, 57, 255, 170, 170, 170, 255, 33, 82, 132, 255, 12, 94, 176, 255, 15, 96, 177, 255, 12, 90, 168, 255, 8, 94, 180, 255, 2, 100, 199, 255, 0, 104, 206, 255, 0, 140, 242, 255, 29, 90, 135, 255, 83, 83, 83, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 196, 196, 196, 255, 201, 201, 201, 255, 204, 204, 204, 255, 207, 207, 207, 255, 211, 211, 211, 255, 184, 184, 184, 255, 30, 30, 30, 217, 0, 0, 0, 94, + 48, 48, 48, 68, 127, 127, 127, 255, 202, 202, 202, 255, 201, 201, 201, 255, 200, 200, 200, 255, 159, 159, 159, 255, 187, 187, 187, 255, 185, 185, 185, 255, 195, 195, 195, 255, 192, 192, 192, 255, 176, 176, 176, 255, 178, 178, 178, 255, 219, 219, 219, 255, 171, 171, 171, 255, 164, 164, 164, 255, 159, 159, 159, 255, 176, 176, 176, 255, 155, 155, 155, 255, 152, 152, 152, 255, 158, 158, 158, 255, 178, 178, 178, 255, 177, 177, 177, 255, 176, 176, 176, 255, 174, 174, 174, 255, 118, 118, 118, 255, 82, 82, 82, 255, 124, 124, 124, 255, 77, 102, 128, 255, 0, 102, 204, 255, 0, 102, 204, 255, 0, 102, 204, 255, 0, 102, 204, 255, 0, 118, 220, 255, 0, 145, 247, 255, 3, 130, 226, 255, 48, 56, 62, 255, 72, 72, 72, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 183, 183, 183, 255, 205, 205, 205, 255, 208, 208, 208, 255, 213, 213, 213, 255, 216, 216, 216, 255, 221, 221, 221, 255, 30, 30, 30, 217, 0, 0, 0, 106, + 48, 48, 48, 68, 126, 126, 126, 255, 200, 200, 200, 255, 200, 200, 200, 255, 198, 198, 198, 255, 158, 158, 158, 255, 185, 185, 185, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 173, 173, 173, 255, 181, 181, 181, 255, 164, 164, 164, 255, 161, 161, 161, 255, 183, 183, 183, 255, 212, 212, 212, 255, 152, 152, 152, 255, 149, 149, 149, 255, 154, 154, 154, 255, 177, 177, 177, 255, 176, 176, 176, 255, 174, 174, 174, 255, 173, 173, 173, 255, 125, 125, 125, 255, 128, 128, 128, 255, 77, 77, 77, 255, 143, 143, 143, 255, 26, 112, 175, 255, 0, 137, 239, 255, 0, 136, 238, 255, 0, 146, 248, 255, 0, 140, 242, 255, 3, 124, 220, 255, 35, 73, 105, 255, 83, 83, 83, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 99, 99, 99, 255, 168, 168, 168, 255, 210, 210, 210, 255, 214, 214, 214, 255, 218, 218, 218, 255, 221, 221, 221, 255, 189, 189, 190, 255, 30, 30, 30, 217, 0, 0, 0, 108, + 48, 48, 48, 68, 116, 116, 116, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 157, 157, 157, 255, 182, 182, 182, 255, 178, 178, 178, 255, 176, 176, 176, 255, 173, 173, 173, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 152, 152, 152, 255, 176, 176, 176, 255, 174, 174, 174, 255, 173, 173, 173, 255, 172, 172, 172, 255, 129, 129, 129, 255, 157, 157, 157, 255, 84, 84, 84, 255, 109, 109, 109, 255, 152, 152, 152, 255, 34, 101, 152, 255, 13, 110, 187, 255, 13, 107, 184, 255, 19, 96, 160, 255, 41, 63, 82, 255, 104, 104, 104, 255, 75, 75, 75, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 102, 102, 102, 255, 172, 172, 172, 255, 215, 215, 215, 255, 220, 220, 220, 255, 221, 221, 221, 255, 220, 220, 223, 255, 176, 176, 183, 255, 27, 27, 27, 212, 0, 0, 0, 106, + 46, 46, 46, 53, 88, 88, 88, 255, 198, 198, 198, 255, 197, 197, 197, 255, 196, 196, 196, 255, 155, 155, 155, 255, 178, 178, 178, 255, 171, 171, 171, 255, 163, 163, 163, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 144, 144, 144, 255, 150, 150, 150, 255, 174, 174, 174, 255, 173, 173, 173, 255, 172, 172, 172, 255, 170, 170, 170, 255, 131, 131, 131, 255, 162, 162, 162, 255, 155, 155, 155, 255, 79, 79, 79, 255, 91, 91, 91, 255, 157, 157, 157, 255, 144, 144, 144, 255, 130, 130, 130, 255, 125, 125, 125, 255, 104, 104, 104, 255, 72, 72, 72, 255, 155, 155, 155, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 102, 102, 102, 255, 176, 176, 176, 255, 221, 221, 221, 255, 221, 221, 221, 255, 219, 219, 225, 255, 218, 218, 228, 255, 174, 174, 187, 255, 17, 17, 17, 197, 0, 0, 0, 94, + 0, 0, 0, 4, 88, 88, 88, 255, 197, 197, 197, 255, 196, 196, 196, 255, 194, 194, 194, 255, 154, 154, 154, 255, 176, 176, 176, 255, 174, 174, 174, 255, 215, 215, 215, 255, 193, 193, 193, 255, 164, 164, 164, 255, 155, 155, 155, 255, 153, 153, 153, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 141, 141, 141, 255, 147, 147, 147, 255, 173, 173, 173, 255, 172, 172, 172, 255, 170, 170, 170, 255, 168, 168, 168, 255, 152, 152, 152, 255, 130, 130, 130, 255, 166, 166, 166, 255, 166, 166, 166, 255, 123, 123, 123, 255, 80, 80, 80, 255, 51, 51, 51, 255, 51, 51, 51, 255, 80, 80, 80, 255, 123, 123, 123, 255, 166, 166, 166, 255, 166, 166, 166, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 102, 102, 102, 255, 179, 179, 179, 255, 221, 221, 222, 255, 219, 219, 227, 255, 217, 217, 230, 255, 214, 214, 235, 255, 173, 173, 190, 255, 17, 17, 17, 194, 0, 0, 0, 70, + 0, 0, 0, 0, 87, 87, 87, 255, 196, 196, 196, 255, 194, 194, 194, 255, 193, 193, 193, 255, 152, 152, 152, 255, 173, 173, 173, 255, 170, 170, 170, 255, 173, 173, 173, 255, 164, 164, 164, 255, 161, 161, 161, 255, 169, 169, 169, 255, 227, 227, 227, 255, 157, 157, 157, 255, 149, 149, 149, 255, 153, 153, 153, 255, 167, 167, 167, 255, 141, 141, 141, 255, 137, 137, 137, 255, 144, 144, 144, 255, 172, 172, 172, 255, 170, 170, 170, 255, 168, 168, 168, 255, 167, 167, 167, 255, 165, 165, 165, 255, 109, 109, 109, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 170, 170, 170, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 96, 96, 96, 255, 199, 199, 202, 255, 218, 218, 228, 255, 216, 216, 232, 255, 214, 214, 235, 255, 212, 212, 239, 255, 171, 171, 194, 255, 17, 17, 17, 194, 0, 0, 0, 66, + 0, 0, 0, 0, 51, 51, 51, 241, 194, 194, 194, 255, 193, 193, 193, 255, 192, 192, 192, 255, 151, 151, 151, 255, 170, 170, 170, 255, 167, 167, 167, 255, 164, 164, 164, 255, 161, 161, 161, 255, 158, 158, 158, 255, 159, 159, 159, 255, 166, 166, 166, 255, 149, 149, 149, 255, 146, 146, 146, 255, 191, 191, 191, 255, 193, 193, 193, 255, 137, 137, 137, 255, 135, 135, 135, 255, 127, 127, 127, 255, 170, 170, 170, 255, 168, 168, 168, 255, 167, 167, 167, 255, 165, 165, 165, 255, 164, 164, 164, 255, 79, 79, 79, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 174, 174, 174, 255, 165, 165, 165, 255, 156, 156, 156, 255, 142, 142, 142, 255, 156, 156, 156, 255, 174, 174, 174, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 218, 218, 228, 255, 215, 215, 233, 255, 213, 213, 236, 255, 212, 212, 240, 255, 210, 210, 243, 255, 139, 139, 161, 255, 17, 17, 17, 194, 0, 0, 0, 66, + 0, 0, 0, 0, 49, 49, 49, 197, 193, 193, 193, 255, 192, 192, 192, 255, 190, 190, 190, 255, 150, 150, 150, 255, 167, 167, 167, 255, 164, 164, 164, 255, 153, 153, 153, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 135, 135, 135, 255, 132, 132, 132, 255, 120, 120, 120, 255, 168, 168, 168, 255, 167, 167, 167, 255, 165, 165, 165, 255, 164, 164, 164, 255, 163, 163, 163, 255, 79, 79, 79, 255, 179, 179, 179, 255, 169, 169, 169, 255, 120, 120, 120, 255, 116, 116, 116, 255, 102, 102, 102, 255, 122, 122, 122, 255, 131, 131, 131, 255, 122, 122, 122, 255, 140, 140, 140, 255, 179, 179, 179, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 89, 89, 89, 255, 214, 214, 235, 255, 213, 213, 237, 255, 211, 211, 241, 255, 209, 209, 245, 255, 207, 207, 248, 255, 128, 128, 151, 255, 13, 13, 13, 188, 0, 0, 0, 64, + 0, 0, 0, 0, 50, 50, 50, 196, 183, 183, 183, 255, 190, 190, 190, 255, 189, 189, 189, 255, 148, 148, 148, 255, 164, 164, 164, 255, 158, 158, 158, 255, 172, 172, 172, 255, 168, 168, 168, 255, 152, 152, 152, 255, 146, 146, 146, 255, 140, 140, 140, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 135, 135, 135, 255, 132, 132, 132, 255, 129, 129, 129, 255, 118, 118, 118, 255, 167, 167, 167, 255, 165, 165, 165, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 79, 79, 79, 255, 182, 182, 182, 255, 162, 162, 162, 255, 132, 132, 132, 255, 177, 177, 177, 255, 182, 182, 182, 255, 182, 182, 182, 255, 182, 182, 182, 255, 142, 142, 142, 255, 142, 142, 142, 255, 182, 182, 182, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 113, 113, 118, 255, 212, 212, 239, 255, 211, 211, 242, 255, 208, 208, 247, 255, 206, 206, 249, 255, 204, 204, 254, 255, 128, 128, 153, 255, 0, 0, 0, 172, 0, 0, 0, 52, + 0, 0, 0, 0, 47, 47, 47, 122, 103, 103, 103, 255, 189, 189, 189, 255, 188, 188, 188, 255, 147, 147, 147, 255, 161, 161, 161, 255, 161, 161, 161, 255, 204, 204, 204, 255, 168, 168, 168, 255, 149, 149, 149, 255, 157, 157, 157, 255, 179, 179, 179, 255, 140, 140, 140, 255, 137, 137, 137, 255, 133, 133, 133, 255, 133, 133, 133, 255, 129, 129, 129, 255, 126, 126, 126, 255, 116, 116, 116, 255, 165, 165, 165, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 161, 161, 161, 255, 78, 78, 78, 255, 187, 187, 187, 255, 165, 165, 165, 255, 144, 144, 144, 255, 187, 187, 187, 255, 187, 187, 187, 255, 187, 187, 187, 255, 187, 187, 187, 255, 144, 144, 144, 255, 144, 144, 144, 255, 187, 187, 187, 255, 51, 51, 51, 255, 64, 64, 64, 255, 102, 102, 102, 255, 117, 117, 124, 255, 210, 210, 243, 255, 207, 207, 248, 255, 206, 206, 251, 255, 166, 166, 204, 255, 97, 97, 113, 251, 29, 29, 29, 223, 0, 0, 0, 155, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 10, 36, 36, 36, 159, 68, 68, 68, 255, 110, 110, 110, 255, 112, 112, 112, 255, 158, 158, 158, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 166, 166, 166, 255, 204, 204, 204, 255, 137, 137, 137, 255, 134, 134, 134, 255, 167, 167, 167, 255, 154, 154, 154, 255, 126, 126, 126, 255, 123, 123, 123, 255, 114, 114, 114, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 160, 160, 160, 255, 159, 159, 159, 255, 78, 78, 78, 255, 190, 190, 190, 255, 168, 168, 168, 255, 146, 146, 146, 255, 190, 190, 190, 255, 190, 190, 190, 255, 190, 190, 190, 255, 190, 190, 190, 255, 146, 146, 146, 255, 146, 146, 146, 255, 190, 190, 190, 255, 51, 51, 51, 255, 57, 57, 57, 243, 102, 102, 102, 255, 145, 145, 162, 255, 197, 197, 236, 255, 148, 148, 176, 255, 66, 66, 72, 247, 23, 23, 23, 213, 0, 0, 0, 175, 0, 0, 0, 149, 0, 0, 0, 94, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 65, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 155, 155, 155, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 134, 134, 134, 255, 132, 132, 132, 255, 190, 190, 190, 255, 163, 163, 163, 255, 123, 123, 123, 255, 120, 120, 120, 255, 113, 113, 113, 255, 163, 163, 163, 255, 161, 161, 161, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 78, 78, 78, 255, 195, 195, 195, 255, 172, 172, 172, 255, 149, 149, 149, 255, 195, 195, 195, 255, 195, 195, 195, 255, 195, 195, 195, 255, 195, 195, 195, 255, 149, 149, 149, 255, 149, 149, 149, 255, 195, 195, 195, 255, 51, 51, 51, 255, 51, 51, 51, 238, 89, 89, 89, 255, 83, 83, 88, 255, 48, 48, 51, 235, 16, 16, 16, 202, 0, 0, 0, 170, 0, 0, 0, 140, 0, 0, 0, 81, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 45, 45, 45, 179, 51, 51, 51, 255, 51, 51, 51, 255, 152, 152, 152, 255, 149, 149, 149, 255, 146, 146, 146, 255, 143, 143, 143, 255, 140, 140, 140, 255, 137, 137, 137, 255, 134, 134, 134, 255, 132, 132, 132, 255, 129, 129, 129, 255, 126, 126, 126, 255, 123, 123, 123, 255, 120, 120, 120, 255, 117, 117, 117, 255, 111, 111, 111, 255, 161, 161, 161, 255, 160, 160, 160, 255, 159, 159, 159, 255, 158, 158, 158, 255, 157, 157, 157, 255, 77, 77, 77, 255, 199, 199, 199, 255, 175, 175, 175, 255, 151, 151, 151, 255, 199, 199, 199, 255, 199, 199, 199, 255, 199, 199, 199, 255, 199, 199, 199, 255, 151, 151, 151, 255, 151, 151, 151, 255, 199, 199, 199, 255, 51, 51, 51, 255, 12, 12, 12, 198, 19, 19, 19, 171, 9, 9, 9, 178, 0, 0, 0, 163, 0, 0, 0, 119, 0, 0, 0, 64, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 30, 30, 30, 163, 39, 39, 39, 227, 70, 70, 70, 255, 93, 93, 93, 255, 126, 126, 126, 255, 140, 140, 140, 255, 137, 137, 137, 255, 134, 134, 134, 255, 132, 132, 132, 255, 129, 129, 129, 255, 126, 126, 126, 255, 123, 123, 123, 255, 120, 120, 120, 255, 117, 117, 117, 255, 114, 114, 114, 255, 88, 88, 88, 255, 122, 122, 122, 255, 139, 139, 139, 255, 157, 157, 157, 255, 157, 157, 157, 255, 155, 155, 155, 255, 77, 77, 77, 255, 203, 203, 203, 255, 178, 178, 178, 255, 153, 153, 153, 255, 203, 203, 203, 255, 203, 203, 203, 255, 203, 203, 203, 255, 203, 203, 203, 255, 153, 153, 153, 255, 153, 153, 153, 255, 203, 203, 203, 255, 51, 51, 51, 255, 0, 0, 0, 172, 0, 0, 0, 66, 0, 0, 0, 55, 0, 0, 0, 42, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 76, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 62, 62, 62, 255, 87, 87, 87, 255, 107, 107, 107, 255, 129, 129, 129, 255, 126, 126, 126, 255, 123, 123, 123, 255, 120, 120, 120, 255, 117, 117, 117, 255, 114, 114, 114, 255, 111, 111, 111, 255, 80, 80, 80, 255, 102, 102, 102, 255, 102, 102, 102, 255, 99, 99, 99, 255, 109, 109, 109, 255, 125, 125, 125, 255, 77, 77, 77, 255, 207, 207, 207, 255, 181, 181, 181, 255, 155, 155, 155, 255, 207, 207, 207, 255, 207, 207, 207, 255, 207, 207, 207, 255, 207, 207, 207, 255, 155, 155, 155, 255, 155, 155, 155, 255, 207, 207, 207, 255, 51, 51, 51, 255, 0, 0, 0, 167, 0, 0, 0, 28, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 56, 56, 56, 255, 78, 78, 78, 255, 99, 99, 99, 255, 113, 113, 113, 255, 114, 114, 114, 255, 111, 111, 111, 255, 108, 108, 108, 255, 82, 82, 82, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 73, 73, 73, 255, 212, 212, 212, 255, 185, 185, 185, 255, 157, 157, 157, 255, 212, 212, 212, 255, 192, 192, 192, 255, 182, 182, 182, 255, 212, 212, 212, 255, 157, 157, 157, 255, 157, 157, 157, 255, 202, 202, 202, 255, 46, 46, 46, 247, 0, 0, 0, 164, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 51, 51, 51, 255, 70, 70, 70, 255, 87, 87, 87, 255, 102, 102, 102, 255, 90, 90, 90, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 215, 215, 215, 255, 187, 187, 187, 255, 159, 159, 159, 255, 215, 215, 215, 255, 112, 112, 112, 255, 71, 71, 71, 255, 215, 215, 215, 255, 159, 159, 159, 255, 159, 159, 159, 255, 112, 112, 112, 255, 29, 29, 29, 222, 0, 0, 0, 143, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 51, 51, 51, 255, 61, 61, 61, 255, 86, 86, 86, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 220, 220, 220, 255, 190, 190, 190, 255, 161, 161, 161, 255, 220, 220, 220, 255, 209, 209, 209, 255, 157, 157, 157, 255, 135, 135, 135, 255, 89, 89, 89, 255, 54, 54, 54, 255, 32, 32, 32, 227, 0, 0, 0, 169, 0, 0, 0, 93, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 39, 39, 39, 230, 54, 54, 54, 255, 70, 70, 70, 255, 86, 86, 86, 255, 96, 96, 96, 255, 99, 99, 99, 255, 129, 129, 129, 255, 121, 121, 121, 255, 85, 85, 85, 255, 83, 83, 83, 255, 49, 49, 49, 251, 38, 38, 38, 235, 30, 30, 30, 220, 16, 16, 16, 198, 0, 0, 0, 173, 0, 0, 0, 157, 0, 0, 0, 101, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 78, 6, 6, 6, 130, 25, 25, 25, 196, 36, 36, 36, 225, 41, 41, 41, 237, 41, 41, 41, 237, 41, 41, 41, 237, 35, 35, 35, 229, 23, 23, 23, 209, 13, 13, 13, 191, 0, 0, 0, 170, 0, 0, 0, 154, 0, 0, 0, 124, 0, 0, 0, 94, 0, 0, 0, 60, 0, 0, 0, 30, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 39, 0, 0, 0, 76, 0, 0, 0, 110, 0, 0, 0, 128, 0, 0, 0, 131, 0, 0, 0, 128, 0, 0, 0, 110, 0, 0, 0, 79, 0, 0, 0, 51, 0, 0, 0, 27, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 15, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoMessageWarning(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 25, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 4, 93, 255, 255, 8, 241, 255, 255, 10, 255, 255, 255, 12, 241, 255, 255, 8, 93, 39, 39, 98, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 252, 0, 111, 247, 247, 0, 255, 251, 251, 1, 255, 255, 255, 3, 255, 255, 255, 3, 255, 253, 253, 2, 255, 190, 190, 32, 157, 36, 36, 101, 43, 43, 43, 106, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 253, 0, 56, 242, 242, 0, 250, 244, 243, 0, 255, 250, 249, 1, 255, 255, 255, 6, 255, 255, 254, 2, 255, 249, 248, 0, 255, 244, 244, 2, 255, 92, 93, 76, 209, 33, 35, 103, 109, 29, 39, 98, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 242, 0, 185, 238, 237, 0, 255, 242, 240, 0, 255, 253, 252, 3, 255, 255, 255, 26, 255, 255, 255, 8, 255, 248, 246, 0, 255, 245, 244, 0, 255, 190, 190, 28, 254, 33, 35, 103, 217, 32, 34, 103, 119, 36, 36, 109, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 248, 0, 70, 236, 234, 0, 255, 237, 235, 0, 255, 243, 240, 0, 255, 255, 255, 13, 255, 255, 255, 92, 255, 255, 255, 29, 255, 249, 246, 1, 255, 243, 241, 0, 255, 242, 241, 0, 255, 93, 94, 75, 254, 33, 35, 103, 210, 34, 34, 106, 82, 36, 36, 109, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 238, 0, 185, 234, 230, 0, 255, 237, 234, 0, 255, 244, 241, 0, 255, 255, 255, 32, 255, 255, 255, 81, 255, 255, 255, 64, 255, 252, 249, 3, 255, 243, 241, 0, 255, 241, 237, 0, 255, 188, 186, 28, 255, 33, 35, 103, 246, 33, 34, 103, 163, 32, 32, 104, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 248, 0, 51, 234, 230, 0, 255, 234, 230, 0, 255, 238, 235, 0, 255, 248, 244, 3, 255, 255, 255, 32, 255, 255, 255, 38, 255, 255, 255, 58, 255, 255, 255, 11, 255, 245, 241, 0, 255, 241, 237, 0, 255, 241, 237, 0, 255, 77, 78, 82, 255, 33, 35, 103, 223, 34, 37, 102, 90, 28, 28, 113, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 236, 0, 185, 233, 228, 0, 255, 235, 231, 0, 255, 241, 236, 0, 255, 255, 251, 10, 255, 255, 255, 24, 255, 255, 255, 14, 255, 255, 255, 39, 255, 255, 255, 28, 255, 248, 243, 1, 255, 242, 237, 0, 255, 240, 236, 0, 255, 188, 184, 28, 255, 33, 35, 104, 246, 32, 36, 104, 165, 34, 34, 102, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 245, 0, 46, 234, 228, 0, 255, 233, 227, 0, 255, 238, 232, 0, 255, 245, 239, 1, 255, 255, 255, 16, 255, 255, 255, 15, 255, 255, 252, 4, 255, 255, 255, 22, 255, 255, 255, 37, 255, 255, 249, 7, 255, 244, 238, 0, 255, 241, 234, 0, 255, 241, 235, 0, 255, 73, 73, 84, 255, 33, 35, 103, 221, 35, 35, 104, 81, 43, 43, 128, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 235, 0, 172, 233, 226, 0, 255, 235, 229, 0, 255, 241, 233, 0, 255, 253, 246, 7, 255, 255, 255, 18, 255, 255, 254, 8, 255, 255, 248, 1, 255, 255, 255, 10, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 240, 1, 255, 242, 235, 0, 255, 240, 233, 0, 255, 177, 173, 34, 255, 33, 35, 104, 246, 33, 34, 103, 163, 35, 35, 106, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 244, 0, 46, 234, 225, 0, 255, 233, 226, 0, 255, 238, 229, 0, 255, 245, 236, 1, 255, 255, 255, 15, 255, 255, 255, 14, 255, 255, 249, 3, 255, 255, 247, 0, 255, 255, 250, 4, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 246, 7, 255, 244, 236, 0, 255, 241, 233, 0, 255, 241, 232, 0, 255, 73, 73, 84, 255, 34, 35, 103, 220, 34, 34, 104, 76, 43, 43, 85, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 233, 0, 162, 233, 224, 0, 255, 235, 225, 0, 255, 241, 231, 0, 255, 253, 243, 7, 255, 255, 255, 17, 255, 255, 253, 8, 255, 227, 218, 4, 255, 153, 143, 11, 255, 202, 192, 7, 255, 255, 255, 12, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 238, 1, 255, 242, 232, 0, 255, 240, 231, 0, 255, 169, 163, 38, 255, 33, 35, 103, 245, 33, 36, 103, 156, 38, 38, 104, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 240, 0, 42, 234, 224, 0, 250, 233, 222, 0, 255, 238, 227, 0, 255, 245, 234, 1, 255, 255, 254, 15, 255, 255, 255, 14, 255, 56, 49, 15, 255, 1, 0, 2, 255, 1, 0, 1, 255, 1, 0, 2, 255, 27, 21, 15, 255, 235, 233, 24, 255, 255, 255, 34, 255, 255, 244, 7, 255, 244, 234, 0, 255, 241, 229, 0, 255, 237, 226, 2, 255, 69, 69, 86, 255, 33, 35, 102, 219, 34, 34, 105, 75, 43, 43, 85, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 230, 0, 162, 233, 222, 0, 255, 235, 223, 0, 255, 241, 228, 0, 255, 253, 240, 7, 255, 255, 255, 17, 255, 106, 99, 17, 255, 1, 0, 2, 255, 3, 1, 7, 255, 7, 1, 15, 255, 7, 1, 17, 255, 10, 2, 24, 255, 97, 84, 36, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 235, 1, 255, 242, 230, 0, 255, 240, 229, 0, 255, 169, 161, 38, 255, 34, 35, 103, 243, 32, 34, 102, 150, 29, 39, 98, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 239, 0, 28, 234, 221, 0, 250, 233, 221, 0, 255, 238, 225, 0, 255, 245, 231, 1, 255, 255, 250, 15, 255, 255, 254, 14, 255, 20, 15, 12, 255, 1, 0, 2, 255, 10, 2, 22, 255, 23, 4, 53, 255, 24, 4, 54, 255, 23, 4, 52, 255, 24, 4, 55, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 241, 7, 255, 244, 231, 0, 255, 241, 227, 0, 255, 237, 224, 2, 255, 57, 58, 92, 254, 33, 35, 104, 214, 31, 35, 101, 73, 51, 51, 102, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 229, 0, 158, 233, 219, 0, 255, 235, 221, 0, 255, 241, 226, 0, 255, 253, 238, 7, 255, 255, 254, 17, 255, 255, 247, 8, 255, 20, 15, 10, 255, 1, 0, 3, 255, 13, 2, 29, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 255, 250, 12, 255, 255, 255, 33, 255, 255, 255, 22, 255, 248, 233, 1, 255, 242, 228, 0, 255, 240, 226, 0, 255, 166, 158, 39, 255, 33, 35, 103, 243, 33, 34, 103, 149, 32, 32, 106, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 236, 0, 28, 234, 218, 0, 250, 233, 218, 0, 255, 238, 222, 0, 255, 245, 229, 1, 255, 255, 248, 15, 255, 255, 251, 14, 255, 255, 242, 4, 255, 21, 16, 11, 255, 2, 0, 4, 255, 15, 2, 34, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 25, 4, 57, 255, 255, 243, 5, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 238, 7, 255, 244, 228, 0, 255, 241, 225, 0, 255, 237, 221, 2, 255, 57, 57, 92, 254, 32, 35, 103, 213, 35, 35, 102, 65, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 227, 0, 139, 233, 216, 0, 255, 235, 219, 0, 255, 241, 223, 0, 255, 253, 236, 7, 255, 255, 251, 17, 255, 255, 245, 8, 255, 255, 237, 1, 255, 72, 61, 15, 255, 4, 1, 9, 255, 18, 3, 41, 255, 25, 5, 57, 255, 27, 5, 58, 255, 26, 5, 57, 255, 66, 45, 47, 255, 255, 237, 2, 255, 255, 248, 12, 255, 255, 255, 33, 255, 255, 254, 22, 255, 248, 229, 1, 255, 242, 225, 0, 255, 240, 223, 0, 255, 150, 141, 47, 255, 33, 35, 103, 242, 33, 35, 103, 146, 33, 33, 100, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 234, 0, 28, 234, 215, 0, 250, 233, 215, 0, 255, 238, 219, 0, 255, 245, 226, 1, 255, 255, 245, 15, 255, 255, 248, 14, 255, 255, 239, 4, 255, 255, 235, 0, 255, 111, 98, 14, 255, 11, 2, 25, 255, 23, 4, 52, 255, 31, 10, 62, 255, 40, 19, 70, 255, 40, 20, 58, 255, 111, 90, 36, 255, 255, 235, 0, 255, 255, 240, 5, 255, 255, 255, 22, 255, 255, 255, 34, 255, 255, 235, 7, 255, 244, 225, 0, 255, 241, 222, 0, 255, 237, 218, 2, 255, 57, 57, 92, 254, 32, 35, 103, 212, 32, 36, 101, 63, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 224, 0, 139, 233, 214, 0, 255, 235, 216, 0, 255, 241, 221, 0, 255, 253, 233, 7, 255, 255, 249, 17, 255, 255, 242, 8, 255, 255, 235, 1, 255, 255, 234, 0, 255, 202, 183, 6, 255, 12, 2, 27, 255, 24, 5, 54, 255, 42, 22, 74, 255, 56, 35, 82, 255, 68, 45, 60, 255, 153, 131, 25, 255, 255, 234, 0, 255, 255, 235, 2, 255, 255, 245, 12, 255, 255, 255, 33, 255, 255, 251, 22, 255, 248, 227, 1, 255, 242, 222, 0, 255, 240, 220, 0, 255, 150, 140, 47, 255, 33, 35, 103, 240, 34, 36, 103, 136, 36, 36, 97, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 231, 0, 19, 234, 213, 0, 241, 233, 212, 0, 255, 237, 217, 0, 255, 244, 223, 1, 255, 255, 242, 15, 255, 255, 245, 14, 255, 255, 237, 4, 255, 255, 233, 0, 255, 255, 233, 0, 255, 255, 233, 0, 255, 14, 6, 20, 255, 23, 5, 51, 255, 63, 43, 95, 255, 71, 51, 96, 255, 79, 58, 63, 255, 210, 188, 11, 255, 255, 233, 0, 255, 255, 233, 0, 255, 255, 238, 5, 255, 255, 253, 22, 255, 255, 255, 34, 255, 254, 232, 6, 255, 244, 223, 0, 255, 240, 219, 0, 255, 230, 210, 6, 255, 49, 50, 95, 254, 33, 35, 103, 210, 32, 36, 101, 63, 64, 64, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 221, 0, 139, 232, 210, 0, 255, 234, 212, 0, 255, 240, 217, 0, 255, 251, 228, 6, 255, 255, 246, 17, 255, 255, 240, 8, 255, 255, 232, 1, 255, 255, 231, 0, 255, 255, 231, 0, 255, 255, 232, 0, 255, 45, 34, 19, 255, 18, 5, 41, 255, 86, 68, 122, 255, 81, 63, 109, 255, 76, 57, 60, 255, 255, 232, 0, 255, 255, 231, 0, 255, 255, 231, 0, 255, 255, 233, 2, 255, 255, 243, 12, 255, 255, 255, 32, 255, 255, 245, 19, 255, 246, 223, 1, 255, 241, 218, 0, 255, 239, 217, 0, 255, 150, 138, 47, 255, 33, 35, 103, 240, 34, 36, 102, 135, 38, 38, 102, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 230, 0, 14, 233, 210, 0, 241, 231, 208, 0, 255, 235, 212, 0, 255, 242, 219, 1, 255, 255, 236, 12, 255, 255, 242, 14, 255, 255, 234, 4, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 103, 88, 17, 255, 18, 5, 40, 255, 103, 91, 147, 255, 83, 67, 109, 255, 100, 77, 48, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 230, 0, 255, 255, 235, 5, 255, 255, 251, 22, 255, 255, 255, 29, 255, 251, 226, 4, 255, 242, 218, 0, 255, 239, 215, 0, 255, 230, 207, 6, 255, 45, 46, 97, 253, 33, 35, 103, 204, 31, 36, 103, 57, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 221, 0, 125, 231, 208, 0, 255, 232, 208, 0, 255, 237, 213, 0, 255, 246, 221, 3, 255, 255, 240, 14, 255, 255, 237, 9, 255, 255, 230, 2, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 187, 165, 9, 255, 18, 3, 41, 255, 152, 134, 186, 255, 82, 69, 94, 255, 141, 118, 32, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 229, 0, 255, 255, 231, 2, 255, 255, 241, 13, 255, 255, 255, 30, 255, 255, 233, 10, 255, 244, 219, 0, 255, 239, 215, 0, 255, 239, 214, 0, 255, 139, 128, 53, 255, 33, 35, 102, 239, 32, 34, 103, 134, 40, 40, 107, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 227, 0, 14, 235, 209, 0, 241, 232, 206, 0, 255, 234, 208, 0, 255, 240, 215, 0, 255, 254, 228, 8, 255, 255, 239, 14, 255, 255, 233, 5, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 227, 0, 255, 255, 227, 0, 255, 21, 4, 45, 255, 34, 36, 108, 255, 65, 53, 74, 255, 195, 169, 16, 255, 255, 227, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 0, 255, 255, 228, 1, 255, 255, 234, 7, 255, 255, 250, 24, 255, 255, 246, 23, 255, 247, 221, 1, 255, 241, 215, 0, 255, 239, 213, 0, 255, 231, 206, 6, 255, 45, 46, 97, 253, 33, 35, 103, 203, 34, 34, 101, 53, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 220, 0, 116, 233, 207, 0, 255, 233, 206, 0, 255, 237, 210, 0, 255, 244, 218, 1, 255, 255, 236, 13, 255, 255, 236, 11, 255, 255, 229, 3, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 63, 48, 40, 255, 28, 35, 106, 255, 37, 21, 63, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 255, 226, 0, 255, 255, 227, 0, 255, 255, 226, 0, 255, 255, 230, 3, 255, 255, 242, 17, 255, 255, 254, 30, 255, 254, 227, 7, 255, 244, 216, 0, 255, 240, 213, 0, 255, 240, 213, 0, 255, 132, 121, 56, 255, 33, 36, 103, 237, 32, 34, 103, 126, 30, 30, 105, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 224, 0, 14, 237, 210, 0, 232, 233, 205, 0, 255, 235, 207, 0, 255, 240, 212, 0, 255, 252, 225, 7, 255, 255, 238, 16, 255, 255, 232, 7, 255, 255, 226, 1, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 226, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 112, 96, 36, 255, 27, 29, 97, 255, 66, 44, 48, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 226, 0, 255, 255, 225, 0, 255, 255, 225, 0, 255, 255, 226, 1, 255, 255, 234, 10, 255, 255, 253, 30, 255, 255, 242, 21, 255, 247, 218, 1, 255, 242, 213, 0, 255, 240, 212, 0, 255, 224, 199, 9, 255, 45, 45, 97, 253, 33, 35, 102, 202, 34, 34, 103, 52, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 217, 0, 116, 234, 205, 0, 255, 234, 205, 0, 255, 238, 208, 0, 255, 245, 215, 1, 255, 255, 233, 14, 255, 255, 235, 13, 255, 255, 227, 4, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 223, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 223, 0, 255, 161, 138, 20, 255, 25, 19, 79, 255, 124, 99, 32, 255, 255, 223, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 223, 0, 255, 255, 224, 0, 255, 255, 224, 0, 255, 255, 228, 5, 255, 255, 243, 21, 255, 255, 254, 33, 255, 255, 225, 6, 255, 244, 214, 0, 255, 241, 211, 0, 255, 241, 212, 0, 255, 132, 119, 56, 255, 33, 35, 103, 236, 34, 36, 103, 121, 32, 32, 112, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 223, 0, 9, 238, 208, 0, 227, 233, 204, 0, 255, 235, 205, 0, 255, 241, 211, 0, 255, 253, 221, 7, 255, 255, 237, 17, 255, 255, 230, 8, 255, 255, 223, 1, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 216, 187, 8, 255, 25, 14, 71, 255, 153, 125, 25, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 222, 0, 255, 255, 223, 2, 255, 255, 233, 12, 255, 255, 253, 33, 255, 255, 240, 22, 255, 248, 217, 1, 255, 242, 211, 0, 255, 241, 210, 0, 255, 221, 193, 11, 255, 41, 42, 99, 252, 33, 35, 103, 196, 35, 35, 105, 51, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 215, 0, 116, 235, 203, 0, 255, 235, 203, 0, 255, 238, 207, 0, 255, 246, 213, 2, 255, 255, 232, 15, 255, 255, 234, 14, 255, 255, 225, 4, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 25, 14, 72, 255, 197, 167, 14, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 221, 0, 255, 255, 226, 5, 255, 255, 243, 22, 255, 255, 254, 35, 255, 255, 223, 7, 255, 245, 212, 0, 255, 242, 209, 0, 255, 242, 209, 0, 255, 132, 118, 56, 255, 33, 35, 103, 235, 34, 36, 104, 120, 32, 32, 96, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 219, 0, 14, 237, 204, 0, 241, 235, 201, 0, 255, 237, 204, 0, 255, 242, 209, 0, 255, 255, 221, 10, 255, 255, 235, 18, 255, 255, 228, 8, 255, 255, 220, 1, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 0, 255, 137, 110, 31, 255, 226, 193, 7, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 0, 255, 255, 220, 0, 255, 255, 219, 0, 255, 255, 220, 2, 255, 255, 231, 11, 255, 255, 251, 34, 255, 255, 242, 27, 255, 250, 216, 2, 255, 244, 210, 0, 255, 242, 207, 0, 255, 232, 200, 6, 255, 45, 45, 97, 252, 33, 34, 103, 193, 33, 33, 103, 47, 0, 0, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 211, 0, 130, 234, 200, 0, 255, 235, 201, 0, 255, 240, 205, 0, 255, 248, 213, 3, 255, 255, 233, 18, 255, 255, 231, 14, 255, 255, 221, 4, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 219, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 219, 0, 255, 255, 219, 0, 255, 255, 219, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 219, 0, 255, 255, 218, 0, 255, 255, 218, 0, 255, 255, 222, 5, 255, 255, 239, 22, 255, 255, 255, 39, 255, 255, 225, 12, 255, 246, 211, 0, 255, 242, 207, 0, 255, 241, 206, 0, 255, 143, 126, 50, 255, 33, 35, 104, 234, 34, 36, 103, 121, 32, 32, 112, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 216, 0, 14, 235, 200, 0, 241, 233, 197, 0, 255, 236, 200, 0, 255, 243, 207, 0, 255, 255, 223, 13, 255, 255, 233, 19, 255, 255, 224, 7, 255, 255, 218, 1, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 216, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 216, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 217, 0, 255, 255, 218, 1, 255, 255, 227, 10, 255, 255, 248, 33, 255, 255, 246, 33, 255, 251, 214, 3, 255, 243, 206, 0, 255, 240, 203, 0, 255, 231, 197, 6, 255, 45, 45, 97, 253, 33, 36, 103, 201, 34, 34, 106, 53, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 209, 0, 116, 232, 195, 0, 255, 233, 197, 0, 255, 238, 202, 0, 255, 247, 209, 3, 255, 255, 229, 17, 255, 255, 227, 12, 255, 255, 219, 3, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 137, 112, 15, 255, 17, 7, 25, 255, 8, 1, 17, 255, 12, 3, 24, 255, 106, 85, 26, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 216, 0, 255, 255, 215, 0, 255, 255, 215, 0, 255, 255, 219, 4, 255, 255, 234, 18, 255, 255, 249, 36, 255, 255, 221, 11, 255, 245, 207, 0, 255, 240, 203, 0, 255, 239, 202, 0, 255, 132, 115, 56, 255, 33, 35, 103, 238, 34, 36, 103, 129, 28, 43, 99, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 215, 0, 5, 236, 198, 0, 227, 232, 194, 0, 255, 234, 196, 0, 255, 240, 202, 0, 255, 255, 215, 9, 255, 255, 228, 16, 255, 255, 220, 6, 255, 255, 216, 1, 255, 255, 215, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 215, 0, 255, 154, 128, 11, 255, 6, 3, 10, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 50, 28, 61, 255, 148, 121, 17, 255, 255, 215, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 214, 0, 255, 255, 215, 0, 255, 255, 216, 1, 255, 255, 222, 8, 255, 255, 241, 28, 255, 255, 234, 25, 255, 248, 208, 1, 255, 241, 202, 0, 255, 239, 201, 0, 255, 220, 185, 11, 255, 37, 39, 101, 253, 33, 35, 104, 202, 34, 34, 103, 52, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 248, 208, 0, 93, 232, 194, 0, 255, 232, 194, 0, 255, 237, 198, 0, 255, 244, 204, 1, 255, 255, 222, 13, 255, 255, 223, 11, 255, 255, 216, 3, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 212, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 71, 52, 25, 255, 0, 0, 0, 255, 0, 0, 1, 255, 20, 3, 46, 255, 22, 3, 50, 255, 27, 7, 55, 255, 59, 40, 57, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 212, 0, 255, 255, 213, 0, 255, 255, 213, 0, 255, 255, 216, 3, 255, 255, 230, 18, 255, 255, 241, 30, 255, 254, 213, 6, 255, 243, 203, 0, 255, 240, 200, 0, 255, 240, 200, 0, 255, 113, 99, 65, 255, 33, 35, 103, 236, 34, 36, 104, 120, 34, 34, 102, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 238, 198, 0, 209, 231, 191, 0, 255, 233, 194, 0, 255, 239, 199, 0, 255, 250, 208, 6, 255, 255, 224, 14, 255, 255, 218, 6, 255, 255, 213, 1, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 38, 25, 19, 255, 0, 0, 0, 255, 19, 3, 44, 255, 25, 4, 57, 255, 29, 10, 60, 255, 27, 7, 57, 255, 74, 54, 104, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 212, 0, 255, 255, 211, 0, 255, 255, 213, 1, 255, 255, 220, 9, 255, 255, 237, 27, 255, 255, 224, 18, 255, 246, 205, 1, 255, 240, 200, 0, 255, 239, 197, 0, 255, 206, 172, 19, 255, 33, 35, 103, 252, 33, 35, 104, 192, 36, 36, 101, 43, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 251, 207, 0, 51, 231, 191, 0, 255, 230, 189, 0, 255, 234, 193, 0, 255, 241, 198, 0, 255, 255, 213, 8, 255, 255, 218, 9, 255, 255, 212, 2, 255, 255, 211, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 15, 8, 17, 255, 0, 0, 0, 255, 16, 2, 37, 255, 26, 7, 56, 255, 192, 171, 224, 255, 83, 63, 115, 255, 124, 107, 146, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 211, 0, 255, 255, 211, 0, 255, 255, 210, 0, 255, 255, 210, 0, 255, 255, 211, 0, 255, 255, 213, 3, 255, 255, 224, 14, 255, 255, 227, 21, 255, 249, 205, 3, 255, 241, 198, 0, 255, 238, 196, 0, 255, 239, 197, 0, 255, 77, 70, 82, 255, 33, 35, 104, 231, 34, 36, 104, 105, 43, 43, 106, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 245, 202, 0, 121, 229, 187, 0, 255, 229, 187, 0, 255, 233, 191, 0, 255, 240, 198, 1, 255, 254, 209, 4, 255, 255, 211, 3, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 211, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 161, 131, 17, 255, 26, 8, 52, 255, 7, 1, 16, 255, 26, 6, 56, 255, 77, 56, 108, 255, 255, 243, 255, 255, 136, 115, 73, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 211, 2, 255, 255, 210, 2, 255, 255, 210, 2, 255, 255, 211, 2, 255, 255, 213, 5, 255, 255, 216, 10, 255, 248, 205, 4, 255, 240, 197, 0, 255, 236, 193, 0, 255, 236, 194, 0, 255, 135, 115, 54, 255, 33, 35, 103, 249, 33, 35, 103, 180, 31, 39, 100, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 238, 196, 0, 181, 226, 184, 0, 255, 226, 184, 0, 255, 229, 187, 0, 255, 234, 191, 0, 255, 245, 200, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 248, 204, 1, 255, 248, 204, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 204, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 192, 157, 13, 255, 52, 37, 65, 255, 76, 59, 99, 255, 119, 105, 137, 255, 147, 123, 54, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 204, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 203, 1, 255, 248, 204, 1, 255, 248, 204, 1, 255, 249, 203, 1, 255, 249, 203, 1, 255, 249, 204, 1, 255, 250, 204, 1, 255, 247, 202, 2, 255, 239, 195, 1, 255, 236, 192, 0, 255, 233, 190, 0, 255, 233, 190, 0, 255, 182, 151, 30, 255, 33, 35, 103, 255, 33, 35, 102, 224, 35, 35, 105, 73, 43, 43, 128, 6, + 0, 0, 0, 0, 239, 194, 0, 158, 223, 181, 0, 255, 220, 179, 0, 255, 222, 180, 0, 255, 224, 183, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 226, 184, 0, 255, 227, 184, 0, 255, 227, 185, 0, 255, 228, 186, 0, 255, 228, 186, 0, 255, 227, 185, 0, 255, 227, 184, 0, 255, 229, 186, 0, 255, 163, 135, 39, 255, 33, 35, 103, 255, 33, 35, 103, 238, 34, 36, 103, 121, 34, 34, 102, 15, + 0, 0, 0, 0, 248, 200, 0, 70, 220, 178, 0, 255, 215, 174, 0, 255, 213, 173, 0, 255, 213, 173, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 213, 172, 0, 255, 214, 173, 0, 255, 215, 174, 0, 255, 216, 176, 0, 255, 218, 177, 0, 255, 221, 179, 0, 255, 226, 183, 0, 255, 92, 81, 75, 255, 33, 35, 103, 255, 33, 35, 103, 246, 32, 36, 104, 157, 33, 33, 100, 23, + 0, 0, 0, 0, 0, 0, 0, 0, 238, 191, 0, 134, 214, 173, 0, 255, 209, 168, 0, 255, 206, 166, 0, 255, 204, 165, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 203, 164, 0, 255, 203, 163, 0, 255, 204, 164, 0, 255, 206, 166, 0, 255, 209, 168, 0, 255, 213, 171, 0, 255, 218, 176, 0, 255, 142, 118, 49, 255, 33, 35, 103, 255, 33, 35, 103, 255, 33, 35, 103, 243, 32, 36, 104, 142, 38, 38, 102, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 183, 8, 80, 194, 157, 19, 188, 157, 129, 37, 240, 149, 123, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 122, 41, 255, 148, 121, 41, 255, 148, 122, 41, 255, 149, 123, 41, 255, 150, 124, 41, 255, 152, 126, 41, 255, 95, 82, 73, 255, 33, 35, 103, 255, 33, 35, 103, 255, 33, 35, 103, 255, 33, 35, 103, 217, 32, 35, 103, 87, 28, 28, 113, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 39, 98, 26, 33, 35, 103, 131, 33, 35, 103, 217, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 242, 33, 35, 103, 217, 33, 35, 103, 131, 29, 39, 98, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 39, 108, 26, 35, 35, 104, 88, 34, 35, 102, 137, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 33, 35, 102, 147, 34, 35, 102, 137, 35, 35, 104, 88, 29, 39, 108, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 113, 9, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 40, 40, 107, 19, 28, 28, 113, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceSound(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 66, 49, 49, 49, 134, 49, 49, 49, 197, 49, 49, 49, 199, 49, 49, 49, 200, 49, 49, 49, 200, 45, 45, 45, 144, 43, 43, 43, 96, 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 17, 50, 50, 50, 131, 51, 51, 51, 240, 53, 53, 53, 255, 57, 57, 57, 255, 61, 61, 61, 255, 65, 65, 65, 255, 69, 69, 69, 255, 69, 69, 69, 255, 65, 65, 65, 255, 55, 55, 55, 255, 50, 50, 50, 244, 43, 43, 43, 151, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 115, 51, 51, 51, 240, 53, 53, 53, 255, 56, 56, 56, 255, 61, 61, 61, 255, 64, 64, 64, 255, 68, 68, 68, 255, 71, 71, 71, 255, 76, 76, 76, 255, 81, 81, 81, 255, 84, 84, 84, 255, 89, 89, 89, 255, 82, 82, 82, 255, 59, 59, 59, 255, 47, 47, 47, 224, 29, 29, 29, 85, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 99, 33, 48, 48, 96, 68, 46, 46, 92, 71, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 48, 48, 48, 17, 50, 50, 50, 194, 51, 51, 51, 255, 53, 53, 53, 255, 55, 55, 55, 255, 57, 57, 57, 255, 63, 63, 63, 255, 67, 67, 67, 255, 72, 72, 72, 255, 73, 73, 73, 255, 77, 77, 77, 255, 78, 78, 78, 255, 84, 84, 84, 255, 91, 91, 91, 255, 96, 96, 96, 255, 98, 98, 98, 255, 77, 77, 77, 255, 49, 49, 49, 247, 24, 24, 24, 100, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 98, 50, 50, 50, 100, 194, 51, 51, 102, 255, 51, 51, 102, 255, 51, 51, 102, 255, 50, 50, 100, 243, 46, 46, 92, 177, 41, 41, 74, 100, 50, 50, 50, 212, 51, 51, 51, 255, 51, 51, 51, 255, 54, 54, 54, 255, 61, 61, 61, 255, 66, 66, 66, 255, 70, 70, 70, 255, 74, 74, 74, 255, 77, 77, 77, 255, 82, 82, 82, 255, 84, 84, 84, 255, 88, 88, 88, 255, 87, 87, 87, 255, 88, 88, 88, 255, 96, 96, 96, 255, 102, 102, 102, 255, 103, 103, 103, 255, 90, 90, 90, 255, 49, 49, 49, 247, 23, 23, 23, 105, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 100, 98, 51, 51, 102, 255, 82, 82, 120, 255, 135, 135, 151, 255, 167, 167, 167, 255, 153, 153, 156, 255, 115, 115, 134, 255, 77, 77, 112, 255, 51, 51, 61, 255, 51, 51, 51, 255, 51, 51, 51, 255, 55, 55, 55, 255, 64, 64, 64, 255, 66, 66, 66, 255, 70, 70, 70, 255, 74, 74, 74, 255, 77, 77, 77, 255, 82, 82, 82, 255, 84, 84, 84, 255, 89, 89, 89, 255, 92, 92, 92, 255, 96, 96, 96, 255, 96, 96, 96, 255, 94, 94, 94, 255, 101, 101, 101, 255, 114, 114, 114, 255, 118, 118, 118, 255, 89, 89, 89, 255, 46, 46, 46, 232, 0, 0, 0, 64, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 100, 98, 51, 51, 102, 255, 105, 105, 137, 255, 191, 191, 191, 255, 185, 185, 185, 255, 177, 177, 177, 255, 173, 173, 173, 255, 172, 172, 172, 255, 71, 71, 71, 255, 51, 51, 51, 255, 51, 51, 51, 255, 56, 56, 56, 255, 64, 64, 64, 255, 66, 66, 66, 255, 70, 70, 70, 255, 74, 74, 74, 255, 77, 77, 77, 255, 82, 82, 82, 255, 84, 84, 84, 255, 89, 89, 89, 255, 92, 92, 92, 255, 96, 96, 96, 255, 98, 98, 98, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 115, 115, 115, 255, 128, 128, 128, 255, 134, 134, 134, 255, 75, 75, 75, 255, 35, 35, 35, 188, 0, 0, 0, 45, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 99, 33, 51, 51, 102, 240, 112, 112, 144, 255, 210, 210, 210, 255, 203, 203, 203, 255, 197, 197, 197, 255, 194, 194, 194, 255, 191, 191, 191, 255, 108, 108, 108, 255, 51, 51, 51, 255, 51, 51, 51, 255, 57, 57, 57, 255, 64, 64, 64, 255, 66, 66, 66, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 74, 74, 74, 255, 80, 80, 80, 255, 89, 89, 89, 255, 92, 92, 92, 255, 96, 96, 96, 255, 98, 98, 98, 255, 102, 102, 102, 255, 103, 103, 103, 255, 114, 114, 114, 255, 111, 111, 111, 255, 109, 109, 109, 255, 134, 134, 134, 255, 145, 145, 145, 255, 124, 124, 124, 255, 49, 49, 49, 249, 8, 8, 8, 102, 0, 0, 0, 24, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 100, 163, 74, 74, 119, 255, 217, 217, 220, 255, 221, 221, 221, 255, 214, 214, 214, 255, 214, 214, 214, 255, 208, 208, 208, 255, 163, 163, 163, 255, 51, 51, 51, 255, 51, 51, 51, 255, 56, 56, 56, 255, 64, 64, 64, 255, 66, 66, 66, 255, 63, 63, 63, 255, 53, 53, 53, 255, 57, 57, 57, 255, 76, 76, 76, 255, 70, 70, 70, 255, 56, 56, 56, 255, 61, 61, 61, 255, 88, 88, 88, 255, 98, 98, 98, 255, 102, 102, 102, 255, 103, 103, 103, 255, 114, 114, 114, 255, 118, 118, 118, 255, 128, 128, 128, 255, 113, 113, 113, 255, 133, 133, 133, 255, 149, 149, 149, 255, 159, 159, 159, 255, 78, 78, 78, 255, 30, 30, 30, 188, 0, 0, 0, 53, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 49, 99, 33, 51, 51, 102, 255, 174, 174, 193, 255, 239, 239, 239, 255, 235, 235, 235, 255, 234, 234, 234, 255, 227, 227, 227, 255, 221, 221, 221, 255, 82, 82, 82, 255, 51, 51, 51, 255, 54, 54, 54, 255, 64, 64, 64, 255, 65, 65, 65, 255, 57, 57, 57, 255, 66, 66, 66, 255, 127, 127, 127, 255, 159, 159, 159, 255, 150, 150, 150, 255, 134, 134, 134, 255, 121, 121, 121, 255, 78, 78, 78, 255, 54, 54, 54, 255, 92, 92, 92, 255, 103, 103, 103, 255, 114, 114, 114, 255, 118, 118, 118, 255, 128, 128, 128, 255, 134, 134, 134, 255, 133, 133, 133, 255, 123, 123, 123, 255, 159, 159, 159, 255, 163, 163, 163, 255, 128, 128, 128, 255, 44, 44, 44, 238, 0, 0, 0, 88, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 49, 98, 116, 75, 75, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 255, 245, 245, 245, 255, 238, 238, 238, 255, 166, 166, 166, 255, 51, 51, 51, 255, 52, 52, 52, 255, 63, 63, 63, 255, 66, 66, 66, 255, 55, 55, 55, 255, 78, 78, 78, 255, 186, 186, 186, 255, 182, 182, 182, 255, 173, 173, 173, 255, 156, 156, 156, 255, 146, 146, 146, 255, 126, 126, 126, 255, 110, 110, 110, 255, 83, 83, 83, 255, 54, 54, 54, 255, 110, 110, 110, 255, 118, 118, 118, 255, 128, 128, 128, 255, 134, 134, 134, 255, 145, 145, 145, 255, 147, 147, 147, 255, 119, 119, 119, 255, 158, 158, 158, 255, 174, 174, 174, 255, 173, 173, 173, 255, 51, 51, 51, 255, 6, 6, 6, 129, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 50, 99, 196, 126, 126, 162, 255, 231, 231, 243, 255, 239, 239, 247, 255, 249, 249, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 89, 89, 255, 51, 51, 51, 255, 58, 58, 58, 255, 66, 66, 66, 255, 59, 59, 59, 255, 78, 78, 78, 255, 198, 198, 198, 255, 202, 202, 202, 255, 196, 196, 196, 255, 173, 173, 173, 255, 166, 166, 166, 255, 150, 150, 150, 255, 126, 126, 126, 255, 114, 114, 114, 255, 102, 102, 102, 255, 65, 65, 68, 255, 85, 85, 85, 255, 128, 128, 128, 255, 134, 134, 134, 255, 145, 145, 145, 255, 149, 149, 149, 255, 159, 159, 159, 255, 132, 132, 132, 255, 156, 156, 156, 255, 180, 180, 180, 255, 189, 189, 189, 255, 86, 86, 86, 255, 19, 19, 19, 171, 0, 0, 0, 54, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 102, 255, 142, 142, 179, 255, 206, 206, 230, 255, 213, 213, 234, 255, 221, 221, 238, 255, 232, 232, 244, 255, 205, 205, 211, 255, 51, 51, 51, 255, 53, 53, 53, 255, 66, 66, 66, 255, 66, 66, 66, 255, 60, 60, 60, 255, 179, 179, 179, 255, 221, 221, 221, 255, 211, 211, 211, 255, 197, 197, 197, 255, 173, 173, 173, 255, 167, 167, 167, 255, 150, 150, 150, 255, 126, 126, 126, 255, 114, 114, 114, 255, 102, 102, 102, 255, 90, 90, 100, 255, 61, 61, 61, 255, 134, 134, 134, 255, 145, 145, 145, 255, 149, 149, 149, 255, 159, 159, 159, 255, 163, 163, 163, 255, 149, 149, 149, 255, 156, 156, 156, 255, 189, 189, 189, 255, 195, 195, 195, 255, 118, 118, 118, 255, 32, 32, 32, 206, 0, 0, 0, 73, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 102, 255, 142, 142, 186, 255, 181, 181, 218, 255, 188, 188, 222, 255, 196, 196, 225, 255, 207, 207, 231, 255, 123, 123, 131, 255, 52, 52, 52, 255, 60, 60, 60, 255, 70, 70, 70, 255, 59, 59, 59, 255, 117, 117, 117, 255, 197, 197, 197, 255, 202, 202, 202, 255, 199, 199, 199, 255, 191, 191, 191, 255, 173, 173, 173, 255, 164, 164, 164, 255, 149, 149, 149, 255, 126, 126, 126, 255, 113, 113, 113, 255, 102, 102, 102, 255, 114, 114, 139, 255, 51, 51, 51, 255, 139, 139, 139, 255, 149, 149, 149, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 153, 153, 153, 255, 149, 149, 149, 255, 195, 195, 195, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 210, 0, 0, 0, 89, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 102, 255, 128, 128, 179, 255, 155, 155, 205, 255, 163, 163, 209, 255, 171, 171, 213, 255, 181, 181, 218, 255, 77, 77, 83, 255, 56, 56, 56, 255, 65, 65, 65, 255, 73, 73, 73, 255, 51, 51, 51, 255, 158, 158, 158, 255, 179, 179, 179, 255, 185, 185, 185, 255, 184, 184, 184, 255, 175, 175, 175, 255, 173, 173, 173, 255, 153, 153, 153, 255, 141, 141, 141, 255, 126, 126, 126, 255, 107, 107, 107, 255, 103, 103, 104, 255, 116, 116, 144, 255, 69, 69, 79, 255, 125, 125, 125, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 175, 175, 175, 255, 151, 151, 151, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 211, 0, 0, 0, 95, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 102, 255, 115, 115, 161, 255, 148, 148, 195, 255, 152, 152, 202, 255, 153, 153, 204, 255, 148, 148, 195, 255, 51, 51, 51, 255, 58, 58, 58, 255, 73, 73, 73, 255, 69, 69, 69, 255, 70, 70, 70, 255, 159, 159, 159, 255, 172, 172, 172, 255, 173, 173, 173, 255, 173, 173, 173, 255, 170, 170, 170, 255, 156, 156, 156, 255, 149, 149, 149, 255, 128, 128, 128, 255, 120, 120, 120, 255, 102, 102, 102, 255, 106, 106, 114, 255, 119, 119, 154, 255, 69, 69, 79, 255, 133, 133, 133, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 170, 170, 170, 255, 153, 153, 153, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 34, 34, 34, 217, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 49, 98, 215, 88, 88, 131, 255, 138, 138, 174, 255, 140, 140, 179, 255, 145, 145, 188, 255, 124, 124, 160, 255, 55, 55, 55, 255, 63, 63, 63, 255, 77, 77, 77, 255, 66, 66, 66, 255, 90, 90, 90, 255, 149, 149, 149, 255, 150, 150, 150, 255, 156, 156, 156, 255, 154, 154, 154, 255, 150, 150, 150, 255, 146, 146, 146, 255, 131, 131, 131, 255, 125, 125, 125, 255, 105, 105, 105, 255, 102, 102, 102, 255, 112, 112, 133, 255, 122, 122, 163, 255, 64, 64, 72, 255, 136, 136, 136, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 171, 171, 171, 255, 168, 168, 168, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 212, 0, 0, 0, 98, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 45, 90, 146, 56, 56, 105, 255, 122, 122, 148, 255, 130, 130, 156, 255, 133, 133, 164, 255, 94, 94, 112, 255, 57, 57, 57, 255, 67, 67, 67, 255, 82, 82, 82, 255, 67, 67, 67, 255, 89, 89, 89, 255, 128, 128, 128, 255, 135, 135, 135, 255, 138, 138, 138, 255, 138, 138, 138, 255, 131, 131, 131, 255, 126, 126, 126, 255, 123, 123, 123, 255, 107, 107, 107, 255, 102, 102, 102, 255, 108, 108, 119, 255, 120, 120, 156, 255, 123, 123, 165, 255, 51, 51, 51, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 165, 165, 165, 255, 173, 173, 173, 255, 204, 204, 204, 255, 204, 204, 204, 255, 128, 128, 128, 255, 31, 31, 31, 212, 0, 0, 0, 97, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 22, 44, 37, 50, 50, 100, 245, 75, 75, 112, 255, 117, 117, 133, 255, 122, 122, 142, 255, 89, 89, 100, 255, 61, 61, 61, 255, 72, 72, 72, 255, 84, 84, 84, 255, 70, 70, 70, 255, 81, 81, 81, 255, 117, 117, 117, 255, 123, 123, 123, 255, 126, 126, 126, 255, 126, 126, 126, 255, 120, 120, 120, 255, 113, 113, 113, 255, 104, 104, 104, 255, 102, 102, 102, 255, 106, 106, 116, 255, 118, 118, 152, 255, 122, 122, 163, 255, 103, 103, 138, 255, 74, 74, 74, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 154, 154, 154, 255, 189, 189, 189, 255, 204, 204, 204, 255, 204, 204, 204, 255, 99, 99, 99, 255, 24, 24, 24, 200, 0, 0, 0, 92, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 32, 32, 63, 103, 49, 49, 99, 247, 59, 59, 105, 255, 87, 87, 117, 255, 75, 75, 86, 255, 64, 64, 64, 255, 74, 74, 74, 255, 89, 89, 89, 255, 70, 70, 70, 255, 77, 77, 77, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 103, 103, 106, 255, 110, 110, 127, 255, 118, 118, 152, 255, 122, 122, 163, 255, 126, 126, 175, 255, 72, 72, 87, 255, 126, 126, 126, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 197, 197, 197, 255, 147, 147, 147, 255, 200, 200, 200, 255, 204, 204, 204, 255, 204, 204, 204, 255, 70, 70, 70, 255, 18, 18, 18, 185, 0, 0, 0, 83, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 18, 18, 35, 93, 39, 39, 78, 209, 49, 49, 98, 250, 51, 51, 77, 255, 64, 64, 64, 255, 76, 76, 76, 255, 92, 92, 92, 255, 82, 82, 82, 255, 62, 62, 66, 255, 109, 109, 123, 255, 107, 107, 118, 255, 107, 107, 118, 255, 107, 107, 118, 255, 107, 107, 118, 255, 111, 111, 129, 255, 116, 116, 146, 255, 121, 121, 159, 255, 122, 122, 163, 255, 128, 128, 179, 255, 113, 113, 158, 255, 60, 60, 60, 255, 180, 180, 180, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 179, 179, 179, 255, 165, 165, 165, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 51, 51, 51, 255, 0, 0, 0, 154, 0, 0, 0, 68, 197, 197, 246, 165, 54, 54, 109, 30, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 198, 198, 247, 33, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 19, 0, 0, 0, 58, 0, 0, 0, 102, 38, 38, 46, 211, 70, 70, 70, 255, 76, 76, 76, 255, 95, 95, 95, 255, 95, 95, 95, 255, 54, 54, 54, 255, 113, 113, 147, 255, 120, 120, 156, 255, 120, 120, 156, 255, 120, 120, 156, 255, 120, 120, 157, 255, 122, 122, 163, 255, 122, 122, 163, 255, 125, 125, 171, 255, 130, 130, 186, 255, 128, 128, 185, 255, 66, 66, 78, 255, 120, 120, 120, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 155, 155, 155, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 147, 147, 147, 255, 38, 38, 38, 234, 0, 0, 0, 139, 109, 109, 136, 90, 191, 191, 249, 255, 82, 82, 164, 159, 0, 0, 0, 41, 0, 0, 0, 7, 0, 0, 0, 0, 202, 202, 253, 209, 157, 157, 229, 227, 34, 34, 68, 48, 0, 0, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 27, 41, 41, 41, 159, 72, 72, 72, 255, 83, 83, 83, 255, 93, 93, 93, 255, 102, 102, 102, 255, 77, 77, 77, 255, 69, 69, 79, 255, 125, 125, 171, 255, 125, 125, 171, 255, 125, 125, 171, 255, 125, 125, 171, 255, 128, 128, 179, 255, 131, 131, 188, 255, 133, 133, 194, 255, 128, 128, 185, 255, 77, 77, 96, 255, 86, 86, 86, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 187, 187, 187, 255, 155, 155, 155, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 89, 89, 89, 255, 24, 24, 24, 206, 0, 0, 0, 113, 161, 161, 201, 122, 172, 172, 239, 255, 59, 59, 118, 166, 0, 0, 0, 77, 0, 0, 0, 17, 0, 0, 0, 0, 204, 204, 255, 255, 128, 128, 217, 255, 0, 0, 0, 100, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 95, 62, 62, 62, 255, 89, 89, 89, 255, 92, 92, 92, 255, 103, 103, 103, 255, 110, 110, 110, 255, 63, 63, 63, 255, 82, 82, 105, 255, 128, 128, 185, 255, 133, 133, 194, 255, 133, 133, 194, 255, 133, 133, 194, 255, 134, 134, 196, 255, 125, 125, 184, 255, 67, 67, 80, 255, 77, 77, 77, 255, 186, 186, 186, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 159, 159, 159, 255, 182, 182, 182, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 49, 49, 49, 251, 5, 5, 5, 166, 0, 0, 0, 82, 187, 187, 234, 173, 147, 147, 226, 255, 32, 32, 63, 154, 0, 0, 0, 82, 0, 0, 0, 17, 198, 198, 247, 66, 204, 204, 255, 255, 109, 109, 196, 240, 0, 0, 0, 136, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36, 45, 54, 54, 54, 255, 99, 99, 99, 255, 89, 89, 89, 255, 113, 113, 113, 255, 118, 118, 118, 255, 123, 123, 123, 255, 72, 72, 72, 255, 61, 61, 69, 255, 87, 87, 114, 255, 110, 110, 157, 255, 100, 100, 141, 255, 80, 80, 105, 255, 51, 51, 51, 255, 120, 120, 120, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 163, 163, 163, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 108, 108, 108, 255, 35, 35, 35, 229, 0, 0, 0, 137, 0, 0, 0, 53, 202, 202, 253, 241, 111, 111, 199, 236, 0, 0, 0, 132, 0, 0, 0, 64, 0, 0, 0, 9, 195, 195, 244, 134, 191, 191, 249, 255, 76, 76, 151, 215, 0, 0, 0, 128, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 49, 49, 49, 230, 93, 93, 93, 255, 98, 98, 98, 255, 107, 107, 107, 255, 128, 128, 128, 255, 134, 134, 134, 255, 145, 145, 145, 255, 125, 125, 125, 255, 106, 106, 106, 255, 80, 80, 80, 255, 98, 98, 98, 255, 126, 126, 126, 255, 172, 172, 172, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 156, 156, 156, 255, 194, 194, 194, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 51, 51, 51, 255, 9, 9, 9, 182, 0, 0, 0, 103, 167, 167, 209, 117, 185, 185, 245, 255, 73, 73, 146, 199, 0, 0, 0, 123, 0, 0, 0, 43, 0, 0, 0, 2, 199, 199, 249, 212, 159, 159, 233, 255, 52, 52, 103, 190, 0, 0, 0, 107, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 45, 45, 45, 161, 76, 76, 76, 255, 113, 113, 113, 255, 99, 99, 99, 255, 128, 128, 128, 255, 145, 145, 145, 255, 149, 149, 149, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 191, 191, 191, 255, 156, 156, 156, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 89, 89, 89, 255, 30, 30, 30, 220, 0, 0, 0, 142, 0, 0, 0, 62, 197, 197, 246, 198, 140, 140, 223, 255, 31, 31, 62, 160, 0, 0, 0, 99, 0, 0, 0, 25, 198, 198, 247, 33, 204, 204, 255, 255, 134, 134, 220, 255, 20, 20, 40, 164, 0, 0, 0, 83, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 54, 55, 55, 55, 255, 123, 123, 123, 255, 119, 119, 119, 255, 108, 108, 108, 255, 141, 141, 141, 255, 159, 159, 159, 255, 163, 163, 163, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 184, 184, 184, 255, 153, 153, 153, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 137, 137, 137, 255, 46, 46, 46, 247, 5, 5, 5, 171, 0, 0, 0, 97, 152, 152, 190, 86, 198, 198, 252, 255, 96, 96, 180, 220, 0, 0, 0, 135, 0, 0, 0, 67, 0, 0, 0, 10, 198, 198, 247, 132, 191, 191, 249, 255, 86, 86, 172, 227, 0, 0, 0, 142, 0, 0, 0, 59, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 47, 47, 47, 207, 88, 88, 88, 255, 145, 145, 145, 255, 126, 126, 126, 255, 114, 114, 114, 255, 148, 148, 148, 255, 174, 174, 174, 255, 180, 180, 180, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 197, 197, 197, 255, 166, 166, 166, 255, 156, 156, 156, 255, 191, 191, 191, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 51, 51, 51, 255, 13, 13, 13, 192, 0, 0, 0, 125, 0, 0, 0, 49, 200, 200, 250, 211, 147, 147, 226, 255, 39, 39, 78, 167, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 2, 202, 202, 253, 241, 153, 153, 230, 255, 51, 51, 102, 192, 0, 0, 0, 118, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 26, 26, 26, 62, 51, 51, 51, 255, 131, 131, 131, 255, 159, 159, 159, 255, 149, 149, 149, 255, 121, 121, 121, 255, 136, 136, 136, 255, 165, 165, 165, 255, 186, 186, 186, 255, 204, 204, 204, 255, 204, 204, 204, 255, 196, 196, 196, 255, 184, 184, 184, 255, 168, 168, 168, 255, 147, 147, 147, 255, 171, 171, 171, 255, 201, 201, 201, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 61, 61, 61, 255, 23, 23, 23, 211, 0, 0, 0, 143, 0, 0, 0, 70, 184, 184, 230, 124, 185, 185, 245, 255, 88, 88, 176, 221, 0, 0, 0, 139, 0, 0, 0, 74, 0, 0, 0, 14, 200, 200, 250, 98, 204, 204, 255, 255, 106, 106, 201, 247, 0, 0, 0, 152, 0, 0, 0, 82, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 39, 39, 39, 148, 58, 58, 58, 255, 156, 156, 156, 255, 174, 174, 174, 255, 177, 177, 177, 255, 164, 164, 164, 255, 146, 146, 146, 255, 130, 130, 130, 255, 135, 135, 135, 255, 137, 137, 137, 255, 141, 141, 141, 255, 155, 155, 155, 255, 176, 176, 176, 255, 197, 197, 197, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 175, 175, 175, 255, 61, 61, 61, 255, 23, 23, 23, 211, 0, 0, 0, 149, 0, 0, 0, 84, 140, 140, 175, 70, 204, 204, 255, 255, 119, 119, 209, 245, 21, 21, 42, 157, 0, 0, 0, 110, 0, 0, 0, 37, 163, 163, 204, 20, 203, 203, 254, 240, 159, 159, 233, 255, 64, 64, 127, 205, 0, 0, 0, 132, 0, 0, 0, 49, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 25, 42, 42, 42, 193, 74, 74, 74, 255, 156, 156, 156, 255, 189, 189, 189, 255, 195, 195, 195, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 137, 137, 137, 255, 51, 51, 51, 255, 23, 23, 23, 211, 0, 0, 0, 149, 0, 0, 0, 86, 74, 74, 93, 44, 203, 203, 254, 240, 147, 147, 226, 255, 54, 54, 108, 181, 0, 0, 0, 130, 0, 0, 0, 62, 0, 0, 0, 11, 199, 199, 249, 131, 198, 198, 252, 255, 102, 102, 194, 239, 10, 10, 20, 161, 0, 0, 0, 94, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 37, 39, 39, 39, 187, 60, 60, 60, 255, 140, 140, 140, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 166, 166, 166, 255, 89, 89, 89, 255, 46, 46, 46, 247, 13, 13, 13, 192, 0, 0, 0, 143, 0, 0, 0, 84, 74, 74, 93, 44, 201, 201, 251, 210, 166, 166, 236, 255, 78, 78, 157, 207, 0, 0, 0, 143, 0, 0, 0, 85, 0, 0, 0, 22, 192, 192, 240, 51, 204, 204, 255, 255, 147, 147, 226, 255, 51, 51, 102, 193, 0, 0, 0, 129, 0, 0, 0, 52, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 40, 24, 24, 24, 137, 47, 47, 47, 242, 70, 70, 70, 255, 147, 147, 147, 255, 185, 185, 185, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 204, 204, 204, 255, 185, 185, 185, 255, 147, 147, 147, 255, 89, 89, 89, 255, 49, 49, 49, 251, 30, 30, 30, 220, 5, 5, 5, 170, 0, 0, 0, 125, 0, 0, 0, 70, 140, 140, 175, 70, 203, 203, 254, 240, 166, 166, 236, 255, 80, 80, 159, 204, 0, 0, 0, 144, 0, 0, 0, 100, 0, 0, 0, 35, 155, 155, 194, 21, 202, 202, 253, 225, 179, 179, 242, 255, 86, 86, 172, 227, 0, 0, 0, 151, 0, 0, 0, 84, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 31, 0, 0, 0, 75, 28, 28, 28, 173, 40, 40, 40, 224, 51, 51, 51, 255, 61, 61, 61, 255, 89, 89, 89, 255, 89, 89, 89, 255, 61, 61, 61, 255, 51, 51, 51, 255, 38, 38, 38, 234, 24, 24, 24, 206, 5, 5, 5, 166, 0, 0, 0, 134, 0, 0, 0, 94, 0, 0, 0, 49, 184, 184, 230, 124, 204, 204, 255, 255, 147, 147, 226, 255, 73, 73, 146, 199, 0, 0, 0, 142, 0, 0, 0, 101, 0, 0, 0, 41, 0, 0, 0, 7, 201, 201, 251, 178, 198, 198, 252, 255, 106, 106, 201, 247, 10, 10, 20, 166, 0, 0, 0, 112, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 16, 0, 0, 0, 44, 0, 0, 0, 80, 0, 0, 0, 113, 11, 11, 11, 152, 19, 19, 19, 176, 18, 18, 18, 179, 10, 10, 10, 167, 0, 0, 0, 149, 0, 0, 0, 137, 0, 0, 0, 113, 0, 0, 0, 82, 0, 0, 0, 52, 172, 172, 215, 114, 202, 202, 252, 226, 185, 185, 245, 255, 119, 119, 209, 245, 47, 47, 94, 173, 0, 0, 0, 140, 0, 0, 0, 97, 0, 0, 0, 40, 0, 0, 0, 7, 200, 200, 250, 162, 204, 204, 255, 255, 121, 121, 214, 255, 28, 28, 56, 176, 0, 0, 0, 130, 0, 0, 0, 57, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 46, 0, 0, 0, 59, 0, 0, 0, 68, 0, 0, 0, 68, 77, 77, 96, 85, 126, 126, 158, 103, 159, 159, 199, 123, 187, 187, 234, 173, 202, 202, 253, 241, 185, 185, 245, 255, 140, 140, 223, 255, 79, 79, 158, 205, 11, 11, 22, 148, 0, 0, 0, 126, 0, 0, 0, 80, 0, 0, 0, 32, 0, 0, 0, 6, 200, 200, 250, 162, 204, 204, 255, 255, 140, 140, 223, 255, 51, 51, 102, 193, 0, 0, 0, 140, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 10, 190, 190, 243, 180, 179, 179, 242, 255, 172, 172, 239, 255, 147, 147, 226, 255, 112, 112, 190, 218, 63, 63, 126, 181, 22, 22, 44, 149, 0, 0, 0, 132, 0, 0, 0, 102, 0, 0, 0, 55, 0, 0, 0, 19, 163, 163, 204, 20, 201, 201, 251, 194, 198, 198, 252, 255, 140, 140, 223, 255, 51, 51, 102, 192, 0, 0, 0, 145, 0, 0, 0, 84, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 58, 58, 115, 113, 36, 36, 72, 136, 0, 0, 0, 122, 0, 0, 0, 122, 0, 0, 0, 112, 0, 0, 0, 88, 0, 0, 0, 59, 0, 0, 0, 30, 0, 0, 0, 8, 195, 195, 244, 67, 202, 202, 253, 225, 198, 198, 252, 255, 119, 119, 208, 246, 51, 51, 102, 193, 0, 0, 0, 144, 0, 0, 0, 86, 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 49, 0, 0, 0, 34, 0, 0, 0, 20, 0, 0, 0, 8, 186, 186, 233, 35, 201, 201, 251, 178, 204, 204, 255, 255, 172, 172, 239, 255, 99, 99, 187, 231, 28, 28, 56, 174, 0, 0, 0, 136, 0, 0, 0, 82, 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 2, 192, 192, 240, 17, 197, 197, 246, 83, 198, 198, 248, 180, 204, 204, 255, 255, 191, 191, 249, 255, 132, 132, 215, 246, 65, 65, 130, 200, 0, 0, 0, 150, 0, 0, 0, 118, 0, 0, 0, 67, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 197, 246, 83, 195, 195, 244, 134, 194, 194, 243, 167, 197, 197, 246, 198, 204, 204, 255, 255, 204, 204, 255, 255, 172, 172, 239, 255, 132, 132, 215, 246, 72, 72, 143, 204, 20, 20, 40, 163, 0, 0, 0, 134, 0, 0, 0, 93, 0, 0, 0, 45, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 192, 240, 119, 179, 179, 242, 255, 172, 172, 239, 255, 153, 153, 230, 255, 127, 127, 202, 230, 85, 85, 159, 209, 53, 53, 106, 184, 11, 11, 22, 150, 0, 0, 0, 132, 0, 0, 0, 100, 0, 0, 0, 59, 0, 0, 0, 25, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 58, 0, 0, 0, 105, 0, 0, 0, 125, 0, 0, 0, 128, 0, 0, 0, 122, 0, 0, 0, 106, 0, 0, 0, 81, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 40, 0, 0, 0, 47, 0, 0, 0, 45, 0, 0, 0, 38, 0, 0, 0, 28, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoMessageError(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 5, 4, 29, 247, 14, 13, 83, 246, 25, 25, 131, 247, 39, 39, 172, 249, 53, 53, 207, 252, 63, 63, 233, 254, 70, 70, 250, 254, 68, 68, 250, 252, 59, 59, 233, 249, 47, 47, 207, 246, 34, 34, 172, 244, 22, 22, 131, 246, 12, 11, 83, 250, 4, 3, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 2, 1, 6, 247, 11, 10, 82, 246, 27, 27, 154, 251, 49, 49, 222, 255, 69, 69, 255, 255, 81, 81, 255, 255, 91, 91, 255, 255, 99, 99, 255, 255, 104, 104, 255, 255, 104, 104, 255, 255, 102, 102, 255, 255, 96, 96, 255, 255, 87, 87, 255, 255, 77, 77, 255, 255, 67, 67, 255, 255, 56, 56, 255, 245, 38, 38, 226, 229, 20, 20, 164, 222, 8, 7, 90, 166, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 11, 10, 89, 248, 28, 28, 176, 255, 56, 56, 255, 255, 71, 71, 255, 255, 86, 86, 255, 255, 101, 101, 255, 255, 113, 113, 255, 255, 123, 123, 255, 255, 131, 131, 255, 255, 134, 134, 255, 255, 134, 134, 255, 255, 130, 130, 255, 255, 122, 122, 255, 255, 113, 113, 255, 255, 102, 102, 255, 255, 90, 90, 255, 255, 79, 79, 255, 255, 67, 67, 255, 255, 55, 55, 255, 250, 43, 43, 255, 226, 20, 20, 189, 208, 7, 7, 104, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 6, 5, 54, 247, 21, 21, 154, 255, 49, 49, 253, 255, 66, 66, 255, 255, 83, 83, 255, 255, 100, 100, 255, 255, 115, 115, 255, 255, 128, 128, 255, 255, 139, 139, 255, 255, 147, 147, 255, 255, 152, 152, 255, 255, 154, 154, 255, 255, 152, 152, 255, 255, 146, 146, 255, 255, 138, 138, 255, 255, 129, 129, 255, 255, 118, 118, 255, 255, 107, 107, 255, 255, 96, 96, 255, 255, 85, 85, 255, 255, 73, 73, 255, 255, 61, 61, 255, 254, 48, 48, 255, 241, 37, 37, 254, 208, 14, 14, 176, 177, 4, 3, 74, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 10, 9, 93, 249, 30, 30, 203, 255, 54, 54, 255, 255, 72, 72, 255, 255, 90, 90, 255, 255, 107, 107, 255, 255, 122, 122, 255, 255, 135, 135, 255, 255, 145, 145, 255, 255, 153, 153, 255, 255, 158, 158, 255, 255, 160, 160, 255, 255, 159, 159, 255, 255, 156, 156, 255, 255, 150, 150, 255, 255, 143, 143, 255, 255, 134, 134, 255, 255, 125, 125, 255, 255, 115, 115, 255, 255, 106, 106, 255, 255, 96, 96, 255, 255, 85, 85, 255, 255, 74, 74, 255, 255, 63, 63, 255, 254, 50, 50, 255, 240, 39, 39, 255, 213, 20, 20, 221, 177, 5, 5, 125, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 13, 12, 116, 252, 36, 36, 235, 255, 56, 56, 255, 255, 74, 74, 255, 255, 92, 92, 255, 255, 109, 109, 255, 255, 123, 123, 255, 255, 135, 135, 255, 255, 144, 144, 255, 255, 150, 150, 255, 255, 154, 154, 255, 255, 155, 155, 255, 255, 154, 154, 255, 255, 151, 151, 255, 255, 146, 146, 255, 255, 141, 141, 255, 255, 135, 135, 255, 255, 128, 128, 255, 255, 122, 122, 255, 255, 115, 115, 255, 255, 107, 107, 255, 255, 99, 99, 255, 255, 91, 91, 255, 255, 81, 81, 255, 255, 72, 72, 255, 255, 61, 61, 255, 251, 50, 50, 255, 238, 39, 39, 255, 220, 25, 25, 244, 174, 7, 7, 156, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 13, 12, 122, 253, 38, 38, 250, 255, 55, 55, 255, 255, 73, 73, 255, 255, 90, 90, 255, 255, 106, 106, 255, 255, 119, 119, 255, 255, 130, 130, 255, 255, 137, 137, 255, 255, 142, 142, 255, 255, 144, 144, 255, 255, 143, 143, 255, 255, 140, 140, 255, 255, 135, 135, 255, 255, 129, 129, 255, 255, 123, 123, 255, 255, 119, 119, 255, 255, 115, 115, 255, 255, 112, 112, 255, 255, 110, 110, 255, 255, 106, 106, 255, 255, 102, 102, 255, 255, 96, 96, 255, 255, 90, 90, 255, 255, 83, 83, 255, 255, 75, 75, 255, 255, 66, 66, 255, 255, 57, 57, 255, 246, 47, 47, 255, 232, 37, 37, 255, 220, 26, 26, 253, 165, 7, 6, 169, 0, 0, 0, 43, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 11, 10, 112, 250, 35, 35, 248, 255, 52, 52, 255, 255, 69, 69, 255, 255, 85, 85, 255, 255, 99, 99, 255, 255, 111, 111, 255, 255, 121, 121, 255, 255, 127, 127, 255, 255, 131, 131, 255, 255, 131, 131, 255, 255, 128, 128, 255, 255, 121, 121, 255, 255, 113, 113, 255, 255, 104, 104, 255, 255, 96, 96, 255, 255, 90, 90, 255, 255, 87, 87, 255, 255, 87, 87, 255, 255, 88, 88, 255, 255, 90, 90, 255, 255, 91, 91, 255, 255, 91, 91, 255, 255, 89, 89, 255, 255, 85, 85, 255, 255, 79, 79, 255, 255, 73, 73, 255, 255, 66, 66, 255, 255, 59, 59, 255, 255, 51, 51, 255, 238, 42, 42, 255, 226, 33, 33, 255, 214, 23, 23, 252, 151, 5, 5, 168, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 8, 7, 86, 245, 29, 29, 230, 255, 47, 47, 255, 255, 63, 63, 255, 255, 77, 77, 255, 255, 90, 90, 255, 255, 101, 101, 255, 255, 110, 110, 255, 255, 115, 115, 255, 255, 118, 118, 255, 255, 116, 116, 255, 255, 111, 111, 255, 255, 102, 102, 255, 255, 91, 91, 255, 255, 80, 80, 255, 255, 69, 69, 255, 255, 61, 61, 255, 255, 56, 56, 255, 255, 55, 55, 255, 255, 56, 56, 255, 255, 59, 59, 255, 255, 64, 64, 255, 255, 70, 70, 255, 255, 74, 74, 255, 255, 76, 76, 255, 255, 76, 76, 255, 255, 73, 73, 255, 255, 69, 69, 255, 255, 63, 63, 255, 255, 57, 57, 255, 255, 51, 51, 255, 245, 45, 45, 255, 231, 37, 37, 255, 219, 29, 29, 255, 198, 18, 18, 247, 125, 3, 3, 154, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 4, 3, 44, 240, 21, 21, 195, 252, 40, 40, 255, 255, 55, 55, 255, 255, 68, 68, 255, 255, 80, 80, 255, 255, 90, 90, 255, 255, 98, 98, 255, 255, 103, 103, 255, 255, 105, 105, 255, 245, 101, 101, 255, 255, 95, 95, 255, 255, 85, 85, 255, 255, 72, 72, 255, 255, 59, 59, 255, 255, 48, 48, 255, 255, 39, 39, 255, 255, 33, 33, 255, 255, 29, 29, 255, 255, 29, 29, 255, 255, 30, 30, 255, 255, 34, 34, 255, 255, 40, 40, 255, 255, 47, 47, 255, 255, 54, 54, 255, 255, 60, 60, 255, 255, 63, 63, 255, 245, 66, 66, 255, 255, 62, 62, 255, 255, 58, 58, 255, 255, 54, 54, 255, 255, 49, 49, 255, 248, 44, 44, 255, 235, 38, 38, 255, 222, 32, 32, 255, 211, 25, 25, 255, 175, 12, 12, 235, 79, 1, 1, 126, 0, 0, 0, 42, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 12, 12, 143, 242, 34, 34, 255, 255, 47, 47, 255, 255, 59, 59, 255, 255, 70, 70, 255, 255, 78, 78, 255, 255, 85, 85, 255, 255, 90, 90, 255, 255, 92, 92, 255, 158, 97, 97, 255, 134, 103, 103, 255, 246, 73, 73, 255, 255, 57, 57, 255, 255, 44, 44, 255, 255, 33, 33, 255, 255, 25, 25, 255, 255, 19, 19, 255, 250, 15, 15, 255, 247, 13, 13, 255, 247, 13, 13, 255, 247, 14, 14, 255, 250, 17, 17, 255, 254, 21, 21, 255, 255, 27, 27, 255, 255, 34, 34, 255, 255, 42, 42, 255, 194, 66, 66, 255, 111, 100, 100, 255, 227, 64, 64, 255, 255, 52, 52, 255, 255, 49, 49, 255, 255, 45, 45, 255, 248, 41, 41, 255, 237, 36, 36, 255, 225, 32, 32, 255, 213, 27, 27, 255, 204, 21, 21, 255, 142, 5, 5, 213, 0, 0, 0, 89, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 6, 5, 75, 236, 25, 25, 240, 246, 38, 38, 255, 255, 49, 49, 255, 255, 59, 59, 255, 255, 67, 67, 255, 255, 73, 73, 255, 255, 78, 78, 255, 255, 80, 80, 255, 165, 99, 99, 255, 144, 144, 144, 255, 150, 150, 150, 255, 150, 113, 113, 255, 247, 39, 39, 255, 255, 24, 24, 255, 250, 16, 16, 255, 244, 11, 11, 255, 241, 8, 8, 255, 238, 6, 6, 255, 237, 5, 5, 255, 236, 5, 5, 255, 237, 5, 5, 255, 237, 7, 7, 255, 240, 10, 10, 255, 244, 14, 14, 255, 248, 19, 19, 255, 194, 53, 53, 255, 111, 111, 111, 255, 135, 135, 135, 255, 131, 120, 120, 255, 229, 59, 59, 255, 255, 43, 43, 255, 255, 40, 40, 255, 247, 37, 37, 255, 237, 33, 33, 255, 225, 30, 30, 255, 214, 26, 26, 255, 204, 22, 22, 255, 189, 14, 14, 252, 92, 1, 1, 176, 0, 0, 0, 70, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 13, 13, 162, 235, 30, 30, 255, 247, 40, 40, 255, 255, 49, 49, 255, 255, 56, 56, 255, 255, 62, 62, 255, 255, 66, 66, 255, 255, 69, 69, 255, 169, 100, 100, 255, 160, 160, 160, 255, 217, 217, 217, 255, 219, 219, 219, 255, 171, 171, 171, 255, 156, 115, 115, 255, 235, 18, 18, 255, 239, 7, 7, 255, 236, 4, 4, 255, 233, 3, 3, 255, 232, 2, 2, 255, 231, 1, 1, 255, 231, 1, 1, 255, 230, 2, 2, 255, 231, 2, 2, 255, 231, 4, 4, 255, 233, 6, 6, 255, 184, 43, 43, 255, 116, 116, 116, 255, 158, 158, 158, 255, 201, 201, 201, 255, 170, 170, 170, 255, 146, 135, 135, 255, 231, 54, 54, 255, 251, 35, 35, 255, 244, 32, 32, 255, 235, 29, 29, 255, 225, 27, 27, 255, 215, 24, 24, 255, 203, 21, 21, 255, 195, 17, 17, 255, 142, 6, 6, 231, 0, 0, 0, 115, 0, 0, 0, 47, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 233, 5, 4, 66, 227, 22, 22, 245, 236, 32, 32, 255, 247, 40, 40, 255, 255, 46, 46, 255, 255, 51, 51, 255, 255, 55, 55, 255, 255, 58, 58, 255, 177, 104, 104, 255, 162, 162, 162, 255, 221, 221, 221, 255, 248, 248, 248, 255, 249, 249, 249, 255, 228, 228, 228, 255, 175, 175, 175, 255, 156, 115, 115, 255, 225, 10, 10, 255, 230, 1, 1, 255, 229, 1, 1, 255, 229, 0, 0, 255, 227, 0, 0, 255, 227, 0, 0, 255, 227, 0, 0, 255, 226, 0, 0, 255, 227, 1, 1, 255, 178, 39, 39, 255, 118, 118, 118, 255, 161, 161, 161, 255, 225, 225, 225, 255, 244, 244, 244, 255, 229, 229, 229, 255, 182, 182, 182, 255, 158, 147, 147, 255, 228, 52, 52, 255, 240, 28, 28, 255, 233, 26, 26, 255, 223, 23, 23, 255, 214, 22, 22, 255, 202, 20, 20, 255, 194, 17, 17, 255, 183, 12, 12, 254, 74, 1, 1, 186, 0, 0, 0, 82, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 226, 9, 9, 137, 226, 24, 24, 255, 233, 32, 32, 255, 244, 37, 37, 255, 255, 42, 42, 255, 255, 45, 45, 255, 255, 48, 48, 255, 241, 62, 62, 255, 163, 152, 152, 255, 185, 185, 185, 255, 229, 229, 229, 255, 250, 250, 250, 255, 253, 253, 253, 255, 250, 250, 250, 255, 228, 228, 228, 255, 176, 176, 176, 255, 158, 118, 118, 255, 220, 8, 8, 255, 226, 0, 0, 255, 226, 1, 0, 255, 227, 0, 0, 255, 226, 1, 0, 255, 226, 1, 0, 255, 224, 0, 0, 255, 177, 39, 39, 255, 123, 123, 123, 255, 162, 162, 162, 255, 226, 226, 226, 255, 249, 249, 249, 255, 253, 253, 253, 255, 247, 247, 247, 255, 224, 224, 224, 255, 193, 193, 193, 255, 206, 114, 114, 255, 235, 24, 24, 255, 228, 22, 22, 255, 221, 20, 20, 255, 211, 19, 19, 255, 202, 18, 18, 255, 192, 16, 16, 255, 185, 14, 14, 255, 119, 3, 3, 229, 0, 0, 0, 123, 0, 0, 0, 50, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 232, 1, 1, 12, 220, 14, 14, 205, 224, 25, 25, 255, 231, 30, 30, 255, 241, 34, 34, 255, 249, 37, 37, 255, 255, 39, 39, 255, 255, 41, 41, 255, 255, 42, 42, 255, 240, 65, 65, 255, 190, 178, 178, 255, 212, 212, 212, 255, 239, 239, 239, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 229, 229, 229, 255, 177, 177, 177, 255, 164, 124, 124, 255, 219, 9, 8, 255, 224, 0, 0, 255, 224, 0, 0, 255, 223, 1, 0, 255, 222, 1, 0, 255, 178, 40, 40, 255, 132, 132, 132, 255, 164, 164, 164, 255, 226, 226, 226, 255, 250, 250, 250, 255, 253, 253, 253, 255, 252, 252, 252, 255, 250, 250, 250, 255, 255, 255, 255, 255, 237, 159, 159, 255, 232, 21, 21, 255, 229, 20, 20, 255, 224, 19, 19, 255, 218, 17, 17, 255, 210, 16, 16, 255, 200, 15, 15, 255, 190, 15, 15, 255, 183, 13, 13, 255, 154, 7, 7, 248, 15, 0, 0, 166, 0, 0, 0, 80, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 0, 0, 0, 226, 4, 3, 66, 215, 18, 18, 255, 220, 24, 24, 255, 229, 28, 28, 255, 236, 30, 30, 255, 244, 32, 32, 255, 250, 34, 34, 255, 255, 35, 35, 255, 255, 35, 35, 255, 253, 31, 31, 255, 237, 56, 56, 255, 201, 190, 190, 255, 217, 217, 217, 255, 240, 240, 240, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 230, 230, 230, 255, 181, 181, 181, 255, 171, 132, 132, 255, 216, 9, 9, 255, 221, 1, 0, 255, 221, 1, 0, 255, 185, 50, 49, 255, 144, 144, 144, 255, 168, 168, 168, 255, 226, 226, 226, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 165, 165, 255, 226, 14, 14, 255, 226, 17, 17, 255, 226, 17, 17, 255, 220, 16, 16, 255, 215, 14, 14, 255, 207, 13, 13, 255, 198, 13, 13, 255, 188, 13, 13, 255, 181, 12, 12, 255, 177, 10, 10, 255, 64, 1, 1, 209, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 1, + 0, 0, 0, 0, 219, 7, 6, 115, 212, 18, 18, 255, 217, 22, 22, 255, 225, 25, 25, 255, 232, 26, 26, 255, 238, 27, 27, 255, 244, 29, 29, 255, 247, 30, 30, 255, 247, 28, 28, 255, 245, 24, 24, 255, 238, 17, 17, 255, 224, 45, 45, 255, 203, 192, 192, 255, 218, 218, 218, 255, 241, 241, 241, 255, 251, 251, 251, 255, 254, 254, 254, 255, 251, 251, 251, 255, 232, 232, 232, 255, 185, 185, 185, 255, 177, 138, 138, 255, 214, 10, 10, 255, 193, 58, 58, 255, 158, 158, 158, 255, 174, 174, 174, 255, 230, 230, 230, 255, 251, 251, 251, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 162, 162, 255, 218, 7, 7, 255, 220, 11, 11, 255, 222, 13, 13, 255, 219, 14, 14, 255, 217, 13, 13, 255, 210, 12, 12, 255, 203, 11, 11, 255, 195, 11, 11, 255, 186, 11, 11, 255, 178, 11, 11, 255, 174, 10, 10, 255, 95, 2, 2, 232, 0, 0, 0, 140, 0, 0, 0, 58, 0, 0, 0, 8, + 0, 0, 0, 0, 214, 8, 8, 158, 209, 17, 17, 255, 214, 20, 20, 255, 221, 22, 22, 255, 227, 23, 23, 255, 232, 23, 23, 255, 237, 24, 24, 255, 241, 25, 25, 255, 240, 23, 23, 255, 237, 19, 19, 255, 231, 13, 13, 255, 226, 7, 7, 255, 217, 39, 39, 255, 204, 193, 193, 255, 219, 219, 219, 255, 241, 241, 241, 255, 251, 251, 251, 255, 254, 254, 254, 255, 251, 251, 251, 255, 239, 239, 239, 255, 212, 212, 212, 255, 189, 165, 165, 255, 184, 184, 184, 255, 209, 209, 209, 255, 238, 238, 238, 255, 251, 251, 251, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 161, 161, 255, 212, 3, 3, 255, 213, 5, 5, 255, 215, 8, 8, 255, 217, 11, 11, 255, 215, 12, 12, 255, 212, 11, 11, 255, 206, 10, 10, 255, 201, 9, 9, 255, 194, 9, 9, 255, 185, 9, 9, 255, 176, 9, 9, 255, 171, 9, 9, 255, 118, 3, 3, 244, 0, 0, 0, 166, 0, 0, 0, 82, 0, 0, 0, 20, + 0, 0, 0, 0, 207, 10, 10, 194, 205, 16, 16, 255, 209, 18, 18, 255, 216, 19, 19, 255, 221, 19, 19, 255, 227, 20, 20, 255, 232, 20, 20, 255, 234, 21, 21, 255, 234, 19, 19, 255, 230, 15, 15, 255, 226, 10, 10, 255, 221, 5, 5, 255, 219, 2, 2, 255, 211, 37, 37, 255, 206, 195, 195, 255, 219, 219, 219, 255, 242, 242, 242, 255, 252, 252, 252, 255, 253, 253, 253, 255, 252, 252, 252, 255, 247, 247, 247, 255, 241, 241, 241, 255, 240, 240, 240, 255, 247, 247, 247, 255, 252, 252, 252, 255, 253, 253, 253, 255, 252, 252, 252, 255, 254, 254, 254, 255, 255, 255, 255, 255, 238, 161, 161, 255, 208, 0, 0, 255, 208, 2, 2, 255, 211, 4, 4, 255, 211, 6, 6, 255, 212, 9, 9, 255, 211, 10, 10, 255, 208, 9, 9, 255, 204, 8, 8, 255, 197, 8, 8, 255, 191, 7, 7, 255, 182, 8, 8, 255, 174, 8, 8, 255, 168, 8, 8, 255, 137, 4, 4, 250, 0, 0, 0, 188, 0, 0, 0, 105, 0, 0, 0, 32, + 0, 0, 0, 0, 202, 10, 10, 223, 201, 15, 15, 255, 206, 16, 16, 255, 210, 16, 16, 255, 216, 16, 16, 255, 221, 16, 16, 255, 225, 17, 17, 255, 228, 17, 17, 255, 228, 16, 16, 255, 225, 12, 12, 255, 221, 8, 8, 255, 218, 4, 4, 255, 215, 1, 1, 255, 214, 0, 0, 255, 209, 36, 35, 255, 207, 196, 196, 255, 217, 217, 217, 255, 244, 244, 244, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 249, 249, 249, 255, 255, 255, 255, 255, 237, 161, 161, 255, 207, 0, 0, 255, 206, 0, 0, 255, 207, 1, 1, 255, 207, 3, 3, 255, 208, 5, 5, 255, 208, 7, 7, 255, 207, 8, 8, 255, 205, 8, 8, 255, 200, 7, 7, 255, 194, 6, 6, 255, 188, 6, 6, 255, 180, 6, 6, 255, 171, 7, 7, 255, 164, 7, 7, 255, 148, 5, 5, 253, 0, 0, 0, 202, 0, 0, 0, 120, 0, 0, 0, 39, + 0, 0, 0, 0, 197, 10, 10, 243, 196, 13, 13, 255, 200, 14, 14, 255, 206, 13, 13, 255, 211, 13, 13, 255, 217, 13, 13, 255, 220, 14, 14, 255, 223, 14, 14, 255, 222, 13, 13, 255, 221, 10, 10, 255, 218, 6, 6, 255, 215, 3, 3, 255, 212, 1, 1, 255, 211, 0, 0, 255, 211, 1, 0, 255, 207, 37, 36, 255, 205, 195, 195, 255, 227, 227, 227, 255, 249, 249, 249, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 250, 250, 250, 255, 243, 243, 243, 255, 230, 154, 154, 255, 205, 0, 0, 255, 205, 0, 0, 255, 203, 0, 0, 255, 204, 1, 1, 255, 204, 2, 2, 255, 205, 4, 4, 255, 205, 6, 6, 255, 204, 7, 7, 255, 201, 6, 6, 255, 197, 6, 6, 255, 192, 5, 5, 255, 185, 5, 5, 255, 177, 5, 5, 255, 168, 6, 6, 255, 162, 6, 6, 255, 156, 6, 6, 254, 0, 0, 0, 211, 0, 0, 0, 129, 0, 0, 0, 43, + 0, 0, 0, 0, 191, 10, 10, 254, 192, 11, 11, 255, 197, 12, 12, 255, 201, 11, 11, 255, 205, 11, 11, 255, 211, 11, 11, 255, 214, 11, 11, 255, 218, 12, 12, 255, 218, 11, 11, 255, 216, 8, 8, 255, 214, 5, 5, 255, 211, 3, 3, 255, 210, 1, 1, 255, 209, 1, 0, 255, 209, 0, 0, 255, 209, 1, 0, 255, 205, 37, 36, 255, 207, 196, 196, 255, 244, 244, 244, 255, 253, 253, 253, 255, 253, 253, 253, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 253, 253, 253, 255, 246, 246, 246, 255, 216, 141, 141, 255, 203, 1, 0, 255, 203, 0, 0, 255, 203, 1, 0, 255, 202, 1, 0, 255, 200, 1, 1, 255, 201, 2, 2, 255, 201, 4, 4, 255, 201, 5, 5, 255, 200, 5, 5, 255, 197, 5, 5, 255, 193, 5, 5, 255, 188, 4, 4, 255, 181, 4, 4, 255, 173, 4, 4, 255, 166, 5, 5, 255, 159, 5, 5, 255, 157, 5, 5, 255, 0, 0, 0, 216, 0, 0, 0, 134, 0, 0, 0, 46, + 0, 0, 0, 0, 189, 9, 9, 243, 189, 10, 10, 255, 191, 10, 10, 255, 197, 9, 9, 255, 201, 9, 9, 255, 205, 9, 9, 255, 210, 9, 9, 255, 213, 10, 10, 255, 213, 9, 9, 255, 213, 7, 7, 255, 211, 5, 5, 255, 209, 3, 3, 255, 207, 1, 1, 255, 206, 0, 0, 255, 206, 0, 0, 255, 206, 1, 0, 255, 194, 67, 67, 255, 198, 198, 198, 255, 243, 243, 243, 255, 253, 253, 253, 255, 253, 253, 253, 255, 254, 254, 254, 255, 254, 254, 254, 255, 253, 253, 253, 255, 253, 253, 253, 255, 245, 245, 245, 255, 212, 176, 176, 255, 201, 12, 12, 255, 201, 0, 0, 255, 200, 0, 0, 255, 199, 0, 0, 255, 198, 1, 1, 255, 199, 2, 2, 255, 200, 3, 3, 255, 199, 4, 4, 255, 197, 5, 5, 255, 194, 4, 4, 255, 189, 4, 4, 255, 184, 3, 3, 255, 177, 3, 3, 255, 170, 3, 3, 255, 162, 4, 4, 255, 155, 5, 5, 255, 150, 5, 5, 255, 0, 0, 0, 219, 0, 0, 0, 137, 0, 0, 0, 47, + 0, 0, 0, 0, 187, 7, 7, 223, 184, 9, 9, 255, 186, 8, 8, 255, 191, 8, 8, 255, 196, 7, 7, 255, 201, 7, 7, 255, 204, 7, 7, 255, 208, 8, 8, 255, 209, 8, 8, 255, 209, 7, 7, 255, 208, 5, 5, 255, 207, 3, 3, 255, 205, 1, 1, 255, 203, 0, 0, 255, 205, 0, 0, 255, 179, 54, 54, 255, 169, 169, 169, 255, 214, 214, 214, 255, 248, 248, 248, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 249, 249, 249, 255, 223, 223, 223, 255, 191, 156, 156, 255, 196, 11, 10, 255, 198, 1, 0, 255, 196, 0, 0, 255, 196, 1, 1, 255, 197, 2, 2, 255, 195, 3, 3, 255, 195, 4, 4, 255, 193, 4, 4, 255, 190, 3, 3, 255, 185, 3, 3, 255, 180, 2, 2, 255, 173, 2, 2, 255, 166, 3, 3, 255, 158, 3, 3, 255, 153, 4, 4, 255, 139, 3, 3, 254, 0, 0, 0, 220, 0, 0, 0, 138, 0, 0, 0, 47, + 0, 0, 0, 0, 187, 5, 5, 194, 181, 8, 8, 255, 183, 7, 7, 255, 186, 6, 6, 255, 193, 6, 6, 255, 196, 6, 6, 255, 200, 6, 6, 255, 203, 6, 6, 255, 205, 6, 6, 255, 206, 6, 6, 255, 205, 4, 4, 255, 204, 3, 3, 255, 203, 1, 1, 255, 202, 0, 0, 255, 167, 43, 43, 255, 149, 149, 149, 255, 178, 178, 178, 255, 238, 238, 238, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 240, 240, 240, 255, 191, 191, 191, 255, 173, 139, 138, 255, 190, 9, 9, 255, 194, 0, 0, 255, 193, 1, 1, 255, 194, 2, 2, 255, 193, 3, 3, 255, 192, 3, 3, 255, 189, 3, 3, 255, 185, 3, 3, 255, 180, 2, 2, 255, 176, 2, 2, 255, 169, 2, 2, 255, 162, 2, 2, 255, 154, 3, 3, 255, 149, 4, 4, 255, 122, 2, 2, 253, 0, 0, 0, 219, 0, 0, 0, 137, 0, 0, 0, 47, + 0, 0, 0, 0, 189, 4, 4, 158, 177, 7, 7, 255, 179, 6, 6, 255, 182, 6, 6, 255, 187, 5, 5, 255, 191, 4, 4, 255, 195, 5, 5, 255, 198, 5, 5, 255, 201, 5, 5, 255, 203, 5, 5, 255, 202, 4, 4, 255, 202, 3, 3, 255, 201, 2, 2, 255, 163, 41, 41, 255, 134, 134, 134, 255, 169, 169, 169, 255, 230, 230, 230, 255, 251, 251, 251, 255, 253, 253, 253, 255, 253, 253, 253, 255, 252, 252, 252, 255, 254, 254, 254, 255, 253, 253, 253, 255, 251, 251, 251, 255, 252, 252, 252, 255, 253, 253, 253, 255, 251, 251, 251, 255, 232, 232, 232, 255, 183, 183, 183, 255, 161, 127, 127, 255, 187, 8, 8, 255, 191, 1, 1, 255, 191, 2, 2, 255, 190, 3, 3, 255, 188, 3, 3, 255, 185, 2, 2, 255, 181, 2, 2, 255, 177, 2, 2, 255, 172, 1, 1, 255, 165, 2, 2, 255, 157, 2, 2, 255, 150, 3, 3, 255, 146, 3, 3, 255, 103, 1, 1, 251, 0, 0, 0, 216, 0, 0, 0, 134, 0, 0, 0, 46, + 0, 0, 0, 0, 191, 3, 2, 115, 174, 6, 6, 255, 174, 6, 6, 255, 178, 5, 5, 255, 182, 4, 4, 255, 187, 4, 4, 255, 191, 4, 4, 255, 193, 4, 4, 255, 197, 4, 4, 255, 199, 4, 4, 255, 199, 4, 4, 255, 198, 3, 3, 255, 161, 39, 39, 255, 124, 124, 124, 255, 165, 165, 165, 255, 226, 226, 226, 255, 251, 251, 251, 255, 254, 254, 254, 255, 252, 252, 252, 255, 254, 254, 254, 255, 255, 255, 255, 255, 237, 178, 178, 255, 252, 242, 242, 255, 255, 255, 255, 255, 247, 247, 247, 255, 252, 252, 252, 255, 254, 254, 254, 255, 251, 251, 251, 255, 230, 230, 230, 255, 178, 178, 178, 255, 153, 120, 120, 255, 185, 9, 9, 255, 188, 2, 2, 255, 186, 2, 2, 255, 184, 2, 2, 255, 182, 2, 2, 255, 177, 1, 1, 255, 172, 1, 1, 255, 166, 1, 1, 255, 159, 1, 1, 255, 152, 2, 2, 255, 145, 2, 2, 255, 144, 3, 3, 255, 77, 1, 0, 248, 0, 0, 0, 211, 0, 0, 0, 129, 0, 0, 0, 43, + 0, 0, 0, 0, 194, 1, 1, 66, 170, 5, 5, 255, 170, 5, 5, 255, 172, 4, 4, 255, 177, 3, 3, 255, 182, 3, 3, 255, 185, 3, 3, 255, 189, 3, 3, 255, 193, 3, 3, 255, 195, 4, 4, 255, 195, 3, 3, 255, 160, 40, 40, 255, 119, 119, 119, 255, 162, 162, 162, 255, 226, 226, 226, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 161, 161, 255, 191, 0, 0, 255, 203, 49, 48, 255, 249, 239, 239, 255, 233, 233, 233, 255, 242, 242, 242, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 229, 229, 229, 255, 176, 176, 176, 255, 148, 115, 115, 255, 181, 10, 10, 255, 183, 2, 2, 255, 180, 2, 2, 255, 176, 1, 1, 255, 172, 1, 1, 255, 168, 1, 1, 255, 162, 1, 1, 255, 156, 1, 1, 255, 148, 2, 2, 255, 142, 2, 2, 255, 141, 3, 3, 255, 47, 1, 0, 243, 0, 0, 0, 202, 0, 0, 0, 120, 0, 0, 0, 39, + 0, 0, 0, 0, 197, 1, 0, 12, 170, 4, 4, 211, 166, 5, 5, 255, 169, 4, 4, 255, 173, 3, 3, 255, 176, 2, 2, 255, 180, 2, 2, 255, 184, 2, 2, 255, 187, 2, 2, 255, 190, 3, 3, 255, 158, 41, 41, 255, 119, 119, 119, 255, 162, 162, 162, 255, 226, 226, 226, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 161, 161, 255, 189, 0, 0, 255, 189, 0, 0, 255, 188, 0, 0, 255, 197, 45, 45, 255, 223, 214, 214, 255, 224, 224, 224, 255, 241, 241, 241, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 229, 229, 229, 255, 176, 176, 176, 255, 148, 116, 116, 255, 176, 9, 9, 255, 176, 1, 1, 255, 171, 1, 1, 255, 167, 1, 1, 255, 163, 1, 1, 255, 156, 1, 1, 255, 150, 1, 1, 255, 142, 2, 2, 255, 139, 2, 2, 255, 120, 2, 2, 254, 9, 0, 0, 235, 0, 0, 0, 188, 0, 0, 0, 105, 0, 0, 0, 32, + 0, 0, 0, 0, 0, 0, 0, 0, 170, 2, 2, 146, 165, 4, 4, 255, 164, 4, 4, 255, 168, 3, 3, 255, 171, 2, 2, 255, 175, 2, 2, 255, 178, 2, 2, 255, 183, 2, 2, 255, 159, 45, 45, 255, 126, 126, 126, 255, 165, 165, 165, 255, 226, 226, 226, 255, 250, 250, 250, 255, 253, 253, 253, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 161, 161, 255, 187, 0, 0, 255, 187, 0, 0, 255, 186, 1, 0, 255, 185, 0, 0, 255, 186, 0, 0, 255, 192, 42, 42, 255, 214, 205, 205, 255, 221, 221, 221, 255, 241, 241, 241, 255, 251, 251, 251, 255, 253, 253, 253, 255, 250, 250, 250, 255, 230, 230, 230, 255, 182, 182, 182, 255, 157, 126, 126, 255, 169, 10, 10, 255, 168, 0, 0, 255, 162, 0, 0, 255, 158, 0, 0, 255, 151, 1, 1, 255, 144, 1, 1, 255, 139, 2, 2, 255, 137, 2, 2, 255, 85, 1, 1, 251, 0, 0, 0, 225, 0, 0, 0, 166, 0, 0, 0, 82, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 171, 2, 1, 72, 161, 4, 4, 247, 160, 3, 3, 255, 162, 3, 3, 255, 165, 2, 2, 255, 170, 1, 1, 255, 173, 1, 1, 255, 171, 18, 18, 255, 144, 144, 144, 255, 166, 166, 166, 255, 213, 213, 213, 255, 246, 246, 246, 255, 253, 253, 253, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 161, 161, 255, 184, 0, 0, 255, 183, 0, 0, 255, 183, 0, 0, 255, 182, 0, 0, 255, 182, 0, 0, 255, 181, 0, 0, 255, 181, 0, 0, 255, 186, 39, 39, 255, 208, 198, 198, 255, 219, 219, 219, 255, 241, 241, 241, 255, 251, 251, 251, 255, 253, 253, 253, 255, 247, 247, 247, 255, 225, 225, 225, 255, 194, 194, 194, 255, 175, 114, 114, 255, 161, 0, 0, 255, 158, 0, 0, 255, 152, 0, 0, 255, 146, 1, 1, 255, 139, 1, 1, 255, 135, 2, 2, 255, 131, 2, 2, 255, 44, 1, 0, 245, 0, 0, 0, 213, 0, 0, 0, 140, 0, 0, 0, 58, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 158, 2, 2, 175, 156, 3, 3, 255, 157, 3, 3, 255, 160, 2, 2, 255, 163, 1, 1, 255, 168, 1, 1, 255, 171, 1, 1, 255, 172, 65, 65, 255, 178, 178, 178, 255, 206, 206, 206, 255, 240, 240, 240, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 161, 161, 255, 182, 1, 1, 255, 182, 1, 1, 255, 181, 0, 0, 255, 180, 0, 0, 255, 180, 0, 0, 255, 180, 0, 0, 255, 179, 0, 0, 255, 179, 0, 0, 255, 178, 1, 1, 255, 182, 39, 39, 255, 203, 194, 194, 255, 220, 220, 220, 255, 243, 243, 243, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 198, 198, 255, 164, 14, 14, 255, 157, 0, 0, 255, 151, 0, 0, 255, 145, 0, 0, 255, 140, 1, 1, 255, 135, 1, 1, 255, 132, 2, 2, 255, 95, 1, 1, 252, 0, 0, 0, 235, 0, 0, 0, 193, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 1, 1, 89, 154, 3, 3, 245, 154, 3, 3, 255, 155, 2, 2, 255, 158, 1, 1, 255, 161, 1, 1, 255, 165, 1, 1, 255, 168, 1, 1, 255, 178, 73, 73, 255, 204, 204, 204, 255, 238, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 161, 161, 255, 179, 1, 1, 255, 179, 1, 1, 255, 179, 1, 1, 255, 178, 1, 1, 255, 178, 1, 1, 255, 177, 1, 1, 255, 177, 1, 1, 255, 177, 1, 1, 255, 176, 1, 1, 255, 176, 1, 1, 255, 174, 1, 1, 255, 179, 38, 38, 255, 208, 199, 199, 255, 241, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 210, 210, 255, 164, 16, 16, 255, 154, 0, 0, 255, 150, 0, 0, 255, 145, 0, 0, 255, 139, 0, 0, 255, 133, 1, 1, 255, 130, 1, 1, 255, 125, 2, 2, 255, 48, 0, 0, 247, 0, 0, 0, 221, 0, 0, 0, 162, 0, 0, 0, 80, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 145, 2, 2, 165, 151, 3, 3, 255, 150, 2, 2, 255, 151, 1, 1, 255, 155, 1, 1, 255, 158, 1, 1, 255, 161, 0, 0, 255, 164, 0, 0, 255, 182, 78, 78, 255, 246, 246, 246, 255, 255, 255, 255, 255, 224, 161, 161, 255, 174, 1, 1, 255, 174, 1, 1, 255, 174, 1, 1, 255, 175, 1, 1, 255, 174, 1, 1, 255, 174, 1, 1, 255, 173, 1, 1, 255, 174, 1, 1, 255, 173, 1, 1, 255, 173, 1, 1, 255, 171, 1, 1, 255, 170, 1, 1, 255, 169, 1, 1, 255, 175, 39, 39, 255, 242, 233, 233, 255, 255, 255, 255, 255, 238, 210, 210, 255, 162, 16, 16, 255, 153, 0, 0, 255, 148, 0, 0, 255, 143, 0, 0, 255, 138, 0, 0, 255, 132, 0, 0, 255, 128, 1, 1, 255, 128, 1, 1, 255, 83, 1, 1, 252, 0, 0, 0, 235, 0, 0, 0, 198, 0, 0, 0, 123, 0, 0, 0, 50, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 1, 0, 62, 144, 2, 2, 214, 146, 2, 2, 255, 146, 2, 2, 255, 148, 1, 1, 255, 151, 1, 1, 255, 155, 0, 0, 255, 158, 0, 0, 255, 161, 0, 0, 255, 197, 96, 96, 255, 216, 145, 145, 255, 167, 0, 0, 255, 169, 0, 0, 255, 168, 1, 1, 255, 170, 1, 1, 255, 170, 1, 1, 255, 170, 1, 1, 255, 169, 1, 1, 255, 171, 1, 1, 255, 169, 1, 1, 255, 168, 1, 1, 255, 168, 1, 1, 255, 166, 0, 0, 255, 165, 0, 0, 255, 164, 0, 0, 255, 161, 0, 0, 255, 177, 47, 47, 255, 225, 178, 178, 255, 160, 16, 16, 255, 151, 0, 0, 255, 146, 0, 0, 255, 141, 0, 0, 255, 136, 0, 0, 255, 132, 0, 0, 255, 126, 1, 1, 255, 125, 1, 1, 255, 105, 1, 1, 254, 29, 0, 0, 245, 0, 0, 0, 218, 0, 0, 0, 162, 0, 0, 0, 82, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 124, 1, 1, 117, 141, 2, 2, 241, 143, 2, 2, 255, 143, 1, 1, 255, 145, 1, 1, 255, 148, 0, 0, 255, 152, 0, 0, 255, 155, 0, 0, 255, 156, 0, 0, 255, 159, 0, 0, 255, 161, 0, 0, 255, 162, 0, 0, 255, 163, 0, 0, 255, 165, 0, 0, 255, 165, 0, 0, 255, 164, 0, 0, 255, 165, 0, 0, 255, 164, 0, 0, 255, 164, 0, 0, 255, 164, 0, 0, 255, 162, 0, 0, 255, 161, 0, 0, 255, 159, 0, 0, 255, 158, 0, 0, 255, 156, 0, 0, 255, 153, 0, 0, 255, 150, 0, 0, 255, 148, 0, 0, 255, 144, 0, 0, 255, 140, 0, 0, 255, 134, 0, 0, 255, 129, 0, 0, 255, 125, 0, 0, 255, 123, 1, 1, 255, 116, 1, 1, 255, 52, 0, 0, 249, 0, 0, 0, 230, 0, 0, 0, 188, 0, 0, 0, 115, 0, 0, 0, 47, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 121, 1, 1, 151, 141, 2, 2, 252, 139, 1, 1, 255, 140, 1, 1, 255, 142, 1, 1, 255, 145, 0, 0, 255, 148, 0, 0, 255, 150, 0, 0, 255, 152, 0, 0, 255, 155, 0, 0, 255, 156, 0, 0, 255, 158, 0, 0, 255, 158, 0, 0, 255, 159, 0, 0, 255, 159, 0, 0, 255, 160, 0, 0, 255, 160, 0, 0, 255, 159, 0, 0, 255, 159, 0, 0, 255, 157, 0, 0, 255, 156, 0, 0, 255, 153, 0, 0, 255, 152, 0, 0, 255, 150, 0, 0, 255, 147, 0, 0, 255, 145, 0, 0, 255, 141, 0, 0, 255, 137, 0, 0, 255, 133, 0, 0, 255, 127, 0, 0, 255, 123, 0, 0, 255, 122, 1, 1, 255, 121, 1, 1, 255, 65, 0, 0, 251, 0, 0, 0, 236, 0, 0, 0, 204, 0, 0, 0, 143, 0, 0, 0, 70, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 32, 115, 1, 1, 168, 138, 2, 2, 253, 137, 1, 1, 255, 137, 1, 1, 255, 139, 0, 0, 255, 141, 0, 0, 255, 143, 0, 0, 255, 146, 0, 0, 255, 148, 0, 0, 255, 150, 0, 0, 255, 150, 0, 0, 255, 152, 0, 0, 255, 153, 0, 0, 255, 153, 0, 0, 255, 154, 0, 0, 255, 153, 0, 0, 255, 153, 0, 0, 255, 152, 0, 0, 255, 150, 0, 0, 255, 150, 0, 0, 255, 147, 0, 0, 255, 146, 0, 0, 255, 144, 0, 0, 255, 141, 0, 0, 255, 138, 0, 0, 255, 135, 0, 0, 255, 131, 0, 0, 255, 126, 0, 0, 255, 122, 0, 0, 255, 120, 1, 1, 255, 121, 1, 1, 255, 70, 0, 0, 251, 0, 0, 0, 239, 0, 0, 0, 213, 0, 0, 0, 160, 0, 0, 0, 89, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 42, 107, 1, 1, 170, 133, 1, 1, 248, 134, 1, 1, 255, 134, 1, 1, 255, 135, 0, 0, 255, 137, 0, 0, 255, 139, 0, 0, 255, 142, 0, 0, 255, 144, 0, 0, 255, 144, 0, 0, 255, 145, 0, 0, 255, 146, 0, 0, 255, 146, 0, 0, 255, 147, 0, 0, 255, 147, 0, 0, 255, 147, 0, 0, 255, 145, 0, 0, 255, 145, 0, 0, 255, 143, 0, 0, 255, 142, 0, 0, 255, 139, 0, 0, 255, 136, 0, 0, 255, 133, 0, 0, 255, 130, 0, 0, 255, 126, 0, 0, 255, 123, 0, 0, 255, 120, 0, 0, 255, 119, 1, 1, 255, 114, 1, 1, 255, 66, 0, 0, 251, 0, 0, 0, 239, 0, 0, 0, 216, 0, 0, 0, 168, 0, 0, 0, 99, 0, 0, 0, 42, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 46, 92, 1, 1, 158, 120, 1, 1, 237, 131, 1, 1, 255, 131, 1, 1, 255, 130, 0, 0, 255, 133, 0, 0, 255, 133, 0, 0, 255, 136, 0, 0, 255, 137, 0, 0, 255, 138, 0, 0, 255, 140, 0, 0, 255, 140, 0, 0, 255, 140, 0, 0, 255, 140, 0, 0, 255, 139, 0, 0, 255, 139, 0, 0, 255, 138, 0, 0, 255, 135, 0, 0, 255, 134, 0, 0, 255, 132, 0, 0, 255, 129, 0, 0, 255, 127, 0, 0, 255, 124, 0, 0, 255, 120, 0, 0, 255, 119, 0, 0, 255, 119, 1, 1, 255, 102, 1, 1, 254, 54, 0, 0, 249, 0, 0, 0, 237, 0, 0, 0, 214, 0, 0, 0, 169, 0, 0, 0, 102, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 46, 64, 0, 0, 133, 102, 1, 1, 219, 129, 1, 1, 255, 128, 1, 1, 255, 127, 0, 0, 255, 128, 0, 0, 255, 129, 0, 0, 255, 131, 0, 0, 255, 131, 0, 0, 255, 132, 0, 0, 255, 132, 0, 0, 255, 132, 0, 0, 255, 133, 0, 0, 255, 133, 0, 0, 255, 131, 0, 0, 255, 130, 0, 0, 255, 128, 0, 0, 255, 127, 0, 0, 255, 125, 0, 0, 255, 122, 0, 0, 255, 120, 0, 0, 255, 118, 0, 0, 255, 117, 0, 0, 255, 118, 1, 1, 255, 81, 1, 1, 253, 33, 0, 0, 246, 0, 0, 0, 231, 0, 0, 0, 206, 0, 0, 0, 163, 0, 0, 0, 100, 0, 0, 0, 46, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 43, 0, 0, 0, 91, 73, 0, 0, 185, 104, 1, 1, 235, 127, 1, 1, 255, 125, 1, 1, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 125, 0, 0, 255, 124, 0, 0, 255, 124, 0, 0, 255, 122, 0, 0, 255, 121, 0, 0, 255, 121, 0, 0, 255, 119, 0, 0, 255, 117, 0, 0, 255, 117, 0, 0, 255, 118, 0, 0, 255, 91, 1, 1, 253, 52, 0, 0, 248, 0, 0, 0, 237, 0, 0, 0, 221, 0, 0, 0, 192, 0, 0, 0, 147, 0, 0, 0, 91, 0, 0, 0, 43, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 34, 0, 0, 0, 74, 7, 0, 0, 123, 63, 0, 0, 195, 92, 1, 1, 234, 113, 1, 1, 251, 122, 1, 1, 255, 121, 0, 0, 255, 121, 0, 0, 255, 120, 0, 0, 255, 119, 0, 0, 255, 119, 0, 0, 255, 119, 0, 0, 255, 119, 0, 0, 255, 117, 0, 0, 255, 118, 0, 0, 255, 117, 0, 0, 255, 116, 0, 0, 255, 107, 0, 0, 254, 81, 1, 1, 252, 47, 0, 0, 248, 4, 0, 0, 237, 0, 0, 0, 224, 0, 0, 0, 202, 0, 0, 0, 167, 0, 0, 0, 120, 0, 0, 0, 74, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 19, 0, 0, 0, 50, 0, 0, 0, 87, 0, 0, 0, 130, 25, 0, 0, 179, 56, 0, 0, 217, 77, 1, 1, 237, 93, 1, 1, 246, 105, 1, 1, 251, 112, 0, 0, 254, 117, 0, 0, 255, 117, 0, 0, 255, 111, 0, 0, 254, 102, 0, 0, 253, 89, 1, 1, 252, 71, 1, 1, 249, 48, 0, 0, 245, 18, 0, 0, 238, 0, 0, 0, 228, 0, 0, 0, 217, 0, 0, 0, 198, 0, 0, 0, 169, 0, 0, 0, 130, 0, 0, 0, 87, 0, 0, 0, 50, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 25, 0, 0, 0, 55, 0, 0, 0, 86, 0, 0, 0, 119, 0, 0, 0, 148, 0, 0, 0, 174, 0, 0, 0, 193, 0, 0, 0, 205, 0, 0, 0, 213, 0, 0, 0, 218, 0, 0, 0, 219, 0, 0, 0, 219, 0, 0, 0, 218, 0, 0, 0, 213, 0, 0, 0, 205, 0, 0, 0, 193, 0, 0, 0, 174, 0, 0, 0, 148, 0, 0, 0, 119, 0, 0, 0, 86, 0, 0, 0, 55, 0, 0, 0, 25, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 23, 0, 0, 0, 43, 0, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 110, 0, 0, 0, 124, 0, 0, 0, 132, 0, 0, 0, 136, 0, 0, 0, 138, 0, 0, 0, 138, 0, 0, 0, 136, 0, 0, 0, 132, 0, 0, 0, 124, 0, 0, 0, 110, 0, 0, 0, 90, 0, 0, 0, 65, 0, 0, 0, 43, 0, 0, 0, 23, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 24, 0, 0, 0, 34, 0, 0, 0, 41, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 46, 0, 0, 0, 44, 0, 0, 0, 41, 0, 0, 0, 34, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_DeviceCellPhone(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 16, 31, 31, 31, 65, 12, 12, 24, 68, 37, 37, 74, 22, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 239, 32, 32, 32, 255, 13, 13, 26, 255, 55, 55, 111, 242, 0, 0, 0, 34, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 115, 64, 96, 96, 96, 255, 32, 32, 32, 255, 38, 38, 48, 255, 81, 81, 124, 255, 16, 16, 32, 154, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 132, 68, 134, 134, 134, 255, 115, 115, 115, 255, 83, 83, 89, 255, 105, 105, 134, 255, 38, 38, 51, 191, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 132, 132, 68, 134, 134, 134, 255, 123, 123, 123, 255, 118, 118, 121, 255, 129, 129, 143, 255, 44, 44, 50, 194, 0, 0, 0, 57, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 68, 77, 77, 77, 255, 32, 32, 32, 255, 13, 13, 26, 255, 58, 58, 115, 255, 40, 40, 80, 204, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 68, 77, 77, 77, 255, 32, 32, 32, 255, 13, 13, 26, 255, 58, 58, 115, 255, 53, 53, 106, 216, 0, 0, 0, 78, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, 68, 77, 77, 77, 255, 32, 32, 32, 255, 13, 13, 26, 255, 58, 58, 115, 255, 53, 53, 105, 217, 0, 0, 0, 93, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 48, 76, 76, 76, 194, 86, 86, 86, 255, 32, 32, 32, 255, 13, 13, 26, 255, 56, 56, 99, 255, 62, 62, 96, 245, 43, 43, 43, 208, 46, 46, 46, 142, 49, 49, 49, 134, 49, 49, 49, 134, 49, 49, 49, 134, 45, 45, 45, 73, 48, 48, 48, 68, 46, 46, 46, 53, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 85, 239, 141, 141, 141, 255, 115, 115, 115, 255, 90, 90, 90, 255, 64, 64, 64, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 55, 55, 55, 255, 70, 70, 70, 255, 71, 71, 71, 255, 72, 72, 72, 255, 62, 62, 62, 255, 50, 50, 50, 242, 43, 43, 43, 113, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 64, 85, 85, 85, 255, 116, 116, 116, 255, 109, 109, 109, 255, 102, 102, 102, 255, 85, 85, 85, 255, 70, 70, 70, 255, 93, 93, 93, 255, 103, 103, 103, 255, 115, 115, 115, 255, 121, 121, 121, 255, 124, 124, 124, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 142, 142, 142, 255, 47, 47, 47, 241, 0, 0, 0, 79, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 136, 136, 136, 255, 220, 220, 220, 255, 218, 218, 218, 255, 217, 217, 217, 255, 215, 215, 215, 255, 93, 93, 93, 255, 110, 110, 110, 255, 115, 115, 115, 255, 121, 121, 121, 255, 124, 124, 124, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 148, 148, 148, 255, 154, 154, 154, 255, 58, 58, 58, 255, 0, 0, 0, 140, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 146, 146, 146, 255, 187, 187, 187, 255, 82, 82, 82, 255, 215, 215, 215, 255, 173, 173, 173, 255, 96, 96, 96, 255, 115, 115, 115, 255, 121, 121, 121, 255, 124, 124, 124, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 148, 148, 148, 255, 154, 154, 154, 255, 159, 159, 159, 255, 79, 79, 79, 255, 0, 0, 0, 164, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 176, 176, 176, 255, 196, 196, 196, 255, 102, 102, 102, 255, 213, 213, 213, 255, 171, 171, 171, 255, 99, 99, 99, 255, 121, 121, 121, 255, 125, 125, 125, 255, 129, 129, 129, 255, 135, 135, 135, 255, 139, 139, 139, 255, 144, 144, 144, 255, 148, 148, 148, 255, 154, 154, 154, 255, 159, 159, 159, 255, 163, 163, 163, 255, 80, 80, 80, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 175, 175, 175, 255, 215, 215, 215, 255, 213, 213, 213, 255, 211, 211, 211, 255, 170, 170, 170, 255, 121, 121, 121, 255, 126, 126, 126, 255, 115, 115, 115, 255, 100, 100, 100, 255, 100, 100, 100, 255, 133, 133, 133, 255, 141, 141, 141, 255, 99, 99, 99, 255, 97, 97, 97, 255, 84, 84, 84, 255, 168, 168, 168, 255, 81, 81, 81, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 174, 174, 174, 255, 213, 213, 213, 255, 211, 211, 211, 255, 209, 209, 209, 255, 169, 169, 169, 255, 126, 126, 126, 255, 143, 143, 143, 255, 114, 114, 114, 255, 89, 89, 89, 255, 65, 65, 65, 255, 130, 130, 130, 255, 120, 120, 120, 255, 81, 81, 81, 255, 99, 99, 99, 255, 96, 96, 96, 255, 174, 174, 174, 255, 82, 82, 82, 255, 17, 17, 17, 189, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 172, 172, 172, 255, 211, 211, 211, 255, 209, 209, 209, 255, 208, 208, 208, 255, 167, 167, 167, 255, 129, 129, 129, 255, 125, 125, 125, 255, 103, 121, 102, 255, 106, 142, 104, 255, 119, 153, 115, 255, 96, 155, 88, 255, 102, 167, 90, 255, 110, 172, 96, 255, 117, 177, 100, 255, 124, 181, 105, 255, 130, 130, 130, 255, 92, 92, 92, 255, 17, 17, 17, 194, 0, 0, 0, 54, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 171, 171, 171, 255, 209, 209, 209, 255, 208, 208, 208, 255, 206, 206, 206, 255, 166, 166, 166, 255, 135, 135, 135, 255, 60, 163, 59, 255, 100, 207, 88, 255, 123, 226, 97, 255, 123, 233, 82, 255, 122, 232, 79, 255, 131, 236, 83, 255, 95, 207, 54, 255, 74, 190, 37, 255, 84, 196, 43, 255, 93, 121, 83, 255, 119, 119, 119, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 169, 169, 169, 255, 208, 208, 208, 255, 206, 206, 206, 255, 204, 204, 204, 255, 165, 165, 165, 255, 141, 141, 141, 255, 89, 179, 81, 255, 174, 255, 144, 255, 155, 255, 107, 255, 150, 252, 99, 255, 143, 245, 92, 255, 133, 236, 83, 255, 74, 190, 37, 255, 84, 196, 43, 255, 93, 200, 47, 255, 98, 124, 85, 255, 121, 121, 121, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 168, 168, 168, 255, 206, 206, 206, 255, 204, 204, 204, 255, 202, 202, 202, 255, 164, 164, 164, 255, 144, 144, 144, 255, 90, 183, 75, 255, 155, 255, 107, 255, 150, 252, 99, 255, 143, 245, 92, 255, 137, 239, 86, 255, 104, 213, 60, 255, 84, 196, 43, 255, 93, 200, 47, 255, 102, 204, 51, 255, 82, 107, 69, 255, 123, 123, 123, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 167, 167, 167, 255, 204, 204, 204, 255, 202, 202, 202, 255, 201, 201, 201, 255, 162, 162, 162, 255, 149, 149, 149, 255, 94, 187, 73, 255, 150, 252, 99, 255, 143, 245, 92, 255, 137, 239, 86, 255, 125, 228, 75, 255, 84, 196, 43, 255, 95, 201, 48, 255, 102, 204, 51, 255, 104, 206, 53, 255, 66, 91, 53, 255, 126, 126, 126, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 68, 165, 165, 165, 255, 202, 202, 202, 255, 200, 200, 200, 255, 198, 198, 198, 255, 161, 161, 161, 255, 155, 155, 155, 255, 98, 189, 74, 255, 143, 245, 92, 255, 137, 239, 86, 255, 131, 233, 80, 255, 100, 207, 54, 255, 96, 201, 48, 255, 102, 204, 51, 255, 105, 207, 54, 255, 112, 214, 61, 255, 68, 93, 55, 255, 129, 129, 129, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 37, 164, 164, 164, 255, 200, 200, 200, 255, 198, 198, 198, 255, 197, 197, 197, 255, 160, 160, 160, 255, 160, 160, 160, 255, 103, 184, 78, 255, 137, 239, 86, 255, 131, 233, 80, 255, 117, 221, 68, 255, 96, 201, 48, 255, 102, 204, 51, 255, 106, 208, 55, 255, 113, 215, 62, 255, 120, 222, 69, 255, 69, 95, 57, 255, 131, 131, 131, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 144, 144, 144, 255, 198, 198, 198, 255, 197, 197, 197, 255, 195, 195, 195, 255, 158, 158, 158, 255, 164, 164, 164, 255, 105, 161, 84, 255, 131, 233, 80, 255, 125, 227, 74, 255, 107, 210, 57, 255, 102, 204, 51, 255, 106, 208, 55, 255, 113, 215, 62, 255, 120, 222, 69, 255, 129, 231, 78, 255, 72, 97, 59, 255, 133, 133, 133, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, 125, 255, 197, 197, 197, 255, 195, 195, 195, 255, 193, 193, 193, 255, 156, 156, 156, 255, 169, 169, 169, 255, 107, 161, 85, 255, 125, 227, 74, 255, 119, 221, 68, 255, 105, 207, 54, 255, 106, 208, 55, 255, 113, 215, 62, 255, 120, 222, 69, 255, 129, 231, 78, 255, 135, 237, 84, 255, 73, 99, 61, 255, 136, 136, 136, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 124, 124, 255, 195, 195, 195, 255, 193, 193, 193, 255, 191, 191, 191, 255, 155, 155, 155, 255, 151, 151, 151, 255, 109, 162, 85, 255, 118, 220, 67, 255, 113, 215, 62, 255, 107, 209, 56, 255, 113, 215, 62, 255, 120, 222, 69, 255, 129, 231, 78, 255, 135, 237, 84, 255, 143, 245, 92, 255, 75, 101, 63, 255, 136, 136, 136, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 123, 255, 193, 193, 193, 255, 191, 191, 191, 255, 190, 190, 190, 255, 154, 154, 154, 255, 147, 147, 147, 255, 111, 163, 86, 255, 112, 214, 61, 255, 105, 207, 54, 255, 109, 211, 58, 255, 120, 222, 69, 255, 129, 231, 78, 255, 136, 238, 85, 255, 137, 232, 89, 255, 126, 202, 87, 255, 70, 89, 61, 255, 136, 136, 137, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 255, 191, 191, 191, 255, 190, 190, 190, 255, 188, 188, 188, 255, 152, 152, 152, 255, 151, 151, 151, 255, 138, 189, 112, 255, 101, 190, 56, 255, 95, 171, 57, 255, 86, 137, 60, 255, 78, 117, 59, 255, 72, 97, 59, 255, 67, 74, 64, 255, 94, 94, 94, 255, 125, 125, 126, 255, 135, 135, 138, 255, 135, 135, 138, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 121, 255, 189, 189, 189, 255, 188, 188, 188, 255, 186, 186, 186, 255, 151, 151, 151, 255, 154, 154, 154, 255, 140, 140, 140, 255, 89, 89, 89, 255, 127, 127, 127, 255, 150, 150, 150, 255, 132, 132, 132, 255, 143, 143, 143, 255, 189, 189, 189, 255, 123, 123, 123, 255, 93, 93, 94, 255, 187, 187, 194, 255, 134, 134, 139, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, 120, 255, 188, 188, 188, 255, 186, 186, 186, 255, 184, 184, 184, 255, 150, 150, 150, 255, 159, 159, 159, 255, 152, 152, 152, 255, 79, 79, 79, 255, 51, 51, 51, 255, 130, 130, 130, 255, 119, 119, 119, 255, 51, 51, 51, 255, 121, 121, 122, 255, 96, 96, 96, 255, 51, 51, 51, 255, 176, 176, 184, 255, 134, 134, 141, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 255, 186, 186, 186, 255, 184, 184, 184, 255, 182, 182, 182, 255, 149, 149, 149, 255, 162, 162, 162, 255, 147, 147, 147, 255, 157, 157, 157, 255, 51, 51, 51, 255, 92, 92, 92, 255, 60, 60, 60, 255, 51, 51, 51, 255, 104, 104, 105, 255, 51, 51, 51, 255, 61, 61, 62, 255, 186, 186, 197, 255, 133, 133, 141, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 255, 184, 184, 184, 255, 182, 182, 182, 255, 181, 181, 181, 255, 147, 147, 147, 255, 165, 165, 165, 255, 129, 129, 129, 255, 51, 51, 51, 255, 51, 51, 51, 255, 157, 157, 157, 255, 93, 93, 94, 255, 125, 125, 127, 255, 197, 197, 205, 255, 114, 114, 117, 255, 134, 134, 141, 255, 195, 195, 209, 255, 133, 133, 142, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 117, 117, 255, 182, 182, 182, 255, 181, 181, 181, 255, 179, 179, 179, 255, 146, 146, 146, 255, 169, 169, 169, 255, 182, 182, 182, 255, 113, 113, 113, 255, 125, 125, 125, 255, 168, 168, 168, 255, 98, 98, 98, 255, 51, 51, 51, 255, 141, 141, 146, 255, 96, 96, 96, 255, 51, 51, 51, 255, 143, 143, 154, 255, 132, 132, 143, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, 120, 241, 181, 181, 181, 255, 179, 179, 179, 255, 177, 177, 177, 255, 145, 145, 145, 255, 173, 173, 173, 255, 144, 144, 144, 255, 104, 104, 104, 255, 51, 51, 51, 255, 102, 102, 103, 255, 102, 102, 102, 255, 51, 51, 51, 255, 134, 134, 141, 255, 64, 64, 64, 255, 51, 51, 51, 255, 153, 153, 167, 255, 132, 132, 145, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 197, 179, 179, 179, 255, 177, 177, 177, 255, 175, 175, 175, 255, 143, 143, 143, 255, 177, 177, 177, 255, 147, 147, 147, 255, 104, 104, 104, 255, 51, 51, 51, 255, 103, 103, 106, 255, 51, 51, 51, 255, 61, 61, 62, 255, 164, 164, 175, 255, 102, 102, 108, 255, 71, 71, 74, 255, 193, 193, 215, 255, 131, 131, 145, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 196, 177, 177, 177, 255, 175, 175, 175, 255, 173, 173, 173, 255, 142, 142, 142, 255, 179, 179, 179, 255, 157, 157, 158, 255, 83, 83, 84, 255, 82, 82, 84, 255, 165, 165, 173, 255, 72, 72, 73, 255, 92, 92, 96, 255, 156, 156, 167, 255, 102, 102, 102, 255, 51, 51, 51, 255, 141, 141, 158, 255, 131, 131, 146, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 196, 175, 175, 175, 255, 173, 173, 173, 255, 171, 171, 171, 255, 140, 140, 140, 255, 178, 178, 180, 255, 157, 157, 159, 255, 72, 72, 72, 255, 51, 51, 51, 255, 89, 89, 90, 255, 128, 128, 128, 255, 51, 51, 51, 255, 132, 132, 144, 255, 64, 64, 64, 255, 51, 51, 51, 255, 141, 141, 159, 255, 131, 131, 148, 255, 17, 17, 17, 194, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 196, 173, 173, 173, 255, 171, 171, 171, 255, 170, 170, 170, 255, 139, 139, 139, 255, 177, 177, 181, 255, 156, 156, 160, 255, 136, 136, 136, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 152, 152, 168, 255, 101, 101, 110, 255, 141, 141, 159, 255, 200, 200, 233, 255, 130, 130, 149, 255, 13, 13, 13, 188, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, 196, 171, 171, 171, 255, 170, 170, 170, 255, 168, 168, 168, 255, 159, 159, 159, 255, 155, 155, 161, 255, 134, 134, 140, 255, 51, 51, 51, 255, 71, 71, 74, 255, 173, 173, 189, 255, 122, 122, 132, 255, 112, 112, 121, 255, 168, 168, 187, 255, 93, 93, 95, 255, 51, 51, 51, 255, 139, 139, 161, 255, 129, 129, 149, 255, 0, 0, 0, 172, 0, 0, 0, 48, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 69, 196, 170, 170, 170, 255, 168, 168, 168, 255, 166, 166, 166, 255, 164, 164, 164, 255, 134, 134, 140, 255, 186, 186, 196, 255, 102, 102, 107, 255, 92, 92, 97, 255, 151, 151, 164, 255, 128, 128, 128, 255, 51, 51, 51, 255, 91, 91, 99, 255, 70, 70, 70, 255, 51, 51, 51, 255, 129, 129, 150, 255, 110, 110, 125, 255, 0, 0, 0, 167, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 166, 168, 168, 168, 255, 166, 166, 166, 255, 164, 164, 164, 255, 163, 163, 163, 255, 133, 133, 141, 255, 144, 144, 152, 255, 157, 157, 157, 255, 51, 51, 51, 255, 91, 91, 98, 255, 51, 51, 51, 255, 51, 51, 51, 255, 91, 91, 99, 255, 51, 51, 51, 255, 80, 80, 88, 255, 177, 177, 213, 255, 90, 90, 101, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 135, 166, 166, 166, 255, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 133, 133, 142, 255, 133, 133, 142, 255, 51, 51, 51, 255, 51, 51, 51, 255, 121, 121, 134, 255, 91, 91, 99, 255, 140, 140, 160, 255, 198, 198, 235, 255, 207, 207, 249, 255, 206, 206, 250, 255, 205, 205, 252, 255, 89, 89, 102, 255, 0, 0, 0, 167, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 164, 164, 164, 255, 163, 163, 163, 255, 161, 161, 161, 255, 159, 159, 159, 255, 133, 133, 143, 255, 173, 173, 190, 255, 132, 132, 145, 255, 181, 181, 205, 255, 210, 210, 243, 255, 210, 210, 245, 255, 208, 208, 247, 255, 207, 207, 249, 255, 206, 206, 250, 255, 205, 205, 252, 255, 204, 204, 254, 255, 86, 86, 98, 247, 0, 0, 0, 164, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 134, 134, 134, 134, 255, 161, 161, 161, 255, 159, 159, 159, 255, 157, 157, 157, 255, 132, 132, 144, 255, 213, 213, 239, 255, 211, 211, 241, 255, 210, 210, 243, 255, 210, 210, 245, 255, 208, 208, 247, 255, 207, 207, 249, 255, 206, 206, 250, 255, 205, 205, 252, 255, 156, 156, 191, 255, 108, 108, 128, 255, 26, 26, 26, 217, 0, 0, 0, 142, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 88, 99, 99, 99, 255, 152, 152, 152, 255, 157, 157, 157, 255, 155, 155, 155, 255, 101, 101, 110, 255, 211, 211, 241, 255, 210, 210, 243, 255, 209, 209, 245, 255, 208, 208, 247, 255, 188, 188, 224, 255, 148, 148, 175, 255, 109, 109, 126, 255, 54, 54, 56, 243, 26, 26, 26, 217, 9, 9, 9, 188, 0, 0, 0, 157, 0, 0, 0, 87, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 36, 36, 36, 137, 45, 45, 45, 237, 84, 84, 84, 255, 109, 109, 109, 255, 90, 90, 94, 255, 131, 131, 147, 255, 130, 130, 148, 255, 100, 100, 112, 255, 62, 62, 67, 239, 33, 33, 33, 224, 20, 20, 20, 204, 5, 5, 5, 180, 0, 0, 0, 164, 0, 0, 0, 136, 0, 0, 0, 88, 0, 0, 0, 46, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 79, 11, 11, 11, 149, 21, 21, 21, 194, 30, 30, 30, 215, 16, 16, 16, 198, 13, 13, 13, 188, 0, 0, 0, 172, 0, 0, 0, 161, 0, 0, 0, 133, 0, 0, 0, 103, 0, 0, 0, 69, 0, 0, 0, 37, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 22, 0, 0, 0, 46, 0, 0, 0, 76, 0, 0, 0, 97, 0, 0, 0, 70, 0, 0, 0, 52, 0, 0, 0, 28, 0, 0, 0, 18, 0, 0, 0, 13, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoMessageHelp(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 205, 241, 69, 193, 210, 243, 121, 201, 218, 246, 185, 208, 223, 248, 226, 210, 224, 248, 236, 211, 225, 248, 235, 210, 224, 248, 236, 209, 223, 248, 227, 202, 218, 246, 195, 193, 210, 243, 124, 188, 206, 242, 77, 181, 201, 239, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 204, 240, 58, 199, 215, 245, 168, 211, 225, 248, 235, 215, 226, 248, 252, 221, 231, 249, 254, 231, 238, 251, 255, 239, 244, 252, 255, 243, 246, 253, 255, 242, 246, 253, 255, 243, 246, 253, 255, 240, 244, 252, 255, 233, 239, 251, 255, 222, 231, 249, 254, 216, 227, 248, 252, 211, 224, 248, 240, 199, 215, 245, 171, 187, 205, 241, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 205, 239, 93, 208, 223, 248, 226, 214, 226, 248, 253, 228, 236, 250, 255, 242, 246, 253, 255, 251, 252, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 252, 253, 254, 255, 244, 247, 253, 255, 229, 236, 250, 255, 215, 226, 248, 253, 206, 219, 244, 234, 165, 181, 212, 105, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 201, 239, 12, 206, 221, 247, 218, 218, 228, 249, 254, 239, 244, 252, 255, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 255, 255, 241, 245, 253, 255, 218, 228, 249, 254, 204, 218, 243, 233, 136, 149, 176, 75, 0, 0, 0, 13, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 211, 244, 138, 212, 225, 248, 251, 238, 242, 252, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 240, 245, 252, 255, 211, 224, 247, 254, 177, 193, 223, 177, 0, 0, 0, 24, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 218, 246, 199, 224, 232, 250, 254, 250, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 254, 255, 227, 235, 250, 254, 193, 207, 234, 223, 0, 0, 0, 36, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 221, 248, 225, 233, 239, 251, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 255, 228, 255, 255, 255, 215, 255, 255, 255, 203, 254, 255, 255, 199, 249, 255, 255, 194, 245, 255, 255, 190, 240, 255, 255, 185, 235, 255, 255, 187, 235, 255, 255, 196, 238, 255, 255, 211, 245, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 241, 252, 255, 204, 218, 243, 245, 65, 71, 84, 65, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 220, 247, 223, 239, 243, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 197, 247, 255, 255, 194, 245, 255, 255, 190, 241, 255, 255, 184, 235, 255, 255, 178, 229, 255, 255, 173, 223, 255, 255, 168, 219, 255, 255, 165, 216, 255, 255, 163, 214, 255, 255, 162, 213, 255, 255, 161, 211, 255, 255, 159, 209, 255, 255, 155, 205, 255, 255, 169, 212, 255, 255, 231, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 247, 253, 255, 204, 217, 243, 247, 0, 0, 0, 53, 0, 0, 0, 23, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 217, 247, 205, 235, 240, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 249, 255, 255, 181, 231, 255, 255, 180, 230, 255, 255, 176, 226, 255, 255, 169, 219, 255, 255, 160, 211, 255, 255, 152, 202, 255, 255, 144, 194, 255, 255, 138, 188, 255, 255, 134, 185, 255, 255, 133, 183, 255, 255, 133, 184, 255, 255, 135, 186, 255, 255, 138, 188, 255, 255, 140, 190, 255, 255, 141, 191, 255, 255, 139, 190, 255, 255, 136, 186, 255, 255, 163, 203, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 243, 252, 255, 191, 205, 232, 234, 0, 0, 0, 57, 0, 0, 0, 23, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 211, 244, 144, 225, 233, 250, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 219, 255, 255, 165, 215, 255, 255, 162, 213, 255, 255, 156, 206, 255, 255, 146, 197, 255, 255, 136, 186, 255, 255, 138, 181, 255, 255, 158, 188, 248, 255, 175, 194, 234, 255, 181, 196, 227, 255, 181, 196, 224, 255, 180, 195, 224, 255, 179, 196, 228, 255, 170, 192, 238, 255, 142, 180, 253, 255, 117, 168, 255, 255, 121, 171, 255, 255, 124, 174, 255, 255, 124, 174, 255, 255, 122, 172, 255, 255, 124, 172, 255, 255, 213, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 236, 250, 255, 162, 176, 203, 203, 0, 0, 0, 54, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 200, 235, 52, 212, 224, 248, 253, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 255, 147, 198, 255, 255, 149, 199, 255, 255, 145, 196, 255, 255, 138, 188, 255, 255, 127, 177, 255, 255, 120, 167, 255, 255, 152, 179, 232, 255, 196, 202, 216, 255, 212, 212, 212, 255, 213, 213, 213, 255, 211, 211, 211, 255, 211, 211, 211, 255, 212, 212, 212, 255, 214, 214, 214, 255, 218, 218, 218, 255, 222, 223, 225, 255, 186, 203, 237, 255, 127, 167, 249, 255, 105, 155, 255, 255, 109, 159, 255, 255, 110, 161, 255, 255, 109, 159, 255, 255, 105, 155, 255, 255, 179, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 213, 225, 248, 254, 114, 125, 146, 151, 0, 0, 0, 47, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 219, 248, 227, 240, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 255, 255, 255, 134, 184, 255, 255, 134, 185, 255, 255, 131, 181, 255, 255, 123, 174, 255, 255, 112, 162, 255, 255, 107, 154, 246, 255, 158, 177, 213, 255, 206, 206, 206, 255, 237, 237, 237, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 250, 250, 255, 231, 231, 231, 255, 210, 218, 233, 255, 122, 161, 238, 255, 93, 143, 244, 255, 97, 148, 248, 255, 99, 149, 249, 255, 97, 147, 247, 255, 94, 144, 243, 255, 178, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 247, 253, 255, 200, 213, 239, 247, 0, 0, 0, 84, 0, 0, 0, 38, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 186, 204, 238, 99, 219, 229, 249, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 126, 174, 255, 255, 122, 172, 255, 255, 120, 170, 255, 255, 112, 163, 255, 255, 101, 152, 253, 255, 89, 140, 241, 255, 142, 164, 207, 255, 203, 203, 203, 255, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 233, 233, 255, 201, 210, 230, 255, 95, 140, 231, 255, 84, 135, 236, 255, 89, 139, 239, 255, 90, 140, 240, 255, 88, 138, 238, 255, 89, 138, 235, 255, 208, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 232, 249, 255, 135, 147, 171, 190, 0, 0, 0, 69, 0, 0, 0, 27, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 208, 222, 248, 243, 245, 248, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 138, 181, 255, 255, 111, 161, 255, 255, 110, 160, 255, 255, 104, 155, 255, 255, 95, 145, 246, 255, 83, 134, 235, 255, 105, 140, 210, 255, 190, 191, 192, 255, 245, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 219, 228, 247, 255, 196, 210, 238, 255, 207, 217, 237, 255, 242, 244, 246, 255, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 250, 250, 255, 229, 229, 229, 255, 146, 173, 225, 255, 73, 124, 225, 255, 79, 129, 230, 255, 82, 132, 232, 255, 82, 132, 232, 255, 81, 130, 230, 255, 102, 146, 232, 255, 241, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 250, 254, 255, 205, 219, 243, 252, 0, 0, 0, 102, 0, 0, 0, 49, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 205, 241, 77, 215, 227, 248, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 221, 255, 255, 102, 152, 252, 255, 102, 152, 253, 255, 99, 149, 249, 255, 91, 141, 242, 255, 80, 131, 232, 255, 72, 122, 221, 255, 146, 161, 193, 255, 228, 228, 228, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 247, 252, 255, 150, 176, 229, 255, 74, 119, 210, 255, 54, 104, 205, 255, 66, 113, 206, 255, 118, 149, 212, 255, 219, 224, 236, 255, 250, 250, 250, 255, 255, 255, 255, 255, 253, 253, 253, 255, 241, 241, 241, 255, 193, 204, 227, 255, 73, 121, 218, 255, 70, 121, 222, 255, 75, 125, 226, 255, 77, 127, 227, 255, 76, 126, 226, 255, 74, 124, 223, 255, 147, 178, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 217, 228, 248, 255, 116, 127, 147, 185, 0, 0, 0, 77, 0, 0, 0, 29, 0, 0, 0, 7, 0, 0, 0, 1, + 0, 0, 0, 0, 202, 217, 246, 216, 237, 242, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 156, 247, 255, 95, 145, 245, 255, 93, 144, 244, 255, 88, 138, 239, 255, 79, 130, 231, 255, 70, 121, 222, 255, 86, 126, 206, 255, 182, 186, 194, 255, 235, 235, 235, 255, 249, 249, 249, 255, 255, 255, 255, 255, 253, 254, 255, 255, 153, 179, 230, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 119, 149, 209, 255, 237, 238, 241, 255, 253, 253, 253, 255, 255, 255, 255, 255, 248, 248, 248, 255, 215, 221, 234, 255, 88, 131, 215, 255, 64, 114, 216, 255, 69, 119, 220, 255, 72, 122, 222, 255, 72, 122, 222, 255, 71, 121, 220, 255, 75, 122, 218, 255, 213, 226, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 244, 252, 255, 189, 202, 228, 244, 0, 0, 0, 105, 0, 0, 0, 50, 0, 0, 0, 15, 0, 0, 0, 3, + 181, 201, 239, 12, 209, 222, 248, 250, 249, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 210, 255, 255, 88, 138, 237, 255, 88, 138, 238, 255, 85, 136, 236, 255, 79, 129, 230, 255, 71, 121, 222, 255, 63, 113, 215, 255, 102, 136, 202, 255, 205, 205, 205, 255, 222, 222, 222, 255, 244, 244, 244, 255, 255, 255, 255, 255, 229, 236, 249, 255, 73, 118, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 65, 111, 203, 255, 201, 209, 225, 255, 251, 251, 251, 255, 254, 254, 254, 255, 250, 250, 250, 255, 238, 241, 247, 255, 106, 143, 217, 255, 59, 110, 211, 255, 64, 114, 215, 255, 67, 117, 218, 255, 69, 119, 219, 255, 68, 118, 217, 255, 66, 116, 214, 255, 143, 173, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 252, 254, 255, 208, 221, 246, 254, 39, 43, 52, 144, 0, 0, 0, 73, 0, 0, 0, 27, 0, 0, 0, 6, + 187, 205, 241, 98, 215, 227, 249, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 156, 239, 255, 82, 132, 232, 255, 82, 132, 232, 255, 78, 129, 229, 255, 72, 122, 223, 255, 64, 115, 216, 255, 58, 109, 211, 255, 74, 118, 206, 255, 117, 148, 209, 255, 130, 158, 214, 255, 159, 180, 224, 255, 175, 194, 234, 255, 124, 157, 222, 255, 53, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 57, 106, 203, 255, 188, 198, 218, 255, 250, 250, 250, 255, 254, 254, 254, 255, 252, 252, 252, 255, 246, 248, 253, 255, 107, 144, 217, 255, 56, 107, 209, 255, 60, 111, 212, 255, 63, 114, 215, 255, 65, 116, 216, 255, 65, 115, 215, 255, 64, 113, 212, 255, 84, 127, 215, 255, 241, 245, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 216, 227, 248, 255, 107, 118, 137, 193, 0, 0, 0, 96, 0, 0, 0, 41, 0, 0, 0, 11, + 193, 210, 243, 155, 226, 234, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 234, 255, 255, 81, 130, 226, 255, 77, 127, 227, 255, 76, 127, 227, 255, 73, 123, 224, 255, 67, 117, 218, 255, 60, 111, 212, 255, 56, 106, 208, 255, 53, 104, 206, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 72, 115, 200, 255, 209, 214, 225, 255, 252, 252, 252, 255, 254, 254, 254, 255, 255, 255, 255, 255, 232, 238, 249, 255, 85, 128, 213, 255, 54, 105, 207, 255, 57, 108, 209, 255, 61, 111, 212, 255, 63, 113, 213, 255, 63, 113, 212, 255, 62, 111, 210, 255, 61, 110, 208, 255, 191, 207, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 236, 250, 255, 148, 161, 185, 222, 0, 0, 0, 115, 0, 0, 0, 55, 0, 0, 0, 17, + 200, 215, 245, 208, 235, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 197, 245, 255, 72, 122, 221, 255, 73, 123, 222, 255, 72, 122, 222, 255, 68, 118, 219, 255, 63, 113, 214, 255, 58, 108, 210, 255, 54, 105, 207, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 53, 103, 203, 255, 127, 148, 192, 255, 241, 241, 241, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 197, 211, 240, 255, 58, 108, 207, 255, 53, 104, 206, 255, 56, 106, 208, 255, 58, 109, 210, 255, 60, 111, 211, 255, 61, 111, 211, 255, 60, 110, 208, 255, 59, 108, 206, 255, 143, 171, 225, 255, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 243, 252, 255, 185, 197, 224, 243, 0, 0, 0, 129, 0, 0, 0, 70, 0, 0, 0, 24, + 204, 218, 246, 231, 241, 245, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 169, 233, 255, 69, 118, 217, 255, 69, 119, 218, 255, 68, 118, 218, 255, 65, 115, 216, 255, 60, 111, 212, 255, 56, 107, 208, 255, 53, 104, 206, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 105, 133, 190, 255, 213, 216, 221, 255, 251, 251, 251, 255, 254, 254, 254, 255, 255, 255, 255, 255, 253, 253, 254, 255, 121, 155, 222, 255, 51, 102, 204, 255, 52, 103, 205, 255, 54, 105, 207, 255, 57, 107, 209, 255, 59, 109, 210, 255, 59, 109, 209, 255, 59, 108, 207, 255, 57, 106, 204, 255, 112, 146, 216, 255, 251, 251, 251, 255, 252, 252, 252, 255, 255, 255, 255, 255, 245, 248, 253, 255, 200, 213, 238, 251, 0, 0, 0, 140, 0, 0, 0, 84, 0, 0, 0, 32, + 208, 221, 247, 246, 246, 249, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 148, 223, 255, 65, 114, 213, 255, 66, 115, 215, 255, 65, 115, 215, 255, 62, 112, 213, 255, 58, 109, 210, 255, 55, 106, 207, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 97, 129, 189, 255, 200, 201, 205, 255, 247, 247, 247, 255, 254, 254, 254, 255, 254, 254, 254, 255, 255, 255, 255, 255, 178, 197, 236, 255, 56, 106, 205, 255, 51, 102, 204, 255, 52, 103, 205, 255, 54, 104, 206, 255, 56, 106, 207, 255, 57, 108, 208, 255, 58, 108, 208, 255, 57, 106, 205, 255, 56, 105, 203, 255, 96, 134, 211, 255, 244, 245, 248, 255, 250, 250, 250, 255, 253, 253, 253, 255, 249, 250, 254, 255, 206, 218, 244, 253, 0, 0, 0, 147, 0, 0, 0, 95, 0, 0, 0, 39, + 209, 222, 247, 250, 248, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 255, 255, 100, 139, 218, 255, 62, 111, 210, 255, 63, 112, 212, 255, 62, 112, 212, 255, 60, 110, 211, 255, 57, 108, 209, 255, 54, 105, 207, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 99, 128, 187, 255, 188, 190, 194, 255, 243, 243, 243, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 189, 205, 238, 255, 71, 117, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 205, 255, 53, 104, 206, 255, 55, 105, 207, 255, 56, 106, 207, 255, 56, 106, 206, 255, 56, 105, 204, 255, 54, 103, 201, 255, 92, 132, 209, 255, 238, 240, 244, 255, 249, 249, 249, 255, 252, 252, 252, 255, 251, 252, 254, 255, 208, 221, 246, 254, 0, 0, 0, 153, 0, 0, 0, 105, 0, 0, 0, 45, + 208, 221, 247, 250, 248, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 247, 252, 255, 95, 135, 215, 255, 59, 109, 207, 255, 60, 110, 209, 255, 60, 110, 210, 255, 59, 109, 210, 255, 56, 107, 208, 255, 54, 105, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 96, 126, 186, 255, 177, 179, 186, 255, 241, 241, 241, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 188, 205, 238, 255, 72, 118, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 53, 104, 205, 255, 54, 105, 206, 255, 55, 105, 206, 255, 55, 105, 205, 255, 54, 104, 202, 255, 53, 102, 200, 255, 90, 129, 207, 255, 234, 237, 243, 255, 247, 247, 247, 255, 250, 250, 250, 255, 250, 251, 253, 255, 208, 221, 246, 255, 0, 0, 0, 157, 0, 0, 0, 112, 0, 0, 0, 48, + 208, 221, 247, 249, 248, 250, 254, 255, 255, 255, 255, 255, 253, 253, 253, 255, 250, 250, 251, 255, 98, 136, 213, 255, 57, 106, 204, 255, 58, 108, 206, 255, 58, 108, 208, 255, 58, 108, 209, 255, 56, 106, 208, 255, 54, 104, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 80, 117, 190, 255, 172, 174, 179, 255, 236, 236, 236, 255, 254, 254, 254, 255, 253, 253, 253, 255, 255, 255, 255, 255, 191, 207, 239, 255, 67, 114, 208, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 53, 104, 205, 255, 54, 104, 206, 255, 54, 105, 205, 255, 54, 104, 204, 255, 53, 102, 201, 255, 52, 101, 198, 255, 91, 130, 207, 255, 238, 239, 242, 255, 246, 246, 246, 255, 249, 249, 249, 255, 248, 249, 252, 255, 206, 218, 244, 254, 0, 0, 0, 159, 0, 0, 0, 115, 0, 0, 0, 51, + 205, 219, 246, 238, 243, 247, 253, 255, 255, 255, 255, 255, 252, 252, 252, 255, 250, 250, 250, 255, 121, 153, 217, 255, 55, 104, 202, 255, 56, 106, 204, 255, 57, 107, 206, 255, 57, 107, 207, 255, 55, 106, 207, 255, 54, 104, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 53, 103, 203, 255, 129, 146, 180, 255, 215, 215, 215, 255, 251, 251, 251, 255, 254, 254, 254, 255, 255, 255, 255, 255, 195, 210, 240, 255, 71, 117, 209, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 53, 103, 205, 255, 53, 104, 205, 255, 54, 104, 204, 255, 53, 103, 202, 255, 52, 101, 199, 255, 51, 100, 197, 255, 99, 135, 207, 255, 243, 243, 243, 255, 245, 245, 245, 255, 248, 248, 248, 255, 244, 247, 251, 255, 203, 216, 241, 252, 0, 0, 0, 160, 0, 0, 0, 117, 0, 0, 0, 51, + 200, 215, 244, 216, 237, 242, 252, 255, 254, 254, 254, 255, 251, 251, 251, 255, 248, 248, 248, 255, 146, 171, 222, 255, 54, 102, 200, 255, 55, 104, 202, 255, 56, 105, 204, 255, 56, 106, 206, 255, 55, 106, 207, 255, 54, 104, 206, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 62, 108, 199, 255, 159, 166, 182, 255, 236, 236, 236, 255, 254, 254, 254, 255, 253, 253, 253, 255, 234, 239, 250, 255, 93, 134, 215, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 205, 255, 53, 103, 205, 255, 53, 104, 205, 255, 53, 103, 203, 255, 52, 102, 201, 255, 51, 100, 198, 255, 50, 98, 195, 255, 127, 155, 212, 255, 242, 242, 242, 255, 244, 244, 244, 255, 248, 248, 248, 255, 239, 243, 251, 255, 192, 204, 231, 248, 0, 0, 0, 159, 0, 0, 0, 114, 0, 0, 0, 50, + 194, 210, 242, 164, 228, 235, 250, 255, 253, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 184, 199, 231, 255, 54, 102, 198, 255, 53, 102, 200, 255, 54, 104, 203, 255, 55, 105, 205, 255, 55, 105, 206, 255, 54, 104, 206, 255, 53, 103, 205, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 68, 111, 197, 255, 168, 175, 187, 255, 243, 243, 243, 255, 254, 254, 254, 255, 255, 255, 255, 255, 209, 221, 244, 255, 60, 109, 206, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 205, 255, 53, 103, 205, 255, 53, 103, 204, 255, 52, 102, 202, 255, 51, 101, 199, 255, 50, 99, 196, 255, 49, 98, 194, 255, 161, 180, 221, 255, 241, 241, 241, 255, 244, 244, 244, 255, 248, 248, 248, 255, 231, 237, 250, 255, 161, 174, 199, 235, 0, 0, 0, 155, 0, 0, 0, 109, 0, 0, 0, 46, + 189, 206, 241, 116, 215, 227, 248, 254, 252, 253, 253, 255, 250, 250, 250, 255, 247, 247, 247, 255, 225, 230, 240, 255, 70, 113, 201, 255, 52, 101, 198, 255, 53, 102, 200, 255, 54, 104, 203, 255, 54, 104, 205, 255, 54, 104, 205, 255, 53, 104, 205, 255, 52, 103, 205, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 69, 112, 198, 255, 175, 180, 190, 255, 245, 245, 245, 255, 253, 253, 253, 255, 255, 255, 255, 255, 202, 215, 242, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 102, 203, 255, 52, 101, 200, 255, 51, 99, 197, 255, 49, 98, 194, 255, 57, 103, 194, 255, 209, 216, 232, 255, 241, 241, 241, 255, 245, 245, 245, 255, 249, 249, 249, 255, 218, 228, 248, 255, 118, 128, 149, 216, 0, 0, 0, 150, 0, 0, 0, 100, 0, 0, 0, 41, + 182, 201, 239, 35, 209, 222, 247, 253, 249, 250, 252, 255, 250, 250, 250, 255, 246, 246, 246, 255, 243, 243, 244, 255, 124, 154, 213, 255, 51, 99, 196, 255, 52, 101, 198, 255, 53, 102, 201, 255, 53, 103, 203, 255, 54, 104, 205, 255, 53, 104, 205, 255, 52, 103, 205, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 65, 110, 200, 255, 143, 160, 195, 255, 202, 213, 236, 255, 206, 218, 242, 255, 211, 222, 244, 255, 161, 184, 231, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 102, 203, 255, 52, 101, 201, 255, 51, 100, 198, 255, 50, 98, 195, 255, 49, 97, 193, 255, 100, 134, 204, 255, 236, 237, 238, 255, 242, 242, 242, 255, 245, 245, 245, 255, 246, 247, 249, 255, 208, 221, 246, 254, 57, 62, 73, 189, 0, 0, 0, 142, 0, 0, 0, 88, 0, 0, 0, 34, + 0, 0, 0, 0, 203, 217, 245, 231, 240, 244, 252, 255, 250, 250, 250, 255, 247, 247, 247, 255, 244, 244, 244, 255, 188, 202, 229, 255, 52, 100, 196, 255, 51, 99, 196, 255, 52, 101, 199, 255, 52, 102, 201, 255, 53, 103, 203, 255, 53, 103, 204, 255, 53, 103, 205, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 103, 204, 255, 61, 108, 203, 255, 69, 115, 208, 255, 69, 116, 208, 255, 71, 117, 209, 255, 63, 111, 207, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 102, 204, 255, 52, 103, 204, 255, 52, 102, 203, 255, 52, 102, 202, 255, 51, 100, 199, 255, 50, 99, 196, 255, 49, 97, 193, 255, 48, 96, 191, 255, 172, 189, 221, 255, 239, 239, 239, 255, 242, 242, 242, 255, 246, 246, 246, 255, 240, 243, 249, 255, 194, 208, 233, 250, 0, 0, 0, 166, 0, 0, 0, 133, 0, 0, 0, 75, 0, 0, 0, 27, + 0, 0, 0, 0, 190, 207, 241, 131, 217, 228, 248, 254, 251, 251, 251, 255, 247, 247, 247, 255, 244, 244, 244, 255, 234, 236, 240, 255, 112, 144, 208, 255, 50, 98, 194, 255, 51, 99, 196, 255, 51, 101, 199, 255, 52, 102, 201, 255, 53, 103, 203, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 102, 204, 255, 52, 102, 204, 255, 52, 102, 203, 255, 51, 102, 202, 255, 51, 100, 200, 255, 50, 99, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 96, 132, 202, 255, 226, 228, 235, 255, 240, 240, 240, 255, 243, 243, 243, 255, 247, 247, 247, 255, 222, 231, 247, 255, 145, 156, 180, 229, 0, 0, 0, 160, 0, 0, 0, 120, 0, 0, 0, 60, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 207, 220, 245, 252, 247, 248, 251, 255, 249, 249, 249, 255, 245, 245, 245, 255, 242, 242, 242, 255, 194, 206, 229, 255, 58, 104, 195, 255, 50, 98, 194, 255, 50, 99, 196, 255, 51, 100, 199, 255, 52, 101, 201, 255, 52, 102, 203, 255, 52, 103, 204, 255, 52, 103, 204, 255, 52, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 68, 112, 201, 255, 134, 163, 220, 255, 156, 180, 229, 255, 119, 151, 216, 255, 54, 104, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 52, 102, 204, 255, 52, 102, 204, 255, 52, 102, 203, 255, 51, 101, 202, 255, 51, 100, 200, 255, 50, 99, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 54, 100, 192, 255, 176, 191, 222, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 246, 247, 249, 255, 208, 221, 245, 254, 20, 22, 26, 179, 0, 0, 0, 150, 0, 0, 0, 102, 0, 0, 0, 46, 0, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 182, 197, 228, 174, 223, 232, 249, 255, 250, 250, 250, 255, 246, 246, 246, 255, 243, 243, 243, 255, 238, 239, 240, 255, 140, 165, 214, 255, 49, 97, 192, 255, 49, 97, 194, 255, 50, 99, 196, 255, 51, 100, 198, 255, 51, 101, 200, 255, 52, 102, 202, 255, 52, 102, 203, 255, 52, 102, 204, 255, 52, 102, 204, 255, 52, 102, 204, 255, 67, 110, 198, 255, 151, 162, 185, 255, 238, 238, 238, 255, 252, 252, 252, 255, 237, 237, 239, 255, 156, 176, 217, 255, 53, 103, 204, 255, 51, 102, 204, 255, 51, 102, 204, 255, 51, 102, 203, 255, 51, 102, 202, 255, 51, 101, 201, 255, 50, 100, 199, 255, 50, 99, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 48, 95, 190, 255, 127, 155, 209, 255, 234, 235, 236, 255, 239, 239, 239, 255, 243, 243, 243, 255, 247, 247, 247, 255, 229, 236, 249, 255, 164, 177, 202, 237, 0, 0, 0, 166, 0, 0, 0, 135, 0, 0, 0, 81, 0, 0, 0, 31, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 206, 219, 245, 249, 244, 246, 250, 255, 248, 248, 248, 255, 244, 244, 244, 255, 241, 241, 241, 255, 233, 234, 237, 255, 110, 142, 207, 255, 48, 96, 192, 255, 49, 97, 193, 255, 49, 98, 196, 255, 50, 99, 198, 255, 51, 100, 200, 255, 51, 101, 201, 255, 51, 102, 202, 255, 52, 102, 203, 255, 52, 102, 203, 255, 105, 131, 183, 255, 182, 182, 182, 255, 240, 240, 240, 255, 253, 253, 253, 255, 245, 245, 245, 255, 234, 234, 234, 255, 113, 147, 213, 255, 51, 102, 203, 255, 51, 102, 203, 255, 51, 101, 202, 255, 51, 101, 200, 255, 50, 100, 199, 255, 49, 98, 197, 255, 49, 97, 194, 255, 48, 96, 192, 255, 47, 95, 190, 255, 98, 132, 201, 255, 222, 226, 232, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 245, 246, 249, 255, 206, 219, 244, 254, 9, 9, 11, 176, 0, 0, 0, 156, 0, 0, 0, 114, 0, 0, 0, 58, 0, 0, 0, 18, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 168, 183, 214, 143, 216, 226, 247, 254, 249, 250, 250, 255, 246, 246, 246, 255, 242, 242, 242, 255, 240, 240, 240, 255, 217, 222, 232, 255, 94, 131, 202, 255, 48, 96, 191, 255, 48, 96, 193, 255, 49, 97, 194, 255, 50, 98, 196, 255, 50, 99, 198, 255, 50, 100, 200, 255, 51, 101, 201, 255, 51, 101, 202, 255, 121, 140, 178, 255, 186, 186, 186, 255, 239, 239, 239, 255, 252, 252, 252, 255, 253, 253, 253, 255, 253, 253, 253, 255, 143, 168, 222, 255, 51, 101, 201, 255, 51, 101, 200, 255, 50, 100, 199, 255, 50, 99, 197, 255, 49, 98, 195, 255, 48, 97, 193, 255, 48, 96, 191, 255, 47, 95, 189, 255, 92, 128, 199, 255, 211, 218, 230, 255, 237, 237, 237, 255, 240, 240, 240, 255, 243, 243, 243, 255, 247, 247, 247, 255, 217, 226, 246, 255, 130, 141, 164, 222, 0, 0, 0, 166, 0, 0, 0, 138, 0, 0, 0, 87, 0, 0, 0, 37, 0, 0, 0, 9, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 192, 207, 233, 223, 232, 238, 249, 255, 248, 248, 248, 255, 245, 245, 245, 255, 241, 241, 241, 255, 239, 239, 239, 255, 218, 223, 232, 255, 112, 143, 205, 255, 48, 95, 190, 255, 48, 96, 191, 255, 48, 97, 193, 255, 49, 97, 195, 255, 49, 98, 196, 255, 50, 99, 198, 255, 50, 100, 199, 255, 105, 132, 186, 255, 191, 191, 191, 255, 228, 228, 228, 255, 248, 248, 248, 255, 250, 250, 250, 255, 245, 246, 249, 255, 109, 144, 214, 255, 50, 99, 199, 255, 50, 99, 197, 255, 49, 98, 196, 255, 49, 97, 194, 255, 48, 96, 192, 255, 47, 95, 190, 255, 47, 94, 188, 255, 98, 132, 200, 255, 211, 216, 228, 255, 236, 236, 236, 255, 239, 239, 239, 255, 242, 242, 242, 255, 246, 246, 246, 255, 235, 240, 248, 255, 184, 197, 223, 246, 0, 0, 0, 171, 0, 0, 0, 153, 0, 0, 0, 112, 0, 0, 0, 58, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 30, 204, 216, 242, 247, 241, 244, 249, 255, 247, 247, 247, 255, 244, 244, 244, 255, 240, 240, 240, 255, 238, 238, 238, 255, 233, 234, 235, 255, 142, 165, 212, 255, 60, 104, 192, 255, 47, 95, 190, 255, 48, 96, 191, 255, 48, 96, 192, 255, 49, 97, 194, 255, 49, 98, 195, 255, 62, 106, 194, 255, 152, 167, 196, 255, 215, 215, 215, 255, 247, 247, 247, 255, 242, 243, 245, 255, 155, 177, 223, 255, 50, 99, 196, 255, 49, 97, 195, 255, 48, 97, 193, 255, 48, 96, 192, 255, 47, 95, 190, 255, 47, 94, 189, 255, 55, 100, 189, 255, 129, 156, 208, 255, 221, 224, 231, 255, 236, 236, 236, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 242, 244, 248, 255, 204, 217, 242, 253, 4, 5, 6, 175, 0, 0, 0, 161, 0, 0, 0, 128, 0, 0, 0, 79, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 14, 101, 111, 131, 80, 207, 220, 245, 253, 245, 247, 250, 255, 246, 246, 246, 255, 243, 243, 243, 255, 240, 240, 240, 255, 238, 238, 238, 255, 236, 236, 236, 255, 185, 198, 222, 255, 100, 134, 201, 255, 47, 94, 188, 255, 47, 95, 189, 255, 47, 95, 190, 255, 48, 96, 191, 255, 48, 96, 192, 255, 57, 102, 193, 255, 113, 142, 202, 255, 136, 160, 211, 255, 111, 143, 208, 255, 48, 96, 193, 255, 48, 96, 192, 255, 48, 95, 191, 255, 47, 95, 190, 255, 47, 94, 189, 255, 47, 94, 188, 255, 100, 134, 200, 255, 176, 190, 219, 255, 234, 234, 234, 255, 236, 236, 236, 255, 238, 238, 238, 255, 241, 241, 241, 255, 245, 245, 245, 255, 244, 246, 248, 255, 206, 218, 243, 254, 66, 73, 86, 197, 0, 0, 0, 166, 0, 0, 0, 140, 0, 0, 0, 95, 0, 0, 0, 46, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 127, 139, 164, 117, 207, 220, 245, 253, 242, 244, 249, 255, 246, 246, 246, 255, 243, 243, 243, 255, 240, 240, 240, 255, 238, 238, 238, 255, 235, 235, 235, 255, 223, 226, 231, 255, 173, 187, 217, 255, 105, 135, 196, 255, 58, 101, 188, 255, 48, 95, 188, 255, 47, 94, 189, 255, 47, 94, 189, 255, 47, 95, 189, 255, 47, 95, 190, 255, 47, 95, 190, 255, 47, 94, 189, 255, 47, 94, 189, 255, 49, 95, 188, 255, 59, 103, 190, 255, 108, 139, 202, 255, 170, 186, 217, 255, 222, 224, 230, 255, 234, 234, 234, 255, 236, 236, 236, 255, 239, 239, 239, 255, 242, 242, 242, 255, 245, 245, 245, 255, 242, 244, 248, 255, 207, 219, 244, 254, 69, 76, 89, 198, 0, 0, 0, 168, 0, 0, 0, 147, 0, 0, 0, 106, 0, 0, 0, 57, 0, 0, 0, 22, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 25, 84, 93, 110, 96, 203, 217, 242, 250, 234, 238, 248, 255, 246, 247, 247, 255, 244, 244, 244, 255, 241, 241, 241, 255, 238, 238, 238, 255, 236, 236, 236, 255, 234, 234, 234, 255, 226, 226, 227, 255, 190, 195, 206, 255, 144, 160, 192, 255, 117, 142, 192, 255, 98, 129, 193, 255, 88, 124, 194, 255, 89, 125, 195, 255, 92, 127, 198, 255, 104, 136, 202, 255, 133, 158, 209, 255, 169, 185, 217, 255, 204, 211, 226, 255, 230, 231, 232, 255, 233, 233, 233, 255, 235, 235, 235, 255, 237, 237, 237, 255, 240, 240, 240, 255, 243, 243, 243, 255, 246, 246, 246, 255, 236, 240, 248, 255, 204, 217, 242, 253, 64, 71, 83, 197, 0, 0, 0, 168, 0, 0, 0, 148, 0, 0, 0, 112, 0, 0, 0, 66, 0, 0, 0, 27, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 30, 11, 12, 14, 70, 187, 202, 229, 235, 214, 225, 245, 255, 243, 245, 248, 255, 245, 245, 245, 255, 242, 242, 242, 255, 240, 240, 240, 255, 238, 238, 238, 255, 235, 235, 235, 255, 229, 229, 229, 255, 219, 219, 219, 255, 208, 208, 208, 255, 212, 212, 212, 255, 220, 220, 220, 255, 232, 232, 232, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 234, 234, 234, 255, 233, 233, 233, 255, 235, 235, 235, 255, 237, 237, 237, 255, 238, 238, 238, 255, 241, 241, 241, 255, 244, 244, 244, 255, 243, 245, 247, 255, 219, 228, 245, 255, 188, 201, 227, 247, 27, 30, 36, 183, 0, 0, 0, 166, 0, 0, 0, 147, 0, 0, 0, 112, 0, 0, 0, 69, 0, 0, 0, 32, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 30, 0, 0, 0, 64, 145, 157, 182, 188, 206, 219, 244, 253, 228, 235, 248, 255, 244, 245, 247, 255, 245, 245, 245, 255, 243, 243, 243, 255, 241, 241, 241, 255, 240, 240, 240, 255, 238, 238, 238, 255, 237, 237, 237, 255, 237, 237, 237, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 236, 236, 236, 255, 237, 237, 237, 255, 238, 238, 238, 255, 239, 239, 239, 255, 240, 240, 240, 255, 242, 242, 242, 255, 244, 244, 244, 255, 243, 244, 246, 255, 230, 236, 248, 255, 207, 220, 245, 254, 142, 154, 178, 228, 0, 0, 0, 172, 0, 0, 0, 162, 0, 0, 0, 141, 0, 0, 0, 107, 0, 0, 0, 67, 0, 0, 0, 32, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 26, 0, 0, 0, 56, 8, 9, 10, 96, 170, 184, 210, 225, 208, 221, 245, 254, 220, 229, 247, 255, 238, 241, 247, 255, 243, 244, 246, 255, 244, 244, 244, 255, 243, 243, 243, 255, 242, 242, 242, 255, 241, 241, 241, 255, 241, 241, 241, 255, 240, 240, 240, 255, 241, 241, 241, 255, 241, 241, 241, 255, 241, 241, 241, 255, 242, 242, 242, 255, 244, 244, 244, 255, 243, 244, 245, 255, 239, 241, 247, 255, 222, 230, 246, 255, 208, 221, 245, 254, 172, 185, 211, 241, 12, 13, 16, 177, 0, 0, 0, 167, 0, 0, 0, 154, 0, 0, 0, 131, 0, 0, 0, 97, 0, 0, 0, 59, 0, 0, 0, 29, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 21, 0, 0, 0, 45, 0, 0, 0, 77, 0, 0, 0, 110, 156, 169, 195, 218, 198, 210, 236, 250, 208, 221, 245, 254, 217, 227, 247, 255, 228, 234, 247, 255, 236, 240, 247, 255, 238, 241, 246, 255, 242, 243, 246, 255, 242, 243, 245, 255, 242, 243, 245, 255, 239, 242, 246, 255, 236, 239, 246, 255, 230, 236, 247, 255, 218, 228, 247, 255, 208, 221, 245, 254, 198, 211, 236, 251, 151, 163, 188, 231, 0, 0, 0, 172, 0, 0, 0, 166, 0, 0, 0, 157, 0, 0, 0, 139, 0, 0, 0, 114, 0, 0, 0, 81, 0, 0, 0, 48, 0, 0, 0, 22, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 86, 0, 0, 0, 114, 66, 72, 85, 162, 122, 132, 154, 204, 158, 170, 195, 229, 192, 205, 231, 248, 200, 213, 238, 251, 206, 218, 243, 254, 208, 221, 245, 254, 207, 220, 245, 254, 201, 215, 239, 252, 192, 205, 231, 249, 171, 184, 210, 240, 121, 132, 153, 217, 62, 68, 81, 192, 0, 0, 0, 166, 0, 0, 0, 161, 0, 0, 0, 151, 0, 0, 0, 136, 0, 0, 0, 115, 0, 0, 0, 88, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35, 0, 0, 0, 57, 0, 0, 0, 81, 0, 0, 0, 103, 0, 0, 0, 120, 0, 0, 0, 133, 0, 0, 0, 142, 0, 0, 0, 150, 0, 0, 0, 154, 0, 0, 0, 158, 0, 0, 0, 159, 0, 0, 0, 159, 0, 0, 0, 155, 0, 0, 0, 151, 0, 0, 0, 144, 0, 0, 0, 134, 0, 0, 0, 121, 0, 0, 0, 104, 0, 0, 0, 82, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 20, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 31, 0, 0, 0, 46, 0, 0, 0, 60, 0, 0, 0, 74, 0, 0, 0, 88, 0, 0, 0, 99, 0, 0, 0, 107, 0, 0, 0, 113, 0, 0, 0, 115, 0, 0, 0, 114, 0, 0, 0, 109, 0, 0, 0, 102, 0, 0, 0, 91, 0, 0, 0, 77, 0, 0, 0, 62, 0, 0, 0, 46, 0, 0, 0, 32, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(48, 48, imgdata); + return image; +} + +static Ihandle* load_image_LogoTecgrafPUC_Rio(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 173, 184, 178, 176, 185, 201, 250, 177, 185, 202, 250, 177, 185, 202, 250, 177, 186, 202, 250, 177, 186, 202, 250, 177, 186, 202, 250, 177, 186, 202, 250, 177, 186, 203, 250, 177, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 203, 250, 178, 186, 204, 250, 178, 186, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 178, 187, 204, 250, 179, 187, 204, 250, 179, 188, 204, 250, 179, 188, 204, 250, 181, 190, 206, 239, 229, 232, 238, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 211, 220, 80, 177, 186, 204, 121, 159, 171, 195, 121, 159, 172, 198, 136, 188, 198, 217, 250, 189, 199, 218, 250, 189, 199, 218, 250, 189, 199, 218, 250, 189, 199, 219, 250, 189, 199, 219, 250, 189, 199, 219, 250, 176, 186, 207, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 102, 105, 110, 249, 105, 117, 141, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 173, 255, 127, 143, 173, 255, 127, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 145, 174, 255, 128, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 146, 176, 255, 129, 146, 176, 255, 129, 146, 176, 255, 130, 146, 176, 255, 130, 146, 176, 255, 130, 146, 176, 255, 130, 146, 176, 255, 130, 146, 177, 255, 130, 147, 177, 255, 133, 150, 181, 255, 153, 169, 201, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 143, 158, 22, 143, 153, 172, 205, 139, 154, 183, 252, 146, 164, 197, 255, 147, 166, 199, 255, 149, 167, 201, 255, 150, 168, 203, 255, 151, 170, 204, 255, 151, 170, 204, 255, 151, 170, 204, 255, 151, 170, 204, 255, 152, 170, 205, 255, 152, 171, 205, 255, 143, 157, 184, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 90, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 122, 137, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 200, 204, 106, 124, 134, 151, 246, 125, 141, 170, 255, 130, 147, 176, 255, 130, 146, 175, 255, 130, 146, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 130, 145, 175, 255, 130, 146, 176, 255, 135, 148, 173, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 90, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 122, 137, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 23, 116, 122, 132, 212, 110, 123, 149, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 128, 140, 164, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 89, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 122, 136, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 121, 126, 53, 90, 98, 112, 255, 121, 136, 164, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 129, 145, 175, 255, 120, 132, 153, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 89, 108, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 121, 136, 164, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 168, 171, 172, 75, 84, 100, 255, 124, 140, 168, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 129, 145, 175, 255, 128, 144, 174, 255, 112, 123, 143, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 80, 89, 108, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 121, 136, 163, 255, 155, 172, 203, 255, 230, 233, 239, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 227, 232, 99, 226, 229, 234, 105, 227, 230, 236, 105, 228, 231, 236, 105, 227, 230, 236, 105, 227, 230, 235, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 227, 231, 5, 215, 218, 225, 105, 182, 189, 203, 105, 173, 182, 200, 105, 151, 164, 187, 105, 156, 169, 193, 105, 159, 172, 197, 105, 163, 176, 199, 105, 183, 193, 212, 105, 191, 200, 217, 105, 211, 217, 228, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 229, 235, 104, 202, 209, 220, 105, 204, 210, 222, 105, 206, 213, 225, 105, 207, 214, 226, 105, 206, 212, 224, 105, 218, 223, 232, 61, 230, 233, 239, 95, 229, 232, 238, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 145, 148, 182, 74, 84, 101, 255, 126, 142, 170, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 129, 144, 174, 255, 129, 144, 174, 255, 129, 145, 174, 255, 125, 140, 169, 255, 115, 129, 155, 255, 112, 126, 151, 255, 118, 132, 160, 255, 105, 114, 132, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 104, 249, 78, 87, 105, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 144, 255, 107, 120, 145, 255, 107, 120, 145, 255, 107, 120, 145, 255, 109, 122, 148, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 111, 125, 151, 255, 109, 122, 147, 255, 109, 122, 146, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 109, 122, 147, 255, 116, 131, 157, 255, 151, 169, 201, 247, 230, 233, 239, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 222, 226, 1, 195, 199, 207, 102, 159, 167, 182, 165, 165, 174, 190, 231, 151, 162, 184, 231, 137, 152, 178, 231, 139, 154, 182, 254, 143, 158, 186, 255, 146, 162, 191, 255, 148, 164, 193, 255, 149, 165, 194, 255, 150, 166, 196, 246, 158, 174, 203, 231, 172, 186, 211, 231, 188, 199, 219, 231, 178, 191, 214, 123, 206, 214, 229, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 188, 197, 61, 136, 147, 166, 112, 152, 163, 183, 231, 137, 150, 176, 232, 138, 153, 181, 255, 139, 155, 184, 255, 141, 157, 187, 255, 139, 156, 187, 255, 141, 158, 189, 255, 143, 160, 191, 255, 146, 164, 196, 255, 150, 167, 200, 255, 154, 172, 204, 255, 158, 176, 209, 244, 171, 186, 216, 231, 188, 200, 223, 231, 184, 197, 221, 114, 196, 207, 226, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 201, 210, 71, 156, 166, 184, 102, 164, 174, 194, 189, 165, 176, 199, 231, 162, 176, 201, 231, 156, 171, 200, 231, 166, 181, 208, 231, 175, 189, 214, 231, 185, 197, 220, 219, 172, 187, 214, 102, 213, 220, 234, 95, 167, 169, 172, 6, 168, 173, 183, 173, 187, 196, 214, 231, 187, 196, 214, 231, 187, 196, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 188, 197, 214, 231, 185, 194, 211, 231, 213, 217, 225, 72, 0, 0, 0, 0, 0, 0, 0, 0, 167, 174, 187, 137, 188, 196, 214, 231, 189, 197, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 189, 198, 215, 231, 186, 195, 212, 200, 171, 180, 196, 28, 0, 0, 0, 0, 187, 192, 204, 72, 152, 164, 185, 126, 171, 183, 206, 231, 187, 201, 228, 231, 205, 218, 239, 231, 211, 222, 241, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 206, 215, 5, 187, 193, 206, 102, 145, 158, 183, 106, 170, 182, 202, 231, 160, 174, 200, 231, 150, 167, 197, 231, 155, 172, 202, 255, 154, 172, 204, 255, 155, 173, 205, 255, 158, 175, 208, 255, 158, 175, 208, 255, 160, 177, 210, 255, 161, 179, 213, 245, 162, 180, 213, 253, 163, 181, 214, 246, 168, 185, 216, 231, 174, 190, 219, 231, 189, 202, 225, 231, 177, 191, 219, 122, 198, 208, 227, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 130, 134, 182, 79, 89, 107, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 144, 174, 255, 128, 143, 173, 255, 95, 107, 128, 255, 69, 74, 82, 255, 74, 79, 86, 255, 82, 88, 98, 255, 104, 109, 120, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 97, 100, 104, 249, 40, 45, 54, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 44, 50, 60, 255, 45, 50, 61, 255, 77, 87, 105, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 114, 128, 154, 255, 79, 89, 107, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 45, 51, 61, 255, 47, 53, 64, 255, 99, 110, 131, 242, 229, 232, 236, 42, 0, 0, 0, 0, 0, 0, 0, 0, 207, 209, 213, 53, 132, 139, 153, 102, 137, 146, 163, 228, 124, 137, 161, 255, 122, 136, 164, 255, 122, 138, 166, 255, 123, 138, 166, 255, 122, 137, 164, 255, 120, 135, 162, 255, 120, 135, 162, 255, 121, 135, 163, 255, 121, 136, 164, 255, 121, 136, 165, 255, 125, 140, 169, 255, 127, 143, 172, 255, 133, 150, 180, 255, 143, 161, 193, 255, 153, 172, 205, 255, 166, 184, 218, 246, 185, 199, 225, 228, 197, 208, 229, 125, 210, 218, 233, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 219, 222, 12, 167, 172, 181, 114, 136, 146, 163, 228, 122, 135, 160, 244, 124, 139, 166, 255, 125, 140, 168, 255, 122, 136, 164, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 119, 134, 162, 255, 119, 134, 162, 255, 119, 134, 162, 255, 120, 135, 163, 255, 120, 136, 163, 255, 122, 136, 164, 255, 128, 143, 172, 255, 138, 154, 186, 255, 152, 170, 204, 255, 166, 186, 220, 255, 175, 193, 227, 231, 193, 206, 229, 180, 207, 217, 234, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 227, 229, 23, 172, 177, 186, 99, 141, 151, 169, 191, 130, 144, 170, 247, 133, 149, 177, 255, 131, 147, 177, 255, 132, 148, 178, 255, 132, 148, 178, 255, 131, 148, 178, 255, 135, 152, 183, 255, 140, 157, 189, 255, 147, 164, 198, 255, 161, 180, 215, 255, 175, 194, 227, 253, 169, 183, 208, 230, 82, 87, 97, 255, 124, 139, 168, 255, 142, 159, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 192, 255, 142, 160, 193, 255, 142, 160, 193, 255, 144, 162, 195, 255, 139, 156, 188, 255, 210, 215, 224, 151, 0, 0, 0, 0, 0, 0, 0, 0, 94, 99, 107, 223, 122, 137, 166, 255, 143, 161, 194, 255, 144, 161, 194, 255, 144, 161, 194, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 144, 162, 195, 255, 146, 163, 197, 255, 159, 175, 204, 255, 185, 189, 198, 170, 145, 154, 171, 228, 132, 146, 173, 247, 134, 150, 180, 255, 137, 154, 185, 255, 160, 175, 200, 255, 223, 228, 238, 255, 213, 224, 244, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 204, 210, 58, 163, 171, 186, 173, 138, 152, 176, 230, 140, 156, 185, 255, 140, 156, 188, 255, 137, 154, 185, 255, 135, 152, 183, 255, 134, 150, 181, 255, 132, 148, 178, 255, 131, 147, 176, 255, 129, 144, 174, 255, 129, 145, 174, 255, 129, 145, 174, 255, 130, 147, 176, 255, 135, 151, 182, 255, 135, 152, 183, 255, 140, 157, 189, 255, 140, 158, 189, 255, 146, 164, 196, 255, 157, 176, 209, 255, 170, 189, 222, 255, 180, 199, 230, 246, 185, 201, 231, 228, 184, 199, 227, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 183, 193, 171, 178, 189, 210, 228, 180, 192, 214, 228, 126, 135, 152, 247, 85, 95, 115, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 132, 149, 179, 255, 138, 154, 181, 255, 169, 180, 198, 255, 176, 187, 206, 255, 171, 182, 201, 255, 173, 181, 197, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 173, 175, 176, 89, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 79, 82, 87, 241, 71, 80, 97, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 112, 126, 152, 255, 119, 134, 161, 255, 134, 147, 172, 255, 161, 163, 166, 188, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 176, 178, 158, 175, 177, 178, 158, 183, 185, 188, 148, 229, 232, 236, 13, 190, 192, 196, 5, 175, 179, 185, 167, 115, 124, 142, 241, 114, 126, 151, 255, 115, 129, 156, 255, 115, 129, 156, 255, 114, 128, 156, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 116, 131, 157, 255, 118, 133, 160, 255, 131, 147, 175, 255, 154, 172, 203, 255, 177, 196, 226, 255, 178, 196, 229, 195, 199, 211, 233, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 179, 185, 80, 144, 150, 162, 229, 115, 127, 150, 255, 117, 132, 159, 255, 118, 133, 160, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 120, 134, 163, 255, 125, 140, 168, 255, 149, 166, 193, 255, 178, 195, 222, 255, 184, 202, 232, 244, 192, 206, 232, 115, 227, 233, 243, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 159, 166, 23, 142, 149, 161, 198, 118, 130, 153, 255, 122, 137, 165, 255, 122, 137, 165, 255, 121, 136, 164, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 165, 255, 125, 140, 168, 255, 138, 154, 181, 255, 150, 168, 200, 255, 111, 125, 150, 255, 114, 128, 154, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 127, 143, 172, 255, 138, 155, 186, 255, 211, 215, 224, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 106, 128, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 168, 255, 129, 144, 173, 255, 149, 162, 183, 255, 101, 111, 128, 255, 121, 136, 163, 255, 125, 140, 169, 255, 124, 140, 168, 255, 124, 140, 168, 255, 128, 144, 171, 255, 209, 218, 229, 255, 212, 223, 243, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 156, 166, 69, 124, 134, 154, 243, 116, 132, 163, 255, 127, 142, 172, 255, 127, 143, 171, 255, 126, 142, 170, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 143, 172, 255, 131, 146, 175, 255, 143, 158, 185, 255, 170, 185, 209, 255, 187, 205, 233, 246, 189, 203, 230, 188, 191, 204, 227, 21, 0, 0, 0, 0, 0, 0, 0, 0, 99, 103, 110, 191, 111, 125, 151, 255, 145, 162, 196, 255, 142, 159, 192, 255, 125, 140, 168, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 141, 157, 184, 255, 181, 194, 213, 255, 182, 195, 213, 255, 172, 188, 213, 255, 154, 172, 206, 255, 143, 157, 184, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 97, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 112, 126, 152, 255, 119, 134, 161, 255, 156, 171, 200, 255, 194, 199, 209, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 129, 135, 6, 113, 118, 128, 168, 98, 109, 128, 255, 111, 125, 150, 255, 114, 128, 155, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 117, 132, 157, 255, 129, 143, 168, 255, 173, 188, 211, 255, 188, 206, 234, 246, 184, 200, 230, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 127, 136, 81, 102, 112, 128, 243, 110, 123, 148, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 125, 140, 166, 255, 161, 175, 197, 255, 191, 207, 234, 255, 192, 206, 233, 184, 191, 204, 230, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 178, 183, 56, 121, 128, 141, 231, 108, 121, 144, 255, 119, 134, 161, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 165, 255, 123, 138, 166, 255, 122, 137, 165, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 155, 186, 255, 211, 215, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 133, 148, 175, 255, 165, 177, 196, 255, 118, 132, 159, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 126, 142, 171, 255, 185, 202, 225, 255, 204, 217, 238, 91, 0, 0, 0, 0, 0, 0, 0, 0, 183, 185, 191, 70, 109, 119, 138, 242, 105, 122, 152, 255, 120, 136, 166, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 128, 143, 172, 255, 152, 165, 190, 255, 185, 201, 228, 255, 182, 198, 228, 194, 208, 216, 231, 21, 0, 0, 0, 0, 92, 96, 102, 191, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 174, 255, 130, 145, 175, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 152, 255, 119, 134, 161, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 122, 126, 7, 97, 102, 110, 168, 86, 96, 114, 255, 110, 124, 149, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 121, 135, 160, 255, 162, 175, 195, 255, 192, 208, 234, 246, 199, 212, 236, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 116, 124, 82, 89, 97, 113, 243, 107, 120, 145, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 121, 135, 162, 255, 149, 162, 184, 255, 192, 207, 230, 255, 190, 206, 233, 184, 215, 223, 238, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 151, 155, 24, 100, 106, 117, 198, 101, 113, 136, 255, 118, 133, 160, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 154, 186, 255, 211, 215, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 132, 148, 175, 255, 143, 160, 186, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 125, 140, 169, 255, 162, 178, 207, 255, 193, 205, 228, 91, 0, 0, 0, 0, 185, 187, 190, 10, 126, 132, 144, 191, 97, 113, 141, 255, 119, 135, 165, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 143, 159, 186, 255, 172, 191, 224, 255, 178, 192, 217, 104, 0, 0, 0, 0, 92, 96, 102, 191, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 128, 144, 175, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 161, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 117, 122, 131, 73, 81, 96, 255, 107, 121, 145, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 118, 131, 158, 255, 156, 168, 189, 255, 194, 209, 236, 246, 196, 209, 234, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 170, 172, 82, 94, 100, 111, 242, 102, 114, 138, 255, 117, 131, 157, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 147, 160, 182, 255, 190, 206, 233, 255, 183, 199, 229, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 120, 127, 178, 88, 98, 118, 255, 116, 131, 157, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 154, 185, 255, 210, 215, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 94, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 149, 164, 192, 255, 185, 196, 216, 91, 0, 0, 0, 0, 189, 189, 192, 74, 108, 117, 133, 255, 114, 131, 160, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 128, 143, 172, 255, 148, 166, 199, 255, 164, 180, 211, 210, 211, 216, 227, 21, 92, 96, 102, 191, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, 189, 63, 78, 83, 92, 238, 96, 108, 130, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 112, 126, 152, 255, 105, 118, 142, 255, 95, 107, 129, 255, 87, 98, 117, 255, 93, 104, 125, 255, 105, 118, 142, 255, 115, 128, 154, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 119, 133, 159, 255, 172, 184, 204, 255, 191, 207, 235, 246, 205, 216, 235, 59, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 16, 92, 97, 104, 201, 88, 99, 119, 255, 115, 129, 156, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 113, 126, 152, 255, 103, 116, 139, 255, 88, 99, 120, 255, 83, 93, 112, 255, 90, 101, 122, 255, 107, 121, 146, 255, 117, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 120, 135, 162, 255, 162, 176, 199, 255, 182, 200, 230, 242, 188, 201, 226, 41, 0, 0, 0, 0, 137, 139, 142, 60, 80, 86, 98, 246, 107, 119, 144, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 137, 154, 185, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 127, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 143, 158, 185, 255, 194, 201, 214, 134, 0, 0, 0, 0, 175, 177, 181, 158, 104, 117, 139, 255, 123, 139, 167, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 123, 138, 166, 255, 112, 126, 152, 255, 103, 116, 139, 255, 93, 104, 126, 255, 86, 97, 117, 255, 90, 101, 122, 255, 101, 114, 137, 255, 118, 132, 159, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 133, 149, 179, 255, 159, 175, 204, 255, 182, 192, 209, 61, 92, 96, 102, 191, 89, 100, 120, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 173, 255, 128, 144, 174, 255, 141, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 112, 126, 151, 255, 119, 134, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 210, 211, 9, 124, 127, 131, 186, 68, 77, 92, 255, 110, 124, 150, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 107, 120, 144, 255, 76, 85, 102, 255, 71, 77, 87, 255, 82, 86, 93, 255, 87, 90, 95, 255, 72, 76, 82, 255, 47, 53, 62, 255, 71, 80, 96, 255, 107, 120, 144, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 125, 139, 163, 255, 180, 195, 220, 255, 190, 205, 231, 177, 0, 0, 0, 0, 0, 0, 0, 0, 129, 131, 135, 89, 72, 79, 92, 255, 108, 122, 147, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 116, 131, 158, 255, 103, 116, 140, 255, 71, 79, 94, 255, 80, 85, 93, 255, 97, 100, 106, 255, 73, 77, 82, 213, 78, 82, 88, 255, 48, 54, 63, 255, 72, 82, 99, 255, 112, 127, 152, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 125, 140, 166, 255, 159, 178, 209, 255, 179, 192, 215, 156, 0, 0, 0, 0, 116, 119, 124, 178, 80, 90, 108, 255, 117, 131, 159, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 119, 134, 161, 255, 110, 124, 150, 255, 97, 109, 131, 255, 85, 95, 115, 255, 88, 100, 120, 255, 102, 115, 138, 255, 118, 132, 159, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 126, 142, 171, 255, 136, 154, 185, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 127, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 139, 152, 178, 255, 200, 204, 211, 220, 0, 0, 0, 0, 152, 155, 161, 158, 113, 127, 153, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 119, 133, 160, 255, 80, 90, 108, 255, 74, 79, 89, 255, 83, 87, 94, 255, 93, 97, 102, 255, 61, 65, 71, 176, 87, 91, 96, 249, 74, 78, 85, 255, 53, 60, 71, 255, 105, 118, 142, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 129, 145, 175, 255, 146, 162, 193, 255, 182, 191, 207, 103, 92, 96, 102, 191, 87, 98, 118, 255, 123, 138, 166, 255, 123, 138, 167, 255, 124, 140, 168, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 128, 143, 173, 255, 128, 143, 173, 255, 126, 141, 170, 255, 124, 139, 168, 255, 124, 139, 168, 255, 126, 142, 171, 255, 140, 154, 181, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 112, 126, 151, 255, 119, 134, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 141, 144, 27, 82, 87, 94, 255, 93, 105, 127, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 112, 126, 152, 255, 87, 98, 118, 255, 136, 141, 152, 255, 158, 165, 178, 135, 180, 187, 200, 126, 189, 197, 209, 126, 161, 166, 177, 126, 147, 151, 158, 240, 60, 64, 71, 255, 57, 65, 78, 255, 109, 122, 147, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 116, 130, 156, 255, 151, 167, 192, 255, 183, 199, 230, 245, 217, 223, 237, 60, 200, 201, 202, 16, 100, 103, 109, 201, 78, 89, 107, 255, 115, 130, 156, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 109, 122, 147, 255, 93, 100, 113, 253, 148, 150, 154, 173, 150, 152, 154, 46, 214, 214, 215, 46, 209, 210, 211, 23, 174, 176, 178, 46, 115, 118, 121, 105, 74, 78, 83, 251, 66, 75, 90, 255, 116, 131, 157, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 116, 131, 158, 255, 116, 130, 157, 255, 116, 130, 157, 255, 117, 131, 158, 255, 118, 132, 159, 255, 126, 141, 170, 255, 148, 161, 185, 241, 195, 199, 206, 66, 75, 80, 88, 217, 95, 107, 128, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 119, 133, 160, 255, 95, 107, 129, 255, 71, 78, 89, 255, 82, 86, 93, 246, 59, 63, 69, 182, 84, 87, 93, 255, 60, 64, 72, 255, 57, 65, 78, 255, 107, 121, 145, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 126, 141, 171, 255, 136, 153, 185, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 133, 146, 170, 255, 193, 196, 202, 220, 0, 0, 0, 0, 151, 155, 164, 158, 95, 105, 123, 255, 87, 97, 117, 255, 84, 95, 114, 255, 83, 94, 113, 255, 83, 93, 112, 255, 82, 92, 111, 255, 81, 91, 110, 255, 80, 90, 108, 255, 79, 89, 107, 255, 98, 110, 132, 255, 101, 110, 127, 255, 157, 166, 181, 255, 175, 183, 199, 255, 191, 200, 218, 255, 164, 176, 198, 212, 167, 177, 196, 252, 153, 163, 180, 255, 85, 93, 108, 255, 82, 92, 110, 255, 124, 139, 167, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 143, 172, 255, 135, 152, 183, 255, 193, 199, 211, 190, 90, 94, 98, 191, 48, 54, 65, 255, 55, 61, 74, 255, 56, 63, 76, 255, 89, 100, 121, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 143, 173, 255, 107, 121, 146, 255, 56, 63, 76, 255, 55, 62, 74, 255, 59, 67, 81, 255, 115, 126, 146, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 158, 174, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 181, 131, 53, 59, 69, 255, 106, 119, 144, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 123, 139, 168, 255, 125, 141, 169, 255, 140, 155, 183, 255, 142, 157, 185, 255, 139, 154, 182, 255, 136, 151, 178, 255, 130, 144, 169, 255, 126, 139, 164, 255, 106, 118, 140, 255, 78, 88, 106, 255, 103, 115, 138, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 116, 130, 156, 255, 125, 140, 167, 255, 164, 182, 216, 255, 170, 186, 216, 73, 159, 161, 163, 50, 80, 85, 93, 255, 99, 111, 134, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 118, 132, 159, 255, 114, 125, 146, 252, 164, 167, 172, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 162, 164, 104, 49, 53, 60, 250, 75, 85, 103, 255, 79, 89, 107, 255, 77, 87, 105, 255, 75, 85, 102, 255, 70, 80, 96, 255, 71, 80, 95, 255, 79, 87, 102, 255, 87, 94, 108, 255, 93, 100, 112, 255, 97, 103, 114, 255, 122, 129, 141, 255, 175, 178, 183, 191, 71, 77, 86, 255, 107, 120, 144, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 113, 127, 152, 255, 109, 115, 127, 245, 137, 139, 143, 97, 184, 185, 187, 43, 209, 210, 211, 5, 199, 200, 201, 48, 112, 115, 119, 57, 92, 95, 99, 221, 52, 59, 70, 255, 114, 129, 155, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 126, 141, 170, 255, 136, 153, 184, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 122, 137, 165, 255, 115, 129, 156, 255, 108, 122, 147, 255, 97, 110, 132, 255, 98, 110, 132, 255, 108, 121, 146, 255, 124, 136, 158, 255, 187, 190, 196, 180, 0, 0, 0, 0, 192, 193, 196, 110, 136, 139, 143, 177, 109, 113, 118, 177, 116, 120, 125, 223, 90, 96, 105, 255, 65, 73, 88, 255, 85, 96, 115, 255, 100, 113, 136, 255, 113, 127, 153, 255, 112, 126, 152, 255, 131, 147, 177, 255, 145, 162, 195, 255, 142, 160, 192, 255, 140, 157, 189, 255, 139, 156, 188, 255, 138, 155, 187, 255, 135, 152, 183, 255, 132, 149, 179, 255, 128, 144, 173, 255, 120, 135, 163, 255, 125, 141, 169, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 133, 150, 181, 255, 191, 197, 210, 190, 185, 186, 188, 133, 159, 161, 163, 177, 159, 161, 163, 177, 95, 98, 103, 233, 81, 91, 110, 255, 127, 142, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 144, 174, 255, 133, 149, 180, 255, 123, 127, 135, 211, 159, 161, 163, 177, 159, 161, 163, 177, 179, 181, 185, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 80, 96, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 158, 173, 203, 255, 205, 212, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 137, 140, 156, 54, 61, 74, 255, 112, 126, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 117, 131, 158, 255, 117, 131, 158, 255, 116, 131, 157, 255, 117, 132, 158, 255, 117, 131, 158, 255, 116, 130, 157, 255, 115, 129, 156, 255, 114, 129, 155, 255, 114, 128, 154, 255, 113, 127, 153, 255, 114, 128, 154, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 118, 132, 158, 255, 150, 168, 202, 255, 187, 199, 221, 176, 101, 104, 108, 50, 67, 72, 82, 255, 106, 119, 144, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 125, 140, 169, 255, 156, 164, 180, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 137, 140, 202, 65, 70, 75, 185, 83, 86, 92, 180, 103, 107, 111, 180, 126, 128, 132, 180, 151, 153, 156, 180, 144, 146, 149, 133, 73, 77, 81, 51, 111, 114, 118, 51, 142, 144, 146, 51, 172, 173, 175, 51, 206, 207, 208, 51, 124, 127, 130, 84, 67, 74, 84, 255, 111, 125, 151, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 122, 137, 164, 255, 127, 141, 167, 255, 175, 179, 187, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 163, 41, 65, 69, 76, 255, 100, 113, 135, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 126, 141, 170, 255, 136, 153, 184, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 120, 135, 162, 255, 94, 106, 127, 255, 68, 75, 87, 255, 78, 83, 91, 255, 83, 87, 93, 255, 86, 90, 96, 255, 89, 94, 102, 255, 112, 118, 127, 255, 165, 169, 175, 91, 0, 0, 0, 0, 0, 0, 0, 0, 155, 161, 173, 8, 159, 166, 178, 152, 130, 142, 163, 234, 131, 146, 174, 255, 132, 148, 179, 255, 133, 150, 180, 255, 130, 146, 176, 255, 128, 144, 173, 255, 126, 142, 170, 255, 126, 141, 169, 255, 126, 141, 170, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 170, 255, 133, 150, 181, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 110, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 145, 174, 255, 138, 155, 186, 255, 124, 133, 150, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 112, 125, 151, 255, 119, 133, 160, 255, 158, 173, 202, 255, 205, 211, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 107, 111, 156, 60, 68, 82, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 139, 157, 188, 255, 171, 185, 210, 202, 117, 119, 123, 87, 55, 62, 73, 255, 110, 123, 149, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 118, 132, 159, 255, 137, 153, 183, 255, 165, 174, 192, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 229, 23, 228, 228, 229, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 81, 85, 74, 62, 69, 80, 255, 113, 127, 152, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 126, 141, 170, 255, 151, 166, 195, 255, 223, 226, 232, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 165, 168, 15, 92, 96, 101, 255, 92, 104, 125, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 141, 170, 255, 136, 153, 184, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 138, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 114, 128, 155, 255, 105, 111, 123, 239, 117, 120, 124, 90, 154, 156, 159, 54, 198, 199, 200, 54, 209, 210, 211, 54, 193, 194, 195, 54, 176, 178, 180, 54, 209, 210, 211, 19, 0, 0, 0, 0, 213, 214, 218, 60, 146, 153, 166, 207, 125, 139, 164, 255, 126, 141, 171, 255, 125, 140, 169, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 150, 181, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 145, 174, 255, 139, 156, 186, 255, 135, 145, 165, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 111, 125, 151, 255, 118, 133, 160, 255, 157, 173, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 104, 108, 156, 59, 66, 79, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 129, 156, 255, 115, 130, 156, 255, 115, 130, 156, 255, 134, 150, 181, 255, 152, 166, 193, 202, 158, 160, 162, 179, 51, 57, 69, 255, 112, 126, 152, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 119, 133, 160, 255, 147, 165, 197, 255, 190, 199, 215, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 106, 109, 74, 63, 69, 79, 255, 111, 124, 150, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 120, 134, 162, 255, 128, 143, 172, 255, 168, 186, 219, 255, 200, 209, 229, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 160, 50, 80, 86, 96, 255, 108, 121, 146, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 170, 255, 135, 152, 183, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 138, 166, 255, 123, 138, 166, 255, 124, 139, 167, 255, 127, 141, 168, 255, 141, 149, 163, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 169, 173, 9, 140, 145, 156, 185, 114, 127, 151, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 150, 181, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 128, 145, 174, 255, 139, 156, 187, 255, 137, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 111, 125, 151, 255, 118, 133, 160, 255, 157, 173, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 139, 142, 156, 48, 54, 65, 255, 112, 126, 151, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 155, 255, 113, 127, 152, 255, 109, 123, 148, 255, 109, 122, 147, 255, 108, 122, 147, 255, 108, 121, 146, 255, 107, 121, 145, 255, 107, 120, 144, 255, 106, 119, 144, 255, 106, 119, 144, 255, 105, 119, 143, 255, 105, 118, 142, 255, 103, 116, 140, 255, 100, 113, 136, 255, 100, 112, 135, 255, 99, 111, 133, 255, 98, 109, 132, 255, 96, 109, 131, 255, 96, 107, 130, 255, 94, 106, 128, 255, 93, 105, 127, 255, 110, 124, 149, 255, 157, 171, 198, 216, 165, 166, 168, 165, 50, 56, 67, 255, 109, 123, 148, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 118, 133, 160, 255, 154, 172, 206, 255, 171, 186, 214, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 167, 172, 29, 156, 163, 175, 187, 163, 171, 185, 196, 186, 193, 207, 196, 195, 203, 217, 196, 200, 208, 223, 196, 197, 207, 225, 149, 184, 201, 231, 67, 190, 207, 237, 67, 189, 206, 237, 67, 194, 209, 237, 67, 201, 213, 235, 67, 146, 150, 158, 122, 62, 66, 75, 255, 107, 119, 144, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 123, 137, 165, 255, 173, 188, 212, 255, 186, 204, 234, 200, 188, 202, 228, 67, 224, 229, 239, 26, 0, 0, 0, 0, 220, 224, 229, 40, 160, 166, 178, 76, 126, 133, 146, 229, 96, 107, 129, 255, 118, 132, 160, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 169, 255, 135, 152, 183, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 166, 255, 122, 138, 166, 255, 125, 141, 170, 255, 142, 156, 184, 255, 164, 172, 189, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 143, 148, 66, 105, 114, 130, 255, 120, 136, 163, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 167, 255, 118, 133, 160, 255, 111, 125, 150, 255, 97, 109, 131, 255, 92, 103, 125, 255, 89, 100, 121, 255, 84, 94, 113, 255, 81, 91, 110, 255, 75, 85, 102, 255, 95, 107, 129, 255, 123, 138, 167, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 134, 151, 182, 255, 191, 197, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 172, 255, 127, 143, 172, 255, 128, 144, 174, 255, 139, 155, 187, 255, 136, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 151, 255, 118, 133, 160, 255, 157, 173, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 166, 168, 123, 40, 46, 54, 255, 105, 118, 142, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 155, 255, 110, 123, 147, 255, 77, 83, 93, 255, 89, 94, 103, 255, 88, 94, 102, 255, 88, 93, 101, 255, 87, 92, 101, 255, 87, 92, 100, 255, 86, 91, 99, 255, 86, 91, 98, 255, 77, 82, 90, 255, 71, 75, 83, 255, 72, 77, 85, 255, 75, 79, 87, 255, 82, 87, 94, 255, 82, 86, 93, 255, 81, 86, 93, 255, 81, 85, 92, 255, 80, 84, 91, 255, 79, 83, 90, 255, 79, 83, 89, 255, 82, 86, 94, 255, 130, 136, 147, 242, 156, 158, 161, 107, 58, 63, 72, 255, 104, 117, 140, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 117, 132, 158, 255, 158, 176, 205, 255, 183, 199, 229, 216, 227, 233, 243, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 123, 144, 109, 122, 146, 255, 121, 136, 163, 255, 126, 142, 171, 255, 131, 148, 178, 255, 139, 156, 187, 255, 154, 172, 205, 255, 181, 198, 227, 255, 202, 215, 235, 255, 210, 220, 236, 255, 214, 224, 239, 255, 215, 227, 244, 255, 162, 171, 188, 236, 59, 63, 69, 241, 91, 102, 124, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 131, 144, 170, 255, 178, 191, 213, 255, 181, 199, 229, 255, 167, 184, 217, 217, 158, 174, 203, 193, 151, 165, 190, 230, 133, 147, 172, 255, 116, 130, 157, 255, 119, 134, 161, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 121, 136, 164, 255, 125, 140, 169, 255, 135, 152, 183, 255, 210, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 126, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 141, 170, 255, 144, 159, 186, 255, 171, 179, 195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 201, 203, 9, 107, 111, 118, 185, 100, 112, 133, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 105, 119, 143, 255, 69, 76, 90, 255, 73, 78, 87, 255, 81, 85, 91, 255, 64, 68, 75, 193, 62, 66, 72, 191, 83, 87, 92, 191, 101, 105, 109, 217, 64, 70, 80, 255, 102, 115, 139, 255, 125, 139, 168, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 134, 151, 182, 255, 191, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 128, 144, 174, 255, 139, 155, 187, 255, 136, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 133, 160, 255, 157, 172, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 90, 95, 27, 56, 60, 67, 255, 95, 106, 128, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 178, 191, 211, 255, 170, 181, 200, 255, 205, 209, 215, 106, 209, 210, 211, 64, 209, 210, 211, 64, 209, 210, 211, 64, 209, 210, 211, 64, 209, 210, 211, 64, 195, 197, 200, 118, 135, 142, 156, 237, 123, 134, 155, 255, 130, 141, 162, 255, 134, 145, 165, 255, 162, 172, 192, 255, 169, 180, 201, 255, 185, 196, 213, 255, 194, 203, 216, 255, 201, 208, 221, 255, 211, 217, 228, 255, 201, 207, 217, 255, 209, 215, 225, 255, 209, 215, 226, 215, 185, 186, 189, 69, 79, 82, 88, 255, 87, 97, 117, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 131, 145, 169, 255, 193, 208, 232, 255, 189, 205, 233, 152, 215, 223, 238, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 150, 157, 117, 89, 97, 112, 251, 111, 125, 151, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 160, 255, 121, 135, 163, 255, 123, 138, 166, 255, 126, 142, 169, 255, 131, 145, 170, 255, 140, 155, 180, 255, 173, 190, 218, 255, 189, 198, 213, 150, 102, 105, 109, 200, 63, 72, 86, 255, 117, 131, 158, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 123, 137, 164, 255, 136, 151, 179, 255, 140, 157, 188, 255, 137, 154, 185, 255, 130, 147, 176, 255, 123, 139, 167, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 164, 255, 125, 140, 169, 255, 135, 152, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 93, 105, 125, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 144, 159, 187, 255, 171, 179, 195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 175, 35, 98, 102, 110, 255, 107, 120, 145, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 125, 141, 170, 255, 110, 122, 145, 255, 129, 131, 135, 131, 143, 145, 148, 64, 208, 208, 209, 64, 219, 219, 220, 3, 228, 229, 232, 27, 159, 166, 180, 62, 134, 142, 159, 207, 109, 122, 146, 255, 122, 137, 165, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 125, 141, 170, 255, 134, 151, 182, 255, 192, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 91, 109, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 127, 142, 171, 255, 128, 144, 173, 255, 139, 155, 186, 255, 136, 147, 167, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, 178, 21, 91, 94, 98, 231, 63, 71, 85, 255, 112, 125, 151, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 133, 145, 168, 255, 190, 203, 224, 255, 181, 198, 226, 225, 191, 203, 226, 133, 181, 193, 213, 59, 184, 192, 207, 59, 161, 171, 188, 59, 166, 173, 185, 173, 122, 131, 147, 247, 112, 125, 151, 255, 118, 133, 161, 255, 119, 134, 162, 255, 121, 136, 164, 255, 126, 142, 171, 255, 133, 149, 179, 255, 146, 163, 192, 255, 161, 177, 201, 255, 175, 188, 209, 255, 184, 196, 215, 255, 190, 203, 222, 255, 199, 214, 236, 255, 179, 192, 215, 186, 212, 213, 216, 33, 97, 100, 104, 197, 58, 66, 79, 255, 113, 127, 153, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 117, 131, 157, 255, 152, 164, 185, 255, 191, 207, 231, 255, 184, 201, 230, 220, 200, 210, 228, 188, 160, 175, 204, 59, 163, 175, 197, 59, 180, 188, 202, 120, 139, 149, 168, 188, 111, 123, 143, 252, 109, 123, 148, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 125, 141, 170, 255, 150, 164, 189, 237, 188, 195, 208, 40, 139, 141, 144, 105, 56, 60, 68, 255, 98, 110, 133, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 125, 140, 169, 255, 135, 151, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 144, 159, 187, 255, 171, 179, 195, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 119, 123, 35, 77, 82, 92, 255, 111, 124, 150, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 129, 145, 174, 255, 172, 190, 220, 255, 190, 204, 230, 188, 159, 177, 210, 62, 189, 199, 217, 119, 186, 195, 212, 188, 160, 171, 193, 217, 139, 153, 179, 255, 127, 142, 171, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 125, 141, 170, 255, 134, 151, 182, 255, 192, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 90, 109, 255, 126, 142, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 142, 171, 255, 128, 144, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 202, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 154, 156, 124, 47, 51, 59, 255, 97, 109, 131, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 128, 141, 164, 255, 159, 176, 201, 255, 158, 177, 211, 255, 157, 174, 204, 255, 152, 166, 194, 255, 139, 153, 180, 255, 121, 135, 162, 255, 116, 130, 157, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 126, 141, 170, 255, 158, 172, 199, 243, 194, 202, 217, 57, 0, 0, 0, 0, 123, 125, 129, 82, 53, 57, 64, 255, 93, 105, 126, 255, 116, 130, 156, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 133, 147, 170, 255, 160, 178, 205, 255, 155, 174, 208, 255, 152, 170, 203, 255, 148, 164, 194, 255, 134, 149, 178, 255, 123, 138, 166, 255, 118, 133, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 117, 131, 157, 255, 155, 163, 178, 178, 0, 0, 0, 0, 200, 201, 202, 19, 86, 89, 93, 184, 57, 63, 76, 255, 110, 123, 149, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 121, 136, 163, 255, 125, 140, 168, 255, 134, 151, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 144, 159, 187, 255, 171, 180, 196, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 125, 128, 35, 74, 79, 87, 255, 108, 122, 146, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 154, 168, 191, 255, 172, 190, 219, 255, 160, 179, 214, 255, 151, 169, 202, 255, 142, 160, 193, 255, 136, 152, 183, 255, 128, 144, 173, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 125, 141, 169, 255, 134, 151, 182, 255, 192, 198, 210, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 90, 109, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 128, 144, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, 189, 19, 102, 104, 109, 233, 55, 61, 74, 255, 107, 120, 145, 255, 113, 126, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 118, 133, 160, 255, 121, 136, 163, 255, 120, 135, 163, 255, 118, 132, 159, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 115, 129, 155, 255, 114, 128, 154, 255, 118, 132, 156, 255, 176, 183, 195, 171, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 13, 93, 96, 100, 196, 53, 60, 71, 255, 107, 121, 145, 255, 116, 130, 156, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 119, 133, 161, 255, 122, 136, 164, 255, 122, 136, 164, 255, 118, 133, 160, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 159, 255, 112, 126, 152, 255, 114, 123, 141, 238, 188, 191, 198, 75, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 53, 82, 85, 90, 242, 62, 70, 84, 255, 110, 123, 148, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 121, 136, 163, 255, 125, 140, 168, 255, 134, 151, 182, 255, 209, 214, 223, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 145, 159, 187, 255, 171, 180, 196, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 181, 35, 89, 92, 98, 255, 93, 105, 126, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 126, 141, 168, 255, 128, 144, 172, 255, 127, 143, 172, 255, 125, 140, 169, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 141, 169, 255, 135, 151, 182, 255, 192, 199, 211, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 81, 90, 109, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 144, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 123, 126, 54, 59, 63, 68, 233, 59, 66, 80, 255, 107, 120, 145, 255, 113, 127, 152, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 129, 155, 255, 115, 129, 155, 255, 112, 125, 150, 255, 98, 110, 131, 255, 117, 125, 139, 187, 181, 184, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 181, 73, 75, 79, 84, 238, 60, 68, 81, 255, 106, 120, 143, 255, 116, 130, 156, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 131, 158, 255, 109, 122, 147, 255, 99, 108, 126, 255, 167, 171, 177, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 172, 90, 82, 85, 90, 242, 56, 63, 75, 255, 98, 110, 132, 255, 117, 131, 158, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 119, 133, 161, 255, 112, 126, 151, 255, 112, 126, 151, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 121, 135, 163, 255, 125, 140, 168, 255, 134, 151, 181, 255, 209, 214, 222, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 122, 137, 165, 255, 122, 137, 165, 255, 125, 140, 169, 255, 145, 160, 187, 255, 172, 180, 196, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 228, 229, 10, 110, 113, 117, 189, 61, 69, 83, 255, 120, 135, 162, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 135, 152, 183, 255, 193, 200, 211, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 80, 90, 109, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 126, 142, 171, 255, 126, 142, 171, 255, 127, 143, 173, 255, 138, 155, 186, 255, 136, 147, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 125, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 111, 114, 53, 59, 62, 68, 234, 57, 65, 78, 255, 102, 114, 137, 255, 112, 126, 151, 255, 113, 127, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 155, 255, 113, 127, 154, 255, 104, 117, 141, 255, 88, 98, 116, 255, 103, 109, 120, 187, 134, 138, 145, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 141, 144, 73, 82, 85, 90, 238, 52, 59, 70, 255, 98, 111, 133, 255, 115, 129, 155, 255, 116, 130, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 114, 129, 155, 255, 101, 113, 136, 255, 89, 98, 113, 255, 148, 151, 157, 173, 203, 205, 207, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 162, 58, 82, 86, 90, 184, 52, 57, 65, 255, 67, 75, 91, 255, 98, 110, 133, 255, 113, 126, 152, 255, 117, 131, 159, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 132, 158, 255, 114, 128, 154, 255, 107, 120, 145, 255, 84, 94, 114, 255, 58, 65, 79, 255, 101, 114, 137, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 124, 139, 168, 255, 134, 150, 181, 255, 209, 214, 222, 151, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 122, 137, 164, 255, 122, 137, 165, 255, 125, 140, 169, 255, 145, 160, 188, 255, 172, 180, 197, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 147, 150, 72, 62, 66, 73, 255, 88, 98, 118, 255, 122, 137, 164, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 168, 255, 124, 139, 168, 255, 124, 139, 168, 255, 121, 136, 165, 255, 124, 139, 167, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 125, 140, 169, 255, 142, 159, 191, 255, 192, 200, 216, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 80, 90, 109, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 142, 170, 255, 127, 143, 172, 255, 138, 154, 186, 255, 136, 146, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 71, 79, 96, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 110, 124, 149, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 111, 124, 150, 255, 118, 132, 159, 255, 157, 172, 201, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 118, 52, 78, 82, 87, 234, 47, 52, 61, 255, 75, 84, 101, 255, 105, 118, 141, 255, 112, 126, 152, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 114, 128, 154, 255, 111, 125, 151, 255, 103, 116, 140, 255, 86, 97, 117, 255, 82, 89, 102, 255, 128, 132, 138, 187, 142, 144, 148, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, 189, 72, 101, 103, 108, 216, 47, 52, 61, 255, 78, 88, 106, 255, 105, 118, 141, 255, 115, 129, 155, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 115, 130, 155, 255, 104, 117, 141, 255, 81, 91, 109, 255, 87, 92, 103, 239, 166, 167, 171, 166, 209, 210, 211, 14, 0, 0, 0, 0, 0, 0, 0, 0, 190, 192, 196, 13, 196, 202, 212, 147, 202, 210, 225, 140, 149, 168, 202, 46, 197, 204, 217, 142, 190, 195, 203, 193, 152, 156, 163, 255, 71, 76, 85, 255, 46, 52, 63, 255, 59, 66, 80, 255, 72, 81, 98, 255, 86, 97, 117, 255, 89, 100, 120, 255, 87, 98, 118, 255, 85, 96, 115, 255, 80, 90, 108, 255, 69, 78, 94, 255, 66, 73, 85, 255, 68, 74, 83, 252, 87, 91, 97, 212, 68, 72, 78, 255, 102, 114, 137, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 120, 135, 163, 255, 124, 139, 168, 255, 137, 153, 182, 255, 192, 198, 210, 63, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 92, 104, 125, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 121, 136, 164, 255, 122, 137, 164, 255, 125, 141, 169, 255, 145, 160, 188, 255, 172, 181, 197, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 220, 10, 132, 134, 137, 166, 52, 57, 65, 255, 87, 98, 118, 255, 120, 134, 161, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 123, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 124, 139, 167, 255, 123, 138, 165, 255, 116, 130, 158, 255, 98, 111, 134, 255, 77, 86, 104, 255, 114, 128, 155, 255, 124, 139, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 124, 140, 168, 255, 125, 140, 168, 255, 125, 140, 169, 255, 125, 140, 169, 255, 147, 164, 198, 255, 174, 187, 213, 202, 194, 202, 216, 11, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 80, 90, 109, 255, 125, 141, 170, 255, 125, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 126, 141, 170, 255, 127, 143, 172, 255, 138, 154, 185, 255, 136, 146, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84, 88, 218, 68, 76, 93, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 104, 117, 141, 255, 105, 117, 142, 255, 105, 117, 142, 255, 105, 117, 142, 255, 112, 126, 152, 255, 155, 171, 200, 255, 205, 211, 223, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 212, 46, 126, 128, 131, 152, 60, 63, 69, 235, 49, 55, 64, 255, 68, 77, 92, 255, 86, 97, 117, 255, 103, 116, 140, 255, 110, 123, 149, 255, 112, 126, 151, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 113, 127, 153, 255, 112, 126, 152, 255, 111, 125, 151, 255, 109, 122, 147, 255, 101, 114, 137, 255, 90, 101, 122, 255, 73, 82, 98, 255, 75, 80, 91, 255, 102, 106, 113, 221, 149, 151, 155, 112, 228, 228, 229, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 138, 141, 11, 127, 129, 132, 164, 71, 74, 80, 239, 51, 56, 65, 255, 68, 76, 92, 255, 95, 106, 128, 255, 108, 121, 145, 255, 112, 125, 151, 255, 115, 129, 156, 255, 116, 130, 157, 255, 116, 130, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 157, 255, 116, 131, 158, 255, 117, 131, 158, 255, 117, 131, 158, 255, 115, 129, 156, 255, 113, 127, 153, 255, 106, 119, 143, 255, 92, 104, 125, 255, 75, 85, 101, 255, 78, 84, 94, 255, 105, 109, 115, 171, 167, 169, 172, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 214, 216, 61, 100, 107, 119, 246, 126, 141, 171, 255, 149, 168, 202, 255, 151, 170, 204, 255, 152, 170, 204, 255, 156, 174, 207, 255, 160, 178, 204, 255, 167, 182, 201, 255, 168, 178, 194, 255, 164, 173, 186, 255, 166, 173, 185, 255, 141, 150, 164, 255, 82, 86, 94, 249, 85, 88, 93, 212, 98, 101, 106, 212, 120, 123, 126, 200, 88, 91, 95, 83, 165, 167, 169, 77, 158, 160, 163, 15, 92, 96, 101, 255, 102, 113, 137, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 120, 135, 163, 255, 122, 137, 165, 255, 139, 154, 181, 255, 144, 156, 178, 22, 0, 0, 0, 0, 0, 0, 0, 0, 83, 87, 93, 223, 88, 100, 120, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 114, 128, 155, 255, 115, 129, 155, 255, 118, 133, 160, 255, 143, 158, 185, 255, 172, 181, 197, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 194, 10, 140, 142, 145, 162, 50, 54, 61, 238, 64, 72, 87, 255, 101, 113, 136, 255, 118, 132, 159, 255, 121, 136, 164, 255, 123, 138, 166, 255, 123, 138, 166, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 138, 167, 255, 123, 139, 167, 255, 120, 135, 162, 255, 116, 130, 157, 255, 104, 117, 140, 255, 81, 91, 109, 255, 66, 73, 85, 255, 73, 77, 85, 238, 50, 55, 63, 251, 98, 110, 132, 255, 119, 133, 161, 255, 119, 134, 162, 255, 120, 135, 163, 255, 121, 136, 164, 255, 121, 137, 164, 255, 122, 138, 165, 255, 123, 138, 166, 255, 124, 139, 167, 255, 133, 149, 179, 255, 144, 161, 190, 255, 175, 183, 198, 151, 0, 0, 0, 0, 0, 0, 0, 0, 95, 99, 104, 182, 77, 87, 105, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 161, 255, 118, 133, 161, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 133, 161, 255, 120, 134, 162, 255, 133, 148, 178, 255, 136, 146, 166, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 99, 218, 51, 56, 64, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 65, 76, 255, 60, 66, 76, 255, 60, 66, 76, 255, 60, 66, 76, 255, 65, 71, 82, 255, 131, 141, 161, 255, 207, 213, 224, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 171, 173, 45, 125, 128, 131, 152, 89, 92, 96, 215, 50, 54, 60, 234, 54, 59, 67, 255, 56, 63, 75, 255, 63, 72, 86, 255, 72, 82, 98, 255, 79, 89, 107, 255, 83, 93, 112, 255, 83, 94, 113, 255, 80, 90, 108, 255, 75, 85, 102, 255, 67, 76, 91, 255, 64, 71, 86, 255, 64, 71, 82, 255, 67, 72, 80, 255, 76, 80, 87, 222, 113, 115, 120, 175, 161, 163, 165, 86, 228, 228, 229, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 206, 207, 53, 106, 109, 112, 99, 87, 90, 95, 218, 59, 63, 69, 255, 55, 61, 70, 255, 56, 63, 76, 255, 69, 78, 94, 255, 81, 91, 110, 255, 84, 94, 114, 255, 90, 101, 122, 255, 92, 104, 125, 255, 92, 104, 125, 255, 91, 102, 123, 255, 87, 98, 118, 255, 80, 90, 108, 255, 68, 77, 93, 255, 66, 73, 87, 255, 65, 70, 80, 255, 74, 79, 85, 219, 104, 107, 111, 165, 156, 158, 161, 86, 228, 228, 229, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 101, 105, 200, 68, 77, 93, 255, 120, 134, 161, 255, 121, 136, 164, 255, 122, 137, 165, 255, 123, 139, 166, 255, 125, 140, 166, 255, 127, 141, 166, 255, 127, 141, 166, 255, 127, 141, 166, 255, 132, 144, 169, 255, 186, 198, 218, 255, 183, 194, 213, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 219, 222, 3, 189, 191, 195, 118, 79, 86, 98, 255, 109, 122, 148, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 163, 255, 125, 140, 169, 255, 140, 152, 176, 255, 156, 164, 180, 22, 0, 0, 0, 0, 0, 0, 0, 0, 92, 95, 100, 223, 58, 64, 73, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 62, 68, 79, 255, 63, 70, 81, 255, 108, 117, 133, 255, 172, 180, 193, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 140, 143, 63, 102, 105, 109, 218, 57, 61, 68, 255, 57, 64, 76, 255, 67, 75, 90, 255, 79, 89, 107, 255, 88, 98, 119, 255, 95, 106, 128, 255, 90, 101, 122, 255, 86, 96, 117, 255, 80, 90, 109, 255, 67, 75, 89, 255, 66, 72, 83, 255, 60, 64, 72, 237, 100, 103, 108, 215, 108, 111, 115, 96, 199, 200, 202, 51, 97, 100, 104, 228, 60, 67, 77, 255, 70, 76, 89, 255, 73, 80, 93, 255, 76, 84, 98, 255, 79, 87, 102, 255, 82, 90, 105, 255, 84, 93, 109, 255, 86, 96, 112, 255, 88, 98, 114, 255, 90, 100, 117, 255, 95, 106, 124, 255, 120, 129, 146, 234, 164, 169, 177, 44, 0, 0, 0, 0, 103, 107, 111, 182, 57, 62, 72, 255, 63, 69, 80, 255, 63, 69, 80, 255, 63, 69, 80, 255, 63, 69, 81, 255, 63, 69, 81, 255, 63, 69, 81, 255, 63, 69, 81, 255, 63, 69, 81, 255, 64, 70, 81, 255, 88, 97, 112, 255, 138, 147, 164, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 152, 154, 76, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 144, 148, 154, 89, 220, 224, 230, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 194, 43, 124, 126, 130, 89, 144, 146, 149, 214, 111, 114, 117, 217, 103, 106, 110, 217, 83, 86, 91, 217, 69, 73, 79, 217, 75, 79, 85, 217, 87, 90, 95, 217, 107, 110, 114, 217, 123, 126, 129, 217, 120, 122, 125, 172, 105, 108, 111, 89, 187, 188, 189, 89, 219, 219, 220, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 220, 8, 195, 195, 197, 89, 122, 124, 128, 89, 124, 127, 130, 160, 106, 109, 113, 217, 82, 85, 90, 217, 74, 78, 83, 217, 57, 61, 67, 217, 58, 63, 69, 217, 58, 62, 69, 217, 58, 62, 68, 217, 73, 76, 82, 217, 100, 103, 108, 217, 125, 128, 131, 217, 80, 83, 88, 98, 155, 156, 159, 89, 191, 192, 194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 111, 115, 116, 54, 59, 70, 255, 111, 124, 149, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 152, 165, 188, 255, 187, 204, 231, 243, 183, 199, 228, 166, 204, 213, 228, 166, 209, 215, 227, 166, 197, 204, 217, 166, 162, 172, 190, 173, 128, 138, 157, 255, 105, 118, 142, 255, 118, 133, 160, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 123, 138, 166, 255, 145, 155, 173, 239, 198, 202, 209, 19, 0, 0, 0, 0, 0, 0, 0, 0, 149, 151, 154, 78, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 133, 136, 139, 89, 183, 186, 190, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 210, 211, 7, 169, 170, 173, 89, 130, 132, 135, 161, 123, 125, 128, 217, 99, 102, 106, 217, 77, 81, 86, 217, 57, 62, 68, 217, 76, 80, 85, 217, 88, 92, 97, 217, 108, 111, 115, 217, 111, 114, 117, 158, 127, 129, 132, 89, 187, 188, 190, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 166, 168, 79, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 135, 138, 143, 89, 169, 173, 179, 23, 0, 0, 0, 0, 157, 158, 161, 63, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 117, 120, 123, 89, 120, 123, 127, 89, 162, 166, 173, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 149, 151, 71, 62, 67, 74, 255, 95, 107, 129, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 120, 134, 161, 255, 152, 165, 187, 255, 167, 184, 214, 255, 156, 175, 210, 255, 146, 164, 197, 255, 140, 157, 189, 255, 132, 148, 178, 255, 121, 137, 164, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 120, 135, 162, 255, 115, 129, 155, 255, 143, 151, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 220, 26, 100, 103, 107, 202, 55, 62, 75, 255, 111, 124, 150, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 122, 137, 165, 255, 122, 136, 164, 255, 120, 135, 163, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 119, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 120, 134, 162, 255, 115, 129, 155, 255, 115, 124, 141, 255, 200, 202, 208, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 160, 162, 60, 72, 76, 81, 248, 67, 75, 91, 255, 112, 126, 152, 255, 118, 132, 159, 255, 118, 132, 159, 255, 118, 132, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 162, 255, 120, 134, 162, 255, 112, 125, 151, 255, 91, 101, 119, 255, 159, 162, 169, 172, 222, 223, 225, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 226, 234, 2, 216, 221, 230, 30, 197, 204, 217, 30, 201, 208, 220, 30, 221, 225, 233, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 227, 234, 5, 219, 223, 232, 30, 215, 220, 229, 30, 221, 226, 233, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 159, 162, 108, 71, 75, 80, 248, 65, 73, 87, 255, 108, 121, 145, 255, 117, 131, 158, 255, 118, 132, 159, 255, 118, 132, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 118, 132, 159, 255, 105, 118, 142, 255, 81, 90, 106, 255, 129, 132, 139, 172, 167, 169, 172, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 183, 201, 136, 158, 170, 192, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 161, 172, 194, 156, 178, 188, 205, 156, 185, 194, 210, 48, 0, 0, 0, 0, 203, 210, 221, 117, 158, 170, 192, 156, 158, 170, 192, 156, 167, 178, 198, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 203, 216, 104, 157, 169, 192, 156, 158, 170, 192, 156, 176, 185, 203, 136, 0, 0, 0, 0, 0, 0, 0, 0, 175, 185, 203, 2, 200, 207, 219, 102, 162, 174, 195, 162, 165, 176, 197, 255, 155, 167, 190, 255, 157, 169, 191, 255, 168, 179, 199, 253, 169, 180, 199, 155, 170, 181, 200, 27, 200, 207, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 173, 194, 139, 158, 170, 192, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 158, 170, 193, 156, 159, 171, 192, 156, 172, 182, 201, 156, 205, 211, 223, 118, 202, 209, 221, 6, 0, 0, 0, 0, 171, 182, 201, 119, 158, 170, 192, 156, 159, 171, 193, 156, 176, 186, 204, 56, 0, 0, 0, 0, 0, 0, 0, 0, 190, 198, 213, 18, 182, 191, 208, 114, 159, 171, 193, 171, 167, 177, 198, 255, 164, 175, 196, 255, 167, 178, 198, 243, 161, 173, 194, 156, 182, 191, 207, 78, 201, 208, 220, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 171, 173, 107, 77, 81, 85, 236, 48, 54, 64, 255, 84, 94, 114, 255, 112, 125, 150, 255, 117, 131, 158, 255, 118, 132, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 118, 133, 160, 255, 119, 133, 160, 255, 119, 133, 161, 255, 119, 133, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 119, 134, 161, 255, 117, 131, 158, 255, 104, 118, 141, 255, 82, 92, 111, 255, 72, 78, 89, 244, 145, 147, 151, 172, 164, 166, 168, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 160, 184, 223, 127, 143, 172, 255, 127, 143, 172, 255, 129, 144, 173, 255, 129, 145, 173, 255, 129, 145, 173, 255, 127, 143, 172, 255, 127, 143, 172, 255, 142, 156, 181, 227, 179, 188, 205, 48, 187, 196, 211, 192, 127, 143, 172, 255, 127, 143, 172, 255, 140, 154, 180, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 187, 204, 171, 127, 143, 172, 255, 127, 143, 172, 255, 151, 165, 188, 223, 0, 0, 0, 0, 162, 173, 194, 2, 152, 165, 188, 110, 136, 151, 178, 255, 127, 143, 172, 255, 129, 144, 173, 255, 134, 149, 177, 255, 133, 148, 176, 255, 128, 144, 172, 255, 127, 143, 172, 255, 144, 158, 183, 255, 189, 197, 212, 91, 219, 223, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 147, 175, 228, 127, 143, 172, 255, 127, 143, 172, 255, 129, 144, 173, 255, 129, 145, 173, 255, 129, 145, 173, 255, 128, 143, 172, 255, 127, 143, 172, 255, 139, 154, 180, 255, 189, 198, 212, 132, 0, 0, 0, 0, 146, 160, 185, 194, 127, 143, 172, 255, 128, 144, 173, 255, 190, 198, 213, 199, 0, 0, 0, 0, 186, 195, 210, 42, 159, 171, 192, 223, 130, 146, 174, 255, 127, 143, 172, 255, 130, 146, 174, 255, 133, 148, 176, 255, 129, 145, 173, 255, 127, 143, 172, 255, 134, 149, 177, 255, 167, 178, 198, 184, 198, 205, 218, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 24, 98, 101, 105, 133, 61, 65, 71, 249, 51, 56, 67, 255, 71, 80, 96, 255, 97, 108, 131, 255, 109, 123, 148, 255, 114, 128, 155, 255, 116, 131, 157, 255, 117, 132, 158, 255, 117, 132, 159, 255, 117, 132, 159, 255, 117, 132, 158, 255, 116, 131, 157, 255, 117, 130, 157, 255, 116, 130, 156, 255, 112, 125, 152, 255, 101, 113, 136, 255, 87, 98, 118, 255, 70, 78, 93, 255, 62, 67, 77, 244, 88, 92, 98, 172, 141, 143, 146, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 143, 172, 255, 170, 181, 200, 205, 149, 162, 186, 105, 168, 179, 199, 144, 146, 159, 184, 251, 127, 143, 172, 255, 128, 143, 172, 255, 181, 191, 207, 189, 188, 196, 212, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 187, 205, 171, 127, 143, 172, 255, 127, 143, 172, 255, 152, 165, 188, 223, 0, 0, 0, 0, 180, 190, 207, 102, 133, 148, 176, 255, 127, 143, 172, 255, 133, 148, 176, 254, 159, 171, 193, 161, 201, 208, 220, 105, 191, 199, 214, 105, 146, 160, 185, 172, 131, 147, 175, 255, 134, 149, 177, 255, 174, 183, 202, 245, 208, 214, 225, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 142, 156, 182, 126, 148, 161, 186, 105, 149, 162, 186, 105, 155, 167, 190, 217, 128, 144, 173, 255, 127, 143, 172, 255, 148, 161, 185, 190, 228, 232, 238, 5, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 220, 225, 232, 31, 167, 178, 198, 224, 127, 143, 172, 255, 127, 143, 172, 255, 139, 154, 180, 220, 163, 174, 195, 105, 188, 196, 212, 105, 151, 164, 188, 120, 135, 150, 177, 247, 127, 143, 172, 255, 130, 146, 174, 255, 166, 177, 197, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 198, 200, 76, 117, 120, 123, 132, 98, 101, 105, 236, 52, 56, 62, 249, 47, 52, 60, 255, 55, 61, 72, 255, 61, 69, 83, 255, 67, 75, 91, 255, 70, 79, 95, 255, 71, 80, 97, 255, 68, 77, 93, 255, 66, 74, 89, 255, 63, 71, 85, 255, 62, 69, 81, 255, 55, 61, 71, 255, 64, 69, 76, 245, 99, 102, 107, 236, 121, 123, 127, 171, 173, 174, 176, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 144, 173, 255, 199, 206, 218, 176, 191, 199, 214, 19, 183, 192, 208, 19, 158, 170, 192, 208, 127, 143, 172, 255, 127, 143, 172, 255, 174, 184, 203, 189, 188, 196, 212, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 187, 205, 171, 127, 143, 172, 255, 127, 143, 172, 255, 152, 165, 188, 223, 227, 230, 236, 17, 166, 176, 197, 213, 127, 143, 172, 255, 128, 144, 172, 255, 172, 182, 201, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 182, 201, 2, 176, 186, 204, 107, 208, 214, 224, 107, 226, 230, 236, 55, 0, 0, 0, 0, 210, 216, 226, 78, 216, 221, 230, 148, 216, 221, 230, 148, 216, 221, 230, 148, 218, 223, 231, 87, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 184, 193, 209, 117, 149, 162, 186, 19, 148, 161, 185, 19, 170, 180, 200, 159, 130, 146, 174, 255, 127, 143, 172, 255, 148, 161, 185, 214, 228, 232, 238, 24, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 169, 180, 199, 53, 140, 154, 180, 255, 127, 143, 172, 255, 137, 151, 178, 255, 180, 189, 206, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 179, 199, 157, 127, 143, 172, 255, 127, 143, 172, 255, 150, 163, 187, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 212, 214, 74, 167, 169, 171, 110, 105, 108, 112, 110, 120, 122, 125, 192, 125, 127, 130, 239, 123, 125, 128, 239, 114, 117, 121, 239, 126, 129, 132, 239, 115, 118, 122, 165, 73, 77, 81, 110, 114, 117, 120, 110, 162, 164, 166, 110, 228, 228, 229, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 127, 143, 172, 255, 147, 161, 185, 255, 155, 167, 190, 255, 151, 164, 188, 255, 130, 146, 174, 255, 127, 143, 172, 255, 135, 150, 177, 255, 183, 192, 208, 115, 187, 196, 212, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 187, 205, 171, 127, 143, 172, 255, 127, 143, 172, 255, 152, 165, 188, 223, 216, 221, 230, 29, 162, 174, 195, 255, 127, 143, 172, 255, 130, 145, 174, 255, 162, 173, 195, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 165, 188, 247, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 255, 136, 151, 178, 150, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 135, 150, 177, 255, 137, 151, 178, 255, 136, 151, 178, 255, 128, 144, 173, 255, 127, 143, 172, 255, 131, 147, 175, 255, 179, 188, 206, 175, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 187, 195, 211, 126, 129, 145, 174, 255, 127, 143, 172, 255, 144, 158, 183, 230, 227, 231, 237, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 202, 215, 84, 127, 143, 172, 255, 127, 143, 172, 255, 132, 147, 175, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 127, 143, 172, 255, 133, 148, 176, 255, 135, 150, 177, 255, 135, 150, 177, 255, 137, 152, 179, 255, 146, 160, 184, 244, 169, 180, 199, 141, 226, 230, 236, 26, 187, 196, 211, 192, 127, 143, 172, 255, 127, 143, 172, 255, 141, 155, 181, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 187, 204, 171, 127, 143, 172, 255, 127, 143, 172, 255, 153, 166, 189, 223, 220, 224, 232, 28, 164, 175, 196, 250, 127, 143, 172, 255, 129, 144, 173, 255, 179, 189, 206, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 173, 194, 0, 158, 170, 192, 13, 169, 180, 199, 13, 186, 195, 211, 13, 196, 203, 217, 0, 160, 172, 193, 240, 141, 155, 181, 255, 141, 155, 181, 255, 140, 154, 181, 255, 147, 160, 185, 150, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 141, 156, 181, 250, 140, 155, 181, 246, 129, 145, 173, 255, 127, 143, 172, 255, 136, 151, 178, 255, 169, 180, 200, 141, 218, 222, 231, 24, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 184, 193, 209, 110, 131, 147, 175, 255, 127, 143, 172, 255, 139, 154, 180, 236, 204, 211, 222, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 190, 207, 100, 127, 143, 172, 255, 127, 143, 172, 255, 136, 151, 178, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 144, 173, 255, 197, 204, 217, 208, 216, 221, 230, 115, 216, 221, 230, 115, 221, 226, 233, 115, 230, 233, 239, 24, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 215, 187, 128, 144, 173, 255, 127, 143, 172, 255, 138, 152, 179, 231, 178, 187, 204, 49, 217, 222, 231, 11, 210, 216, 226, 33, 162, 174, 195, 217, 127, 143, 172, 255, 127, 143, 172, 255, 167, 178, 198, 217, 0, 0, 0, 0, 162, 174, 194, 150, 127, 143, 172, 255, 127, 143, 172, 255, 146, 160, 185, 247, 200, 207, 219, 67, 216, 221, 230, 11, 203, 210, 222, 11, 165, 176, 196, 80, 141, 155, 181, 255, 146, 160, 184, 255, 167, 178, 198, 255, 185, 194, 210, 5, 228, 232, 238, 53, 229, 233, 238, 115, 229, 233, 238, 115, 229, 233, 238, 115, 229, 233, 238, 68, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 188, 196, 212, 94, 204, 211, 222, 39, 146, 159, 184, 232, 127, 143, 172, 255, 130, 145, 174, 255, 160, 172, 193, 125, 213, 219, 228, 2, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 189, 196, 212, 51, 147, 160, 185, 252, 127, 143, 172, 255, 131, 146, 174, 255, 165, 176, 197, 158, 191, 199, 214, 11, 219, 224, 232, 11, 187, 195, 211, 26, 154, 166, 189, 211, 127, 143, 172, 255, 128, 143, 172, 255, 175, 185, 203, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 160, 185, 223, 127, 143, 172, 255, 128, 144, 173, 255, 201, 207, 220, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 200, 215, 61, 147, 160, 185, 253, 127, 143, 172, 255, 127, 143, 172, 255, 144, 158, 183, 255, 169, 180, 199, 255, 156, 169, 191, 255, 129, 145, 173, 255, 127, 143, 172, 255, 134, 149, 176, 254, 170, 180, 200, 91, 0, 0, 0, 0, 186, 194, 210, 25, 156, 168, 191, 252, 127, 143, 172, 255, 127, 143, 172, 255, 140, 154, 180, 255, 169, 179, 199, 255, 162, 174, 195, 255, 131, 147, 175, 255, 127, 143, 172, 255, 129, 145, 174, 255, 189, 198, 212, 184, 226, 230, 236, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 148, 176, 228, 127, 143, 172, 255, 127, 143, 172, 255, 127, 143, 172, 36, 0, 0, 0, 0, 185, 194, 209, 141, 132, 148, 175, 254, 127, 143, 172, 255, 143, 158, 183, 255, 181, 191, 207, 59, 0, 0, 0, 0, 147, 160, 185, 194, 127, 143, 172, 255, 129, 145, 173, 255, 191, 199, 213, 199, 0, 0, 0, 0, 160, 171, 193, 108, 132, 147, 175, 252, 127, 143, 172, 255, 130, 145, 173, 255, 157, 169, 191, 255, 170, 180, 200, 255, 150, 163, 187, 255, 127, 143, 172, 255, 127, 143, 172, 255, 144, 158, 183, 239, 190, 198, 213, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 164, 187, 219, 134, 149, 177, 250, 134, 149, 177, 250, 203, 209, 221, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 201, 215, 120, 157, 169, 192, 250, 134, 149, 177, 253, 130, 145, 173, 255, 128, 144, 173, 255, 129, 145, 173, 255, 133, 148, 176, 254, 147, 161, 185, 250, 177, 187, 205, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 222, 230, 72, 162, 174, 195, 196, 138, 153, 179, 250, 131, 146, 174, 255, 128, 144, 173, 255, 129, 145, 173, 255, 133, 149, 176, 255, 151, 164, 187, 249, 177, 186, 204, 121, 210, 215, 226, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 152, 178, 224, 134, 149, 177, 250, 134, 149, 177, 250, 134, 149, 177, 35, 0, 0, 0, 0, 0, 0, 0, 0, 157, 169, 191, 205, 134, 149, 176, 250, 134, 149, 176, 250, 158, 170, 192, 183, 0, 0, 0, 0, 151, 164, 188, 190, 134, 149, 176, 250, 135, 150, 177, 250, 193, 201, 215, 195, 0, 0, 0, 0, 0, 0, 0, 0, 171, 182, 201, 107, 153, 166, 189, 250, 134, 149, 176, 253, 129, 145, 173, 255, 128, 144, 173, 255, 130, 146, 174, 255, 137, 152, 179, 252, 169, 179, 199, 237, 189, 197, 212, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 226, 233, 89, 204, 210, 222, 123, 193, 201, 215, 123, 200, 206, 219, 123, 218, 222, 231, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 221, 230, 8, 209, 215, 225, 123, 194, 201, 215, 123, 199, 207, 219, 123, 223, 227, 234, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 237, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 224, 232, 82, 201, 208, 220, 123, 194, 202, 216, 123, 207, 213, 224, 123, 223, 227, 234, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(208, 48, imgdata); + return image; +} + diff --git a/iup/srcimglib/iup_imglib_logos8.h b/iup/srcimglib/iup_imglib_logos8.h new file mode 100755 index 0000000..c25cc89 --- /dev/null +++ b/iup/srcimglib/iup_imglib_logos8.h @@ -0,0 +1,1915 @@ +static Ihandle* load_image_LogoBR8(void) +{ + unsigned char imgdata[] = { + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 6, 6, 6, 6, 6, 6, 6, 14, 123, 125, 125, 125, 125, 125, 125, 125, 124, 106, 78, 30, 6, 6, 6, 6, 6, 6, 51, 125, 125, 125, 125, 125, 125, 125, 125, 124, 104, 62, 19, 6, 6, 6, 6, 6, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 32, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 50, 0, 0, 0, 0, 0, 89, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 105, 18, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 65, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 122, 20, 0, 0, 0, 8, 121, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 66, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 2, 108, 125, 125, 125, 110, 34, 34, 34, 36, 61, 125, 125, 125, 125, 42, 0, 0, 0, 31, 125, 125, 125, 125, 70, 39, 39, 39, 48, 99, 125, 125, 125, 108, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 24, 125, 125, 125, 125, 70, 0, 0, 0, 0, 0, 103, 125, 125, 125, 42, 0, 0, 0, 64, 125, 125, 125, 125, 24, 0, 0, 0, 0, 29, 125, 125, 125, 115, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 54, 125, 125, 125, 125, 38, 0, 0, 0, 0, 21, 120, 125, 125, 125, 22, 0, 0, 1, 104, 125, 125, 125, 109, 2, 0, 0, 0, 0, 33, 125, 125, 125, 91, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 94, 125, 125, 125, 125, 68, 59, 59, 59, 64, 111, 125, 125, 125, 73, 0, 0, 0, 23, 125, 125, 125, 125, 71, 0, 0, 0, 1, 27, 104, 125, 125, 125, 39, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 13, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 86, 7, 0, 0, 0, 52, 125, 125, 125, 125, 114, 105, 105, 105, 112, 125, 125, 125, 125, 75, 1, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 38, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 119, 29, 0, 0, 0, 0, 92, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 123, 59, 5, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 72, 125, 125, 125, 125, 83, 74, 74, 74, 93, 125, 125, 125, 125, 113, 15, 0, 0, 10, 123, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 89, 9, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 4, 111, 125, 125, 125, 111, 4, 0, 0, 0, 0, 79, 125, 125, 125, 125, 46, 0, 0, 35, 125, 125, 125, 125, 76, 41, 41, 45, 71, 125, 125, 125, 125, 60, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 27, 125, 125, 125, 125, 72, 0, 0, 0, 0, 0, 63, 125, 125, 125, 125, 52, 0, 0, 69, 125, 125, 125, 125, 28, 0, 0, 0, 0, 100, 125, 125, 125, 88, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 56, 125, 125, 125, 125, 38, 0, 0, 0, 0, 25, 116, 125, 125, 125, 125, 37, 0, 3, 109, 125, 125, 125, 113, 4, 0, 0, 0, 0, 90, 125, 125, 125, 94, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 97, 125, 125, 125, 125, 96, 90, 90, 90, 98, 124, 125, 125, 125, 125, 118, 12, 0, 26, 125, 125, 125, 125, 77, 0, 0, 0, 0, 0, 84, 125, 125, 125, 98, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 16, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 50, 0, 0, 55, 125, 125, 125, 125, 44, 0, 0, 0, 0, 0, 80, 125, 125, 125, 102, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 43, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 117, 47, 0, 0, 0, 95, 125, 125, 125, 125, 17, 0, 0, 0, 0, 0, 72, 125, 125, 125, 107, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 49, 82, 82, 82, 82, 82, 82, 82, 82, 82, 81, 72, 58, 40, 11, 0, 0, 0, 7, 85, 87, 87, 87, 67, 0, 0, 0, 0, 0, 0, 57, 101, 101, 101, 97, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125}; + + Ihandle* image = IupImage(48, 48, imgdata); + + IupSetAttribute(image, "0", "0 140 79"); + IupSetAttribute(image, "1", "1 140 80"); + IupSetAttribute(image, "2", "3 141 81"); + IupSetAttribute(image, "3", "4 141 81"); + IupSetAttribute(image, "4", "4 142 82"); + IupSetAttribute(image, "5", "5 142 83"); + IupSetAttribute(image, "6", "8 142 83"); + IupSetAttribute(image, "7", "12 145 87"); + IupSetAttribute(image, "8", "16 146 89"); + IupSetAttribute(image, "9", "19 148 92"); + IupSetAttribute(image, "10", "20 149 92"); + IupSetAttribute(image, "11", "22 149 93"); + IupSetAttribute(image, "12", "22 149 94"); + IupSetAttribute(image, "13", "23 150 94"); + IupSetAttribute(image, "14", "26 150 95"); + IupSetAttribute(image, "15", "25 151 96"); + IupSetAttribute(image, "16", "28 152 98"); + IupSetAttribute(image, "17", "31 153 100"); + IupSetAttribute(image, "18", "31 154 100"); + IupSetAttribute(image, "19", "35 154 101"); + IupSetAttribute(image, "20", "36 156 103"); + IupSetAttribute(image, "21", "38 157 105"); + IupSetAttribute(image, "22", "43 159 108"); + IupSetAttribute(image, "23", "51 162 114"); + IupSetAttribute(image, "24", "54 164 116"); + IupSetAttribute(image, "25", "56 164 117"); + IupSetAttribute(image, "26", "58 165 118"); + IupSetAttribute(image, "27", "61 166 120"); + IupSetAttribute(image, "28", "64 168 122"); + IupSetAttribute(image, "29", "66 169 124"); + IupSetAttribute(image, "30", "73 171 127"); + IupSetAttribute(image, "31", "85 177 137"); + IupSetAttribute(image, "32", "89 179 140"); + IupSetAttribute(image, "33", "90 180 140"); + IupSetAttribute(image, "34", "90 181 141"); + IupSetAttribute(image, "35", "92 180 141"); + IupSetAttribute(image, "36", "92 181 142"); + IupSetAttribute(image, "37", "94 182 143"); + IupSetAttribute(image, "38", "95 182 144"); + IupSetAttribute(image, "39", "97 183 145"); + IupSetAttribute(image, "40", "98 184 146"); + IupSetAttribute(image, "41", "99 185 147"); + IupSetAttribute(image, "42", "100 184 147"); + IupSetAttribute(image, "43", "101 185 148"); + IupSetAttribute(image, "44", "103 186 149"); + IupSetAttribute(image, "45", "104 186 150"); + IupSetAttribute(image, "46", "106 187 151"); + IupSetAttribute(image, "47", "110 189 154"); + IupSetAttribute(image, "48", "111 189 155"); + IupSetAttribute(image, "49", "115 191 157"); + IupSetAttribute(image, "50", "122 194 162"); + IupSetAttribute(image, "51", "124 194 163"); + IupSetAttribute(image, "52", "125 196 164"); + IupSetAttribute(image, "53", "255 204 48"); + IupSetAttribute(image, "54", "129 197 167"); + IupSetAttribute(image, "55", "132 199 169"); + IupSetAttribute(image, "56", "135 200 171"); + IupSetAttribute(image, "57", "140 202 174"); + IupSetAttribute(image, "58", "145 205 178"); + IupSetAttribute(image, "59", "146 205 179"); + IupSetAttribute(image, "60", "150 207 182"); + IupSetAttribute(image, "61", "155 209 185"); + IupSetAttribute(image, "62", "159 210 186"); + IupSetAttribute(image, "63", "157 210 187"); + IupSetAttribute(image, "64", "158 211 188"); + IupSetAttribute(image, "65", "163 213 190"); + IupSetAttribute(image, "66", "163 213 191"); + IupSetAttribute(image, "67", "165 213 191"); + IupSetAttribute(image, "68", "166 213 192"); + IupSetAttribute(image, "69", "165 214 192"); + IupSetAttribute(image, "70", "166 214 193"); + IupSetAttribute(image, "71", "168 215 194"); + IupSetAttribute(image, "72", "169 215 195"); + IupSetAttribute(image, "73", "170 216 195"); + IupSetAttribute(image, "74", "170 216 196"); + IupSetAttribute(image, "75", "172 217 197"); + IupSetAttribute(image, "76", "173 218 198"); + IupSetAttribute(image, "77", "175 218 199"); + IupSetAttribute(image, "78", "176 217 198"); + IupSetAttribute(image, "79", "177 219 200"); + IupSetAttribute(image, "80", "178 219 201"); + IupSetAttribute(image, "81", "178 220 201"); + IupSetAttribute(image, "82", "179 220 202"); + IupSetAttribute(image, "83", "182 222 204"); + IupSetAttribute(image, "84", "186 223 207"); + IupSetAttribute(image, "85", "188 223 207"); + IupSetAttribute(image, "86", "187 224 208"); + IupSetAttribute(image, "87", "189 224 208"); + IupSetAttribute(image, "88", "191 226 210"); + IupSetAttribute(image, "89", "192 226 211"); + IupSetAttribute(image, "90", "195 227 213"); + IupSetAttribute(image, "91", "199 229 215"); + IupSetAttribute(image, "92", "199 229 216"); + IupSetAttribute(image, "93", "201 230 217"); + IupSetAttribute(image, "94", "202 231 218"); + IupSetAttribute(image, "95", "205 232 220"); + IupSetAttribute(image, "96", "206 233 221"); + IupSetAttribute(image, "97", "209 233 222"); + IupSetAttribute(image, "98", "213 235 225"); + IupSetAttribute(image, "99", "216 237 228"); + IupSetAttribute(image, "100", "219 238 230"); + IupSetAttribute(image, "101", "221 239 231"); + IupSetAttribute(image, "102", "222 240 232"); + IupSetAttribute(image, "103", "230 243 236"); + IupSetAttribute(image, "104", "230 242 237"); + IupSetAttribute(image, "105", "230 244 238"); + IupSetAttribute(image, "106", "233 243 238"); + IupSetAttribute(image, "107", "233 244 239"); + IupSetAttribute(image, "108", "234 245 240"); + IupSetAttribute(image, "109", "236 246 241"); + IupSetAttribute(image, "110", "236 246 242"); + IupSetAttribute(image, "111", "238 247 243"); + IupSetAttribute(image, "112", "239 247 244"); + IupSetAttribute(image, "113", "241 248 245"); + IupSetAttribute(image, "114", "243 249 247"); + IupSetAttribute(image, "115", "244 249 247"); + IupSetAttribute(image, "116", "244 250 247"); + IupSetAttribute(image, "117", "246 251 249"); + IupSetAttribute(image, "118", "248 251 250"); + IupSetAttribute(image, "119", "248 252 250"); + IupSetAttribute(image, "120", "250 253 251"); + IupSetAttribute(image, "121", "250 253 252"); + IupSetAttribute(image, "122", "252 253 253"); + IupSetAttribute(image, "123", "252 254 253"); + IupSetAttribute(image, "124", "253 254 254"); + IupSetAttribute(image, "125", "254 255 255"); + IupSetAttribute(image, "126", "0 0 0"); + IupSetAttribute(image, "127", "0 0 0"); + IupSetAttribute(image, "128", "0 0 0"); + IupSetAttribute(image, "129", "0 0 0"); + IupSetAttribute(image, "130", "0 0 0"); + IupSetAttribute(image, "131", "0 0 0"); + IupSetAttribute(image, "132", "0 0 0"); + IupSetAttribute(image, "133", "0 0 0"); + IupSetAttribute(image, "134", "0 0 0"); + IupSetAttribute(image, "135", "0 0 0"); + IupSetAttribute(image, "136", "0 0 0"); + IupSetAttribute(image, "137", "0 0 0"); + IupSetAttribute(image, "138", "0 0 0"); + IupSetAttribute(image, "139", "0 0 0"); + IupSetAttribute(image, "140", "0 0 0"); + IupSetAttribute(image, "141", "0 0 0"); + IupSetAttribute(image, "142", "0 0 0"); + IupSetAttribute(image, "143", "0 0 0"); + IupSetAttribute(image, "144", "0 0 0"); + IupSetAttribute(image, "145", "0 0 0"); + IupSetAttribute(image, "146", "0 0 0"); + IupSetAttribute(image, "147", "0 0 0"); + IupSetAttribute(image, "148", "0 0 0"); + IupSetAttribute(image, "149", "0 0 0"); + IupSetAttribute(image, "150", "0 0 0"); + IupSetAttribute(image, "151", "0 0 0"); + IupSetAttribute(image, "152", "0 0 0"); + IupSetAttribute(image, "153", "0 0 0"); + IupSetAttribute(image, "154", "0 0 0"); + IupSetAttribute(image, "155", "0 0 0"); + IupSetAttribute(image, "156", "0 0 0"); + IupSetAttribute(image, "157", "0 0 0"); + IupSetAttribute(image, "158", "0 0 0"); + IupSetAttribute(image, "159", "0 0 0"); + IupSetAttribute(image, "160", "0 0 0"); + IupSetAttribute(image, "161", "0 0 0"); + IupSetAttribute(image, "162", "0 0 0"); + IupSetAttribute(image, "163", "0 0 0"); + IupSetAttribute(image, "164", "0 0 0"); + IupSetAttribute(image, "165", "0 0 0"); + IupSetAttribute(image, "166", "0 0 0"); + IupSetAttribute(image, "167", "0 0 0"); + IupSetAttribute(image, "168", "0 0 0"); + IupSetAttribute(image, "169", "0 0 0"); + IupSetAttribute(image, "170", "0 0 0"); + IupSetAttribute(image, "171", "0 0 0"); + IupSetAttribute(image, "172", "0 0 0"); + IupSetAttribute(image, "173", "0 0 0"); + IupSetAttribute(image, "174", "0 0 0"); + IupSetAttribute(image, "175", "0 0 0"); + IupSetAttribute(image, "176", "0 0 0"); + IupSetAttribute(image, "177", "0 0 0"); + IupSetAttribute(image, "178", "0 0 0"); + IupSetAttribute(image, "179", "0 0 0"); + IupSetAttribute(image, "180", "0 0 0"); + IupSetAttribute(image, "181", "0 0 0"); + IupSetAttribute(image, "182", "0 0 0"); + IupSetAttribute(image, "183", "0 0 0"); + IupSetAttribute(image, "184", "0 0 0"); + IupSetAttribute(image, "185", "0 0 0"); + IupSetAttribute(image, "186", "0 0 0"); + IupSetAttribute(image, "187", "0 0 0"); + IupSetAttribute(image, "188", "0 0 0"); + IupSetAttribute(image, "189", "0 0 0"); + IupSetAttribute(image, "190", "0 0 0"); + IupSetAttribute(image, "191", "0 0 0"); + IupSetAttribute(image, "192", "0 0 0"); + IupSetAttribute(image, "193", "0 0 0"); + IupSetAttribute(image, "194", "0 0 0"); + IupSetAttribute(image, "195", "0 0 0"); + IupSetAttribute(image, "196", "0 0 0"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_LogoPUC_Rio8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 222, 199, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 143, 151, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 148, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 35, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 232, 248, 193, 30, 30, 180, 244, 232, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 243, 219, 168, 30, 41, 154, 160, 41, 35, 162, 192, 244, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 192, 156, 173, 168, 30, 170, 172, 133, 158, 173, 160, 190, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 152, 32, 143, 27, 29, 31, 34, 29, 30, 132, 34, 150, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 232, 255, 255, 255, 255, 232, 156, 162, 155, 162, 154, 146, 145, 154, 162, 155, 160, 156, 227, 255, 255, 255, 255, 244, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 35, 174, 244, 255, 251, 244, 133, 34, 29, 41, 174, 134, 142, 174, 41, 30, 34, 147, 231, 251, 255, 244, 180, 35, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 41, 18, 200, 255, 232, 145, 41, 40, 173, 34, 40, 160, 162, 40, 40, 168, 133, 174, 143, 220, 255, 227, 35, 41, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 174, 41, 251, 255, 244, 162, 134, 154, 172, 162, 26, 154, 162, 34, 145, 168, 168, 30, 164, 227, 255, 255, 180, 174, 41, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 41, 174, 193, 255, 255, 251, 143, 30, 17, 33, 32, 133, 144, 145, 141, 34, 33, 26, 30, 145, 244, 255, 255, 200, 174, 174, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 174, 41, 244, 255, 255, 255, 156, 146, 154, 145, 147, 147, 134, 134, 147, 147, 144, 154, 154, 145, 251, 255, 255, 251, 174, 174, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 244, 197, 244, 255, 255, 255, 174, 174, 180, 248, 255, 255, 251, 148, 41, 41, 147, 41, 174, 142, 144, 174, 174, 133, 40, 41, 40, 251, 255, 255, 251, 193, 174, 41, 251, 255, 255, 248, 193, 232, 255, 255, 255, 255, + 255, 255, 255, 255, 232, 162, 162, 197, 251, 255, 135, 13, 119, 12, 232, 255, 251, 133, 41, 34, 173, 144, 40, 162, 168, 134, 133, 168, 144, 174, 33, 244, 255, 244, 27, 119, 13, 39, 251, 251, 200, 41, 41, 227, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 244, 152, 162, 160, 223, 251, 139, 122, 28, 41, 232, 255, 192, 144, 146, 168, 146, 18, 146, 154, 30, 144, 162, 162, 30, 163, 255, 244, 41, 35, 122, 138, 248, 232, 174, 41, 41, 244, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 196, 158, 145, 164, 161, 232, 186, 27, 18, 244, 255, 227, 18, 29, 132, 133, 146, 146, 153, 146, 147, 132, 30, 18, 196, 255, 251, 35, 27, 178, 244, 180, 41, 35, 35, 174, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 221, 161, 168, 160, 140, 154, 162, 35, 2, 174, 255, 255, 251, 33, 137, 129, 124, 11, 121, 120, 10, 123, 129, 130, 132, 244, 255, 255, 180, 2, 35, 41, 35, 35, 41, 174, 174, 193, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 156, 170, 148, 193, 164, 168, 31, 35, 16, 179, 251, 255, 255, 244, 186, 122, 127, 125, 131, 128, 126, 127, 127, 136, 232, 255, 255, 255, 193, 18, 27, 14, 41, 174, 180, 174, 41, 41, 244, 255, 255, 255, 255, + 255, 255, 255, 255, 227, 157, 173, 187, 187, 156, 188, 41, 35, 14, 31, 17, 177, 180, 180, 25, 9, 8, 174, 180, 180, 180, 7, 9, 12, 180, 180, 180, 21, 15, 14, 35, 41, 193, 41, 174, 180, 174, 41, 227, 251, 255, 255, 255, + 255, 255, 255, 251, 152, 156, 162, 188, 170, 173, 187, 41, 44, 52, 52, 54, 54, 53, 58, 62, 62, 62, 62, 64, 64, 62, 62, 62, 62, 58, 53, 54, 54, 52, 52, 43, 41, 180, 174, 174, 180, 41, 41, 41, 244, 255, 255, 255, + 255, 255, 255, 255, 251, 251, 188, 143, 164, 190, 232, 174, 44, 54, 54, 54, 58, 47, 56, 64, 44, 64, 49, 65, 65, 50, 63, 46, 63, 64, 42, 58, 58, 54, 54, 43, 41, 244, 180, 41, 35, 180, 244, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 248, 248, 146, 222, 255, 232, 5, 54, 48, 56, 64, 72, 51, 59, 82, 75, 76, 93, 93, 75, 76, 76, 74, 60, 36, 64, 61, 42, 54, 42, 227, 255, 232, 35, 232, 248, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 244, 244, 255, 255, 72, 58, 55, 71, 65, 76, 73, 76, 83, 84, 88, 107, 107, 94, 37, 77, 83, 75, 82, 65, 74, 74, 62, 47, 255, 255, 251, 232, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 64, 64, 40, 88, 88, 97, 86, 83, 40, 106, 114, 114, 114, 32, 78, 99, 83, 78, 92, 34, 63, 64, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 64, 63, 75, 147, 94, 34, 83, 174, 32, 74, 117, 117, 76, 40, 80, 99, 40, 91, 41, 73, 93, 63, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 93, 5, 94, 41, 41, 98, 34, 162, 162, 100, 118, 118, 101, 162, 160, 147, 148, 83, 147, 94, 6, 92, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 93, 79, 41, 91, 148, 151, 173, 173, 173, 103, 204, 204, 112, 168, 173, 173, 151, 151, 105, 82, 73, 93, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 94, 106, 83, 149, 86, 156, 172, 159, 154, 203, 207, 207, 207, 149, 158, 168, 162, 78, 148, 41, 106, 92, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 107, 20, 87, 102, 162, 172, 152, 205, 205, 210, 210, 210, 210, 205, 205, 174, 173, 168, 98, 108, 22, 94, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 193, 174, 174, 232, 255, 255, 255, 83, 114, 113, 82, 40, 162, 173, 180, 210, 213, 215, 215, 215, 215, 213, 210, 177, 173, 164, 97, 38, 113, 114, 72, 255, 255, 255, 244, 189, 161, 192, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 193, 41, 193, 174, 41, 244, 180, 174, 19, 115, 69, 101, 87, 162, 173, 179, 215, 215, 215, 216, 216, 215, 215, 215, 152, 173, 168, 86, 101, 71, 114, 66, 161, 187, 244, 156, 161, 198, 162, 187, 255, 255, 255, 255, + 255, 255, 255, 255, 41, 193, 255, 251, 41, 41, 35, 35, 20, 115, 117, 102, 147, 162, 166, 157, 233, 237, 238, 237, 233, 238, 238, 233, 157, 167, 168, 147, 99, 116, 115, 66, 145, 162, 147, 162, 242, 255, 222, 158, 248, 255, 255, 255, + 255, 255, 255, 232, 41, 174, 200, 232, 41, 41, 41, 35, 71, 117, 117, 110, 174, 168, 217, 251, 251, 251, 251, 251, 247, 251, 232, 232, 251, 226, 168, 176, 103, 117, 117, 72, 157, 149, 162, 168, 222, 231, 161, 162, 224, 255, 255, 255, + 255, 255, 244, 41, 174, 180, 41, 35, 174, 41, 174, 251, 83, 117, 109, 102, 102, 154, 217, 251, 3, 0, 41, 251, 247, 18, 14, 3, 193, 226, 162, 83, 102, 108, 117, 72, 251, 190, 162, 163, 154, 162, 189, 189, 162, 227, 255, 255, + 255, 255, 193, 41, 251, 255, 180, 174, 255, 232, 41, 232, 83, 117, 116, 102, 156, 162, 217, 251, 35, 3, 200, 251, 227, 35, 251, 232, 4, 226, 168, 156, 175, 116, 117, 72, 251, 158, 200, 255, 192, 161, 255, 255, 163, 191, 255, 255, + 255, 255, 180, 41, 244, 251, 177, 99, 241, 235, 80, 232, 83, 117, 83, 177, 103, 152, 217, 248, 1, 4, 14, 251, 230, 41, 251, 248, 14, 226, 160, 103, 181, 82, 116, 72, 251, 151, 208, 241, 193, 157, 251, 251, 161, 157, 251, 255, + 255, 251, 35, 41, 41, 174, 72, 187, 171, 171, 165, 249, 85, 117, 204, 111, 147, 156, 217, 180, 41, 227, 4, 227, 247, 4, 251, 193, 174, 226, 160, 147, 103, 204, 117, 72, 255, 192, 171, 171, 169, 102, 160, 160, 162, 154, 232, 255, + 255, 255, 251, 244, 193, 193, 91, 175, 34, 151, 163, 241, 99, 117, 108, 99, 201, 152, 217, 41, 200, 251, 180, 200, 244, 18, 232, 174, 180, 226, 156, 201, 102, 87, 117, 83, 255, 192, 173, 152, 165, 89, 198, 198, 243, 251, 255, 255, + 255, 255, 255, 255, 255, 255, 117, 87, 38, 67, 163, 238, 180, 115, 118, 110, 147, 149, 217, 251, 251, 251, 251, 251, 247, 251, 251, 251, 251, 225, 151, 142, 103, 118, 117, 175, 246, 165, 173, 152, 180, 93, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 202, 57, 152, 170, 151, 227, 227, 90, 117, 87, 112, 152, 168, 169, 218, 218, 169, 218, 218, 169, 217, 218, 218, 168, 156, 112, 101, 116, 109, 200, 238, 162, 173, 147, 87, 95, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 239, 215, 148, 47, 83, 187, 251, 71, 117, 116, 23, 175, 149, 179, 160, 147, 151, 185, 185, 152, 147, 162, 148, 146, 99, 35, 109, 117, 70, 251, 200, 71, 47, 41, 214, 236, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 195, 149, 168, 168, 235, 228, 74, 117, 204, 110, 102, 103, 175, 102, 209, 215, 215, 210, 83, 182, 102, 104, 101, 204, 117, 77, 200, 245, 84, 152, 168, 179, 249, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 161, 161, 47, 179, 249, 227, 71, 79, 112, 204, 207, 207, 207, 210, 210, 210, 210, 207, 207, 207, 204, 116, 79, 71, 200, 251, 193, 146, 83, 68, 227, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 70, 164, 148, 200, 251, 255, 244, 200, 193, 175, 81, 203, 207, 207, 207, 207, 203, 83, 99, 180, 200, 232, 251, 255, 228, 174, 24, 157, 189, 249, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 187, 147, 72, 147, 212, 251, 255, 255, 255, 255, 248, 180, 86, 204, 204, 101, 175, 248, 255, 255, 255, 255, 255, 235, 161, 36, 148, 152, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 40, 98, 173, 169, 239, 255, 255, 255, 255, 255, 255, 227, 78, 87, 200, 255, 255, 255, 255, 255, 255, 249, 192, 173, 173, 144, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 169, 188, 235, 255, 241, 251, 255, 255, 255, 255, 193, 183, 255, 255, 255, 255, 255, 241, 251, 228, 187, 191, 173, 200, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 90, 187, 173, 169, 200, 191, 192, 228, 245, 251, 255, 255, 255, 255, 251, 245, 229, 184, 169, 194, 171, 173, 187, 87, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 191, 173, 173, 173, 187, 174, 38, 134, 156, 174, 197, 199, 199, 195, 179, 149, 82, 30, 168, 189, 173, 173, 173, 191, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 192, 173, 173, 187, 72, 162, 151, 174, 38, 83, 168, 71, 161, 72, 154, 161, 45, 147, 189, 169, 173, 192, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 211, 169, 96, 193, 40, 152, 72, 47, 157, 146, 66, 161, 82, 151, 168, 38, 179, 108, 191, 227, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 239, 251, 241, 227, 193, 179, 174, 147, 152, 98, 189, 196, 227, 239, 251, 241, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 246, 246, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 232, 227, 200, 200, 200, 227, 227, 244, 255, 255, 244, 227, 200, 200, 227, 232, 255, 255, 255, 232, 227, 200, 227, 244, 255, 255, 255, 244, 200, 193, 193, 200, 232, 248, 227, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 244, 174, 193, 244, 232, 193, 174, 227, 255, 255, 251, 174, 174, 244, 255, 255, 255, 255, 255, 248, 174, 248, 255, 255, 251, 200, 180, 232, 251, 255, 251, 227, 174, 200, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 251, 180, 174, 232, 255, 255, 180, 174, 251, 255, 255, 255, 255, 255, 255, 180, 255, 255, 251, 193, 174, 244, 255, 255, 255, 255, 255, 232, 193, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 200, 174, 200, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 255, 232, 174, 200, 255, 255, 255, 255, 255, 255, 251, 200, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 227, 174, 200, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 255, 193, 174, 244, 255, 255, 255, 255, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 251, 180, 174, 232, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 251, 174, 174, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 180, 232, 232, 193, 174, 227, 255, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 244, 174, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 244, 232, 232, 248, 255, 255, 255, 255, 180, 174, 255, 255, 255, 255, 255, 255, 255, 180, 255, 248, 174, 174, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 180, 174, 251, 255, 255, 255, 255, 255, 251, 180, 255, 251, 174, 174, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 193, 174, 248, 255, 255, 255, 255, 255, 248, 193, 255, 255, 193, 174, 232, 255, 255, 255, 255, 255, 255, 255, 251, 251, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 200, 174, 244, 255, 255, 255, 255, 255, 232, 200, 255, 255, 244, 174, 180, 251, 255, 255, 255, 255, 255, 251, 227, 251, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 244, 174, 193, 255, 255, 255, 255, 255, 255, 255, 255, 248, 174, 193, 251, 255, 255, 255, 244, 180, 244, 255, 255, 255, 232, 174, 193, 248, 255, 255, 255, 251, 200, 244, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 232, 193, 174, 180, 227, 244, 255, 255, 255, 255, 255, 255, 255, 244, 180, 180, 200, 200, 193, 193, 244, 255, 255, 255, 255, 255, 232, 193, 174, 193, 200, 200, 200, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 251, 251, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 244, 244, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 244, 244, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 117, 202, 241, 255, 255, 215, 241, 255, 255, 241, 117, 117, 241, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 246, 241, 114, 255, 255, 204, 236, 255, 251, 93, 249, 249, 93, 251, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 117, 58, 239, 255, 255, 204, 236, 255, 246, 107, 255, 255, 95, 249, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 251, 234, 202, 255, 255, 204, 234, 255, 255, 117, 204, 204, 117, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 251, 251, 245, 255, 255, 246, 249, 255, 255, 255, 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(48, 79, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "18 18 18"); + IupSetAttribute(image, "2", "59 22 22"); + IupSetAttribute(image, "3", "35 35 35"); + IupSetAttribute(image, "4", "57 57 57"); + IupSetAttribute(image, "5", "55 75 122"); + IupSetAttribute(image, "6", "62 81 123"); + IupSetAttribute(image, "7", "87 20 29"); + IupSetAttribute(image, "8", "96 7 16"); + IupSetAttribute(image, "9", "118 5 15"); + IupSetAttribute(image, "10", "121 31 19"); + IupSetAttribute(image, "11", "120 33 20"); + IupSetAttribute(image, "12", "105 55 60"); + IupSetAttribute(image, "13", "121 43 43"); + IupSetAttribute(image, "14", "71 72 74"); + IupSetAttribute(image, "15", "71 75 84"); + IupSetAttribute(image, "16", "93 76 76"); + IupSetAttribute(image, "17", "89 88 76"); + IupSetAttribute(image, "18", "91 89 85"); + IupSetAttribute(image, "19", "64 78 114"); + IupSetAttribute(image, "20", "73 87 119"); + IupSetAttribute(image, "21", "84 88 97"); + IupSetAttribute(image, "22", "80 91 112"); + IupSetAttribute(image, "23", "94 101 108"); + IupSetAttribute(image, "24", "92 102 117"); + IupSetAttribute(image, "25", "108 76 85"); + IupSetAttribute(image, "26", "97 94 78"); + IupSetAttribute(image, "27", "101 88 85"); + IupSetAttribute(image, "28", "113 82 83"); + IupSetAttribute(image, "29", "103 99 77"); + IupSetAttribute(image, "30", "105 103 87"); + IupSetAttribute(image, "31", "115 109 73"); + IupSetAttribute(image, "32", "113 110 85"); + IupSetAttribute(image, "33", "123 114 73"); + IupSetAttribute(image, "34", "121 117 90"); + IupSetAttribute(image, "35", "103 103 102"); + IupSetAttribute(image, "36", "97 107 120"); + IupSetAttribute(image, "37", "109 113 104"); + IupSetAttribute(image, "38", "106 114 122"); + IupSetAttribute(image, "39", "112 96 96"); + IupSetAttribute(image, "40", "120 119 103"); + IupSetAttribute(image, "41", "120 121 120"); + IupSetAttribute(image, "42", "41 69 137"); + IupSetAttribute(image, "43", "38 69 148"); + IupSetAttribute(image, "44", "52 74 130"); + IupSetAttribute(image, "45", "55 79 149"); + IupSetAttribute(image, "46", "54 80 142"); + IupSetAttribute(image, "47", "59 84 153"); + IupSetAttribute(image, "48", "40 75 161"); + IupSetAttribute(image, "49", "47 84 179"); + IupSetAttribute(image, "50", "50 88 187"); + IupSetAttribute(image, "51", "61 96 184"); + IupSetAttribute(image, "52", "10 75 241"); + IupSetAttribute(image, "53", "29 87 234"); + IupSetAttribute(image, "54", "23 85 242"); + IupSetAttribute(image, "55", "46 88 193"); + IupSetAttribute(image, "56", "41 90 217"); + IupSetAttribute(image, "57", "52 90 208"); + IupSetAttribute(image, "58", "36 93 242"); + IupSetAttribute(image, "59", "57 98 200"); + IupSetAttribute(image, "60", "54 99 215"); + IupSetAttribute(image, "61", "42 97 237"); + IupSetAttribute(image, "62", "42 99 243"); + IupSetAttribute(image, "63", "55 105 233"); + IupSetAttribute(image, "64", "51 105 243"); + IupSetAttribute(image, "65", "60 112 244"); + IupSetAttribute(image, "66", "70 88 134"); + IupSetAttribute(image, "67", "68 91 154"); + IupSetAttribute(image, "68", "80 95 129"); + IupSetAttribute(image, "69", "78 96 139"); + IupSetAttribute(image, "70", "77 97 149"); + IupSetAttribute(image, "71", "89 103 137"); + IupSetAttribute(image, "72", "87 106 153"); + IupSetAttribute(image, "73", "95 114 152"); + IupSetAttribute(image, "74", "73 100 166"); + IupSetAttribute(image, "75", "72 104 182"); + IupSetAttribute(image, "76", "83 109 166"); + IupSetAttribute(image, "77", "82 111 179"); + IupSetAttribute(image, "78", "90 113 169"); + IupSetAttribute(image, "79", "87 114 179"); + IupSetAttribute(image, "80", "100 109 130"); + IupSetAttribute(image, "81", "97 111 149"); + IupSetAttribute(image, "82", "106 118 138"); + IupSetAttribute(image, "83", "104 119 152"); + IupSetAttribute(image, "84", "113 124 136"); + IupSetAttribute(image, "85", "112 124 153"); + IupSetAttribute(image, "86", "99 119 169"); + IupSetAttribute(image, "87", "101 124 181"); + IupSetAttribute(image, "88", "71 107 197"); + IupSetAttribute(image, "89", "74 108 221"); + IupSetAttribute(image, "90", "85 115 199"); + IupSetAttribute(image, "91", "87 120 215"); + IupSetAttribute(image, "92", "70 115 231"); + IupSetAttribute(image, "93", "74 118 244"); + IupSetAttribute(image, "94", "82 125 234"); + IupSetAttribute(image, "95", "88 124 245"); + IupSetAttribute(image, "96", "97 125 208"); + IupSetAttribute(image, "97", "125 130 120"); + IupSetAttribute(image, "98", "121 130 138"); + IupSetAttribute(image, "99", "122 133 151"); + IupSetAttribute(image, "100", "111 128 164"); + IupSetAttribute(image, "101", "107 130 184"); + IupSetAttribute(image, "102", "118 133 165"); + IupSetAttribute(image, "103", "119 138 182"); + IupSetAttribute(image, "104", "127 146 191"); + IupSetAttribute(image, "105", "94 128 213"); + IupSetAttribute(image, "106", "91 131 234"); + IupSetAttribute(image, "107", "89 131 245"); + IupSetAttribute(image, "108", "104 131 201"); + IupSetAttribute(image, "109", "106 137 215"); + IupSetAttribute(image, "110", "117 141 202"); + IupSetAttribute(image, "111", "123 144 193"); + IupSetAttribute(image, "112", "121 147 215"); + IupSetAttribute(image, "113", "103 139 232"); + IupSetAttribute(image, "114", "99 139 245"); + IupSetAttribute(image, "115", "108 147 246"); + IupSetAttribute(image, "116", "117 149 230"); + IupSetAttribute(image, "117", "117 152 246"); + IupSetAttribute(image, "118", "125 160 247"); + IupSetAttribute(image, "119", "134 4 5"); + IupSetAttribute(image, "120", "142 24 15"); + IupSetAttribute(image, "121", "143 26 16"); + IupSetAttribute(image, "122", "151 1 2"); + IupSetAttribute(image, "123", "136 47 28"); + IupSetAttribute(image, "124", "136 50 30"); + IupSetAttribute(image, "125", "131 46 47"); + IupSetAttribute(image, "126", "133 60 61"); + IupSetAttribute(image, "127", "165 0 2"); + IupSetAttribute(image, "128", "159 63 65"); + IupSetAttribute(image, "129", "134 71 41"); + IupSetAttribute(image, "130", "153 105 61"); + IupSetAttribute(image, "131", "159 64 65"); + IupSetAttribute(image, "132", "134 119 74"); + IupSetAttribute(image, "133", "131 125 89"); + IupSetAttribute(image, "134", "129 125 100"); + IupSetAttribute(image, "135", "131 122 122"); + IupSetAttribute(image, "136", "149 114 115"); + IupSetAttribute(image, "137", "160 111 64"); + IupSetAttribute(image, "138", "160 99 100"); + IupSetAttribute(image, "139", "169 122 123"); + IupSetAttribute(image, "140", "143 133 77"); + IupSetAttribute(image, "141", "135 128 87"); + IupSetAttribute(image, "142", "134 128 94"); + IupSetAttribute(image, "143", "137 130 84"); + IupSetAttribute(image, "144", "140 131 90"); + IupSetAttribute(image, "145", "150 138 86"); + IupSetAttribute(image, "146", "155 146 91"); + IupSetAttribute(image, "147", "137 133 102"); + IupSetAttribute(image, "148", "136 136 120"); + IupSetAttribute(image, "149", "147 141 103"); + IupSetAttribute(image, "150", "146 142 120"); + IupSetAttribute(image, "151", "153 147 104"); + IupSetAttribute(image, "152", "153 150 118"); + IupSetAttribute(image, "153", "161 142 88"); + IupSetAttribute(image, "154", "164 153 93"); + IupSetAttribute(image, "155", "180 158 92"); + IupSetAttribute(image, "156", "164 155 104"); + IupSetAttribute(image, "157", "163 154 117"); + IupSetAttribute(image, "158", "173 160 93"); + IupSetAttribute(image, "159", "176 164 95"); + IupSetAttribute(image, "160", "172 161 102"); + IupSetAttribute(image, "161", "171 164 118"); + IupSetAttribute(image, "162", "182 169 100"); + IupSetAttribute(image, "163", "179 170 120"); + IupSetAttribute(image, "164", "189 176 103"); + IupSetAttribute(image, "165", "187 180 125"); + IupSetAttribute(image, "166", "195 175 109"); + IupSetAttribute(image, "167", "196 174 112"); + IupSetAttribute(image, "168", "198 183 106"); + IupSetAttribute(image, "169", "200 185 119"); + IupSetAttribute(image, "170", "206 192 111"); + IupSetAttribute(image, "171", "206 192 114"); + IupSetAttribute(image, "172", "208 193 111"); + IupSetAttribute(image, "173", "208 193 112"); + IupSetAttribute(image, "174", "135 135 135"); + IupSetAttribute(image, "175", "130 138 152"); + IupSetAttribute(image, "176", "143 144 128"); + IupSetAttribute(image, "177", "140 146 153"); + IupSetAttribute(image, "178", "147 137 137"); + IupSetAttribute(image, "179", "152 152 134"); + IupSetAttribute(image, "180", "151 152 153"); + IupSetAttribute(image, "181", "134 144 160"); + IupSetAttribute(image, "182", "139 152 181"); + IupSetAttribute(image, "183", "148 152 161"); + IupSetAttribute(image, "184", "157 163 166"); + IupSetAttribute(image, "185", "150 160 181"); + IupSetAttribute(image, "186", "170 153 153"); + IupSetAttribute(image, "187", "169 166 135"); + IupSetAttribute(image, "188", "165 164 148"); + IupSetAttribute(image, "189", "177 172 134"); + IupSetAttribute(image, "190", "178 173 151"); + IupSetAttribute(image, "191", "184 178 135"); + IupSetAttribute(image, "192", "183 179 150"); + IupSetAttribute(image, "193", "167 168 168"); + IupSetAttribute(image, "194", "162 170 179"); + IupSetAttribute(image, "195", "174 176 166"); + IupSetAttribute(image, "196", "181 179 162"); + IupSetAttribute(image, "197", "185 182 161"); + IupSetAttribute(image, "198", "189 184 162"); + IupSetAttribute(image, "199", "189 188 171"); + IupSetAttribute(image, "200", "184 184 184"); + IupSetAttribute(image, "201", "129 150 204"); + IupSetAttribute(image, "202", "129 156 247"); + IupSetAttribute(image, "203", "138 164 232"); + IupSetAttribute(image, "204", "136 166 247"); + IupSetAttribute(image, "205", "148 172 234"); + IupSetAttribute(image, "206", "150 173 248"); + IupSetAttribute(image, "207", "152 179 249"); + IupSetAttribute(image, "208", "174 180 196"); + IupSetAttribute(image, "209", "160 179 228"); + IupSetAttribute(image, "210", "164 188 249"); + IupSetAttribute(image, "211", "190 194 190"); + IupSetAttribute(image, "212", "188 193 201"); + IupSetAttribute(image, "213", "172 194 251"); + IupSetAttribute(image, "214", "180 192 224"); + IupSetAttribute(image, "215", "180 199 251"); + IupSetAttribute(image, "216", "191 208 252"); + IupSetAttribute(image, "217", "205 185 140"); + IupSetAttribute(image, "218", "210 186 136"); + IupSetAttribute(image, "219", "194 191 175"); + IupSetAttribute(image, "220", "192 190 178"); + IupSetAttribute(image, "221", "197 194 180"); + IupSetAttribute(image, "222", "197 195 188"); + IupSetAttribute(image, "223", "200 198 189"); + IupSetAttribute(image, "224", "202 200 191"); + IupSetAttribute(image, "225", "222 202 171"); + IupSetAttribute(image, "226", "224 207 176"); + IupSetAttribute(image, "227", "200 200 199"); + IupSetAttribute(image, "228", "200 204 212"); + IupSetAttribute(image, "229", "204 209 218"); + IupSetAttribute(image, "230", "210 199 199"); + IupSetAttribute(image, "231", "209 208 204"); + IupSetAttribute(image, "232", "216 215 215"); + IupSetAttribute(image, "233", "200 200 233"); + IupSetAttribute(image, "234", "192 205 251"); + IupSetAttribute(image, "235", "205 211 226"); + IupSetAttribute(image, "236", "196 209 251"); + IupSetAttribute(image, "237", "209 206 232"); + IupSetAttribute(image, "238", "212 213 232"); + IupSetAttribute(image, "239", "213 221 246"); + IupSetAttribute(image, "240", "221 226 239"); + IupSetAttribute(image, "241", "220 227 250"); + IupSetAttribute(image, "242", "224 223 223"); + IupSetAttribute(image, "243", "225 224 222"); + IupSetAttribute(image, "244", "231 231 231"); + IupSetAttribute(image, "245", "229 234 249"); + IupSetAttribute(image, "246", "237 241 253"); + IupSetAttribute(image, "247", "247 235 235"); + IupSetAttribute(image, "248", "243 243 243"); + IupSetAttribute(image, "249", "242 245 253"); + IupSetAttribute(image, "250", "247 248 254"); + IupSetAttribute(image, "251", "252 252 252"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_LogoLua8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 155, 187, 255, 161, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 71, 160, 255, 89, 87, 177, 255, 93, 72, 163, 255, 83, 128, 193, 255, 255, 255, 255, 255, 255, 191, 103, 33, 17, 23, 50, 148, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 139, 138, 255, 139, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 120, 188, 192, 154, 255, 255, 255, 182, 33, 1, 1, 1, 1, 1, 6, 110, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 84, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 80, 77, 255, 255, 45, 1, 1, 1, 1, 1, 1, 1, 6, 148, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 105, 59, 43, 38, 39, 43, 61, 106, 149, 255, 255, 255, 255, 255, 255, 255, 99, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 255, + 255, 255, 255, 255, 255, 255, 255, 94, 84, 255, 255, 255, 255, 255, 255, 255, 168, 66, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 95, 169, 255, 255, 255, 255, 109, 1, 1, 1, 1, 1, 1, 1, 1, 1, 33, 255, + 255, 255, 255, 255, 255, 255, 255, 122, 255, 255, 255, 255, 255, 255, 173, 55, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 59, 178, 255, 255, 184, 16, 1, 1, 1, 1, 1, 1, 1, 1, 103, 255, + 255, 255, 255, 255, 255, 175, 255, 255, 255, 255, 255, 255, 255, 112, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 114, 255, 255, 108, 1, 1, 1, 1, 1, 1, 1, 33, 191, 255, + 255, 255, 255, 255, 181, 67, 192, 255, 255, 255, 255, 195, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 97, 255, 255, 108, 16, 1, 1, 1, 1, 45, 182, 255, 255, + 255, 255, 255, 255, 132, 158, 255, 255, 255, 255, 195, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 62, 97, 50, 17, 1, 1, 58, 255, 255, 184, 109, 99, 104, 147, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 110, 196, 196, 196, 196, 185, 58, 1, 1, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 77, 255, 255, 255, 255, 255, 110, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 141, 196, 196, 196, 196, 196, 196, 196, 58, 1, 2, 114, 255, 255, 255, 255, 255, 131, 255, 255, 255, + 255, 255, 137, 85, 255, 255, 255, 255, 172, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 196, 196, 196, 196, 196, 196, 196, 196, 185, 17, 1, 19, 178, 255, 255, 255, 255, 80, 153, 255, 255, + 255, 255, 192, 189, 255, 255, 255, 255, 51, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 115, 196, 196, 196, 196, 196, 196, 196, 196, 196, 50, 1, 1, 59, 255, 255, 255, 255, 179, 136, 255, 255, + 255, 192, 188, 255, 255, 255, 255, 159, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 150, 196, 196, 196, 196, 196, 196, 196, 196, 196, 97, 1, 1, 6, 169, 255, 255, 255, 255, 255, 255, 255, + 255, 121, 125, 255, 255, 255, 255, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 142, 196, 196, 196, 196, 196, 196, 196, 196, 196, 62, 1, 1, 1, 95, 255, 255, 255, 255, 140, 133, 255, + 255, 79, 188, 255, 255, 255, 195, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 98, 196, 196, 196, 196, 196, 196, 196, 196, 196, 29, 1, 1, 1, 24, 255, 255, 255, 255, 181, 72, 255, + 255, 255, 255, 255, 255, 255, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 173, 196, 196, 196, 196, 196, 196, 196, 110, 1, 1, 1, 1, 1, 149, 255, 255, 255, 255, 155, 255, + 255, 163, 255, 255, 255, 255, 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 173, 196, 196, 196, 196, 196, 141, 11, 1, 1, 1, 1, 1, 106, 255, 255, 255, 255, 255, 255, + 162, 79, 255, 255, 255, 255, 51, 1, 1, 1, 1, 10, 141, 42, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 98, 142, 150, 115, 49, 3, 1, 1, 1, 1, 1, 1, 61, 255, 255, 255, 255, 90, 181, + 156, 121, 255, 255, 255, 255, 40, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 255, 255, 255, 255, 87, 155, + 255, 255, 255, 255, 255, 255, 35, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, 255, 255, 255, 255, 164, 181, + 186, 180, 255, 255, 255, 255, 34, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 30, 53, 1, 1, 1, 8, 63, 21, 1, 1, 24, 99, 111, 108, 57, 6, 1, 1, 1, 1, 1, 38, 255, 255, 255, 255, 255, 255, + 139, 91, 255, 255, 255, 255, 40, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 26, 184, 144, 100, 106, 184, 107, 1, 1, 1, 1, 1, 43, 255, 255, 255, 255, 118, 161, + 175, 92, 255, 255, 255, 255, 51, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 65, 167, 5, 1, 1, 61, 173, 1, 1, 1, 1, 1, 59, 255, 255, 255, 255, 75, 181, + 255, 255, 255, 255, 255, 255, 102, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 1, 1, 1, 1, 5, 101, 178, 1, 1, 1, 1, 1, 105, 255, 255, 255, 255, 160, 255, + 255, 160, 255, 255, 255, 255, 144, 1, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 18, 196, 34, 1, 3, 52, 113, 150, 190, 171, 178, 1, 1, 1, 1, 1, 147, 255, 255, 255, 255, 255, 255, + 255, 69, 192, 255, 255, 255, 194, 19, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 165, 1, 1, 1, 20, 196, 34, 1, 101, 182, 60, 30, 11, 48, 178, 1, 1, 1, 1, 22, 255, 255, 255, 255, 186, 85, 255, + 255, 127, 155, 255, 255, 255, 255, 61, 1, 1, 1, 15, 196, 52, 1, 1, 1, 1, 1, 1, 58, 168, 1, 1, 1, 40, 196, 34, 1, 166, 96, 1, 1, 1, 56, 178, 1, 1, 1, 1, 66, 255, 255, 255, 255, 122, 124, 255, + 255, 255, 255, 255, 255, 255, 255, 151, 3, 1, 1, 15, 196, 108, 54, 54, 54, 54, 54, 14, 46, 196, 41, 1, 22, 145, 194, 34, 1, 143, 116, 8, 2, 37, 170, 184, 3, 1, 1, 4, 168, 255, 255, 255, 255, 181, 192, 255, + 255, 255, 135, 188, 255, 255, 255, 255, 49, 1, 1, 12, 165, 165, 165, 165, 165, 165, 165, 23, 7, 117, 196, 183, 183, 44, 149, 30, 1, 36, 174, 190, 184, 146, 49, 194, 166, 1, 1, 55, 255, 255, 255, 255, 192, 195, 255, 255, + 255, 255, 134, 88, 255, 255, 255, 255, 169, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 32, 9, 1, 1, 1, 1, 1, 8, 31, 27, 2, 1, 23, 28, 1, 17, 173, 255, 255, 255, 255, 84, 152, 255, 255, + 255, 255, 255, 127, 255, 255, 255, 255, 255, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 112, 255, 255, 255, 255, 255, 76, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 84, 160, 255, 255, 255, 255, 193, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 195, 255, 255, 255, 255, 157, 139, 255, 255, 255, 255, + 255, 255, 255, 255, 181, 73, 255, 255, 255, 255, 255, 193, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 195, 255, 255, 255, 255, 192, 67, 186, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 110, 255, 255, 255, 255, 255, 255, 193, 162, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 175, 87, 255, 255, 255, 255, 255, 255, 169, 49, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 51, 172, 255, 255, 255, 255, 255, 255, 128, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 91, 126, 255, 255, 255, 255, 255, 255, 255, 151, 61, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 63, 159, 255, 255, 255, 255, 255, 255, 255, 82, 94, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 192, 255, 255, 255, 255, 255, 255, 255, 194, 144, 102, 51, 40, 34, 35, 40, 51, 102, 145, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 68, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 88, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 85, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 193, 181, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 155, 255, 133, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 119, 81, 255, 160, 80, 123, 255, 176, 91, 93, 255, 155, 70, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 157, 255, 181, 140, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(48, 48, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 0 127"); + IupSetAttribute(image, "2", "1 1 128"); + IupSetAttribute(image, "3", "4 4 129"); + IupSetAttribute(image, "4", "5 5 130"); + IupSetAttribute(image, "5", "6 6 130"); + IupSetAttribute(image, "6", "8 8 131"); + IupSetAttribute(image, "7", "9 9 132"); + IupSetAttribute(image, "8", "10 10 132"); + IupSetAttribute(image, "9", "13 13 134"); + IupSetAttribute(image, "10", "15 15 134"); + IupSetAttribute(image, "11", "15 15 135"); + IupSetAttribute(image, "12", "17 17 135"); + IupSetAttribute(image, "13", "17 17 136"); + IupSetAttribute(image, "14", "18 18 136"); + IupSetAttribute(image, "15", "19 19 137"); + IupSetAttribute(image, "16", "20 20 137"); + IupSetAttribute(image, "17", "22 22 138"); + IupSetAttribute(image, "18", "23 23 139"); + IupSetAttribute(image, "19", "26 26 140"); + IupSetAttribute(image, "20", "27 27 141"); + IupSetAttribute(image, "21", "28 28 141"); + IupSetAttribute(image, "22", "34 34 144"); + IupSetAttribute(image, "23", "36 36 145"); + IupSetAttribute(image, "24", "38 38 146"); + IupSetAttribute(image, "25", "40 40 147"); + IupSetAttribute(image, "26", "42 42 148"); + IupSetAttribute(image, "27", "43 43 149"); + IupSetAttribute(image, "28", "46 46 150"); + IupSetAttribute(image, "29", "49 49 152"); + IupSetAttribute(image, "30", "53 53 154"); + IupSetAttribute(image, "31", "54 54 154"); + IupSetAttribute(image, "32", "56 56 155"); + IupSetAttribute(image, "33", "59 59 156"); + IupSetAttribute(image, "34", "60 60 157"); + IupSetAttribute(image, "35", "62 62 157"); + IupSetAttribute(image, "36", "65 65 160"); + IupSetAttribute(image, "37", "71 71 163"); + IupSetAttribute(image, "38", "73 73 163"); + IupSetAttribute(image, "39", "73 73 164"); + IupSetAttribute(image, "40", "76 76 165"); + IupSetAttribute(image, "41", "79 79 167"); + IupSetAttribute(image, "42", "80 80 167"); + IupSetAttribute(image, "43", "86 86 170"); + IupSetAttribute(image, "44", "87 87 171"); + IupSetAttribute(image, "45", "88 88 171"); + IupSetAttribute(image, "46", "93 93 174"); + IupSetAttribute(image, "47", "96 96 175"); + IupSetAttribute(image, "48", "98 98 176"); + IupSetAttribute(image, "49", "99 99 177"); + IupSetAttribute(image, "50", "100 100 177"); + IupSetAttribute(image, "51", "104 104 179"); + IupSetAttribute(image, "52", "105 105 180"); + IupSetAttribute(image, "53", "106 106 180"); + IupSetAttribute(image, "54", "109 109 182"); + IupSetAttribute(image, "55", "110 110 181"); + IupSetAttribute(image, "56", "111 111 183"); + IupSetAttribute(image, "57", "112 112 183"); + IupSetAttribute(image, "58", "113 113 184"); + IupSetAttribute(image, "59", "114 114 184"); + IupSetAttribute(image, "60", "115 115 185"); + IupSetAttribute(image, "61", "116 116 185"); + IupSetAttribute(image, "62", "118 118 186"); + IupSetAttribute(image, "63", "120 120 187"); + IupSetAttribute(image, "64", "124 124 189"); + IupSetAttribute(image, "65", "125 125 190"); + IupSetAttribute(image, "66", "127 127 190"); + IupSetAttribute(image, "67", "139 139 139"); + IupSetAttribute(image, "68", "140 140 140"); + IupSetAttribute(image, "69", "153 153 153"); + IupSetAttribute(image, "70", "154 154 154"); + IupSetAttribute(image, "71", "157 157 157"); + IupSetAttribute(image, "72", "159 159 159"); + IupSetAttribute(image, "73", "161 161 161"); + IupSetAttribute(image, "74", "162 162 162"); + IupSetAttribute(image, "75", "163 163 163"); + IupSetAttribute(image, "76", "164 164 164"); + IupSetAttribute(image, "77", "165 165 165"); + IupSetAttribute(image, "78", "166 166 166"); + IupSetAttribute(image, "79", "169 169 169"); + IupSetAttribute(image, "80", "171 171 171"); + IupSetAttribute(image, "81", "172 172 172"); + IupSetAttribute(image, "82", "173 173 173"); + IupSetAttribute(image, "83", "174 174 174"); + IupSetAttribute(image, "84", "175 175 175"); + IupSetAttribute(image, "85", "177 177 177"); + IupSetAttribute(image, "86", "179 179 179"); + IupSetAttribute(image, "87", "180 180 180"); + IupSetAttribute(image, "88", "182 182 182"); + IupSetAttribute(image, "89", "183 183 183"); + IupSetAttribute(image, "90", "184 184 184"); + IupSetAttribute(image, "91", "186 186 186"); + IupSetAttribute(image, "92", "188 188 188"); + IupSetAttribute(image, "93", "190 190 190"); + IupSetAttribute(image, "94", "191 191 191"); + IupSetAttribute(image, "95", "130 130 192"); + IupSetAttribute(image, "96", "132 132 193"); + IupSetAttribute(image, "97", "134 134 194"); + IupSetAttribute(image, "98", "135 135 195"); + IupSetAttribute(image, "99", "138 138 196"); + IupSetAttribute(image, "100", "140 140 197"); + IupSetAttribute(image, "101", "145 145 200"); + IupSetAttribute(image, "102", "148 148 201"); + IupSetAttribute(image, "103", "149 149 202"); + IupSetAttribute(image, "104", "151 151 203"); + IupSetAttribute(image, "105", "157 157 205"); + IupSetAttribute(image, "106", "159 159 207"); + IupSetAttribute(image, "107", "168 168 211"); + IupSetAttribute(image, "108", "169 169 212"); + IupSetAttribute(image, "109", "175 175 214"); + IupSetAttribute(image, "110", "175 175 215"); + IupSetAttribute(image, "111", "176 176 216"); + IupSetAttribute(image, "112", "178 178 216"); + IupSetAttribute(image, "113", "181 181 218"); + IupSetAttribute(image, "114", "184 184 219"); + IupSetAttribute(image, "115", "186 186 220"); + IupSetAttribute(image, "116", "188 188 221"); + IupSetAttribute(image, "117", "190 190 223"); + IupSetAttribute(image, "118", "195 195 195"); + IupSetAttribute(image, "119", "196 196 196"); + IupSetAttribute(image, "120", "197 197 197"); + IupSetAttribute(image, "121", "198 198 198"); + IupSetAttribute(image, "122", "200 200 200"); + IupSetAttribute(image, "123", "201 201 201"); + IupSetAttribute(image, "124", "203 203 203"); + IupSetAttribute(image, "125", "204 204 204"); + IupSetAttribute(image, "126", "205 205 205"); + IupSetAttribute(image, "127", "206 206 206"); + IupSetAttribute(image, "128", "207 207 207"); + IupSetAttribute(image, "129", "208 208 208"); + IupSetAttribute(image, "130", "210 210 210"); + IupSetAttribute(image, "131", "211 211 211"); + IupSetAttribute(image, "132", "213 213 213"); + IupSetAttribute(image, "133", "214 214 214"); + IupSetAttribute(image, "134", "215 215 215"); + IupSetAttribute(image, "135", "217 217 217"); + IupSetAttribute(image, "136", "218 218 218"); + IupSetAttribute(image, "137", "219 219 219"); + IupSetAttribute(image, "138", "221 221 221"); + IupSetAttribute(image, "139", "222 222 222"); + IupSetAttribute(image, "140", "223 223 223"); + IupSetAttribute(image, "141", "195 195 225"); + IupSetAttribute(image, "142", "203 203 229"); + IupSetAttribute(image, "143", "205 205 230"); + IupSetAttribute(image, "144", "206 206 230"); + IupSetAttribute(image, "145", "208 208 231"); + IupSetAttribute(image, "146", "212 212 233"); + IupSetAttribute(image, "147", "216 216 235"); + IupSetAttribute(image, "148", "217 217 236"); + IupSetAttribute(image, "149", "219 219 237"); + IupSetAttribute(image, "150", "220 220 237"); + IupSetAttribute(image, "151", "222 222 238"); + IupSetAttribute(image, "152", "224 224 224"); + IupSetAttribute(image, "153", "225 225 225"); + IupSetAttribute(image, "154", "227 227 227"); + IupSetAttribute(image, "155", "228 228 228"); + IupSetAttribute(image, "156", "229 229 229"); + IupSetAttribute(image, "157", "230 230 230"); + IupSetAttribute(image, "158", "231 231 231"); + IupSetAttribute(image, "159", "224 224 239"); + IupSetAttribute(image, "160", "234 234 234"); + IupSetAttribute(image, "161", "236 236 236"); + IupSetAttribute(image, "162", "237 237 237"); + IupSetAttribute(image, "163", "238 238 238"); + IupSetAttribute(image, "164", "239 239 239"); + IupSetAttribute(image, "165", "225 225 240"); + IupSetAttribute(image, "166", "227 227 241"); + IupSetAttribute(image, "167", "228 228 241"); + IupSetAttribute(image, "168", "229 229 242"); + IupSetAttribute(image, "169", "232 232 243"); + IupSetAttribute(image, "170", "233 233 244"); + IupSetAttribute(image, "171", "234 234 244"); + IupSetAttribute(image, "172", "235 235 245"); + IupSetAttribute(image, "173", "237 237 246"); + IupSetAttribute(image, "174", "238 238 246"); + IupSetAttribute(image, "175", "240 240 240"); + IupSetAttribute(image, "176", "241 241 241"); + IupSetAttribute(image, "177", "243 243 243"); + IupSetAttribute(image, "178", "240 240 247"); + IupSetAttribute(image, "179", "244 244 244"); + IupSetAttribute(image, "180", "245 245 245"); + IupSetAttribute(image, "181", "246 246 246"); + IupSetAttribute(image, "182", "240 240 248"); + IupSetAttribute(image, "183", "242 242 248"); + IupSetAttribute(image, "184", "244 244 250"); + IupSetAttribute(image, "185", "246 246 250"); + IupSetAttribute(image, "186", "248 248 248"); + IupSetAttribute(image, "187", "249 249 249"); + IupSetAttribute(image, "188", "250 250 250"); + IupSetAttribute(image, "189", "251 251 251"); + IupSetAttribute(image, "190", "249 249 252"); + IupSetAttribute(image, "191", "250 250 252"); + IupSetAttribute(image, "192", "252 252 252"); + IupSetAttribute(image, "193", "252 252 253"); + IupSetAttribute(image, "194", "253 253 254"); + IupSetAttribute(image, "195", "254 254 254"); + IupSetAttribute(image, "196", "255 255 255"); + IupSetAttribute(image, "197", "0 0 0"); + IupSetAttribute(image, "198", "0 0 0"); + IupSetAttribute(image, "199", "0 0 0"); + IupSetAttribute(image, "200", "0 0 0"); + IupSetAttribute(image, "201", "0 0 0"); + IupSetAttribute(image, "202", "0 0 0"); + IupSetAttribute(image, "203", "0 0 0"); + IupSetAttribute(image, "204", "0 0 0"); + IupSetAttribute(image, "205", "0 0 0"); + IupSetAttribute(image, "206", "0 0 0"); + IupSetAttribute(image, "207", "0 0 0"); + IupSetAttribute(image, "208", "0 0 0"); + IupSetAttribute(image, "209", "0 0 0"); + IupSetAttribute(image, "210", "0 0 0"); + IupSetAttribute(image, "211", "0 0 0"); + IupSetAttribute(image, "212", "0 0 0"); + IupSetAttribute(image, "213", "0 0 0"); + IupSetAttribute(image, "214", "0 0 0"); + IupSetAttribute(image, "215", "0 0 0"); + IupSetAttribute(image, "216", "0 0 0"); + IupSetAttribute(image, "217", "0 0 0"); + IupSetAttribute(image, "218", "0 0 0"); + IupSetAttribute(image, "219", "0 0 0"); + IupSetAttribute(image, "220", "0 0 0"); + IupSetAttribute(image, "221", "0 0 0"); + IupSetAttribute(image, "222", "0 0 0"); + IupSetAttribute(image, "223", "0 0 0"); + IupSetAttribute(image, "224", "0 0 0"); + IupSetAttribute(image, "225", "0 0 0"); + IupSetAttribute(image, "226", "0 0 0"); + IupSetAttribute(image, "227", "0 0 0"); + IupSetAttribute(image, "228", "0 0 0"); + IupSetAttribute(image, "229", "0 0 0"); + IupSetAttribute(image, "230", "0 0 0"); + IupSetAttribute(image, "231", "0 0 0"); + IupSetAttribute(image, "232", "0 0 0"); + IupSetAttribute(image, "233", "0 0 0"); + IupSetAttribute(image, "234", "0 0 0"); + IupSetAttribute(image, "235", "0 0 0"); + IupSetAttribute(image, "236", "0 0 0"); + IupSetAttribute(image, "237", "0 0 0"); + IupSetAttribute(image, "238", "0 0 0"); + IupSetAttribute(image, "239", "0 0 0"); + IupSetAttribute(image, "240", "0 0 0"); + IupSetAttribute(image, "241", "0 0 0"); + IupSetAttribute(image, "242", "0 0 0"); + IupSetAttribute(image, "243", "0 0 0"); + IupSetAttribute(image, "244", "0 0 0"); + IupSetAttribute(image, "245", "0 0 0"); + IupSetAttribute(image, "246", "0 0 0"); + IupSetAttribute(image, "247", "0 0 0"); + IupSetAttribute(image, "248", "0 0 0"); + IupSetAttribute(image, "249", "0 0 0"); + IupSetAttribute(image, "250", "0 0 0"); + IupSetAttribute(image, "251", "0 0 0"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_LogoPetrobras8(void) +{ + unsigned char imgdata[] = { + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 244, 244, 244, 244, 244, 244, 244, 244, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 252, 255, 255, 249, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 252, 255, 255, 249, 244, 244, 244, 244, 244, 244, 244, 244, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 196, 151, 141, 145, 179, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 244, 244, 244, 244, 244, 244, 244, 244, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 244, 244, 244, 244, 244, 244, 244, 244, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 244, 244, 244, 244, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 209, 167, 143, 141, 155, 203, 248, 255, 255, 255, + 253, 253, 5, 5, 5, 5, 5, 5, 5, 113, 253, 253, 253, 253, 253, 253, 253, 253, 253, 245, 193, 90, 5, 5, 5, 5, 5, 5, 163, 253, 253, 253, 253, 253, 253, 253, 253, 253, 249, 192, 62, 5, 5, 5, 5, 5, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 6, 6, 6, 6, 6, 6, 6, 6, 6, 33, 86, 169, 250, 255, 255, 255, 255, 255, 81, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 231, 255, 255, 133, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 236, 255, 255, 133, 6, 6, 6, 6, 6, 6, 6, 6, 5, 21, 53, 108, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 93, 12, 1, 1, 1, 1, 1, 4, 94, 223, 255, 255, 255, 255, 255, 255, 255, 80, 6, 6, 6, 6, 6, 6, 6, 6, 6, 33, 80, 145, 243, 255, 255, 255, 255, 255, 164, 6, 6, 6, 6, 6, 6, 6, 6, 4, 15, 48, 98, 181, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 20, 6, 6, 6, 6, 24, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 113, 24, 1, 1, 1, 1, 1, 1, 39, 180, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 180, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 117, 1, 1, 1, 1, 5, 226, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 243, 58, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 247, 255, 255, 255, 237, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 255, 255, 255, 69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 255, 255, 255, 68, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 144, 255, 255, 255, 255, 255, 255, 231, 95, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 219, 255, 255, 255, 255, 255, 234, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 247, 255, 255, 255, 255, 96, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 115, 255, 255, 255, 255, 255, 255, 255, 255, 251, 85, 1, 1, 1, 1, 1, 11, 236, 255, 255, 255, 255, 255, 255, 255, 255, 153, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 187, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 9, 239, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 241, 27, 1, 1, 1, 57, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 188, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 255, 255, 255, 180, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 255, 255, 233, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 138, 255, 255, 235, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 247, 255, 255, 255, 255, 214, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 252, 255, 255, 255, 255, 180, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 196, 255, 255, 255, 247, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 231, 255, 255, 255, 255, 255, 255, 255, 165, 1, 1, 1, 1, 1, 1, 2, 223, 255, 255, 255, 255, 255, 255, 255, 152, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 252, + 253, 253, 1, 1, 1, 1, 1, 1, 80, 253, 253, 253, 253, 197, 92, 92, 92, 93, 182, 253, 253, 253, 253, 73, 1, 1, 1, 124, 253, 253, 253, 253, 150, 92, 92, 92, 107, 214, 253, 253, 253, 243, 9, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 1, 1, 1, 1, 1, 15, 16, 12, 1, 1, 1, 1, 1, 1, 102, 255, 255, 255, 112, 1, 1, 1, 1, 2, 16, 16, 16, 16, 16, 16, 16, 16, 205, 255, 255, 175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 214, 255, 255, 175, 1, 1, 1, 1, 1, 13, 16, 16, 6, 1, 1, 1, 1, 1, 18, 243, 255, 255, 255, 220, 28, 1, 1, 1, 1, 2, 45, 86, 39, 1, 1, 1, 1, 1, 1, 211, 255, 255, 255, 255, 112, 1, 1, 1, 1, 2, 16, 16, 14, 2, 1, 1, 1, 1, 1, 187, 255, 255, 255, 200, 1, 1, 1, 1, 1, 12, 16, 16, 9, 1, 1, 1, 1, 1, 1, 223, 255, 255, 255, 255, 255, 255, 230, 28, 1, 1, 1, 1, 1, 1, 1, 212, 255, 255, 255, 255, 255, 255, 223, 13, 1, 1, 1, 1, 86, 136, 120, 24, 1, 1, 1, 1, 26, 249, + 253, 253, 1, 1, 1, 1, 1, 1, 142, 253, 253, 253, 253, 113, 1, 1, 1, 1, 38, 253, 253, 253, 253, 72, 1, 1, 1, 200, 253, 253, 253, 252, 47, 1, 1, 1, 1, 83, 253, 253, 253, 247, 11, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 1, 1, 1, 1, 24, 247, 255, 242, 180, 9, 1, 1, 1, 1, 104, 255, 255, 251, 39, 1, 1, 1, 1, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 138, 138, 138, 138, 45, 1, 1, 1, 1, 27, 137, 138, 138, 138, 145, 249, 255, 255, 105, 1, 1, 1, 1, 30, 247, 255, 255, 226, 54, 1, 1, 1, 1, 48, 252, 255, 255, 244, 58, 1, 1, 1, 1, 12, 170, 251, 255, 247, 93, 1, 1, 1, 1, 1, 147, 255, 255, 255, 250, 39, 1, 1, 1, 1, 89, 255, 255, 248, 141, 1, 1, 1, 1, 9, 233, 255, 255, 255, 127, 1, 1, 1, 1, 9, 231, 255, 255, 234, 88, 1, 1, 1, 1, 19, 243, 255, 255, 255, 255, 255, 252, 100, 1, 1, 1, 1, 1, 1, 1, 1, 195, 255, 255, 255, 255, 255, 255, 123, 1, 1, 1, 1, 46, 252, 255, 255, 152, 24, 24, 24, 24, 44, 250, + 253, 253, 1, 1, 1, 1, 1, 1, 219, 253, 253, 253, 251, 41, 1, 1, 1, 1, 108, 253, 253, 253, 240, 23, 1, 1, 24, 249, 253, 253, 253, 222, 5, 1, 1, 1, 1, 110, 253, 253, 253, 214, 2, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 35, 1, 1, 1, 1, 93, 255, 255, 255, 252, 35, 1, 1, 1, 1, 140, 255, 255, 216, 2, 1, 1, 1, 1, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 28, 1, 1, 1, 1, 102, 255, 255, 255, 255, 255, 255, 255, 252, 32, 1, 1, 1, 1, 100, 255, 255, 255, 255, 101, 1, 1, 1, 1, 127, 255, 255, 255, 135, 1, 1, 1, 1, 2, 177, 255, 255, 255, 255, 192, 1, 1, 1, 1, 1, 134, 255, 255, 255, 214, 2, 1, 1, 1, 1, 150, 255, 255, 255, 135, 1, 1, 1, 1, 115, 255, 255, 255, 255, 59, 1, 1, 1, 1, 66, 255, 255, 255, 255, 133, 1, 1, 1, 1, 100, 255, 255, 255, 255, 255, 255, 183, 2, 1, 1, 1, 59, 1, 1, 1, 1, 170, 255, 255, 255, 255, 255, 252, 56, 1, 1, 1, 1, 5, 127, 223, 252, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 40, 252, 253, 253, 253, 245, 165, 164, 164, 164, 186, 248, 253, 253, 253, 134, 1, 1, 1, 98, 253, 253, 253, 253, 153, 1, 1, 1, 13, 89, 233, 253, 253, 253, 115, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 2, 1, 1, 1, 1, 153, 255, 255, 255, 187, 2, 1, 1, 1, 3, 219, 255, 255, 143, 1, 1, 1, 1, 1, 84, 100, 100, 100, 100, 100, 103, 243, 255, 255, 255, 255, 255, 255, 255, 255, 204, 1, 1, 1, 1, 1, 170, 255, 255, 255, 255, 255, 255, 255, 211, 2, 1, 1, 1, 1, 172, 255, 255, 255, 200, 16, 1, 1, 1, 27, 230, 255, 255, 240, 19, 1, 1, 1, 1, 93, 252, 255, 255, 255, 255, 216, 1, 1, 1, 1, 1, 139, 255, 255, 255, 142, 1, 1, 1, 1, 1, 162, 195, 187, 129, 10, 1, 1, 1, 71, 240, 255, 255, 255, 227, 5, 1, 1, 1, 1, 132, 255, 255, 255, 220, 35, 1, 1, 1, 9, 211, 255, 255, 255, 255, 255, 237, 36, 1, 1, 1, 58, 145, 1, 1, 1, 1, 152, 255, 255, 255, 255, 255, 251, 37, 1, 1, 1, 1, 1, 1, 5, 48, 118, 197, 249, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 114, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 160, 6, 1, 1, 1, 166, 253, 253, 253, 253, 243, 232, 232, 232, 238, 253, 253, 253, 253, 184, 6, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 1, 1, 1, 1, 1, 140, 174, 173, 126, 18, 1, 1, 1, 1, 91, 255, 255, 255, 82, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 128, 1, 1, 1, 1, 6, 233, 255, 255, 255, 255, 255, 255, 255, 135, 1, 1, 1, 1, 1, 63, 79, 79, 50, 3, 1, 1, 1, 13, 187, 255, 255, 255, 160, 1, 1, 1, 1, 1, 198, 255, 255, 255, 255, 255, 184, 1, 1, 1, 1, 1, 181, 255, 255, 255, 80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 111, 243, 255, 255, 255, 255, 165, 1, 1, 1, 1, 1, 54, 79, 79, 61, 9, 1, 1, 1, 4, 152, 255, 255, 255, 255, 255, 252, 116, 1, 1, 1, 2, 191, 156, 1, 1, 1, 1, 133, 255, 255, 255, 255, 255, 252, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 196, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 184, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 235, 55, 1, 1, 1, 3, 233, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 251, 153, 13, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 221, 255, 255, 237, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 255, 255, 255, 255, 255, 255, 255, 255, 252, 66, 1, 1, 1, 1, 66, 252, 255, 255, 255, 255, 255, 255, 255, 75, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 89, 213, 255, 255, 255, 255, 89, 1, 1, 1, 1, 34, 248, 255, 255, 255, 255, 255, 122, 1, 1, 1, 1, 5, 234, 255, 255, 236, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 226, 255, 255, 255, 255, 99, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 192, 255, 255, 255, 255, 255, 255, 201, 5, 1, 1, 1, 91, 252, 161, 1, 1, 1, 1, 118, 255, 255, 255, 255, 255, 255, 212, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 206, 255, 255, + 253, 253, 1, 1, 1, 1, 13, 240, 253, 253, 253, 244, 180, 180, 180, 184, 225, 253, 253, 253, 253, 220, 13, 1, 1, 66, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 205, 29, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 201, 255, 255, 255, 184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 196, 255, 255, 255, 255, 255, 255, 255, 255, 233, 5, 1, 1, 1, 1, 130, 255, 255, 255, 255, 255, 255, 255, 235, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 84, 226, 255, 255, 255, 255, 27, 1, 1, 1, 1, 93, 255, 255, 255, 255, 255, 249, 44, 1, 1, 1, 1, 85, 255, 255, 255, 182, 1, 1, 1, 1, 1, 35, 41, 39, 18, 1, 1, 1, 1, 1, 109, 255, 255, 255, 247, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 216, 255, 255, 255, 255, 255, 247, 51, 1, 1, 1, 7, 217, 255, 161, 1, 1, 1, 1, 105, 255, 255, 255, 255, 255, 255, 255, 225, 109, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 255, 255, + 253, 253, 1, 1, 1, 1, 85, 253, 253, 253, 253, 184, 1, 1, 1, 1, 15, 229, 253, 253, 253, 253, 81, 1, 1, 130, 253, 253, 253, 253, 173, 110, 110, 118, 188, 253, 253, 253, 253, 160, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 99, 225, 255, 255, 255, 255, 115, 1, 1, 1, 1, 13, 181, 184, 184, 184, 184, 184, 184, 248, 255, 255, 255, 255, 255, 255, 255, 255, 170, 1, 1, 1, 1, 1, 205, 255, 255, 255, 255, 255, 255, 255, 178, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 108, 255, 255, 255, 235, 2, 1, 1, 1, 1, 115, 255, 255, 255, 255, 255, 178, 1, 1, 1, 1, 1, 184, 255, 255, 255, 113, 1, 1, 1, 1, 9, 243, 252, 252, 248, 115, 1, 1, 1, 1, 64, 255, 255, 255, 202, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 76, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 115, 252, 252, 157, 1, 1, 1, 1, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 186, 120, 55, 1, 1, 1, 1, 1, 1, 93, 255, 255, + 253, 253, 1, 1, 1, 1, 149, 253, 253, 253, 253, 114, 1, 1, 1, 1, 1, 218, 253, 253, 253, 253, 100, 1, 1, 205, 253, 253, 253, 253, 58, 1, 1, 1, 3, 233, 253, 253, 253, 208, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 1, 1, 1, 1, 13, 95, 95, 95, 99, 120, 168, 230, 255, 255, 255, 255, 255, 251, 45, 1, 1, 1, 1, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 1, 1, 1, 1, 30, 247, 255, 255, 255, 255, 255, 255, 255, 108, 1, 1, 1, 1, 24, 236, 243, 236, 179, 9, 1, 1, 1, 1, 86, 255, 255, 255, 225, 2, 1, 1, 1, 1, 97, 255, 255, 255, 255, 230, 35, 1, 1, 1, 1, 71, 251, 255, 255, 250, 44, 1, 1, 1, 1, 82, 255, 255, 255, 255, 120, 1, 1, 1, 1, 98, 255, 255, 255, 127, 1, 1, 1, 1, 4, 221, 243, 239, 193, 24, 1, 1, 1, 1, 50, 255, 255, 255, 255, 214, 8, 1, 1, 1, 1, 34, 45, 45, 29, 1, 1, 1, 1, 69, 255, 255, 255, 250, 181, 181, 181, 181, 181, 228, 255, 255, 255, 183, 1, 1, 1, 1, 1, 133, 255, 255, + 253, 253, 1, 1, 1, 2, 220, 253, 253, 253, 251, 44, 1, 1, 1, 2, 105, 253, 253, 253, 253, 253, 69, 1, 30, 249, 253, 253, 253, 227, 6, 1, 1, 1, 1, 207, 253, 253, 253, 214, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 36, 1, 1, 1, 1, 93, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 2, 1, 1, 1, 1, 134, 233, 233, 233, 233, 233, 233, 233, 234, 255, 255, 255, 255, 255, 255, 255, 252, 27, 1, 1, 1, 1, 100, 255, 255, 255, 255, 255, 255, 255, 250, 39, 1, 1, 1, 1, 93, 255, 255, 255, 255, 43, 1, 1, 1, 1, 117, 255, 255, 255, 239, 2, 1, 1, 1, 1, 15, 206, 252, 252, 210, 48, 1, 1, 1, 1, 15, 217, 255, 255, 255, 218, 2, 1, 1, 1, 1, 130, 233, 233, 226, 159, 13, 1, 1, 1, 1, 166, 255, 255, 252, 66, 1, 1, 1, 1, 59, 255, 255, 255, 255, 74, 1, 1, 1, 1, 90, 255, 255, 255, 249, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 255, 255, 255, 227, 2, 1, 1, 1, 1, 126, 252, 255, 255, 198, 1, 1, 1, 1, 3, 219, 255, 255, + 253, 253, 1, 1, 1, 48, 251, 253, 253, 253, 248, 187, 187, 187, 190, 218, 253, 253, 253, 253, 253, 228, 11, 1, 102, 253, 253, 253, 253, 168, 1, 1, 1, 1, 1, 201, 253, 253, 253, 220, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 1, 1, 1, 1, 1, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 85, 255, 255, 255, 255, 255, 255, 255, 206, 1, 1, 1, 1, 1, 169, 255, 255, 255, 255, 255, 255, 255, 214, 2, 1, 1, 1, 1, 158, 255, 255, 255, 234, 9, 1, 1, 1, 1, 179, 255, 255, 255, 255, 53, 1, 1, 1, 1, 1, 6, 53, 41, 2, 1, 1, 1, 1, 6, 177, 255, 255, 255, 255, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 245, 255, 255, 230, 9, 1, 1, 1, 1, 127, 255, 255, 255, 249, 35, 1, 1, 1, 1, 141, 255, 255, 255, 148, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 250, 255, 255, 235, 2, 1, 1, 1, 1, 2, 90, 118, 90, 9, 1, 1, 1, 1, 112, 255, 255, 255, + 253, 253, 1, 1, 1, 117, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 108, 1, 1, 175, 253, 253, 253, 253, 99, 1, 1, 1, 1, 1, 194, 253, 253, 253, 224, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 1, 1, 1, 1, 2, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 146, 255, 255, 255, 255, 255, 255, 255, 132, 1, 1, 1, 1, 9, 230, 255, 255, 255, 255, 255, 255, 255, 139, 1, 1, 1, 1, 2, 222, 255, 255, 255, 179, 1, 1, 1, 1, 12, 236, 255, 255, 255, 255, 152, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 175, 255, 255, 255, 255, 252, 82, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 205, 255, 255, 255, 170, 1, 1, 1, 1, 1, 201, 255, 255, 255, 211, 2, 1, 1, 1, 2, 214, 255, 255, 222, 18, 1, 1, 1, 2, 78, 83, 83, 83, 83, 52, 1, 1, 1, 1, 18, 240, 255, 255, 255, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 239, 255, 255, 255, + 253, 253, 1, 1, 1, 189, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 241, 112, 2, 1, 9, 234, 253, 253, 253, 247, 30, 1, 1, 1, 1, 1, 187, 253, 253, 253, 234, 9, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 76, 1, 1, 1, 1, 49, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 220, 255, 255, 255, 255, 255, 255, 255, 69, 1, 1, 1, 1, 66, 252, 255, 255, 255, 255, 255, 255, 255, 77, 1, 1, 1, 1, 47, 255, 255, 255, 255, 121, 1, 1, 1, 1, 67, 255, 255, 255, 255, 255, 250, 100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 213, 255, 255, 255, 255, 255, 239, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 70, 214, 255, 255, 255, 255, 101, 1, 1, 1, 1, 26, 249, 255, 255, 255, 150, 1, 1, 1, 1, 30, 252, 255, 251, 90, 1, 1, 1, 1, 94, 255, 255, 255, 255, 255, 161, 1, 1, 1, 1, 5, 231, 255, 255, 255, 210, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 104, 237, 255, 255, 255, 255, + 253, 253, 1, 1, 12, 205, 215, 215, 215, 215, 215, 215, 215, 215, 215, 212, 200, 170, 119, 35, 1, 1, 1, 53, 215, 215, 215, 215, 179, 1, 1, 1, 1, 1, 1, 171, 239, 239, 239, 228, 13, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 39, 31, 31, 31, 31, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 65, 252, 255, 255, 255, 255, 255, 255, 237, 35, 31, 31, 31, 31, 138, 255, 255, 255, 255, 255, 255, 255, 239, 40, 31, 31, 31, 31, 126, 255, 255, 255, 255, 105, 31, 31, 31, 31, 61, 244, 255, 255, 255, 255, 255, 249, 150, 42, 1, 1, 1, 1, 1, 13, 82, 179, 248, 255, 255, 255, 255, 255, 255, 199, 31, 31, 31, 31, 31, 31, 31, 31, 29, 45, 81, 122, 201, 250, 255, 255, 255, 255, 249, 60, 31, 31, 31, 31, 112, 255, 255, 255, 255, 132, 31, 31, 31, 31, 44, 233, 255, 185, 32, 31, 31, 31, 35, 220, 255, 255, 255, 255, 255, 174, 31, 31, 31, 31, 31, 222, 255, 255, 255, 255, 217, 89, 6, 1, 1, 1, 1, 1, 27, 102, 205, 252, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 13, 13, 13, 13, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 250, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 252, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 252, 255, 255, 255, 255, 250, 249, 249, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 248, 217, 179, 170, 175, 200, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 249, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 251, 255, 255, 255, 255, 251, 249, 249, 249, 249, 249, 252, 255, 251, 249, 249, 249, 249, 250, 255, 255, 255, 255, 255, 255, 252, 249, 249, 249, 249, 249, 252, 255, 255, 255, 255, 255, 252, 230, 187, 170, 170, 182, 219, 246, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(236, 48, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "0 140 79"); + IupSetAttribute(image, "2", "1 140 80"); + IupSetAttribute(image, "3", "4 141 81"); + IupSetAttribute(image, "4", "4 141 82"); + IupSetAttribute(image, "5", "5 142 82"); + IupSetAttribute(image, "6", "5 142 83"); + IupSetAttribute(image, "7", "7 143 84"); + IupSetAttribute(image, "8", "8 143 83"); + IupSetAttribute(image, "9", "8 142 84"); + IupSetAttribute(image, "10", "11 143 86"); + IupSetAttribute(image, "11", "10 144 85"); + IupSetAttribute(image, "12", "11 144 86"); + IupSetAttribute(image, "13", "12 144 86"); + IupSetAttribute(image, "14", "12 146 87"); + IupSetAttribute(image, "15", "14 145 88"); + IupSetAttribute(image, "16", "15 146 88"); + IupSetAttribute(image, "17", "16 145 88"); + IupSetAttribute(image, "18", "17 146 89"); + IupSetAttribute(image, "19", "18 147 90"); + IupSetAttribute(image, "20", "19 148 91"); + IupSetAttribute(image, "21", "20 146 90"); + IupSetAttribute(image, "22", "21 147 92"); + IupSetAttribute(image, "23", "20 148 91"); + IupSetAttribute(image, "24", "21 148 92"); + IupSetAttribute(image, "25", "22 149 94"); + IupSetAttribute(image, "26", "24 148 93"); + IupSetAttribute(image, "27", "24 149 94"); + IupSetAttribute(image, "28", "26 150 94"); + IupSetAttribute(image, "29", "26 150 96"); + IupSetAttribute(image, "30", "28 150 96"); + IupSetAttribute(image, "31", "27 152 97"); + IupSetAttribute(image, "32", "30 152 98"); + IupSetAttribute(image, "33", "32 151 98"); + IupSetAttribute(image, "34", "32 152 99"); + IupSetAttribute(image, "35", "32 152 100"); + IupSetAttribute(image, "36", "34 154 100"); + IupSetAttribute(image, "37", "35 155 102"); + IupSetAttribute(image, "38", "37 153 101"); + IupSetAttribute(image, "39", "37 154 102"); + IupSetAttribute(image, "40", "39 155 104"); + IupSetAttribute(image, "41", "39 156 104"); + IupSetAttribute(image, "42", "40 156 103"); + IupSetAttribute(image, "43", "41 155 104"); + IupSetAttribute(image, "44", "41 156 104"); + IupSetAttribute(image, "45", "42 157 106"); + IupSetAttribute(image, "46", "45 157 107"); + IupSetAttribute(image, "47", "44 158 107"); + IupSetAttribute(image, "48", "45 158 108"); + IupSetAttribute(image, "49", "48 159 109"); + IupSetAttribute(image, "50", "49 159 111"); + IupSetAttribute(image, "51", "47 160 109"); + IupSetAttribute(image, "52", "45 160 110"); + IupSetAttribute(image, "53", "50 160 111"); + IupSetAttribute(image, "54", "50 161 112"); + IupSetAttribute(image, "55", "52 161 112"); + IupSetAttribute(image, "56", "53 161 114"); + IupSetAttribute(image, "57", "54 162 113"); + IupSetAttribute(image, "58", "54 162 114"); + IupSetAttribute(image, "59", "56 162 114"); + IupSetAttribute(image, "60", "57 163 116"); + IupSetAttribute(image, "61", "57 164 116"); + IupSetAttribute(image, "62", "59 164 118"); + IupSetAttribute(image, "63", "58 165 119"); + IupSetAttribute(image, "64", "59 166 119"); + IupSetAttribute(image, "65", "60 164 117"); + IupSetAttribute(image, "66", "61 165 118"); + IupSetAttribute(image, "67", "62 166 119"); + IupSetAttribute(image, "68", "63 165 120"); + IupSetAttribute(image, "69", "62 166 120"); + IupSetAttribute(image, "70", "64 166 120"); + IupSetAttribute(image, "71", "66 167 122"); + IupSetAttribute(image, "72", "66 168 122"); + IupSetAttribute(image, "73", "66 169 124"); + IupSetAttribute(image, "74", "67 170 125"); + IupSetAttribute(image, "75", "68 168 123"); + IupSetAttribute(image, "76", "69 169 124"); + IupSetAttribute(image, "77", "71 169 126"); + IupSetAttribute(image, "78", "68 170 125"); + IupSetAttribute(image, "79", "70 171 127"); + IupSetAttribute(image, "80", "72 170 126"); + IupSetAttribute(image, "81", "73 171 127"); + IupSetAttribute(image, "82", "74 171 128"); + IupSetAttribute(image, "83", "72 172 128"); + IupSetAttribute(image, "84", "77 171 128"); + IupSetAttribute(image, "85", "77 172 130"); + IupSetAttribute(image, "86", "78 173 131"); + IupSetAttribute(image, "87", "77 174 131"); + IupSetAttribute(image, "88", "80 173 130"); + IupSetAttribute(image, "89", "80 174 132"); + IupSetAttribute(image, "90", "82 174 133"); + IupSetAttribute(image, "91", "84 175 134"); + IupSetAttribute(image, "92", "83 176 135"); + IupSetAttribute(image, "93", "86 176 136"); + IupSetAttribute(image, "94", "88 177 137"); + IupSetAttribute(image, "95", "89 177 138"); + IupSetAttribute(image, "96", "90 178 138"); + IupSetAttribute(image, "97", "92 179 139"); + IupSetAttribute(image, "98", "93 179 140"); + IupSetAttribute(image, "99", "94 180 142"); + IupSetAttribute(image, "100", "96 180 142"); + IupSetAttribute(image, "101", "98 181 144"); + IupSetAttribute(image, "102", "98 182 144"); + IupSetAttribute(image, "103", "101 181 144"); + IupSetAttribute(image, "104", "100 182 145"); + IupSetAttribute(image, "105", "102 183 146"); + IupSetAttribute(image, "106", "102 184 147"); + IupSetAttribute(image, "107", "103 185 148"); + IupSetAttribute(image, "108", "105 184 148"); + IupSetAttribute(image, "109", "107 185 150"); + IupSetAttribute(image, "110", "105 186 150"); + IupSetAttribute(image, "111", "108 185 150"); + IupSetAttribute(image, "112", "108 186 150"); + IupSetAttribute(image, "113", "109 187 152"); + IupSetAttribute(image, "114", "111 188 154"); + IupSetAttribute(image, "115", "113 188 154"); + IupSetAttribute(image, "116", "115 189 156"); + IupSetAttribute(image, "117", "117 190 157"); + IupSetAttribute(image, "118", "118 190 158"); + IupSetAttribute(image, "119", "120 191 159"); + IupSetAttribute(image, "120", "122 192 160"); + IupSetAttribute(image, "121", "123 193 162"); + IupSetAttribute(image, "122", "124 193 162"); + IupSetAttribute(image, "123", "124 194 162"); + IupSetAttribute(image, "124", "127 195 164"); + IupSetAttribute(image, "125", "255 204 48"); + IupSetAttribute(image, "126", "128 195 164"); + IupSetAttribute(image, "127", "129 196 166"); + IupSetAttribute(image, "128", "132 197 167"); + IupSetAttribute(image, "129", "131 197 168"); + IupSetAttribute(image, "130", "133 197 168"); + IupSetAttribute(image, "131", "134 198 169"); + IupSetAttribute(image, "132", "133 198 170"); + IupSetAttribute(image, "133", "136 198 170"); + IupSetAttribute(image, "134", "137 199 171"); + IupSetAttribute(image, "135", "139 201 172"); + IupSetAttribute(image, "136", "140 200 172"); + IupSetAttribute(image, "137", "140 200 173"); + IupSetAttribute(image, "138", "141 201 174"); + IupSetAttribute(image, "139", "142 202 175"); + IupSetAttribute(image, "140", "142 202 176"); + IupSetAttribute(image, "141", "144 202 176"); + IupSetAttribute(image, "142", "145 203 177"); + IupSetAttribute(image, "143", "146 204 178"); + IupSetAttribute(image, "144", "148 203 178"); + IupSetAttribute(image, "145", "149 204 179"); + IupSetAttribute(image, "146", "150 205 180"); + IupSetAttribute(image, "147", "151 206 182"); + IupSetAttribute(image, "148", "152 205 181"); + IupSetAttribute(image, "149", "152 206 181"); + IupSetAttribute(image, "150", "153 206 182"); + IupSetAttribute(image, "151", "155 208 185"); + IupSetAttribute(image, "152", "158 208 184"); + IupSetAttribute(image, "153", "158 209 186"); + IupSetAttribute(image, "154", "159 210 186"); + IupSetAttribute(image, "155", "158 210 187"); + IupSetAttribute(image, "156", "159 211 189"); + IupSetAttribute(image, "157", "159 212 189"); + IupSetAttribute(image, "158", "160 209 186"); + IupSetAttribute(image, "159", "161 210 187"); + IupSetAttribute(image, "160", "162 210 188"); + IupSetAttribute(image, "161", "160 212 189"); + IupSetAttribute(image, "162", "166 209 188"); + IupSetAttribute(image, "163", "164 211 189"); + IupSetAttribute(image, "164", "164 211 190"); + IupSetAttribute(image, "165", "166 212 191"); + IupSetAttribute(image, "166", "167 213 192"); + IupSetAttribute(image, "167", "167 213 193"); + IupSetAttribute(image, "168", "168 213 192"); + IupSetAttribute(image, "169", "170 214 193"); + IupSetAttribute(image, "170", "170 214 194"); + IupSetAttribute(image, "171", "172 213 193"); + IupSetAttribute(image, "172", "172 215 195"); + IupSetAttribute(image, "173", "169 216 195"); + IupSetAttribute(image, "174", "170 216 196"); + IupSetAttribute(image, "175", "173 216 196"); + IupSetAttribute(image, "176", "175 217 198"); + IupSetAttribute(image, "177", "176 217 198"); + IupSetAttribute(image, "178", "179 218 199"); + IupSetAttribute(image, "179", "178 218 200"); + IupSetAttribute(image, "180", "180 218 200"); + IupSetAttribute(image, "181", "182 219 202"); + IupSetAttribute(image, "182", "182 220 202"); + IupSetAttribute(image, "183", "184 220 203"); + IupSetAttribute(image, "184", "184 220 204"); + IupSetAttribute(image, "185", "187 222 205"); + IupSetAttribute(image, "186", "187 222 206"); + IupSetAttribute(image, "187", "189 222 206"); + IupSetAttribute(image, "188", "189 223 208"); + IupSetAttribute(image, "189", "191 224 208"); + IupSetAttribute(image, "190", "192 223 208"); + IupSetAttribute(image, "191", "192 224 209"); + IupSetAttribute(image, "192", "194 224 210"); + IupSetAttribute(image, "193", "195 225 211"); + IupSetAttribute(image, "194", "195 226 212"); + IupSetAttribute(image, "195", "196 225 211"); + IupSetAttribute(image, "196", "196 226 212"); + IupSetAttribute(image, "197", "197 227 213"); + IupSetAttribute(image, "198", "199 227 214"); + IupSetAttribute(image, "199", "200 227 214"); + IupSetAttribute(image, "200", "201 228 215"); + IupSetAttribute(image, "201", "201 228 216"); + IupSetAttribute(image, "202", "203 230 217"); + IupSetAttribute(image, "203", "205 229 217"); + IupSetAttribute(image, "204", "204 230 217"); + IupSetAttribute(image, "205", "206 230 218"); + IupSetAttribute(image, "206", "207 231 220"); + IupSetAttribute(image, "207", "205 233 221"); + IupSetAttribute(image, "208", "208 231 219"); + IupSetAttribute(image, "209", "208 231 220"); + IupSetAttribute(image, "210", "208 232 220"); + IupSetAttribute(image, "211", "210 232 222"); + IupSetAttribute(image, "212", "212 233 223"); + IupSetAttribute(image, "213", "212 234 223"); + IupSetAttribute(image, "214", "214 234 224"); + IupSetAttribute(image, "215", "215 236 226"); + IupSetAttribute(image, "216", "216 234 226"); + IupSetAttribute(image, "217", "217 236 226"); + IupSetAttribute(image, "218", "218 237 228"); + IupSetAttribute(image, "219", "220 237 228"); + IupSetAttribute(image, "220", "222 238 230"); + IupSetAttribute(image, "221", "225 239 232"); + IupSetAttribute(image, "222", "225 240 232"); + IupSetAttribute(image, "223", "226 240 234"); + IupSetAttribute(image, "224", "227 242 236"); + IupSetAttribute(image, "225", "228 240 234"); + IupSetAttribute(image, "226", "230 242 236"); + IupSetAttribute(image, "227", "232 242 237"); + IupSetAttribute(image, "228", "233 243 238"); + IupSetAttribute(image, "229", "233 244 238"); + IupSetAttribute(image, "230", "234 244 239"); + IupSetAttribute(image, "231", "234 244 240"); + IupSetAttribute(image, "232", "235 246 241"); + IupSetAttribute(image, "233", "236 245 240"); + IupSetAttribute(image, "234", "238 246 242"); + IupSetAttribute(image, "235", "240 246 242"); + IupSetAttribute(image, "236", "241 247 244"); + IupSetAttribute(image, "237", "242 248 244"); + IupSetAttribute(image, "238", "243 249 246"); + IupSetAttribute(image, "239", "244 248 246"); + IupSetAttribute(image, "240", "245 249 247"); + IupSetAttribute(image, "241", "245 250 247"); + IupSetAttribute(image, "242", "246 249 248"); + IupSetAttribute(image, "243", "246 250 248"); + IupSetAttribute(image, "244", "248 250 249"); + IupSetAttribute(image, "245", "249 251 250"); + IupSetAttribute(image, "246", "250 252 250"); + IupSetAttribute(image, "247", "250 252 251"); + IupSetAttribute(image, "248", "251 252 252"); + IupSetAttribute(image, "249", "252 253 252"); + IupSetAttribute(image, "250", "252 253 253"); + IupSetAttribute(image, "251", "253 254 253"); + IupSetAttribute(image, "252", "253 254 254"); + IupSetAttribute(image, "253", "254 255 255"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_LogoTecgrafPUC_Rio8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 195, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, 168, 168, 168, 168, 169, 169, 169, 179, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 226, 222, 218, 185, 186, 186, 186, 186, 186, 186, 205, 255, 255, + 255, 255, 48, 62, 85, 85, 85, 85, 85, 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 133, 114, 143, 143, 144, 145, 145, 145, 145, 145, 148, 148, 120, 255, 255, + 255, 255, 43, 34, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 91, 84, 111, 105, 105, 105, 105, 105, 105, 105, 105, 105, 111, 110, 255, 255, + 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 95, 65, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 100, 255, 255, + 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 40, 81, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 77, 255, 255, + 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 29, 84, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 70, 255, 255, + 255, 255, 43, 34, 65, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 81, 148, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 245, 245, 245, 245, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 241, 236, 232, 223, 223, 223, 226, 236, 237, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 241, 241, 241, 241, 241, 246, 246, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 29, 84, 105, 105, 105, 105, 105, 105, 105, 105, 84, 75, 70, 79, 60, 255, 255, + 255, 255, 43, 30, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 71, 71, 71, 71, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 248, 255, 255, 255, 255, 251, 237, 195, 156, 133, 125, 114, 115, 125, 143, 143, 147, 155, 177, 202, 232, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 206, 133, 119, 114, 115, 115, 115, 115, 121, 143, 144, 148, 159, 178, 214, 232, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 223, 179, 157, 157, 155, 163, 178, 214, 232, 243, 251, 195, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 183, 245, 255, 255, 209, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 207, 246, 255, 241, 209, 172, 214, 229, 246, 255, 255, 255, 255, 255, 255, 251, 236, 222, 168, 157, 148, 148, 148, 148, 149, 149, 159, 159, 159, 159, 173, 178, 214, 232, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 31, 105, 105, 105, 105, 105, 105, 105, 105, 102, 56, 18, 20, 33, 52, 255, 255, + 255, 255, 43, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 30, 70, 70, 70, 70, 70, 71, 71, 71, 71, 75, 31, 2, 2, 2, 2, 2, 2, 2, 2, 5, 61, 248, 255, 255, 245, 208, 116, 81, 81, 81, 81, 81, 80, 80, 80, 81, 81, 84, 85, 111, 142, 148, 164, 214, 239, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 212, 116, 81, 81, 84, 81, 80, 80, 80, 79, 79, 79, 80, 81, 81, 102, 115, 148, 162, 189, 224, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 231, 136, 107, 111, 111, 111, 111, 111, 112, 115, 143, 159, 188, 172, 32, 83, 141, 142, 142, 142, 142, 142, 142, 142, 143, 115, 236, 255, 255, 54, 81, 142, 143, 143, 143, 143, 143, 143, 143, 143, 148, 211, 126, 108, 111, 115, 153, 232, 246, 255, 255, 255, 255, 245, 199, 124, 115, 115, 115, 112, 111, 111, 111, 105, 105, 105, 111, 111, 112, 115, 115, 143, 151, 164, 190, 215, 240, 255, 255, 255, 255, 206, 180, 184, 91, 36, 105, 105, 105, 105, 105, 105, 105, 105, 111, 114, 156, 167, 157, 156, 255, 255, + 255, 255, 235, 198, 198, 198, 198, 198, 198, 198, 198, 198, 35, 28, 65, 70, 70, 70, 70, 70, 71, 71, 71, 79, 107, 140, 198, 198, 198, 198, 198, 198, 198, 198, 211, 251, 251, 206, 76, 70, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 105, 148, 189, 217, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 123, 70, 75, 79, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 80, 84, 143, 178, 192, 240, 251, 255, 255, 255, 255, 255, 255, 255, 245, 132, 75, 81, 81, 81, 80, 81, 81, 81, 81, 81, 81, 84, 114, 145, 65, 75, 81, 81, 81, 81, 81, 81, 81, 81, 85, 115, 236, 255, 255, 48, 56, 81, 83, 83, 83, 84, 84, 84, 84, 105, 124, 57, 81, 84, 84, 84, 104, 223, 244, 255, 255, 255, 235, 91, 79, 85, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 105, 115, 163, 192, 221, 249, 255, 255, 92, 65, 143, 141, 84, 102, 105, 105, 105, 105, 105, 105, 105, 115, 177, 177, 163, 148, 120, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 70, 70, 70, 70, 70, 71, 71, 79, 148, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 130, 57, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 101, 163, 192, 240, 255, 255, 255, 255, 255, 255, 255, 255, 211, 60, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 81, 152, 192, 224, 249, 255, 255, 255, 255, 255, 238, 90, 65, 79, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 108, 154, 75, 83, 83, 83, 83, 84, 191, 244, 255, 255, 238, 68, 66, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 102, 127, 191, 217, 249, 255, 88, 41, 85, 85, 85, 102, 102, 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 70, 70, 70, 70, 70, 71, 79, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 248, 98, 39, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 80, 152, 217, 234, 255, 255, 255, 255, 255, 255, 210, 46, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 125, 214, 224, 251, 255, 255, 255, 245, 90, 59, 79, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 108, 121, 81, 81, 83, 83, 83, 84, 155, 241, 255, 251, 123, 59, 79, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 115, 174, 232, 255, 88, 41, 85, 85, 85, 85, 102, 102, 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 70, 70, 70, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 139, 29, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 128, 217, 240, 255, 255, 255, 255, 235, 46, 59, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 124, 192, 240, 255, 255, 255, 122, 40, 75, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 84, 81, 81, 81, 83, 83, 83, 143, 240, 255, 238, 60, 79, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 102, 143, 178, 249, 88, 41, 85, 85, 85, 85, 85, 85, 102, 102, 102, 105, 105, 105, 105, 105, 105, 105, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 70, 70, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 255, 238, 35, 57, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 62, 56, 39, 42, 62, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 158, 217, 246, 255, 255, 248, 72, 40, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 59, 41, 36, 41, 65, 75, 79, 79, 79, 79, 79, 79, 79, 79, 80, 154, 191, 246, 255, 235, 33, 64, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 115, 232, 255, 206, 61, 81, 84, 84, 84, 84, 84, 84, 84, 84, 81, 71, 59, 42, 39, 41, 59, 75, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 148, 241, 88, 41, 85, 85, 85, 85, 85, 85, 85, 102, 102, 102, 102, 105, 105, 105, 105, 105, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 70, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 251, 122, 19, 65, 71, 71, 75, 75, 75, 75, 75, 75, 75, 65, 29, 18, 25, 26, 20, 2, 28, 65, 75, 75, 75, 75, 75, 75, 75, 75, 81, 178, 224, 255, 255, 210, 21, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 59, 19, 25, 43, 44, 24, 3, 29, 71, 79, 79, 79, 79, 79, 79, 79, 79, 81, 151, 223, 255, 122, 34, 75, 80, 80, 80, 80, 80, 80, 80, 80, 80, 79, 65, 57, 36, 41, 59, 75, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 114, 209, 255, 175, 71, 83, 84, 84, 84, 84, 84, 84, 84, 79, 34, 21, 25, 37, 69, 35, 20, 7, 62, 84, 84, 84, 84, 84, 84, 84, 84, 105, 143, 236, 88, 39, 81, 81, 84, 85, 85, 85, 85, 85, 85, 102, 102, 102, 84, 83, 83, 84, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 65, 70, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 245, 25, 42, 71, 71, 71, 71, 75, 75, 75, 75, 75, 71, 39, 93, 206, 225, 232, 211, 117, 11, 12, 65, 75, 75, 75, 75, 75, 75, 75, 75, 143, 191, 246, 248, 88, 31, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 65, 40, 138, 238, 245, 248, 245, 193, 23, 19, 75, 79, 79, 79, 75, 75, 75, 75, 75, 84, 127, 242, 46, 56, 79, 79, 80, 80, 80, 80, 80, 80, 80, 79, 56, 19, 35, 54, 25, 12, 12, 65, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 106, 206, 255, 175, 42, 39, 36, 36, 36, 34, 34, 34, 31, 57, 47, 126, 156, 186, 168, 156, 126, 34, 34, 81, 84, 84, 84, 84, 84, 84, 84, 85, 112, 211, 88, 6, 8, 10, 41, 85, 85, 85, 85, 85, 85, 85, 85, 102, 65, 10, 8, 13, 74, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 65, 65, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 211, 7, 64, 71, 71, 71, 71, 71, 75, 75, 75, 75, 82, 84, 114, 115, 114, 113, 104, 81, 62, 31, 59, 75, 75, 75, 75, 75, 75, 75, 75, 81, 160, 240, 238, 25, 57, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 70, 213, 255, 255, 255, 255, 255, 255, 213, 4, 29, 31, 30, 29, 28, 22, 29, 34, 40, 45, 73, 194, 18, 65, 79, 79, 79, 80, 80, 80, 80, 80, 80, 71, 67, 210, 245, 251, 245, 227, 53, 7, 75, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 75, 65, 57, 57, 65, 78, 208, 255, 235, 134, 99, 89, 38, 19, 39, 59, 71, 71, 111, 143, 142, 115, 115, 115, 112, 111, 105, 80, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 213, 140, 140, 50, 34, 85, 85, 85, 85, 85, 85, 85, 85, 105, 111, 97, 140, 140, 198, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 28, 65, 65, 65, 65, 65, 65, 65, 70, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 138, 8, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 145, 223, 235, 18, 64, 75, 75, 75, 75, 75, 75, 75, 75, 75, 84, 156, 255, 255, 255, 255, 255, 255, 255, 255, 122, 55, 88, 97, 130, 138, 193, 213, 235, 238, 238, 245, 210, 18, 65, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 213, 255, 255, 255, 255, 255, 241, 15, 58, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 42, 18, 24, 25, 33, 35, 54, 231, 255, 255, 250, 200, 110, 105, 111, 111, 111, 105, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 85, 85, 85, 85, 85, 85, 105, 115, 200, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 70, 79, 148, 243, 255, 255, 255, 255, 255, 255, 129, 13, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 115, 185, 208, 8, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 114, 223, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 13, 71, 79, 79, 79, 79, 79, 80, 80, 80, 84, 143, 245, 255, 255, 255, 255, 255, 248, 37, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 75, 67, 206, 238, 245, 245, 245, 238, 248, 255, 245, 132, 81, 84, 84, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 85, 85, 85, 85, 85, 105, 115, 207, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 129, 12, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 111, 158, 140, 7, 71, 75, 75, 75, 75, 75, 75, 75, 75, 79, 143, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 12, 65, 79, 79, 79, 79, 79, 79, 79, 80, 102, 164, 241, 255, 255, 255, 255, 255, 238, 32, 65, 81, 81, 81, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 211, 255, 255, 255, 255, 255, 255, 255, 249, 134, 70, 81, 81, 81, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 85, 85, 85, 105, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 139, 6, 70, 71, 71, 71, 71, 71, 71, 71, 71, 75, 71, 65, 65, 65, 65, 65, 65, 64, 64, 62, 62, 59, 59, 58, 57, 57, 57, 57, 56, 42, 65, 157, 193, 7, 65, 75, 75, 75, 75, 75, 75, 75, 75, 79, 148, 228, 255, 255, 255, 255, 255, 255, 255, 255, 245, 165, 171, 207, 222, 223, 232, 244, 244, 244, 244, 246, 206, 12, 64, 79, 79, 79, 79, 79, 79, 79, 79, 81, 163, 220, 243, 250, 255, 248, 236, 95, 57, 79, 80, 80, 81, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 115, 237, 255, 255, 255, 255, 255, 255, 255, 235, 60, 81, 81, 81, 81, 81, 83, 83, 83, 83, 81, 79, 65, 57, 41, 41, 36, 34, 29, 56, 81, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 85, 85, 105, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 210, 1, 62, 71, 71, 71, 71, 71, 71, 71, 71, 75, 65, 24, 35, 35, 35, 33, 33, 33, 33, 24, 18, 20, 20, 25, 25, 25, 25, 25, 24, 24, 25, 93, 210, 10, 62, 75, 75, 75, 75, 75, 75, 75, 75, 75, 150, 215, 250, 255, 255, 255, 255, 255, 255, 255, 134, 65, 81, 84, 111, 115, 148, 189, 220, 224, 230, 233, 156, 16, 41, 79, 79, 79, 79, 79, 79, 79, 79, 79, 104, 172, 189, 178, 177, 152, 107, 75, 79, 80, 80, 80, 80, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 251, 97, 58, 81, 81, 81, 81, 81, 81, 83, 83, 83, 62, 19, 20, 25, 51, 51, 72, 69, 17, 59, 83, 84, 84, 84, 84, 84, 84, 84, 84, 111, 209, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 79, 148, 243, 255, 255, 255, 255, 255, 255, 238, 9, 56, 71, 71, 71, 71, 71, 71, 71, 71, 71, 172, 157, 238, 245, 245, 245, 245, 245, 235, 109, 77, 100, 103, 152, 157, 181, 201, 209, 223, 207, 222, 226, 238, 24, 39, 75, 75, 75, 75, 75, 75, 75, 75, 75, 104, 217, 233, 249, 255, 255, 255, 255, 255, 206, 40, 65, 75, 75, 75, 79, 80, 81, 84, 104, 114, 164, 226, 89, 14, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 81, 113, 115, 115, 111, 81, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 84, 112, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 245, 43, 65, 81, 81, 81, 81, 81, 81, 81, 81, 84, 65, 170, 235, 245, 251, 251, 237, 126, 65, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 248, 48, 13, 70, 71, 71, 71, 71, 71, 71, 71, 71, 106, 191, 191, 232, 243, 242, 238, 195, 76, 70, 79, 79, 81, 84, 111, 143, 155, 163, 181, 187, 217, 216, 248, 88, 12, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 127, 191, 217, 224, 241, 241, 226, 136, 70, 65, 75, 75, 75, 75, 75, 75, 75, 79, 79, 84, 147, 245, 208, 9, 57, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 238, 24, 65, 81, 81, 81, 81, 81, 81, 81, 81, 105, 164, 221, 240, 236, 209, 157, 114, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 198, 2, 57, 71, 71, 71, 71, 71, 71, 71, 71, 71, 100, 150, 151, 148, 146, 114, 80, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 84, 153, 245, 255, 210, 7, 42, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 106, 155, 149, 148, 143, 111, 81, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 75, 171, 255, 248, 88, 10, 65, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 238, 20, 65, 81, 81, 81, 81, 81, 81, 81, 81, 81, 128, 164, 159, 145, 142, 114, 105, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 105, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 248, 54, 8, 65, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 79, 81, 80, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 206, 255, 255, 248, 87, 7, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 79, 81, 81, 79, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 76, 238, 255, 255, 238, 35, 13, 65, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 120, 238, 255, 255, 255, 255, 255, 255, 245, 35, 42, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 84, 105, 85, 84, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 111, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 86, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 235, 20, 13, 65, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 70, 57, 118, 248, 255, 255, 255, 238, 26, 13, 63, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 65, 47, 206, 255, 255, 255, 255, 235, 35, 10, 57, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 79, 70, 70, 80, 80, 80, 80, 80, 80, 80, 80, 84, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 125, 238, 255, 255, 255, 255, 255, 255, 251, 97, 13, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 112, 211, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 85, 115, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 20, 12, 59, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 62, 40, 95, 245, 255, 255, 255, 255, 255, 213, 37, 7, 57, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 59, 40, 139, 251, 255, 255, 255, 255, 255, 238, 87, 7, 19, 57, 71, 75, 79, 79, 79, 79, 79, 75, 75, 65, 36, 12, 59, 80, 80, 80, 80, 80, 80, 80, 80, 83, 111, 236, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 125, 238, 255, 255, 255, 255, 255, 255, 255, 231, 12, 40, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, 81, 81, 84, 84, 84, 84, 84, 84, 84, 84, 115, 222, 255, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 85, 115, 207, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 27, 65, 65, 65, 65, 65, 65, 65, 65, 65, 75, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 37, 2, 29, 62, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 65, 59, 39, 33, 130, 245, 255, 255, 255, 255, 255, 255, 255, 238, 69, 2, 31, 62, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 62, 34, 45, 196, 251, 255, 255, 248, 231, 236, 241, 232, 208, 117, 18, 2, 13, 29, 39, 41, 39, 39, 34, 19, 18, 18, 54, 16, 59, 80, 80, 80, 80, 80, 80, 80, 80, 83, 114, 242, 255, 255, 48, 42, 81, 81, 81, 81, 81, 81, 81, 81, 84, 125, 238, 255, 255, 255, 255, 255, 255, 255, 251, 135, 7, 39, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 75, 57, 30, 75, 83, 84, 84, 84, 84, 84, 84, 84, 143, 187, 251, 255, 255, 92, 34, 84, 84, 84, 84, 84, 84, 84, 84, 85, 115, 207, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 19, 62, 62, 62, 62, 62, 62, 62, 62, 62, 71, 148, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 137, 20, 6, 19, 39, 59, 65, 70, 71, 71, 71, 71, 71, 71, 71, 65, 65, 59, 41, 29, 24, 69, 210, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 131, 25, 7, 19, 56, 65, 70, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 62, 42, 29, 24, 117, 238, 255, 255, 255, 255, 245, 52, 84, 145, 145, 148, 148, 155, 155, 156, 133, 133, 109, 33, 54, 69, 97, 198, 235, 248, 37, 59, 80, 80, 80, 80, 80, 80, 80, 80, 81, 114, 246, 255, 255, 48, 41, 75, 75, 75, 75, 75, 75, 75, 75, 79, 115, 238, 255, 255, 255, 255, 255, 255, 255, 255, 251, 138, 12, 18, 59, 75, 81, 81, 81, 81, 81, 81, 81, 80, 75, 62, 34, 18, 33, 7, 57, 79, 79, 80, 81, 81, 81, 81, 81, 111, 125, 209, 255, 255, 92, 30, 79, 79, 79, 79, 79, 79, 79, 79, 80, 111, 207, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 7, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 100, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 137, 54, 15, 7, 10, 14, 29, 31, 36, 36, 34, 29, 19, 17, 17, 18, 43, 117, 227, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 193, 51, 9, 7, 10, 19, 34, 36, 41, 42, 42, 41, 39, 34, 19, 18, 17, 43, 117, 213, 251, 255, 255, 255, 255, 255, 255, 88, 19, 80, 81, 81, 81, 81, 81, 81, 81, 106, 184, 201, 255, 255, 255, 255, 251, 235, 29, 65, 80, 80, 80, 80, 80, 80, 80, 80, 84, 114, 246, 255, 255, 53, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 60, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 69, 9, 12, 19, 31, 40, 56, 41, 39, 34, 19, 18, 20, 69, 197, 245, 53, 12, 19, 24, 29, 29, 34, 34, 39, 40, 40, 42, 91, 242, 255, 97, 10, 13, 13, 13, 13, 13, 13, 13, 13, 17, 40, 208, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 213, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 210, 129, 88, 72, 49, 43, 44, 53, 87, 94, 129, 198, 235, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 238, 210, 134, 87, 48, 44, 26, 33, 33, 26, 43, 69, 96, 140, 213, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 140, 7, 65, 75, 79, 79, 79, 79, 79, 79, 79, 127, 192, 224, 232, 236, 226, 182, 91, 62, 79, 79, 80, 80, 80, 80, 80, 80, 80, 81, 124, 248, 255, 255, 227, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 210, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 235, 137, 94, 69, 44, 26, 44, 54, 87, 130, 210, 245, 255, 255, 255, 235, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 210, 246, 255, 235, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 208, 245, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 12, 56, 75, 75, 79, 79, 79, 79, 79, 79, 80, 127, 161, 149, 143, 115, 111, 81, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 75, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 88, 8, 65, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 81, 81, 80, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 75, 68, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 23, 19, 71, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 70, 40, 175, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 249, 248, 248, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 249, 248, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 20, 18, 65, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 75, 62, 34, 134, 251, 255, 255, 255, 255, 223, 201, 201, 201, 201, 201, 204, 219, 245, 255, 237, 201, 201, 223, 255, 255, 255, 237, 201, 201, 223, 255, 255, 251, 241, 201, 154, 127, 128, 156, 209, 246, 255, 255, 255, 255, 255, 255, 255, 255, 209, 201, 201, 201, 201, 201, 203, 209, 240, 251, 255, 223, 201, 203, 241, 255, 255, 249, 232, 183, 154, 152, 157, 204, 241, 251, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 35, 6, 36, 70, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 75, 62, 34, 29, 138, 251, 255, 255, 255, 255, 255, 147, 85, 85, 105, 105, 105, 85, 85, 127, 245, 209, 85, 85, 152, 255, 255, 255, 209, 85, 85, 154, 255, 251, 223, 113, 85, 105, 111, 111, 105, 85, 119, 237, 255, 255, 255, 255, 255, 255, 255, 119, 85, 85, 105, 105, 105, 102, 85, 114, 232, 255, 157, 85, 105, 209, 255, 245, 156, 105, 85, 105, 111, 105, 85, 111, 183, 251, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 134, 15, 7, 28, 57, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 71, 59, 39, 19, 18, 94, 235, 255, 255, 255, 255, 255, 255, 255, 152, 85, 102, 179, 223, 209, 125, 85, 102, 207, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 255, 236, 111, 85, 111, 200, 241, 236, 169, 105, 111, 167, 251, 255, 255, 255, 255, 255, 255, 120, 85, 85, 204, 223, 223, 156, 105, 85, 158, 251, 157, 85, 105, 209, 249, 167, 85, 85, 127, 226, 236, 209, 114, 85, 105, 223, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 139, 51, 9, 2, 8, 13, 19, 19, 28, 19, 19, 13, 13, 7, 18, 51, 130, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 105, 226, 248, 248, 158, 85, 85, 201, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 251, 169, 85, 105, 169, 255, 255, 255, 251, 232, 241, 248, 255, 245, 241, 241, 241, 245, 255, 120, 85, 85, 232, 247, 246, 209, 105, 85, 154, 251, 157, 85, 105, 209, 241, 114, 85, 113, 237, 255, 255, 255, 209, 85, 85, 147, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 213, 170, 99, 88, 87, 69, 89, 130, 137, 193, 211, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 85, 125, 127, 125, 105, 85, 111, 232, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 249, 152, 85, 105, 223, 255, 255, 255, 255, 255, 255, 255, 255, 127, 85, 85, 85, 179, 255, 120, 85, 85, 111, 113, 113, 105, 85, 105, 209, 255, 157, 85, 105, 209, 232, 105, 85, 127, 249, 255, 255, 255, 241, 85, 85, 114, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 85, 111, 111, 111, 114, 125, 219, 251, 209, 85, 85, 154, 255, 255, 255, 209, 85, 85, 154, 249, 154, 85, 105, 209, 255, 255, 255, 255, 248, 249, 249, 255, 154, 114, 114, 114, 183, 255, 120, 85, 85, 114, 119, 105, 85, 113, 219, 249, 255, 157, 85, 105, 209, 236, 105, 85, 125, 246, 255, 255, 255, 236, 85, 85, 119, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 105, 219, 241, 241, 243, 251, 255, 255, 222, 105, 85, 125, 245, 251, 248, 158, 85, 85, 169, 255, 207, 85, 85, 125, 245, 251, 251, 236, 114, 125, 154, 251, 248, 245, 245, 245, 248, 255, 120, 85, 85, 237, 247, 127, 85, 105, 222, 251, 255, 157, 85, 105, 209, 245, 125, 85, 105, 204, 251, 251, 248, 157, 85, 102, 169, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 85, 105, 226, 255, 255, 255, 255, 255, 255, 245, 125, 85, 85, 119, 156, 128, 105, 85, 111, 236, 255, 248, 128, 85, 85, 114, 156, 152, 105, 85, 105, 209, 251, 255, 255, 255, 255, 255, 255, 120, 85, 85, 241, 255, 226, 108, 85, 114, 242, 255, 157, 85, 105, 209, 255, 223, 108, 85, 105, 128, 157, 125, 85, 85, 125, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 113, 113, 232, 255, 255, 255, 255, 255, 255, 255, 236, 147, 111, 105, 105, 105, 111, 125, 222, 255, 255, 255, 245, 177, 114, 105, 105, 105, 111, 127, 226, 251, 255, 255, 255, 255, 255, 255, 255, 127, 113, 113, 243, 255, 255, 166, 113, 113, 179, 255, 167, 113, 114, 219, 255, 255, 232, 127, 111, 105, 105, 105, 114, 158, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 237, 236, 236, 245, 255, 255, 255, 255, 255, 255, 255, 251, 241, 236, 236, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 237, 236, 240, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(208, 48, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "40 45 54"); + IupSetAttribute(image, "2", "45 50 60"); + IupSetAttribute(image, "3", "48 54 63"); + IupSetAttribute(image, "4", "53 56 63"); + IupSetAttribute(image, "5", "47 53 64"); + IupSetAttribute(image, "6", "48 54 64"); + IupSetAttribute(image, "7", "52 58 67"); + IupSetAttribute(image, "8", "54 61 73"); + IupSetAttribute(image, "9", "56 60 67"); + IupSetAttribute(image, "10", "56 62 74"); + IupSetAttribute(image, "11", "60 64 71"); + IupSetAttribute(image, "12", "60 66 76"); + IupSetAttribute(image, "13", "61 68 81"); + IupSetAttribute(image, "14", "63 72 86"); + IupSetAttribute(image, "15", "65 69 75"); + IupSetAttribute(image, "16", "68 72 78"); + IupSetAttribute(image, "17", "64 70 81"); + IupSetAttribute(image, "18", "68 74 84"); + IupSetAttribute(image, "19", "68 76 91"); + IupSetAttribute(image, "20", "74 78 84"); + IupSetAttribute(image, "21", "73 79 90"); + IupSetAttribute(image, "22", "71 80 95"); + IupSetAttribute(image, "23", "76 80 85"); + IupSetAttribute(image, "24", "77 82 90"); + IupSetAttribute(image, "25", "81 85 92"); + IupSetAttribute(image, "26", "86 89 95"); + IupSetAttribute(image, "27", "71 79 96"); + IupSetAttribute(image, "28", "70 80 96"); + IupSetAttribute(image, "29", "75 84 99"); + IupSetAttribute(image, "30", "77 86 104"); + IupSetAttribute(image, "31", "78 88 106"); + IupSetAttribute(image, "32", "81 86 96"); + IupSetAttribute(image, "33", "85 90 98"); + IupSetAttribute(image, "34", "81 90 108"); + IupSetAttribute(image, "35", "89 93 99"); + IupSetAttribute(image, "36", "83 94 113"); + IupSetAttribute(image, "37", "92 96 101"); + IupSetAttribute(image, "38", "90 96 105"); + IupSetAttribute(image, "39", "86 97 116"); + IupSetAttribute(image, "40", "89 98 115"); + IupSetAttribute(image, "41", "89 100 121"); + IupSetAttribute(image, "42", "92 104 125"); + IupSetAttribute(image, "43", "99 102 107"); + IupSetAttribute(image, "44", "101 105 109"); + IupSetAttribute(image, "45", "97 102 113"); + IupSetAttribute(image, "46", "99 105 116"); + IupSetAttribute(image, "47", "100 109 126"); + IupSetAttribute(image, "48", "104 108 112"); + IupSetAttribute(image, "49", "108 111 115"); + IupSetAttribute(image, "50", "108 111 116"); + IupSetAttribute(image, "51", "110 112 117"); + IupSetAttribute(image, "52", "106 112 123"); + IupSetAttribute(image, "53", "112 115 118"); + IupSetAttribute(image, "54", "113 117 122"); + IupSetAttribute(image, "55", "117 120 124"); + IupSetAttribute(image, "56", "94 106 128"); + IupSetAttribute(image, "57", "97 109 131"); + IupSetAttribute(image, "58", "100 112 134"); + IupSetAttribute(image, "59", "101 114 137"); + IupSetAttribute(image, "60", "107 116 132"); + IupSetAttribute(image, "61", "105 117 138"); + IupSetAttribute(image, "62", "104 117 141"); + IupSetAttribute(image, "63", "106 120 143"); + IupSetAttribute(image, "64", "106 119 144"); + IupSetAttribute(image, "65", "110 123 149"); + IupSetAttribute(image, "66", "105 122 152"); + IupSetAttribute(image, "67", "114 120 131"); + IupSetAttribute(image, "68", "115 124 142"); + IupSetAttribute(image, "69", "122 125 129"); + IupSetAttribute(image, "70", "112 125 150"); + IupSetAttribute(image, "71", "112 126 152"); + IupSetAttribute(image, "72", "125 129 132"); + IupSetAttribute(image, "73", "122 129 141"); + IupSetAttribute(image, "74", "118 129 148"); + IupSetAttribute(image, "75", "115 130 156"); + IupSetAttribute(image, "76", "123 132 148"); + IupSetAttribute(image, "77", "123 134 155"); + IupSetAttribute(image, "78", "124 136 158"); + IupSetAttribute(image, "79", "118 133 160"); + IupSetAttribute(image, "80", "120 134 162"); + IupSetAttribute(image, "81", "122 137 165"); + IupSetAttribute(image, "82", "123 139 168"); + IupSetAttribute(image, "83", "124 139 168"); + IupSetAttribute(image, "84", "125 140 169"); + IupSetAttribute(image, "85", "126 142 172"); + IupSetAttribute(image, "86", "127 144 173"); + IupSetAttribute(image, "87", "129 131 134"); + IupSetAttribute(image, "88", "132 134 138"); + IupSetAttribute(image, "89", "134 136 140"); + IupSetAttribute(image, "90", "133 139 149"); + IupSetAttribute(image, "91", "129 138 155"); + IupSetAttribute(image, "92", "139 142 146"); + IupSetAttribute(image, "93", "136 141 152"); + IupSetAttribute(image, "94", "142 144 147"); + IupSetAttribute(image, "95", "140 145 155"); + IupSetAttribute(image, "96", "144 146 149"); + IupSetAttribute(image, "97", "146 149 153"); + IupSetAttribute(image, "98", "150 154 159"); + IupSetAttribute(image, "99", "153 155 158"); + IupSetAttribute(image, "100", "129 141 163"); + IupSetAttribute(image, "101", "129 143 168"); + IupSetAttribute(image, "102", "128 143 172"); + IupSetAttribute(image, "103", "134 145 165"); + IupSetAttribute(image, "104", "130 144 169"); + IupSetAttribute(image, "105", "128 144 173"); + IupSetAttribute(image, "106", "132 145 169"); + IupSetAttribute(image, "107", "133 147 172"); + IupSetAttribute(image, "108", "133 148 175"); + IupSetAttribute(image, "109", "142 149 163"); + IupSetAttribute(image, "110", "138 150 172"); + IupSetAttribute(image, "111", "132 148 178"); + IupSetAttribute(image, "112", "135 152 182"); + IupSetAttribute(image, "113", "136 151 177"); + IupSetAttribute(image, "114", "139 154 180"); + IupSetAttribute(image, "115", "139 155 186"); + IupSetAttribute(image, "116", "148 157 172"); + IupSetAttribute(image, "117", "154 157 162"); + IupSetAttribute(image, "118", "153 159 169"); + IupSetAttribute(image, "119", "144 158 183"); + IupSetAttribute(image, "120", "144 159 185"); + IupSetAttribute(image, "121", "143 160 188"); + IupSetAttribute(image, "122", "158 160 163"); + IupSetAttribute(image, "123", "156 161 171"); + IupSetAttribute(image, "124", "149 161 181"); + IupSetAttribute(image, "125", "147 161 186"); + IupSetAttribute(image, "126", "155 164 179"); + IupSetAttribute(image, "127", "153 166 188"); + IupSetAttribute(image, "128", "156 168 190"); + IupSetAttribute(image, "129", "161 163 166"); + IupSetAttribute(image, "130", "163 165 168"); + IupSetAttribute(image, "131", "172 173 175"); + IupSetAttribute(image, "132", "166 172 182"); + IupSetAttribute(image, "133", "163 172 187"); + IupSetAttribute(image, "134", "171 174 178"); + IupSetAttribute(image, "135", "174 176 178"); + IupSetAttribute(image, "136", "169 176 190"); + IupSetAttribute(image, "137", "176 178 180"); + IupSetAttribute(image, "138", "180 182 184"); + IupSetAttribute(image, "139", "182 184 186"); + IupSetAttribute(image, "140", "187 188 190"); + IupSetAttribute(image, "141", "142 159 192"); + IupSetAttribute(image, "142", "142 160 192"); + IupSetAttribute(image, "143", "146 163 195"); + IupSetAttribute(image, "144", "149 167 200"); + IupSetAttribute(image, "145", "150 169 202"); + IupSetAttribute(image, "146", "152 166 194"); + IupSetAttribute(image, "147", "156 169 193"); + IupSetAttribute(image, "148", "155 172 203"); + IupSetAttribute(image, "149", "156 174 208"); + IupSetAttribute(image, "150", "158 176 203"); + IupSetAttribute(image, "151", "158 177 209"); + IupSetAttribute(image, "152", "161 172 194"); + IupSetAttribute(image, "153", "161 175 200"); + IupSetAttribute(image, "154", "164 176 196"); + IupSetAttribute(image, "155", "163 178 204"); + IupSetAttribute(image, "156", "170 179 197"); + IupSetAttribute(image, "157", "171 181 201"); + IupSetAttribute(image, "158", "174 184 203"); + IupSetAttribute(image, "159", "162 179 213"); + IupSetAttribute(image, "160", "164 182 216"); + IupSetAttribute(image, "161", "167 184 214"); + IupSetAttribute(image, "162", "166 186 220"); + IupSetAttribute(image, "163", "172 187 211"); + IupSetAttribute(image, "164", "170 188 219"); + IupSetAttribute(image, "165", "182 187 196"); + IupSetAttribute(image, "166", "177 186 202"); + IupSetAttribute(image, "167", "178 186 204"); + IupSetAttribute(image, "168", "178 188 205"); + IupSetAttribute(image, "169", "180 189 205"); + IupSetAttribute(image, "170", "190 191 193"); + IupSetAttribute(image, "171", "184 190 201"); + IupSetAttribute(image, "172", "177 190 211"); + IupSetAttribute(image, "173", "176 191 219"); + IupSetAttribute(image, "174", "172 191 224"); + IupSetAttribute(image, "175", "190 192 196"); + IupSetAttribute(image, "176", "189 194 202"); + IupSetAttribute(image, "177", "181 193 212"); + IupSetAttribute(image, "178", "179 194 220"); + IupSetAttribute(image, "179", "185 194 209"); + IupSetAttribute(image, "180", "186 195 214"); + IupSetAttribute(image, "181", "184 196 214"); + IupSetAttribute(image, "182", "191 198 210"); + IupSetAttribute(image, "183", "190 198 213"); + IupSetAttribute(image, "184", "186 198 218"); + IupSetAttribute(image, "185", "188 199 218"); + IupSetAttribute(image, "186", "190 200 218"); + IupSetAttribute(image, "187", "190 202 221"); + IupSetAttribute(image, "188", "175 194 227"); + IupSetAttribute(image, "189", "180 197 227"); + IupSetAttribute(image, "190", "182 200 230"); + IupSetAttribute(image, "191", "187 202 228"); + IupSetAttribute(image, "192", "189 206 233"); + IupSetAttribute(image, "193", "196 197 198"); + IupSetAttribute(image, "194", "195 197 201"); + IupSetAttribute(image, "195", "193 198 206"); + IupSetAttribute(image, "196", "197 197 200"); + IupSetAttribute(image, "197", "199 200 202"); + IupSetAttribute(image, "198", "204 205 206"); + IupSetAttribute(image, "199", "192 198 208"); + IupSetAttribute(image, "200", "196 201 211"); + IupSetAttribute(image, "201", "194 202 217"); + IupSetAttribute(image, "202", "194 204 222"); + IupSetAttribute(image, "203", "196 203 216"); + IupSetAttribute(image, "204", "198 205 217"); + IupSetAttribute(image, "205", "199 206 221"); + IupSetAttribute(image, "206", "205 206 208"); + IupSetAttribute(image, "207", "201 207 217"); + IupSetAttribute(image, "208", "206 208 212"); + IupSetAttribute(image, "209", "204 209 220"); + IupSetAttribute(image, "210", "210 211 212"); + IupSetAttribute(image, "211", "209 213 219"); + IupSetAttribute(image, "212", "215 217 221"); + IupSetAttribute(image, "213", "218 219 220"); + IupSetAttribute(image, "214", "193 205 227"); + IupSetAttribute(image, "215", "193 206 232"); + IupSetAttribute(image, "216", "199 209 225"); + IupSetAttribute(image, "217", "195 209 234"); + IupSetAttribute(image, "218", "203 210 224"); + IupSetAttribute(image, "219", "207 213 224"); + IupSetAttribute(image, "220", "201 215 236"); + IupSetAttribute(image, "221", "206 216 236"); + IupSetAttribute(image, "222", "208 214 225"); + IupSetAttribute(image, "223", "211 217 227"); + IupSetAttribute(image, "224", "209 219 237"); + IupSetAttribute(image, "225", "217 221 227"); + IupSetAttribute(image, "226", "217 221 230"); + IupSetAttribute(image, "227", "222 223 224"); + IupSetAttribute(image, "228", "216 223 236"); + IupSetAttribute(image, "229", "209 221 240"); + IupSetAttribute(image, "230", "214 224 239"); + IupSetAttribute(image, "231", "222 224 226"); + IupSetAttribute(image, "232", "221 226 234"); + IupSetAttribute(image, "233", "215 226 242"); + IupSetAttribute(image, "234", "218 227 242"); + IupSetAttribute(image, "235", "226 226 227"); + IupSetAttribute(image, "236", "226 229 235"); + IupSetAttribute(image, "237", "230 232 237"); + IupSetAttribute(image, "238", "234 235 236"); + IupSetAttribute(image, "239", "226 231 242"); + IupSetAttribute(image, "240", "229 234 243"); + IupSetAttribute(image, "241", "234 237 241"); + IupSetAttribute(image, "242", "238 240 242"); + IupSetAttribute(image, "243", "238 240 245"); + IupSetAttribute(image, "244", "237 241 249"); + IupSetAttribute(image, "245", "242 243 245"); + IupSetAttribute(image, "246", "244 245 248"); + IupSetAttribute(image, "247", "247 248 249"); + IupSetAttribute(image, "248", "249 249 250"); + IupSetAttribute(image, "249", "250 250 252"); + IupSetAttribute(image, "250", "251 252 252"); + IupSetAttribute(image, "251", "252 252 253"); + IupSetAttribute(image, "252", "0 0 0"); + IupSetAttribute(image, "253", "0 0 0"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + +static Ihandle* load_image_LogoTecgraf8(void) +{ + unsigned char imgdata[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 220, 237, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 124, 55, 114, 113, 182, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 144, 55, 123, 114, 113, 112, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 54, 113, 120, 114, 113, 112, 111, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 72, 157, 120, 114, 113, 112, 111, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 68, 113, 123, 120, 85, 32, 78, 111, 112, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 72, 157, 120, 164, 246, 27, 15, 86, 107, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 84, 160, 120, 240, 255, 218, 7, 41, 107, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 112, 156, 173, 253, 255, 255, 44, 23, 90, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 71, 154, 123, 222, 255, 255, 255, 140, 22, 74, 90, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 83, 159, 121, 243, 255, 255, 255, 236, 23, 53, 90, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 86, 167, 158, 255, 255, 255, 255, 253, 38, 41, 103, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 90, 168, 186, 255, 255, 255, 255, 255, 97, 39, 107, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 112, 160, 210, 255, 255, 255, 255, 255, 143, 40, 90, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 129, 156, 228, 255, 255, 255, 255, 255, 200, 41, 86, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 163, 123, 241, 255, 255, 255, 255, 255, 231, 42, 86, 90, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 60, 169, 122, 250, 255, 255, 255, 255, 255, 250, 41, 86, 90, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 238, 203, 138, 93, 50, 35, 65, 176, 120, 80, 80, 80, 80, 80, 80, 81, 59, 64, 65, 135, 187, 205, 223, 242, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 243, 207, 147, 104, 61, 55, 59, 41, 10, 1, 3, 72, 175, 122, 155, 120, 113, 111, 90, 86, 83, 77, 74, 72, 71, 65, 65, 64, 63, 71, 109, 148, 212, 243, 253, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 243, 187, 98, 56, 55, 63, 90, 154, 168, 185, 184, 21, 1, 4, 74, 176, 120, 90, 86, 77, 72, 63, 59, 55, 52, 51, 41, 36, 33, 32, 32, 36, 43, 56, 64, 65, 71, 109, 193, 242, 255, 255, 255, 255, + 255, 255, 243, 135, 59, 55, 56, 84, 157, 185, 172, 168, 157, 131, 136, 49, 94, 92, 72, 176, 165, 233, 236, 235, 234, 234, 232, 219, 73, 55, 56, 95, 96, 47, 25, 16, 12, 9, 13, 29, 55, 72, 72, 74, 148, 243, 255, 255, + 255, 220, 70, 56, 57, 59, 123, 171, 160, 161, 194, 214, 237, 252, 255, 255, 255, 195, 71, 169, 181, 255, 255, 255, 255, 255, 255, 255, 126, 90, 120, 214, 255, 255, 251, 233, 151, 69, 18, 1, 3, 26, 71, 75, 77, 85, 226, 255, + 250, 58, 57, 59, 59, 107, 155, 181, 226, 253, 255, 255, 255, 255, 255, 255, 255, 192, 64, 166, 181, 255, 255, 255, 255, 255, 255, 255, 130, 107, 120, 217, 255, 255, 255, 255, 255, 255, 253, 202, 45, 2, 30, 77, 78, 78, 106, 251, + 227, 34, 59, 59, 59, 87, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 62, 157, 194, 255, 255, 255, 255, 255, 255, 255, 132, 111, 123, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 30, 83, 83, 83, 91, 234, + 231, 9, 52, 59, 59, 63, 205, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 59, 154, 194, 255, 255, 255, 255, 255, 255, 255, 134, 113, 155, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 84, 84, 84, 90, 122, 229, + 250, 20, 5, 31, 59, 62, 63, 109, 214, 250, 255, 255, 255, 255, 255, 255, 255, 153, 55, 123, 181, 255, 255, 255, 255, 255, 255, 255, 135, 120, 158, 217, 255, 255, 255, 255, 255, 255, 250, 223, 136, 85, 86, 86, 123, 156, 108, 250, + 255, 221, 18, 1, 8, 29, 52, 63, 64, 76, 133, 198, 229, 250, 255, 255, 255, 192, 52, 120, 178, 255, 255, 255, 255, 255, 255, 255, 135, 131, 131, 214, 255, 255, 250, 234, 209, 174, 102, 86, 86, 113, 157, 167, 122, 115, 226, 255, + 255, 255, 245, 93, 6, 1, 3, 12, 26, 41, 59, 65, 71, 74, 105, 133, 179, 130, 59, 90, 136, 234, 235, 242, 242, 234, 234, 226, 110, 112, 107, 136, 145, 118, 87, 86, 90, 117, 156, 160, 168, 159, 123, 112, 179, 246, 255, 255, + 255, 255, 255, 255, 245, 139, 35, 5, 1, 1, 5, 12, 23, 31, 41, 54, 63, 72, 77, 78, 83, 83, 84, 84, 86, 86, 86, 90, 107, 117, 131, 162, 165, 175, 176, 177, 170, 157, 122, 120, 112, 136, 205, 245, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 245, 199, 100, 37, 14, 5, 7, 11, 16, 19, 24, 29, 32, 40, 43, 52, 55, 62, 65, 74, 83, 86, 88, 88, 87, 90, 91, 90, 86, 101, 133, 187, 213, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 216, 153, 139, 100, 69, 22, 26, 30, 47, 48, 48, 48, 58, 67, 79, 52, 71, 55, 130, 188, 201, 221, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 30, 63, 114, 249, 255, 255, 255, 255, 255, 249, 90, 184, 86, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 52, 120, 240, 255, 255, 255, 255, 255, 232, 113, 171, 87, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 40, 120, 224, 255, 255, 255, 255, 255, 213, 122, 160, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 30, 113, 206, 255, 255, 255, 255, 255, 193, 123, 157, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 26, 107, 180, 255, 255, 255, 255, 255, 146, 154, 120, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 22, 77, 128, 253, 255, 255, 255, 253, 109, 159, 103, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 16, 52, 112, 242, 255, 255, 255, 235, 107, 160, 86, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 15, 32, 112, 208, 255, 255, 255, 196, 113, 156, 86, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 17, 107, 131, 253, 255, 253, 110, 122, 112, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 7, 75, 111, 230, 255, 221, 85, 155, 86, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 2, 40, 107, 131, 244, 105, 112, 111, 86, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 14, 16, 91, 107, 107, 91, 111, 86, 106, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 2, 59, 107, 90, 90, 89, 86, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 7, 22, 90, 90, 90, 87, 90, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 2, 41, 90, 90, 87, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 92, 7, 39, 72, 150, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 221, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + + Ihandle* image = IupImage(48, 48, imgdata); + + IupSetAttribute(image, "0", "0 0 0"); + IupSetAttribute(image, "1", "26 30 36"); + IupSetAttribute(image, "2", "27 32 38"); + IupSetAttribute(image, "3", "29 33 40"); + IupSetAttribute(image, "4", "31 36 43"); + IupSetAttribute(image, "5", "33 37 44"); + IupSetAttribute(image, "6", "38 41 47"); + IupSetAttribute(image, "7", "37 41 49"); + IupSetAttribute(image, "8", "39 45 54"); + IupSetAttribute(image, "9", "40 45 54"); + IupSetAttribute(image, "10", "43 49 58"); + IupSetAttribute(image, "11", "44 49 59"); + IupSetAttribute(image, "12", "44 50 60"); + IupSetAttribute(image, "13", "47 53 63"); + IupSetAttribute(image, "14", "53 56 62"); + IupSetAttribute(image, "15", "49 54 64"); + IupSetAttribute(image, "16", "50 56 68"); + IupSetAttribute(image, "17", "55 62 75"); + IupSetAttribute(image, "18", "56 60 65"); + IupSetAttribute(image, "19", "56 63 76"); + IupSetAttribute(image, "20", "62 66 70"); + IupSetAttribute(image, "21", "57 64 75"); + IupSetAttribute(image, "22", "58 65 78"); + IupSetAttribute(image, "23", "61 69 83"); + IupSetAttribute(image, "24", "63 71 86"); + IupSetAttribute(image, "25", "69 75 86"); + IupSetAttribute(image, "26", "67 75 91"); + IupSetAttribute(image, "27", "83 86 91"); + IupSetAttribute(image, "28", "83 87 93"); + IupSetAttribute(image, "29", "71 80 96"); + IupSetAttribute(image, "30", "75 83 100"); + IupSetAttribute(image, "31", "77 86 104"); + IupSetAttribute(image, "32", "78 88 106"); + IupSetAttribute(image, "33", "79 89 108"); + IupSetAttribute(image, "34", "81 92 110"); + IupSetAttribute(image, "35", "89 92 96"); + IupSetAttribute(image, "36", "83 94 113"); + IupSetAttribute(image, "37", "95 98 102"); + IupSetAttribute(image, "38", "92 98 109"); + IupSetAttribute(image, "39", "85 96 115"); + IupSetAttribute(image, "40", "86 96 116"); + IupSetAttribute(image, "41", "90 101 121"); + IupSetAttribute(image, "42", "91 103 124"); + IupSetAttribute(image, "43", "92 103 124"); + IupSetAttribute(image, "44", "96 100 107"); + IupSetAttribute(image, "45", "103 106 110"); + IupSetAttribute(image, "46", "96 102 112"); + IupSetAttribute(image, "47", "99 105 117"); + IupSetAttribute(image, "48", "100 108 122"); + IupSetAttribute(image, "49", "110 113 117"); + IupSetAttribute(image, "50", "113 115 119"); + IupSetAttribute(image, "51", "94 106 128"); + IupSetAttribute(image, "52", "97 109 132"); + IupSetAttribute(image, "53", "99 112 135"); + IupSetAttribute(image, "54", "101 112 135"); + IupSetAttribute(image, "55", "101 114 137"); + IupSetAttribute(image, "56", "103 116 139"); + IupSetAttribute(image, "57", "103 116 140"); + IupSetAttribute(image, "58", "108 117 134"); + IupSetAttribute(image, "59", "104 117 141"); + IupSetAttribute(image, "60", "107 120 143"); + IupSetAttribute(image, "61", "109 120 143"); + IupSetAttribute(image, "62", "107 120 144"); + IupSetAttribute(image, "63", "108 121 146"); + IupSetAttribute(image, "64", "109 122 148"); + IupSetAttribute(image, "65", "110 124 149"); + IupSetAttribute(image, "66", "115 120 128"); + IupSetAttribute(image, "67", "113 121 137"); + IupSetAttribute(image, "68", "112 122 143"); + IupSetAttribute(image, "69", "123 126 132"); + IupSetAttribute(image, "70", "112 123 145"); + IupSetAttribute(image, "71", "112 125 150"); + IupSetAttribute(image, "72", "112 126 152"); + IupSetAttribute(image, "73", "122 129 142"); + IupSetAttribute(image, "74", "114 128 154"); + IupSetAttribute(image, "75", "115 129 156"); + IupSetAttribute(image, "76", "118 130 154"); + IupSetAttribute(image, "77", "116 130 157"); + IupSetAttribute(image, "78", "117 132 158"); + IupSetAttribute(image, "79", "122 131 146"); + IupSetAttribute(image, "80", "120 132 153"); + IupSetAttribute(image, "81", "124 134 156"); + IupSetAttribute(image, "82", "126 137 155"); + IupSetAttribute(image, "83", "118 133 160"); + IupSetAttribute(image, "84", "120 134 162"); + IupSetAttribute(image, "85", "122 136 162"); + IupSetAttribute(image, "86", "122 137 165"); + IupSetAttribute(image, "87", "124 139 166"); + IupSetAttribute(image, "88", "125 140 166"); + IupSetAttribute(image, "89", "124 139 168"); + IupSetAttribute(image, "90", "125 141 170"); + IupSetAttribute(image, "91", "127 142 172"); + IupSetAttribute(image, "92", "131 133 137"); + IupSetAttribute(image, "93", "133 136 139"); + IupSetAttribute(image, "94", "136 139 142"); + IupSetAttribute(image, "95", "129 136 147"); + IupSetAttribute(image, "96", "133 137 145"); + IupSetAttribute(image, "97", "134 139 148"); + IupSetAttribute(image, "98", "129 139 157"); + IupSetAttribute(image, "99", "139 141 145"); + IupSetAttribute(image, "100", "142 144 148"); + IupSetAttribute(image, "101", "130 143 167"); + IupSetAttribute(image, "102", "129 143 169"); + IupSetAttribute(image, "103", "128 143 173"); + IupSetAttribute(image, "104", "134 144 162"); + IupSetAttribute(image, "105", "133 145 165"); + IupSetAttribute(image, "106", "130 144 170"); + IupSetAttribute(image, "107", "128 144 173"); + IupSetAttribute(image, "108", "134 148 173"); + IupSetAttribute(image, "109", "137 148 170"); + IupSetAttribute(image, "110", "143 153 174"); + IupSetAttribute(image, "111", "130 146 176"); + IupSetAttribute(image, "112", "132 148 177"); + IupSetAttribute(image, "113", "133 150 180"); + IupSetAttribute(image, "114", "135 152 182"); + IupSetAttribute(image, "115", "137 150 176"); + IupSetAttribute(image, "116", "139 152 178"); + IupSetAttribute(image, "117", "136 152 182"); + IupSetAttribute(image, "118", "141 153 176"); + IupSetAttribute(image, "119", "142 157 181"); + IupSetAttribute(image, "120", "137 153 185"); + IupSetAttribute(image, "121", "139 156 187"); + IupSetAttribute(image, "122", "139 156 188"); + IupSetAttribute(image, "123", "140 157 189"); + IupSetAttribute(image, "124", "145 151 163"); + IupSetAttribute(image, "125", "144 152 167"); + IupSetAttribute(image, "126", "150 158 171"); + IupSetAttribute(image, "127", "156 158 160"); + IupSetAttribute(image, "128", "144 158 186"); + IupSetAttribute(image, "129", "143 160 188"); + IupSetAttribute(image, "130", "154 161 174"); + IupSetAttribute(image, "131", "146 161 188"); + IupSetAttribute(image, "132", "154 162 176"); + IupSetAttribute(image, "133", "152 162 180"); + IupSetAttribute(image, "134", "156 163 178"); + IupSetAttribute(image, "135", "157 166 181"); + IupSetAttribute(image, "136", "153 165 186"); + IupSetAttribute(image, "137", "157 168 190"); + IupSetAttribute(image, "138", "162 164 166"); + IupSetAttribute(image, "139", "164 166 168"); + IupSetAttribute(image, "140", "169 171 175"); + IupSetAttribute(image, "141", "161 167 178"); + IupSetAttribute(image, "142", "163 169 180"); + IupSetAttribute(image, "143", "167 170 176"); + IupSetAttribute(image, "144", "167 172 181"); + IupSetAttribute(image, "145", "161 171 190"); + IupSetAttribute(image, "146", "163 172 188"); + IupSetAttribute(image, "147", "165 172 186"); + IupSetAttribute(image, "148", "166 174 190"); + IupSetAttribute(image, "149", "171 173 176"); + IupSetAttribute(image, "150", "169 177 191"); + IupSetAttribute(image, "151", "180 181 183"); + IupSetAttribute(image, "152", "183 186 190"); + IupSetAttribute(image, "153", "185 186 189"); + IupSetAttribute(image, "154", "142 160 193"); + IupSetAttribute(image, "155", "144 161 193"); + IupSetAttribute(image, "156", "145 162 196"); + IupSetAttribute(image, "157", "146 164 197"); + IupSetAttribute(image, "158", "148 164 193"); + IupSetAttribute(image, "159", "148 166 201"); + IupSetAttribute(image, "160", "150 168 202"); + IupSetAttribute(image, "161", "152 167 196"); + IupSetAttribute(image, "162", "153 168 193"); + IupSetAttribute(image, "163", "152 169 196"); + IupSetAttribute(image, "164", "158 171 196"); + IupSetAttribute(image, "165", "158 172 197"); + IupSetAttribute(image, "166", "154 171 200"); + IupSetAttribute(image, "167", "152 170 205"); + IupSetAttribute(image, "168", "153 172 207"); + IupSetAttribute(image, "169", "158 173 200"); + IupSetAttribute(image, "170", "157 175 205"); + IupSetAttribute(image, "171", "154 174 208"); + IupSetAttribute(image, "172", "157 176 212"); + IupSetAttribute(image, "173", "162 175 199"); + IupSetAttribute(image, "174", "165 175 193"); + IupSetAttribute(image, "175", "160 175 201"); + IupSetAttribute(image, "176", "160 176 202"); + IupSetAttribute(image, "177", "162 178 207"); + IupSetAttribute(image, "178", "167 180 202"); + IupSetAttribute(image, "179", "172 181 196"); + IupSetAttribute(image, "180", "168 179 201"); + IupSetAttribute(image, "181", "169 181 204"); + IupSetAttribute(image, "182", "173 183 201"); + IupSetAttribute(image, "183", "174 184 201"); + IupSetAttribute(image, "184", "162 181 213"); + IupSetAttribute(image, "185", "160 180 216"); + IupSetAttribute(image, "186", "175 186 208"); + IupSetAttribute(image, "187", "178 184 196"); + IupSetAttribute(image, "188", "182 187 194"); + IupSetAttribute(image, "189", "177 185 201"); + IupSetAttribute(image, "190", "177 186 204"); + IupSetAttribute(image, "191", "183 190 204"); + IupSetAttribute(image, "192", "188 190 194"); + IupSetAttribute(image, "193", "184 191 202"); + IupSetAttribute(image, "194", "179 190 209"); + IupSetAttribute(image, "195", "191 193 197"); + IupSetAttribute(image, "196", "191 196 205"); + IupSetAttribute(image, "197", "184 193 210"); + IupSetAttribute(image, "198", "191 197 208"); + IupSetAttribute(image, "199", "192 193 195"); + IupSetAttribute(image, "200", "198 200 203"); + IupSetAttribute(image, "201", "198 201 206"); + IupSetAttribute(image, "202", "201 202 203"); + IupSetAttribute(image, "203", "201 203 207"); + IupSetAttribute(image, "204", "203 204 205"); + IupSetAttribute(image, "205", "193 198 209"); + IupSetAttribute(image, "206", "193 201 214"); + IupSetAttribute(image, "207", "199 204 212"); + IupSetAttribute(image, "208", "194 202 216"); + IupSetAttribute(image, "209", "199 204 216"); + IupSetAttribute(image, "210", "198 206 221"); + IupSetAttribute(image, "211", "205 207 211"); + IupSetAttribute(image, "212", "202 207 216"); + IupSetAttribute(image, "213", "206 208 212"); + IupSetAttribute(image, "214", "204 210 219"); + IupSetAttribute(image, "215", "211 212 215"); + IupSetAttribute(image, "216", "213 213 215"); + IupSetAttribute(image, "217", "209 214 223"); + IupSetAttribute(image, "218", "214 215 216"); + IupSetAttribute(image, "219", "215 216 218"); + IupSetAttribute(image, "220", "214 216 221"); + IupSetAttribute(image, "221", "217 218 221"); + IupSetAttribute(image, "222", "203 210 224"); + IupSetAttribute(image, "223", "213 217 225"); + IupSetAttribute(image, "224", "213 218 228"); + IupSetAttribute(image, "225", "215 220 230"); + IupSetAttribute(image, "226", "217 221 228"); + IupSetAttribute(image, "227", "222 223 224"); + IupSetAttribute(image, "228", "217 223 233"); + IupSetAttribute(image, "229", "222 225 230"); + IupSetAttribute(image, "230", "221 225 233"); + IupSetAttribute(image, "231", "225 225 226"); + IupSetAttribute(image, "232", "225 226 228"); + IupSetAttribute(image, "233", "227 228 229"); + IupSetAttribute(image, "234", "227 229 234"); + IupSetAttribute(image, "235", "230 232 234"); + IupSetAttribute(image, "236", "232 233 234"); + IupSetAttribute(image, "237", "232 234 237"); + IupSetAttribute(image, "238", "235 236 238"); + IupSetAttribute(image, "239", "237 237 238"); + IupSetAttribute(image, "240", "230 233 240"); + IupSetAttribute(image, "241", "232 235 241"); + IupSetAttribute(image, "242", "234 236 240"); + IupSetAttribute(image, "243", "236 238 241"); + IupSetAttribute(image, "244", "239 241 244"); + IupSetAttribute(image, "245", "241 242 242"); + IupSetAttribute(image, "246", "241 242 244"); + IupSetAttribute(image, "247", "243 244 244"); + IupSetAttribute(image, "248", "245 245 246"); + IupSetAttribute(image, "249", "245 246 248"); + IupSetAttribute(image, "250", "249 249 250"); + IupSetAttribute(image, "251", "250 251 252"); + IupSetAttribute(image, "252", "251 252 252"); + IupSetAttribute(image, "253", "253 253 253"); + IupSetAttribute(image, "254", "0 0 0"); + IupSetAttribute(image, "255", "BGCOLOR"); + + return image; +} + diff --git a/iup/srcimglib/iupimglib.def b/iup/srcimglib/iupimglib.def new file mode 100755 index 0000000..e5e6063 --- /dev/null +++ b/iup/srcimglib/iupimglib.def @@ -0,0 +1,4 @@ +EXPORTS + IupImageLibOpen + iupImageLibLoadAll + \ No newline at end of file diff --git a/iup/srcimglib/iupimglib.dep b/iup/srcimglib/iupimglib.dep new file mode 100644 index 0000000..6029a95 --- /dev/null +++ b/iup/srcimglib/iupimglib.dep @@ -0,0 +1,5 @@ +$(OBJDIR)/iup_image_library.o: iup_image_library.c ../include/iup.h \ + ../include/iupkey.h ../include/iupdef.h ../src/iup_str.h \ + ../src/iup_image.h iup_imglib_bitmaps8.h iup_imglib_bitmapsgtk.h \ + iup_imglib_icons8.h iup_imglib_logos8.h iup_imglib_icons.h \ + iup_imglib_logos.h diff --git a/iup/srcimglib/make_uname b/iup/srcimglib/make_uname new file mode 100755 index 0000000..cc4b881 --- /dev/null +++ b/iup/srcimglib/make_uname @@ -0,0 +1,3 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/srcimglib/make_uname.bat b/iup/srcimglib/make_uname.bat new file mode 100755 index 0000000..f0a0722 --- /dev/null +++ b/iup/srcimglib/make_uname.bat @@ -0,0 +1,4 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 diff --git a/iup/srcledc/Makefile b/iup/srcledc/Makefile new file mode 100755 index 0000000..8854269 --- /dev/null +++ b/iup/srcledc/Makefile @@ -0,0 +1,6 @@ + +.PHONY: do_all ledc +do_all: ledc + +ledc: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak diff --git a/iup/srcledc/config.mak b/iup/srcledc/config.mak new file mode 100755 index 0000000..670881e --- /dev/null +++ b/iup/srcledc/config.mak @@ -0,0 +1,22 @@ +PROJNAME = iup +APPNAME = ledc +APPTYPE = console +OPT = YES + +#y.tab.c y.tab.h : ledc.y +# yacc -dv ledc.y + +#lex.yy.c : ledc.l +# lex ledc.l + +INCLUDES = . + +SRC = lex.yy.c y.tab.c ledc.c + +ifeq ($(TEC_UNAME), vc8) + ifdef DBG + #debug info not working for vc8 linker + define DBG + endef + endif +endif diff --git a/iup/srcledc/ledc b/iup/srcledc/ledc new file mode 100755 index 0000000..69531fb --- /dev/null +++ b/iup/srcledc/ledc @@ -0,0 +1,6 @@ +#!/bin/csh +# Script generated automatically by tecmake v3.19 +# Remove the comment bellow to set the LD_LIBRARY_PATH if needed. +#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH +if ( -r app.env ) source app.env +exec ../bin/$TEC_UNAME/ledc $* diff --git a/iup/srcledc/ledc.bat b/iup/srcledc/ledc.bat new file mode 100644 index 0000000..44bca28 --- /dev/null +++ b/iup/srcledc/ledc.bat @@ -0,0 +1,3 @@ +@echo off +REM Script generated automatically by tecmake v3.20 +..\bin\Win64\ledc.exe %* diff --git a/iup/srcledc/ledc.c b/iup/srcledc/ledc.c new file mode 100755 index 0000000..9429474 --- /dev/null +++ b/iup/srcledc/ledc.c @@ -0,0 +1,920 @@ +/** \file + * \brief LED to C converter + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include +#include +#include +#include + +#include "ledc.h" + +#define alloc(type) ((type*)malloc(sizeof(type))) + +#define IMAGE 0 +#define COLOR 1 + +static FILE* outfile = NULL; + +char *filename; +char *outname = 0; +char *funcname = 0; +int nocode = 0; + +static long vetsizepos; + +typedef struct { + char* name; + int used; +} Tname; + +static Tlist* all_names; +static Tlist* all_elems; +static Tlist* all_images; + +static Tlist* all_named; +static Tlist* all_late; + +static int nerrors = 0; + +struct { + char* name; + int used; +} headerfile[] = { + { "iup", 1 }, + { "iupdial", 0 }, + { "iupgauge", 0 }, + { "iupmatrix", 0 }, + { "iupgl", 0 }, + { "iuptree", 0 }, + { "iupcolorbar",0 }, + { "iupcb", 0 }, + { "iupcells", 0 }, + { "iupole", 0 }, + { "iupspin", 0 }, + { "iup_pplot", 0 } +}; +#define nheaders (sizeof(headerfile)/sizeof(headerfile[0])) + +enum headers { + IUP_H, + IUPCONTROLS_H, + IUPGL_H, + IUPOLE_H, + IUPPPLOT_H +}; + +static void check_empty( Telem* elem ); +static void check_image( Telem* elem ); +static void check_imagergb( Telem* elem ); +static void check_imagergba( Telem* elem ); +static void check_string( Telem* elem ); +static void check_cb( Telem* elem ); +static void check_elem( Telem* elem ); +static void check_elemlist( Telem* elem ); +static void check_string_cb( Telem* elem ); +static void check_string_elem( Telem* elem ); +static void check_iupCpi( Telem* elem ); +static void code_image( Telem* elem ); +static void code_iupCpi( Telem* elem ); + +static void code_empty( Telem* elem ); +static void code_string( Telem* elem ); +static void code_string_cb( Telem* elem ); +static void code_elem( Telem* elem ); +static void code_elemlist( Telem* elem ); +static void code_string_elem( Telem* elem ); + +typedef void(*function)(Telem*); + +static struct { + char* name; + void (*code)(Telem*); + void (*check)(Telem*); + int header; +} +elems[] = +{ + { "Image", code_image, check_image, 0 }, + { "ImageRGB", code_image, check_imagergb, 0 }, + { "ImageRGBA", code_image, check_imagergba, 0 }, + { "User", code_empty, check_empty, 0 }, + { "Button", code_string_cb, check_string_cb, 0 }, + { "Canvas", code_string, check_cb, 0 }, + { "Colorbar", code_empty, check_empty, IUPCONTROLS_H }, + { "ColorBrowser", code_empty, check_empty, IUPCONTROLS_H }, + { "Dial", code_string, check_string, IUPCONTROLS_H }, + { "Dialog", code_elem, check_elem, 0 }, + { "Fill", code_empty, check_empty, 0 }, + { "FileDlg", code_empty, check_empty, 0 }, + { "MessageDlg", code_empty, check_empty, 0 }, + { "ColorDlg", code_empty, check_empty, 0 }, + { "FontDlg", code_empty, check_empty, 0 }, + { "ProgressBar", code_empty, check_empty, 0 }, + { "Frame", code_elem, check_elem, 0 }, + { "Gauge", code_empty, check_empty, IUPCONTROLS_H }, + { "GLCanvas", code_string, check_cb, IUPGL_H }, + { "Hbox", code_elemlist, check_elemlist, 0 }, + { "Item", code_string_cb, check_string_cb, 0 }, + { "Label", code_string, check_string, 0 }, + { "List", code_string, check_cb, 0 }, + { "Matrix", code_string, check_cb, IUPCONTROLS_H }, + { "Sbox", code_elem, check_elem, 0 }, + { "Menu", code_elemlist, check_elemlist, 0 }, + { "MultiLine", code_string, check_cb, 0 }, + { "Radio", code_elem, check_elem, 0 }, + { "Separator", code_empty, check_empty, 0 }, + { "Submenu", code_string_elem, check_string_elem, 0 }, + { "Text", code_string, check_cb, 0 }, + { "Val", code_string, check_string, 0 }, + { "Tree", code_empty, check_empty, 0 }, + { "Tabs", code_elemlist, check_elemlist, 0 }, + { "Toggle", code_string_cb, check_string_cb, 0 }, + { "Vbox", code_elemlist, check_elemlist, 0 }, + { "Zbox", code_elemlist, check_elemlist, 0 }, + { "OleControl", code_string, check_cb, IUPOLE_H }, + { "Cbox", code_elemlist, check_elemlist, 0 }, + { "Cells", code_empty, check_empty, IUPCONTROLS_H }, + { "Spin", code_empty, check_empty, 0 }, + { "Spinbox", code_elem, check_elem, 0 }, + { "PPlot", code_empty, check_empty, IUPPPLOT_H }, + { "@@@", code_iupCpi, check_iupCpi, 0 } +}; +#define nelems (sizeof(elems)/sizeof(elems[0])) + +static int mystricmp(char *s1, char *s2) +{ + int i = 0; + if (s1 == s2) return 0; + while (s1[i] && s2[i] && tolower(s1[i])==tolower(s2[i])) i++; + if (s1[i] == s2[i]) return 0; + else if (s1[i]name = name; + n->used = 0; + addlist( all_names, n ); +} + +void use( char* name ) +{ + Telemlist* p = all_names->first; + if (!name) return; + while (p) + { + Tname* n = (Tname*)p->data; + + if (!strcmp(name,n->name)) + { + if (n->used) error("element '%s' already used in line %d", name, n->used ); + else n->used = yylineno; + break; + } + p = p->next; + } +} + +static int iselem( char* name ) +{ + Telemlist* p = all_names->first; + while (p) + { + Tname* n = (Tname*)p->data; + if (!strcmp(name,n->name)) return 1; + p = p->next; + } + return 0; +} + +static int verify_nparams( int min, int max, Telem* elem ) +{ + if (min!=-1 && elem->nparams < min ) + { + error("too few arguments for %s", elem->elemname ); + return 0; + } + if (max!=-1 && elem->nparams >max ) + { + error("too many arguments for %s", elem->elemname ); + return 0; + } + return 1; +} + +static void param_elem( Tparam* p[], int n ) +{ + switch (p[n-1]->tag) + { + case ELEM_PARAM: + if (p[n-1]->data.elem->elemidx == IMAGE || + p[n-1]->data.elem->elemidx == COLOR ) + error( "%s is not a valid child", p[n-1]->data.elem->elemname ); + break; + case NAME_PARAM: + if (!iselem(p[n-1]->data.name)) + { + warning( "undeclared control '%s' (argument #%d)", p[n-1]->data.name, n ); + } + else + { + use( p[n-1]->data.name ); + } + break; + case STRING_PARAM: + error( "control expected (argument #%d)", n ); + break; + } +} + +static void param_string( Tparam* p[], int n ) +{ + switch (p[n-1]->tag) + { + case ELEM_PARAM: + error( "string expected (argument #%d)", n ); + break; + case NAME_PARAM: + warning( "string expected (argument #%d)", n ); + break; + case STRING_PARAM: + break; + } +} + +static void param_number( Tparam* p[], int n ) +{ + switch (p[n-1]->tag) + { + case ELEM_PARAM: + error( "number expected (argument #%d)", n ); + break; + case NAME_PARAM: + break; + case STRING_PARAM: + error( "number expected (argument #%d)", n ); + break; + } +} + +static void param_callback( Tparam* p[], int n ) +{ + switch (p[n-1]->tag) + { + case ELEM_PARAM: + error( "callback expected (argument #%d)", n ); + break; + case NAME_PARAM: + break; + case STRING_PARAM: + warning( "callback expected (argument #%d)", n ); + break; + } +} + +/****************************************************************/ + +static void check_empty( Telem* elem ) +{ + verify_nparams( 0, 0, elem ); +} + +static void check_image( Telem* elem ) +{ + int i, w, h, size; + if (!verify_nparams( 2, -1, elem )) return; + param_number( elem->params, 1 ); + param_number( elem->params, 2 ); + w = atoi( elem->params[0]->data.name ); + h = atoi( elem->params[1]->data.name ); + size = w*h; + if (!verify_nparams( size+2, size+2, elem )) return; + for (i=0; iparams, i+3 ); + + elem->data.image.w = w; + elem->data.image.h = h; +} + +static void check_imagergb( Telem* elem ) +{ + int i, w, h, size; + if (!verify_nparams( 2, -1, elem )) return; + param_number( elem->params, 1 ); + param_number( elem->params, 2 ); + w = atoi( elem->params[0]->data.name ); + h = atoi( elem->params[1]->data.name ); + size = w*h*3; + if (!verify_nparams( size+2, size+2, elem )) return; + for (i=0; iparams, i+3 ); + + elem->data.image.w = w; + elem->data.image.h = h; +} + +static void check_imagergba( Telem* elem ) +{ + int i, w, h, size; + if (!verify_nparams( 2, -1, elem )) return; + param_number( elem->params, 1 ); + param_number( elem->params, 2 ); + w = atoi( elem->params[0]->data.name ); + h = atoi( elem->params[1]->data.name ); + size = w*h*4; + if (!verify_nparams( size+2, size+2, elem )) return; + for (i=0; iparams, i+3 ); + + elem->data.image.w = w; + elem->data.image.h = h; +} + +static void check_string( Telem* elem ) +{ + if (!verify_nparams( 1, 1, elem )) return; + param_string( elem->params, 1 ); +} + +static void check_cb( Telem* elem ) +{ + if (!verify_nparams( 1, 1, elem )) return; + param_callback( elem->params, 1 ); +} + +static void check_elem( Telem* elem ) +{ + if (!verify_nparams( 1, 1, elem )) return; + param_elem( elem->params, 1 ); +} + +static void check_elemlist( Telem* elem ) +{ + int i; + if (!verify_nparams( 1, -1, elem )) return; + for (i=0; inparams; i++) + param_elem( elem->params, i+1 ); +} + +static void check_string_cb( Telem* elem ) +{ + if (!verify_nparams( 2, 2, elem )) return; + param_string( elem->params, 1 ); + param_callback( elem->params, 2 ); +} + +static void check_string_elem( Telem* elem ) +{ + if (!verify_nparams( 2, 2, elem )) return; + param_string( elem->params, 1 ); + param_elem( elem->params, 2 ); +} + +static void check_iupCpi( Telem* elem ) +{ + warning( "Unknown control %s used", elem->elemname ); +} + +/****************************************************************/ + +static int indentcol = 0; +static int nameds = 0; + +static void indent(void) { indentcol++; } +static void unindent(void) { indentcol--; } + +static void codeindent(void) +{ + int i; + for (i=0; iname) + { + sprintf( name, "named[%d]", nameds++ ); + e->codename = strdup( name ); + addlist( all_named, e ); + addlist( all_late, e ); + } + else + { + e->codename = 0; + } +} + +static int codename( Telem* elem ) +{ + if (elem->elemidx == IMAGE || + elem->elemidx == COLOR ) + { + return 0; + } + + if (elem->name && elem->codename) + { + fprintf( outfile, "%s", elem->codename ); + return 1; + } + else + return 0; +} + +static void codeelemname( Telem *elem ) +{ + if (elem->elemidx < nelems-1) + fprintf( outfile, "Iup%s", elems[elem->elemidx].name ); + else + { + fprintf( outfile, "Iup%c%s", toupper(elem->elemname[0]), elem->elemname+1 ); + } +} + +static void code_attrs( Telem* elem ) +{ + fprintf( outfile, ", " ); + if (elem->attrs) + { + Telemlist *p = elem->attrs->first; + indent(); + while (p) + { + fprintf( outfile, "\n" ); + codeindent(); + fprintf( outfile, "\"%s\", \"%s\", ", + ((Tattr*)(p->data))->name, ((Tattr*)(p->data))->value ); + p = p ->next; + } + unindent(); + } + fprintf( outfile, "NULL )" ); +} + +static void code_start( Telem* elem ) +{ + codeindent(); + if (elem->name && elem->elemidx != IMAGE && elem->elemidx != COLOR) + generatename( elem ); + if ( codename( elem ) ) + fprintf( outfile, " = " ); + if (elem->name) + fprintf( outfile, "IupSetAtt( \"%s\", ", elem->name ); + else + fprintf( outfile, "IupSetAtt( NULL, " ); + codeelemname( elem ); +} + +static void code_c_name( char* name ) +{ + char *ant = name; + char *p = name; + while ( (p = strpbrk( p, "+-." )) != NULL ) + { + char c = p[0]; + p[0] = 0; + fprintf( outfile, "%s", ant ); + switch (c) + { + case '+': fprintf( outfile, "%s", "_plus_" ); break; + case '-': fprintf( outfile, "%s", "_minus_" ); break; + case '.': fprintf( outfile, "%s", "_dot_" ); break; + } + p[0] = c; + ant = ++p; + } + fprintf( outfile, "%s", ant ); +} + +static void code_decl( Telem *e ) +{ + if (e->name || e->attrs) + { + code_start( e ); + elems[e->elemidx].code( e ); + code_attrs( e ); + } + else + { + codeindent(); + if (e->name && e->elemidx != IMAGE && e->elemidx != COLOR) + generatename( e ); + if ( codename( e ) ) + fprintf( outfile, " = " ); + codeelemname( e ); + elems[e->elemidx].code( e ); + } +} + +static Telem* namedelem( char *name ) +{ + Telemlist* p = all_named->first; + while (p) + { + Telem* n = (Telem*)p->data; + if (!strcmp(n->name,name)) + { + return n; + } + p = p->next; + } + return 0; +} + +static void codeelemparam( Tparam* param ) +{ + if (param->tag == ELEM_PARAM) + { + code_decl( param->data.elem ); + } + else + { + Telem *e = namedelem( param->data.name ); + codeindent(); + if (e) + { + codename( e ); + fprintf( outfile, " /* %s */", param->data.name ); + } + else + { + fprintf( outfile, "IupGetHandle( \"%s\" )", param->data.name ); + } + } +} + +/****************************************************************/ + +static void code_iupCpi( Telem* elem ) +{ + int i=0; + indent(); + fprintf( outfile, "( " ); + for (i=0; inparams; i++) + { + if (elem->params[i]->tag == ELEM_PARAM) + { + fprintf( outfile, "\n" ); + codeindent(); + codeelemparam( elem->params[i] ); + } + else + { + fprintf( outfile, "\"%s\"", elem->params[i]->data.name ); + } + if (i+1nparams) fprintf( outfile, ", " ); + } + fprintf( outfile, ")" ); + unindent(); +} + +static void code_image( Telem* elem ) +{ + int i, + w = elem->data.image.w, + h = elem->data.image.h; + + fprintf( outfile, "static void image_" ); + code_c_name( elem->name ); + fprintf( outfile, + " (void)\n" + "{\n" + " unsigned char map[] = {" ); + + for (i=0; iparams[i+2]->data.name) ); + } + + fprintf( outfile, + "\n" + " -1 };\n\n" ); + indent(); + code_start( elem ); + fprintf( outfile, "( %d, %d, map )", elem->data.image.w, elem->data.image.h ); + code_attrs( elem ); + fprintf( outfile, ";\n}\n\n" ); + unindent(); +} + +static void code_empty( Telem* elem ) +{ + (void) elem; + fprintf( outfile, "()" ); +} + +static void code_string( Telem* elem ) +{ + fprintf( outfile, "( \"%s\" )", elem->params[0]->data.name ); +} + +static void code_string_cb( Telem* elem ) +{ + fprintf( outfile, "( \"%s\", \"%s\" )", elem->params[0]->data.name, elem->params[1]->data.name ); +} + +static void code_elem( Telem* elem ) +{ + fprintf( outfile, "(\n" ); + indent(); + codeelemparam( elem->params[0] ); + fprintf( outfile, "\n" ); + unindent(); + codeindent(); + fprintf( outfile, ")" ); +} + + +static void code_elemlist( Telem* elem ) +{ + int i=0; + fprintf( outfile, "(\n" ); + indent(); + for (i=0; inparams; i++) + { + codeelemparam( elem->params[i] ); + fprintf( outfile, ",\n" ); + } + unindent(); + codeindent(); + fprintf( outfile, "NULL)" ); +} + +static void code_string_elem( Telem* elem ) +{ + fprintf( outfile, "( \"%s\",\n", elem->params[0]->data.name ); + indent(); + codeelemparam( elem->params[1] ); + fprintf( outfile, "\n" ); + unindent(); + codeindent(); + fprintf( outfile, ")" ); +} + +/****************************************************************/ + +static char* strlower( char* str ) +{ + int i=0; + while (str[i]) { str[i]=(char)tolower(str[i]); i++; } + return str; +} + +static int lookupelem( char* name ) +{ + int i; + for (i=0; iname = name; + ret->value = value; + return ret; +} + +Tparam* param( int tag, void* value ) +{ + Tparam* ret = alloc(Tparam); + ret->tag = tag; + switch (tag) + { + case NAME_PARAM: + case STRING_PARAM: + ret->data.name = (char*)value; + break; + case ELEM_PARAM: + ret->data.elem = (Telem*)value; + break; + } + return ret; +} + +Telem* elem( char* name, Tlist* attrs, Tlist* params ) +{ + Telem* ret = alloc(Telem); + ret->name = 0; + ret->elemname = strlower(name); + ret->attrs = attrs; + if (params) + { + ret->nparams = params->size; + ret->params = list2paramvector( params ); + } + else + { + ret->nparams = 0; + ret->params = 0; + } + ret->elemidx = lookupelem( name ); + elems[ret->elemidx].check(ret); + headerfile[elems[ret->elemidx].header].used = 1; + return ret; +} + +Tlist* list( void ) +{ + Tlist* ret = alloc(Tlist); + ret->first = 0; + ret->size = 0; + return ret; +} + +Tlist* addlist( Tlist* l, void* data ) +{ + Telemlist* ne = alloc(Telemlist); + ne->data = data; + ne->next = l->first; + l->first = ne; + l->size++; + return l; +} + +void cleanlist( Tlist* l ) +{ + l->first = 0; + l->size = 0; +} + + +void decl( Telem* e ) +{ + if (!e->name) warning("%s declared without a name", e->elemname ); + else + { + if (nerrors || nocode) return; + if (e->elemidx == IMAGE) + { + code_image( e ); + addlist( all_images, e ); + } + else + { + addlist( all_elems, e ); + } + } +} + + +static Telemlist* revert( Telemlist* elem ) +{ + if (!elem->next) + { + return elem; + } + else + { + Telemlist *ret; + ret = revert( elem->next ); + elem->next->next = elem; + elem->next = 0; + return ret; + } +} + +Tlist* revertlist( Tlist* l ) +{ + if (l->first) + l->first = revert( l->first ); + return l; +} + +Tparam** list2paramvector( Tlist* params ) +{ + int i = params->size; + if (i) + { + Tparam** ret = (Tparam**)malloc(i*sizeof(Tparam*)); + Telemlist *p = params->first; + while (p) + { + ret[--i] = (Tparam*)p->data; + p = p->next; + } + return ret; + } + else + return 0; +} + + +void init(void) +{ + all_names = list(); + all_elems = list(); + all_images = list(); + all_named = list(); + all_late = list(); + + if (nocode) return; + outfile = stdout; + + outfile = fopen( outname, "w" ); + if (!outfile) + { + perror( outname ); + exit(-1); + } + + fprintf( outfile, + "/* Automatically generated by Iup 3.0 LED Compiler to C. */\n" + "\n" + "#include \n" + "#include \n" + "#include \n" + "\n" + "static Ihandle* named[ " ); + vetsizepos = ftell( outfile ); + fprintf( outfile, + " ];\n" + "\n" ); +} + +void finish(void) +{ + int i; + Telemlist *p; + + if (nerrors || nocode) return; + + for (i=1; i\n", headerfile[i].name ); + } + } + + fprintf( outfile, "\nvoid %s (void)\n{\n", funcname ); + + revertlist( all_images ); + p = all_images->first; + while (p) + { + Telem* e = (Telem*)(p->data); + fprintf(outfile, " image_" ); + code_c_name( e->name ); + fprintf(outfile, " ();\n" ); + p = p->next; + } + + indent(); + revertlist( all_elems ); + p = all_elems->first; + while (p) + { + Telem* e = (Telem*)(p->data); + code_decl( e ); + fprintf( outfile, ";\n" ); + p = p->next; + } + unindent(); + + fprintf( outfile, "}\n" ); + fseek( outfile, vetsizepos, SEEK_SET ); + fprintf( outfile, "%6d", nameds+1 ); + + fclose( outfile ); +} + +/* necessario para o Linux ?? */ +int gettxt( char *v1, char *v2); +int gettxt( char *v1, char *v2) +{ + fprintf(stderr, "%s: %s\n", v1, v2); + return 0; +} + diff --git a/iup/srcledc/ledc.dep b/iup/srcledc/ledc.dep new file mode 100644 index 0000000..17cbbb9 --- /dev/null +++ b/iup/srcledc/ledc.dep @@ -0,0 +1,3 @@ +$(OBJDIR)/lex.yy.o: lex.yy.c ledc.h y.tab.h +$(OBJDIR)/y.tab.o: y.tab.c ledc.h +$(OBJDIR)/ledc.o: ledc.c ledc.h diff --git a/iup/srcledc/ledc.h b/iup/srcledc/ledc.h new file mode 100755 index 0000000..782cf1f --- /dev/null +++ b/iup/srcledc/ledc.h @@ -0,0 +1,84 @@ +/** \file + * \brief LEDC definitions. + * + * See Copyright Notice in iup.h + * $Id: ledc.h,v 1.2 2009/06/22 15:47:16 scuri Exp $ + */ + +#ifndef __LEDC_H +#define __LEDC_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _elemlist { + struct _elemlist *next; + void *data; +} Telemlist; + +typedef struct { + Telemlist* first; + int size; +} Tlist; + +typedef struct { + char *name; + char *value; +} Tattr; + +typedef struct _Telem Telem; +typedef struct _Tparam Tparam; + +struct _Telem { + char* name; + char* elemname; + Tlist* attrs; + Tparam**params; + int nparams; + int elemidx; + char *codename; + union { + struct { int w, h; } image; + } data; +}; + +struct _Tparam { + enum { NAME_PARAM, STRING_PARAM, ELEM_PARAM } tag; + union { + char *name; + Telem *elem; + } data; +}; + +Tattr* attr( char* name, char* value ); +Tparam* param( int tag, void* value ); +Telem* elem( char* name, Tlist* attrs, Tlist* params ); +Tlist* list( void ); +Tlist* addlist( Tlist* l, void* data ); +Tlist* revertlist( Tlist* l ); +Tparam** list2paramvector( Tlist* l ); +void cleanlist( Tlist* l ); + +void decl( Telem* e ); + +void use( char* name ); +void named( char* name ); + +void init(void); +void finish(void); + +void error( char* fmt, ... ); + +extern int yylineno; + +extern char* filename; +extern char* outname; +extern char* funcname; +extern int nocode; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srcledc/ledc.l b/iup/srcledc/ledc.l new file mode 100755 index 0000000..1a803c6 --- /dev/null +++ b/iup/srcledc/ledc.l @@ -0,0 +1,65 @@ +%option yylineno + +%{ +#include +#include "ledc.h" +#include "y.tab.h" +%} + +a [aA] +b [bB] +c [cC] +d [dD] +e [eE] +f [fF] +g [gG] +h [hH] +i [iI] +j [jJ] +k [kK] +l [lL] +m [mM] +n [nN] +o [oO] +p [pP] +q [qQ] +r [rR] +s [sS] +t [tT] +u [uU] +v [vV] +w [wW] +x [xX] +y [yY] +z [zZ] + +%% + +[ \t\n] ; + +"(" { return '('; } +")" { return ')'; } +"=" { return '='; } +"[" { return '['; } +"]" { return ']'; } +"," { return ','; } + +["](\\.|[^"])*["] { + int len = strlen(yytext)-2; + char *str = (char*)malloc(sizeof(char)*len+1); + strncpy(str, yytext+1, len); + str[len] = 0; + yylval.fString = str; + return STRING; + } + +[A-Za-z0-9_.+-][A-Za-z0-9_.+-]* { + yylval.fString = strdup(yytext); + return NAME; + } + +"#".*$ ; + +%% + + diff --git a/iup/srcledc/ledc.y b/iup/srcledc/ledc.y new file mode 100755 index 0000000..1c76b76 --- /dev/null +++ b/iup/srcledc/ledc.y @@ -0,0 +1,189 @@ +%{ + +#include +#include +#include +#include +#include "ledc.h" + +%} + +%union { + char* fString; + Tattr* fAttr; + Tlist* fList; + Telem* fElem; + Tparam* fParam; +} + +%type attr_def +%type name_str +%type attr_list opt_attr param_list param_decl +%type iupelem iupelem_decl +%type param + +%token '(' ')' '=' '[' ']' ',' +%token NAME STRING + +%start led + +%% + +led : /* empty */ + | decl_list + ; + +decl_list : decl + | decl_list decl + ; + +decl : iupelem_decl + { decl( $1 ); } + ; + +iupelem_decl : iupelem + { $$ = $1; } + | NAME '=' iupelem + { $$ = $3; $3->name = $1; named($1); } + ; + +iupelem : NAME opt_attr '(' param_decl ')' + { $$ = elem( $1, $2, $4 ); } + +param_decl : /* empty */ + { $$ = 0; } + | param_list + { $$ = $1; } + ; + +param_list : param + { $$ = list(); addlist( $$, $1 ); } + | param_list ',' param + { $$ = addlist( $1, $3 ); } + ; + +param : NAME + { $$ = param( NAME_PARAM, $1 ); } + | STRING + { $$ = param( STRING_PARAM, $1 ); } + | iupelem_decl + { $$ = param( ELEM_PARAM, $1 ); use($1->name); } + ; + +opt_attr : /* empty */ + { $$ = 0; } + | '[' attr_list ']' + { $$ = revertlist( $2 ); } + ; + +attr_list : attr_def + { $$ = list(); addlist( $$, $1 ); } + | attr_list ',' attr_def + { addlist( $1, $3 ); } + ; + +attr_def : name_str '=' name_str + { $$ = attr( $1, $3 ); } + ; + +name_str : NAME + | STRING + ; + +%% + +extern int yylineno; +extern FILE *yyin; + +int yywrap(void) { return 1; } + +void yyerror(char *str) +{ + error(" %s; last token read: %s", + str, yylval.fString); +} + +static int usage(void) +{ + fprintf( stderr, + "ledc [-v] [-c] [-f funcname] [-o file] files\n" + " -v print the version number\n" + " -c only perform checking, do not generate code\n" + " -f funcname generate exported function (default: led_load)\n" + " -o file place output in file (default: led.c)\n" + ); + return -1; +} + +int main(int argc, char *argv[]) +{ + if (argc < 2) + { + return usage(); + } + + while (argc > 1) + { + char *op = *(argv+1); + if (op[0] != '-') break; + argc--; + argv++; + switch (op[1]) + { + case 'v': + printf("Iup 3.0 LED Compiler to C\n"); + return 0; + break; + case 'o': + if (argc>1) + { + argc--; + argv++; + outname = *argv; + } + else return usage(); + break; + case 'f': + if (argc>1) + { + argc--; + argv++; + funcname = *argv; + } + else return usage(); + break; + case 'c': + nocode = 1; + break; + default: + return usage(); + } + } + + if (!outname) outname = "led.c"; + if (!funcname) funcname = "led_load"; + + init(); + while (--argc > 0) + { + char * name = *++argv; + filename = name; + if ((yyin = fopen(name, "r")) == NULL) + { + fprintf( stderr, "ledc: %s: %s\n", name, +#ifdef SunOS + "cannot open file" +#else + strerror(errno) +#endif + ); + continue; + } + yylineno = 1; + yyparse(); + fclose(yyin); + } + finish(); + return 0; +} + diff --git a/iup/srcledc/lex.yy.c b/iup/srcledc/lex.yy.c new file mode 100755 index 0000000..f4f21d6 --- /dev/null +++ b/iup/srcledc/lex.yy.c @@ -0,0 +1,1604 @@ +/* A lexical scanner generated by flex */ + +/* Scanner skeleton version: + * $Header: /cvsroot/iup/iup/srcledc/lex.yy.c,v 1.1 2008/11/21 03:00:11 scuri Exp $ + */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 + +#include +#include + + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include +#include + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + +typedef struct yy_buffer_state *YY_BUFFER_STATE; + +extern int yyleng; +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yytext_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int yy_size_t; + + +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; + +static YY_BUFFER_STATE yy_current_buffer = 0; + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; + +static int yy_n_chars; /* number of characters read into yy_ch_buf */ + + +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 1; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart YY_PROTO(( FILE *input_file )); + +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) + +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); + +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static void yy_flex_free YY_PROTO(( void * )); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) + + +#define YY_USES_REJECT +typedef unsigned char YY_CHAR; +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +typedef int yy_state_type; +extern int yylineno; +int yylineno = 1; +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 11 +#define YY_END_OF_BUFFER 12 +static yyconst short int yy_acclist[25] = + { 0, + 12, 11, 1, 11, 11, 11, 2, 11, 3, 11, + 9, 11, 7, 11, 4, 11, 5, 11, 6, 11, + 8, 10, 9, 8 + } ; + +static yyconst short int yy_accept[26] = + { 0, + 1, 1, 1, 2, 3, 5, 6, 7, 9, 11, + 13, 15, 17, 19, 21, 21, 22, 22, 22, 23, + 24, 24, 25, 25, 25 + } ; + +static yyconst int yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 4, 5, 1, 1, 1, 1, 6, + 7, 1, 8, 9, 8, 8, 1, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 1, 1, 1, + 10, 1, 1, 1, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 11, 12, 13, 1, 8, 1, 8, 8, 8, 8, + + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst int yy_meta[14] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1 + } ; + +static yyconst short int yy_base[28] = + { 0, + 0, 0, 24, 70, 70, 10, 18, 70, 70, 12, + 70, 70, 70, 70, 19, 70, 29, 16, 70, 10, + 38, 47, 57, 70, 16, 15, 14 + } ; + +static yyconst short int yy_def[28] = + { 0, + 24, 1, 24, 24, 24, 25, 26, 24, 24, 24, + 24, 24, 24, 24, 25, 24, 27, 26, 24, 24, + 25, 25, 27, 0, 24, 24, 24 + } ; + +static yyconst short int yy_nxt[84] = + { 0, + 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 4, 14, 16, 21, 18, 15, 20, 19, 20, + 19, 17, 16, 24, 24, 24, 24, 24, 24, 24, + 17, 15, 22, 24, 24, 24, 24, 24, 24, 24, + 23, 16, 24, 24, 24, 24, 24, 24, 24, 17, + 16, 24, 24, 24, 24, 24, 24, 24, 17, 15, + 22, 24, 24, 24, 24, 24, 24, 24, 23, 3, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24 + } ; + +static yyconst short int yy_chk[84] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 6, 27, 26, 25, 20, 18, 10, + 7, 6, 15, 3, 0, 0, 0, 0, 0, 0, + 15, 17, 17, 0, 0, 0, 0, 0, 0, 0, + 17, 21, 0, 0, 0, 0, 0, 0, 0, 21, + 22, 0, 0, 0, 0, 0, 0, 0, 22, 23, + 23, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24 + } ; + +static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; +static char *yy_full_match; +static int yy_lp; +#define REJECT \ +{ \ +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ +yy_cp = yy_full_match; /* restore poss. backed-over text */ \ +++yy_lp; \ +goto find_rule; \ +} +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "ledc.l" +#define INITIAL 0 +#line 4 "ledc.l" +#include +#include "ledc.h" +#include "y.tab.h" +#line 404 "lex.yy.c" + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( void )); +#else +extern int yywrap YY_PROTO(( void )); +#endif +#endif + +#ifndef YY_NO_UNPUT +static void yyunput YY_PROTO(( int c, char *buf_ptr )); +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * )); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +#endif + +#if YY_STACK_USED +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state )); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( void )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( void )); +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( yy_current_buffer->yy_is_interactive ) \ + { \ + int c = '*', n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ + && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL int yylex YY_PROTO(( void )) +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +YY_DECL + { + register yy_state_type yy_current_state; + register char *yy_cp = NULL, *yy_bp = NULL; + register int yy_act; + +#line 36 "ledc.l" + + +#line 558 "lex.yy.c" + + if ( yy_init ) + { + yy_init = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yy_start ) + yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_load_buffer_state(); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 25 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + *yy_state_ptr++ = yy_current_state; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 70 ); + +yy_find_action: + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; +find_rule: /* we branch to this label when backing up */ + for ( ; ; ) /* until we find what rule we matched */ + { + if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) + { + yy_act = yy_acclist[yy_lp]; + { + yy_full_match = yy_cp; + break; + } + } + --yy_cp; + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + ++yylineno; + } + +do_action: /* This label is used only to access EOF actions. */ + + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +YY_RULE_SETUP +#line 38 "ledc.l" +; + YY_BREAK +case 2: +YY_RULE_SETUP +#line 40 "ledc.l" +{ return '('; } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 41 "ledc.l" +{ return ')'; } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 42 "ledc.l" +{ return '='; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 43 "ledc.l" +{ return '['; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 44 "ledc.l" +{ return ']'; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 45 "ledc.l" +{ return ','; } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 47 "ledc.l" +{ + int len = strlen(yytext)-2; + char *str = (char*)malloc(sizeof(char)*len+1); + strncpy(str, yytext+1, len); + str[len] = 0; + yylval.fString = str; + return STRING; + } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 56 "ledc.l" +{ + yylval.fString = strdup(yytext); + return NAME; + } + YY_BREAK +case 10: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 61 "ledc.l" +; + YY_BREAK +case 11: +YY_RULE_SETUP +#line 63 "ledc.l" +ECHO; + YY_BREAK +#line 717 "lex.yy.c" + case YY_STATE_EOF(INITIAL): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yy_c_buf_p; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + yy_did_buffer_switch_on_eof = 0; + + if ( yywrap() ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ + + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +static int yy_get_next_buffer() + { + register char *dest = yy_current_buffer->yy_ch_buf; + register char *source = yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( yy_current_buffer->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + yy_current_buffer->yy_n_chars = yy_n_chars = 0; + + else + { + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = yy_current_buffer; + + int yy_c_buf_p_offset = + (int) (yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = yy_current_buffer->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + if ( yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + yy_current_buffer->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; + + return ret_val; + } + + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type yy_get_previous_state() + { + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 25 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + *yy_state_ptr++ = yy_current_state; + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif + { + register int yy_is_jam; + + register YY_CHAR yy_c = 1; + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 25 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 24); + if ( ! yy_is_jam ) + *yy_state_ptr++ = yy_current_state; + + return yy_is_jam ? 0 : yy_current_state; + } + + +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static void yyunput( int c, register char *yy_bp ) +#else +static void yyunput( c, yy_bp ) +int c; +register char *yy_bp; +#endif + { + register char *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = yy_n_chars + 2; + register char *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; + register char *source = + &yy_current_buffer->yy_ch_buf[number_to_move]; + + while ( source > yy_current_buffer->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + if ( c == '\n' ) + --yylineno; + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +#endif /* ifndef YY_NO_UNPUT */ + + +#ifdef __cplusplus +static int yyinput() +#else +static int input() +#endif + { + int c; + + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + /* This was really a NUL. */ + *yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; + + switch ( yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap() ) + return EOF; + + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ + *yy_c_buf_p = '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; + + if ( c == '\n' ) + ++yylineno; + + return c; + } + + +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); + } + + +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif + { + if ( yy_current_buffer == new_buffer ) + return; + + if ( yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + yy_current_buffer = new_buffer; + yy_load_buffer_state(); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yy_did_buffer_switch_on_eof = 1; + } + + +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; + } + + +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif + { + if ( ! b ) + return; + + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf ); + + yy_flex_free( (void *) b ); + } + + +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +extern int isatty YY_PROTO(( int )); +#endif +#endif + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + + + { + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif + } + + +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == yy_current_buffer ) + yy_load_buffer_state(); + } + + +#ifndef YY_NO_SCAN_BUFFER +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +char *base; +yy_size_t size; +#endif + { + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; + } +#endif + + +#ifndef YY_NO_SCAN_STRING +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len ); + } +#endif + + +#ifndef YY_NO_SCAN_BYTES +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len ) +yyconst char *bytes; +int len; +#endif + { + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (char *) yy_flex_alloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; + + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; + } +#endif + + +#ifndef YY_NO_PUSH_STATE +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; + + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); + + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); + + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); + + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + yy_start_stack[yy_start_stack_ptr++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +static void yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +static int yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) +#else +static void yy_fatal_error( msg ) +char msg[]; +#endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + +/* Internal utility routines. */ + +#ifndef yytext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +char *s1; +yyconst char *s2; +int n; +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } + +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 63 "ledc.l" + + + diff --git a/iup/srcledc/make_uname b/iup/srcledc/make_uname new file mode 100755 index 0000000..ca4b499 --- /dev/null +++ b/iup/srcledc/make_uname @@ -0,0 +1,3 @@ +# This builds the executable for 1 uname + +tecmake relink $1 $2 $3 $4 $5 $6 $7 $8 diff --git a/iup/srcledc/make_uname.bat b/iup/srcledc/make_uname.bat new file mode 100755 index 0000000..a6645a6 --- /dev/null +++ b/iup/srcledc/make_uname.bat @@ -0,0 +1,22 @@ +@echo off + +if "%1"=="" goto iupexe32 +if "%1"=="vc8" goto iupexe32 +if "%1"=="vc8_64" goto iupexe64 +if "%1"=="all" goto iupexe +goto end + +:iupexe32 +call tecmake vc8 relink %2 %3 %4 %5 %6 %7 +goto end + +:iupexe64 +call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7 +goto end + +:iupexe +call tecmake vc8 relink %2 %3 %4 %5 %6 %7 +call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7 +goto end + +:end diff --git a/iup/srcledc/y.tab.c b/iup/srcledc/y.tab.c new file mode 100755 index 0000000..e749dc7 --- /dev/null +++ b/iup/srcledc/y.tab.c @@ -0,0 +1,507 @@ +#ifndef lint +static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; +#endif +#define YYBYACC 1 +#define YYMAJOR 1 +#define YYMINOR 9 +#define yyclearin (yychar=(-1)) +#define yyerrok (yyerrflag=0) +#define YYRECOVERING (yyerrflag!=0) +#define YYPREFIX "yy" +#line 1 "ledc.y" + + +#include +#include +#include +#include +#include "ledc.h" + +static int yyparse(void); + +#line 11 "ledc.y" +typedef union { + char* fString; + Tattr* fAttr; + Tlist* fList; + Telem* fElem; + Tparam* fParam; +} YYSTYPE; +#line 29 "y.tab.c" +#define NAME 257 +#define STRING 258 +#define YYERRCODE 256 +short yylhs[] = { -1, + 0, 0, 10, 10, 11, 8, 8, 7, 6, 6, + 5, 5, 9, 9, 9, 4, 4, 3, 3, 1, + 2, 2, +}; +short yylen[] = { 2, + 0, 1, 1, 2, 1, 1, 3, 5, 0, 1, + 1, 3, 1, 1, 1, 0, 3, 1, 3, 3, + 1, 1, +}; +short yydefred[] = { 0, + 0, 0, 6, 5, 0, 3, 0, 0, 0, 4, + 0, 7, 21, 22, 18, 0, 0, 0, 0, 17, + 0, 0, 14, 0, 0, 15, 11, 20, 19, 0, + 8, 12, +}; +short yydgoto[] = { 2, + 15, 16, 17, 9, 24, 25, 3, 4, 27, 5, + 6, +}; +short yysindex[] = { -247, + -60, 0, 0, 0, -247, 0, -246, -252, -28, 0, + -78, 0, 0, 0, 0, -46, -44, -249, -252, 0, + -252, -60, 0, -27, -25, 0, 0, 0, 0, -249, + 0, 0, +}; +short yyrindex[] = { 18, + -21, 0, 0, 0, 20, 0, 0, 0, 0, 0, + -21, 0, 0, 0, 0, 0, 0, -20, 0, 0, + 0, -37, 0, -19, 0, 0, 0, 0, 0, 0, + 0, 0, +}; +short yygindex[] = { 0, + 2, 5, 0, 0, 0, 0, 19, -16, -5, 0, + 22, +}; +#define YYTABLESIZE 49 +short yytable[] = { 21, + 7, 26, 16, 13, 13, 14, 13, 22, 23, 1, + 11, 18, 8, 26, 19, 31, 30, 1, 16, 2, + 9, 10, 29, 28, 32, 12, 10, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, +}; +short yycheck[] = { 44, + 61, 18, 40, 41, 257, 258, 44, 257, 258, 257, + 257, 40, 91, 30, 61, 41, 44, 0, 40, 0, + 41, 41, 21, 19, 30, 7, 5, -1, -1, -1, + 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, +}; +#define YYFINAL 2 +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif +#define YYMAXTOKEN 258 +#if YYDEBUG +char *yyname[] = { +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'='",0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'['",0,"']'",0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"NAME", +"STRING", +}; +char *yyrule[] = { +"$accept : led", +"led :", +"led : decl_list", +"decl_list : decl", +"decl_list : decl_list decl", +"decl : iupelem_decl", +"iupelem_decl : iupelem", +"iupelem_decl : NAME '=' iupelem", +"iupelem : NAME opt_attr '(' param_decl ')'", +"param_decl :", +"param_decl : param_list", +"param_list : param", +"param_list : param_list ',' param", +"param : NAME", +"param : STRING", +"param : iupelem_decl", +"opt_attr :", +"opt_attr : '[' attr_list ']'", +"attr_list : attr_def", +"attr_list : attr_list ',' attr_def", +"attr_def : name_str '=' name_str", +"name_str : NAME", +"name_str : STRING", +}; +#endif +#ifdef YYSTACKSIZE +#undef YYMAXDEPTH +#define YYMAXDEPTH YYSTACKSIZE +#else +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH +#else +#define YYSTACKSIZE 500 +#define YYMAXDEPTH 500 +#endif +#endif +int yydebug; +int yynerrs; +int yyerrflag; +int yychar; +short *yyssp; +YYSTYPE *yyvsp; +YYSTYPE yyval; +YYSTYPE yylval; +short yyss[YYSTACKSIZE]; +YYSTYPE yyvs[YYSTACKSIZE]; +#define yystacksize YYSTACKSIZE +#line 93 "ledc.y" + + +extern int yylineno; +extern FILE *yyin; + +int yywrap(void) { return 1; } + +void yyerror(char *str) +{ + error(" %s; last token read: %s", + str, yylval.fString); +} + +static int usage(void) +{ + fprintf( stderr, + "ledc [-v] [-c] [-f funcname] [-o file] files\n" + " -v print the version number\n" + " -c only perform checking, do not generate code\n" + " -f funcname generate exported function (default: led_load)\n" + " -o file place output in file (default: led.c)\n" + ); + return -1; +} + +int main(int argc, char *argv[]) +{ + if (argc < 2) + { + return usage(); + } + + while (argc > 1) + { + char *op = *(argv+1); + if (op[0] != '-') break; + argc--; + argv++; + switch (op[1]) + { + case 'v': + printf("Iup 3.0 LED Compiler to C\n"); + return 0; + break; + case 'o': + if (argc>1) + { + argc--; + argv++; + outname = *argv; + } + else return usage(); + break; + case 'f': + if (argc>1) + { + argc--; + argv++; + funcname = *argv; + } + else return usage(); + break; + case 'c': + nocode = 1; + break; + default: + return usage(); + } + } + + if (!outname) outname = "led.c"; + if (!funcname) funcname = "led_load"; + + init(); + while (--argc > 0) + { + char * name = *++argv; + filename = name; + if ((yyin = fopen(name, "r")) == NULL) + { + fprintf( stderr, "ledc: %s: %s\n", name, +#ifdef SunOS + "cannot open file" +#else + strerror(errno) +#endif + ); + continue; + } + yylineno = 1; + yyparse(); + fclose(yyin); + } + finish(); + return 0; +} + +#line 246 "y.tab.c" +#define YYABORT goto yyabort +#define YYREJECT goto yyabort +#define YYACCEPT goto yyaccept +#define YYERROR goto yyerrlab +static int yyparse(void) +{ + register int yym, yyn, yystate; +#if YYDEBUG + register char *yys; + extern char *getenv(); + + if (yys = getenv("YYDEBUG")) + { + yyn = *yys; + if (yyn >= '0' && yyn <= '9') + yydebug = yyn - '0'; + } +#endif + + yynerrs = 0; + yyerrflag = 0; + yychar = (-1); + + yyssp = yyss; + yyvsp = yyvs; + *yyssp = yystate = 0; + +yyloop: + if (yyn = yydefred[yystate]) goto yyreduce; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + } + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, shifting to state %d\n", + YYPREFIX, yystate, yytable[yyn]); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + yychar = (-1); + if (yyerrflag > 0) --yyerrflag; + goto yyloop; + } + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { + yyn = yytable[yyn]; + goto yyreduce; + } + if (yyerrflag) goto yyinrecovery; +#ifdef lint + goto yynewerror; +#endif +yynewerror: + yyerror("syntax error"); +#ifdef lint + goto yyerrlab; +#endif +yyerrlab: + ++yynerrs; +yyinrecovery: + if (yyerrflag < 3) + { + yyerrflag = 3; + for (;;) + { + if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, error recovery shifting\ + to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + goto yyloop; + } + else + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: error recovery discarding state %d\n", + YYPREFIX, *yyssp); +#endif + if (yyssp <= yyss) goto yyabort; + --yyssp; + --yyvsp; + } + } + } + else + { + if (yychar == 0) goto yyabort; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("%sdebug: state %d, error recovery discards token %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + yychar = (-1); + goto yyloop; + } +yyreduce: +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, reducing by rule %d (%s)\n", + YYPREFIX, yystate, yyn, yyrule[yyn]); +#endif + yym = yylen[yyn]; + yyval = yyvsp[1-yym]; + switch (yyn) + { +case 5: +#line 41 "ledc.y" +{ decl( yyvsp[0].fElem ); } +break; +case 6: +#line 45 "ledc.y" +{ yyval.fElem = yyvsp[0].fElem; } +break; +case 7: +#line 47 "ledc.y" +{ yyval.fElem = yyvsp[0].fElem; yyvsp[0].fElem->name = yyvsp[-2].fString; named(yyvsp[-2].fString); } +break; +case 8: +#line 51 "ledc.y" +{ yyval.fElem = elem( yyvsp[-4].fString, yyvsp[-3].fList, yyvsp[-1].fList ); } +break; +case 9: +#line 54 "ledc.y" +{ yyval.fList = 0; } +break; +case 10: +#line 56 "ledc.y" +{ yyval.fList = yyvsp[0].fList; } +break; +case 11: +#line 60 "ledc.y" +{ yyval.fList = list(); addlist( yyval.fList, yyvsp[0].fParam ); } +break; +case 12: +#line 62 "ledc.y" +{ yyval.fList = addlist( yyvsp[-2].fList, yyvsp[0].fParam ); } +break; +case 13: +#line 66 "ledc.y" +{ yyval.fParam = param( NAME_PARAM, yyvsp[0].fString ); } +break; +case 14: +#line 68 "ledc.y" +{ yyval.fParam = param( STRING_PARAM, yyvsp[0].fString ); } +break; +case 15: +#line 70 "ledc.y" +{ yyval.fParam = param( ELEM_PARAM, yyvsp[0].fElem ); use(yyvsp[0].fElem->name); } +break; +case 16: +#line 74 "ledc.y" +{ yyval.fList = 0; } +break; +case 17: +#line 76 "ledc.y" +{ yyval.fList = revertlist( yyvsp[-1].fList ); } +break; +case 18: +#line 80 "ledc.y" +{ yyval.fList = list(); addlist( yyval.fList, yyvsp[0].fAttr ); } +break; +case 19: +#line 82 "ledc.y" +{ addlist( yyvsp[-2].fList, yyvsp[0].fAttr ); } +break; +case 20: +#line 86 "ledc.y" +{ yyval.fAttr = attr( yyvsp[-2].fString, yyvsp[0].fString ); } +break; +#line 451 "y.tab.c" + } + yyssp -= yym; + yystate = *yyssp; + yyvsp -= yym; + yym = yylhs[yyn]; + if (yystate == 0 && yym == 0) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state 0 to\ + state %d\n", YYPREFIX, YYFINAL); +#endif + yystate = YYFINAL; + *++yyssp = YYFINAL; + *++yyvsp = yyval; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, YYFINAL, yychar, yys); + } +#endif + } + if (yychar == 0) goto yyaccept; + goto yyloop; + } + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + yystate = yytable[yyn]; + else + yystate = yydgoto[yym]; +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state %d \ +to state %d\n", YYPREFIX, *yyssp, yystate); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate; + *++yyvsp = yyval; + goto yyloop; +yyoverflow: + yyerror("yacc stack overflow"); +yyabort: + return (1); +yyaccept: + return (0); +} diff --git a/iup/srcledc/y.tab.h b/iup/srcledc/y.tab.h new file mode 100755 index 0000000..4a16f88 --- /dev/null +++ b/iup/srcledc/y.tab.h @@ -0,0 +1,10 @@ +#define NAME 257 +#define STRING 258 +typedef union { + char* fString; + Tattr* fAttr; + Tlist* fList; + Telem* fElem; + Tparam* fParam; +} YYSTYPE; +extern YYSTYPE yylval; diff --git a/iup/srclua3/Makefile b/iup/srclua3/Makefile new file mode 100755 index 0000000..b63716a --- /dev/null +++ b/iup/srclua3/Makefile @@ -0,0 +1,21 @@ + +.PHONY: do_all iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim +do_all: iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim + +iuplua: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak + +iupluacd: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcd + +iupluacontrols: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcontrols + +iuplua_pplot: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iup_pplot + +iupluagl: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupgl + +iupluaim: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupim diff --git a/iup/srclua3/cells.lua b/iup/srclua3/cells.lua new file mode 100755 index 0000000..0f1e0cc --- /dev/null +++ b/iup/srclua3/cells.lua @@ -0,0 +1,37 @@ +IUPCELLS = {parent = WIDGET} + +function IUPCELLS:CreateIUPelement( obj ) + return iupCreateCells() +end + +function IUPCELLS:redraw() + self.repaint = IUP_YES +end + +function iupcells(o) + return IUPCELLS:Constructor(o) +end +iup.cells = iupcells + + +-- iup_callbacks.draw_cb = iup_callbacks.draw = {"DRAW_CB", iup_mat_draw_cb} -- same callback at IupMatrix + +iup_callbacks.mouseclick = {"MOUSECLICK_CB", iup_cells_mouseclick_cb} +iup_callbacks.mousemotion = {"MOUSEMOTION_CB", iup_cells_mousemotion_cb} +iup_callbacks.scrolling = {"SCROLLING_CB", iup_cells_scrolling_cb} +iup_callbacks.width = {"WIDTH_CB", iup_cells_width_cb} +iup_callbacks.height = {"HEIGHT_CB", iup_cells_height_cb} +iup_callbacks.nlines = {"NLINES_CB", iup_cells_nlines_cb} +iup_callbacks.ncols = {"NCOLS_CB", iup_cells_ncols_cb} +iup_callbacks.hspan = {"HSPAN_CB", iup_cells_hspan_cb} +iup_callbacks.vspan = {"VSPAN_CB", iup_cells_vspan_cb} + +iup_callbacks.mouseclick_cb = iup_callbacks.mouseclick +iup_callbacks.mousemotion_cb = iup_callbacks.mousemotion +iup_callbacks.scrolling_cb = iup_callbacks.scrolling +iup_callbacks.width_cb = iup_callbacks.width +iup_callbacks.height_cb = iup_callbacks.height +iup_callbacks.nlines_cb = iup_callbacks.nlines +iup_callbacks.ncols_cb = iup_callbacks.ncols +iup_callbacks.hspan_cb = iup_callbacks.hspan +iup_callbacks.vspan_cb = iup_callbacks.vspan diff --git a/iup/srclua3/colorbar.lua b/iup/srclua3/colorbar.lua new file mode 100755 index 0000000..41953de --- /dev/null +++ b/iup/srclua3/colorbar.lua @@ -0,0 +1,21 @@ +IUPCOLORBAR = {parent = WIDGET} + +function IUPCOLORBAR:CreateIUPelement(obj) + return iupCreateColorbar(obj) +end + +function iupcolorbar (o) + return IUPCOLORBAR:Constructor (o) +end +iup.colorbar = iupcolorbar + + +iup_callbacks.cellcb = {"CELL_CB", iup_colorbar_cell_cb} +iup_callbacks.selectcb = {"SELECT_CB", iup_colorbar_select_cb} +iup_callbacks.switchcb = {"SWITCH_CB", iup_colorbar_switch_cb} +iup_callbacks.extendedcb = {"EXTENDED_CB", iup_colorbar_extended_cb} + +iup_callbacks.cell_cb = iup_callbacks.cellcb +iup_callbacks.select_cb = iup_callbacks.selectcb +iup_callbacks.switch_cb = iup_callbacks.switchcb +iup_callbacks.extended_cb = iup_callbacks.extendedcb diff --git a/iup/srclua3/colorbrowser.lua b/iup/srclua3/colorbrowser.lua new file mode 100755 index 0000000..fdd7bd7 --- /dev/null +++ b/iup/srclua3/colorbrowser.lua @@ -0,0 +1,17 @@ +IUPCOLORBROWSER = {parent = WIDGET} + +function IUPCOLORBROWSER:CreateIUPelement(obj) + return iupCreateColorBrowser(obj) +end + +function iupcolorbrowser (o) + return IUPCOLORBROWSER:Constructor (o) +end +iup.colorbrowser = iupcolorbrowser + + +iup_callbacks.drag = {"DRAG_CB", iup_colorbrowser_drag_cb} +iup_callbacks.change = {"CHANGE_CB", iup_colorbrowser_change_cb} + +iup_callbacks.drag_cb = iup_callbacks.drag +iup_callbacks.change_cb = iup_callbacks.change diff --git a/iup/srclua3/config.mak b/iup/srclua3/config.mak new file mode 100755 index 0000000..fae6145 --- /dev/null +++ b/iup/srclua3/config.mak @@ -0,0 +1,19 @@ +BUILD_IUP3 = Yes + +PROJNAME = iup +LIBNAME = iuplua3 +OPT = YES + +LOHDIR = loh +SRCLUA = iuplua.lua iuplua_widgets.lua constants.lua spin.lua \ + sbox.lua val.lua tree.lua tabs.lua +SRC = iuplua.c iuplua_api.c iuplua_widgets.c il_scanf.c il_cbox.c \ + il_sbox.c il_spin.c il_val.c il_tree.c il_tabs.c il_getcolor.c il_getparam.c + +USE_LUA = Yes + +DEFINES = IUPLUA_USELOH +INCLUDES = ../include ../src +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup + diff --git a/iup/srclua3/constants.lua b/iup/srclua3/constants.lua new file mode 100755 index 0000000..bbd366b --- /dev/null +++ b/iup/srclua3/constants.lua @@ -0,0 +1,148 @@ + +-- ################################################################################# +-- Constants +-- ################################################################################# + + +IUP_ERROR = 1 iup.ERROR = IUP_ERROR +IUP_NOERROR = 0 iup.NOERROR = IUP_NOERROR +IUP_OPENED = -1 iup.OPENED = IUP_OPENED +IUP_INVALID = -1 iup.INVALID = IUP_INVALID + +IUP_CENTER = 65535 iup.CENTER = IUP_CENTER +IUP_LEFT = 65534 iup.LEFT = IUP_LEFT +IUP_RIGHT = 65533 iup.RIGHT = IUP_RIGHT +IUP_MOUSEPOS = 65532 iup.MOUSEPOS = IUP_MOUSEPOS +IUP_CURRENT = 65531 iup.CURRENT = IUP_CURRENT +IUP_CENTERPARENT = 65530 iup.CENTERPARENT = IUP_CENTERPARENT +IUP_TOP = IUP_LEFT iup.TOP = IUP_TOP +IUP_BOTTOM = IUP_RIGHT iup.BOTTOM = IUP_BOTTOM + +IUP_BUTTON1 = 49 iup.BUTTON1 = IUP_BUTTON1 -- '1' +IUP_BUTTON2 = 50 iup.BUTTON2 = IUP_BUTTON2 -- '2' +IUP_BUTTON3 = 51 iup.BUTTON3 = IUP_BUTTON3 -- '3' +IUP_BUTTON4 = 52 iup.BUTTON4 = IUP_BUTTON4 -- '4' +IUP_BUTTON5 = 53 iup.BUTTON5 = IUP_BUTTON5 -- '5' + +IUP_IGNORE = -1 iup.IGNORE = IUP_IGNORE +IUP_DEFAULT = -2 iup.DEFAULT = IUP_DEFAULT +IUP_CLOSE = -3 iup.CLOSE = IUP_CLOSE +IUP_CONTINUE = -4 iup.CONTINUE = IUP_CONTINUE + +IUP_SBUP = 0 iup.SBUP = IUP_SBUP +IUP_SBDN = 1 iup.SBDN = IUP_SBDN +IUP_SBPGUP = 2 iup.SBPGUP = IUP_SBPGUP +IUP_SBPGDN = 3 iup.SBPGDN = IUP_SBPGDN +IUP_SBPOSV = 4 iup.SBPOSV = IUP_SBPOSV +IUP_SBDRAGV = 5 iup.SBDRAGV = IUP_SBDRAGV +IUP_SBLEFT = 6 iup.SBLEFT = IUP_SBLEFT +IUP_SBRIGHT = 7 iup.SBRIGHT = IUP_SBRIGHT +IUP_SBPGLEFT = 8 iup.SBPGLEFT = IUP_SBPGLEFT +IUP_SBPGRIGHT = 9 iup.SBPGRIGHT = IUP_SBPGRIGHT +IUP_SBPOSH = 10 iup.SBPOSH = IUP_SBPOSH +IUP_SBDRAGH = 11 iup.SBDRAGH = IUP_SBDRAGH + +IUP_SHOW = 0 iup.SHOW = IUP_SHOW +IUP_RESTORE = 1 iup.RESTORE = IUP_RESTORE +IUP_MINIMIZE = 2 iup.MINIMIZE = IUP_MINIMIZE +IUP_MAXIMIZE = 3 iup.MAXIMIZE = IUP_MAXIMIZE +IUP_HIDE = 4 iup.HIDE = IUP_HIDE + +RED = IupRGB(1, 0, 0) iup.RED = RED +GREEN = IupRGB(0, 1, 0) iup.GREEN = GREEN +BLUE = IupRGB(0, 0, 1) iup.BLUE = BLUE +BLACK = IupRGB(0, 0, 0) iup.BLACK = BLACK +WHITE = IupRGB(1, 1, 1) iup.WHITE = WHITE +YELLOW = IupRGB(1, 1, 0) iup.YELLOW = YELLOW + +IUP_ON = "ON" iup.ON = IUP_ON +IUP_OFF = "OFF" iup.OFF = IUP_OFF +IUP_YES = "YES" iup.YES = IUP_YES +IUP_NO = "NO" iup.NO = IUP_NO +IUP_APPEND = "APPEND" iup.APPEND = IUP_APPEND +IUP_VERTICAL = "VERTICAL" iup.VERTICAL = IUP_VERTICAL +IUP_HORIZONTAL ="HORIZONTAL" iup.HORIZONTAL =IUP_HORIZONTAL + +IUP_ACENTER = "ACENTER" iup.ACENTER = IUP_ACENTER +IUP_ALEFT = "ALEFT" iup.ALEFT = IUP_ALEFT +IUP_ARIGHT = "ARIGHT" iup.ARIGHT = IUP_ARIGHT +IUP_ATOP = "ATOP" iup.ATOP = IUP_ATOP +IUP_ABOTTOM = "ABOTTOM" iup.ABOTTOM = IUP_ABOTTOM + +IUP_NORTH = "NORTH" iup.NORTH = IUP_NORTH +IUP_SOUTH = "SOUTH" iup.SOUTH = IUP_SOUTH +IUP_WEST = "WEST" iup.WEST = IUP_WEST +IUP_EAST = "EAST" iup.EAST = IUP_EAST +IUP_NE = "NE" iup.NE = IUP_NE +IUP_SE = "SE" iup.SE = IUP_SE +IUP_NW = "NW" iup.NW = IUP_NW +IUP_SW = "SW" iup.SW = IUP_SW + +IUP_FULL = "FULL" iup.FULL = IUP_FULL +IUP_HALF = "HALF" iup.HALF = IUP_HALF +IUP_THIRD = "THIRD" iup.THIRD = IUP_THIRD +IUP_QUARTER = "QUARTER" iup.QUARTER = IUP_QUARTER +IUP_EIGHTH = "EIGHTH" iup.EIGHTH = IUP_EIGHTH + +IUP_ARROW = "ARROW" iup.ARROW = IUP_ARROW +IUP_BUSY = "BUSY" iup.BUSY = IUP_BUSY +IUP_RESIZE_N = "RESIZE_N" iup.RESIZE_N = IUP_RESIZE_N +IUP_RESIZE_S = "RESIZE_S" iup.RESIZE_S = IUP_RESIZE_S +IUP_RESIZE_E = "RESIZE_E" iup.RESIZE_E = IUP_RESIZE_E +IUP_RESIZE_W = "RESIZE_W" iup.RESIZE_W = IUP_RESIZE_W +IUP_RESIZE_NE = "RESIZE_NE" iup.RESIZE_NE = IUP_RESIZE_NE +IUP_RESIZE_NW = "RESIZE_NW" iup.RESIZE_NW = IUP_RESIZE_NW +IUP_RESIZE_SE = "RESIZE_SE" iup.RESIZE_SE = IUP_RESIZE_SE +IUP_RESIZE_SW = "RESIZE_SW" iup.RESIZE_SW = IUP_RESIZE_SW +IUP_MOVE = "MOVE" iup.MOVE = IUP_MOVE +IUP_HAND = "HAND" iup.HAND = IUP_HAND +IUP_NONE = "NONE" iup.NONE = IUP_NONE +IUP_IUP = "IUP" iup.IUP = IUP_IUP +IUP_CROSS = "CROSS" iup.CROSS = IUP_CROSS +IUP_PEN = "PEN" iup.PEN = IUP_PEN +IUP_TEXT = "TEXT" iup.TEXT = IUP_TEXT +IUP_RESIZE_C = "RESIZE_C" iup.RESIZE_C = IUP_RESIZE_C +IUP_OPENHAND = "OPENHAND" iup.OPENHAND = IUP_OPENHAND + +IUP_HELVETICA_NORMAL_8 = "HELVETICA_NORMAL_8" iup.HELVETICA_NORMAL_8 = IUP_HELVETICA_NORMAL_8 +IUP_HELVETICA_ITALIC_8 = "HELVETICA_ITALIC_8" iup.HELVETICA_ITALIC_8 = IUP_HELVETICA_ITALIC_8 +IUP_HELVETICA_BOLD_8 = "HELVETICA_BOLD_8" iup.HELVETICA_BOLD_8 = IUP_HELVETICA_BOLD_8 +IUP_HELVETICA_NORMAL_10 = "HELVETICA_NORMAL_10" iup.HELVETICA_NORMAL_10 = IUP_HELVETICA_NORMAL_10 +IUP_HELVETICA_ITALIC_10 = "HELVETICA_ITALIC_10" iup.HELVETICA_ITALIC_10 = IUP_HELVETICA_ITALIC_10 +IUP_HELVETICA_BOLD_10 = "HELVETICA_BOLD_10" iup.HELVETICA_BOLD_10 = IUP_HELVETICA_BOLD_10 +IUP_HELVETICA_NORMAL_12 = "HELVETICA_NORMAL_12" iup.HELVETICA_NORMAL_12 = IUP_HELVETICA_NORMAL_12 +IUP_HELVETICA_ITALIC_12 = "HELVETICA_ITALIC_12" iup.HELVETICA_ITALIC_12 = IUP_HELVETICA_ITALIC_12 +IUP_HELVETICA_BOLD_12 = "HELVETICA_BOLD_12" iup.HELVETICA_BOLD_12 = IUP_HELVETICA_BOLD_12 +IUP_HELVETICA_NORMAL_14 = "HELVETICA_NORMAL_14" iup.HELVETICA_NORMAL_14 = IUP_HELVETICA_NORMAL_14 +IUP_HELVETICA_ITALIC_14 = "HELVETICA_ITALIC_14" iup.HELVETICA_ITALIC_14 = IUP_HELVETICA_ITALIC_14 +IUP_HELVETICA_BOLD_14 = "HELVETICA_BOLD_14" iup.HELVETICA_BOLD_14 = IUP_HELVETICA_BOLD_14 +IUP_COURIER_NORMAL_8 = "COURIER_NORMAL_8" iup.COURIER_NORMAL_8 = IUP_COURIER_NORMAL_8 +IUP_COURIER_ITALIC_8 = "COURIER_ITALIC_8" iup.COURIER_ITALIC_8 = IUP_COURIER_ITALIC_8 +IUP_COURIER_BOLD_8 = "COURIER_BOLD_8" iup.COURIER_BOLD_8 = IUP_COURIER_BOLD_8 +IUP_COURIER_NORMAL_10 = "COURIER_NORMAL_10" iup.COURIER_NORMAL_10 = IUP_COURIER_NORMAL_10 +IUP_COURIER_ITALIC_10 = "COURIER_ITALIC_10" iup.COURIER_ITALIC_10 = IUP_COURIER_ITALIC_10 +IUP_COURIER_BOLD_10 = "COURIER_BOLD_10" iup.COURIER_BOLD_10 = IUP_COURIER_BOLD_10 +IUP_COURIER_NORMAL_12 = "COURIER_NORMAL_12" iup.COURIER_NORMAL_12 = IUP_COURIER_NORMAL_12 +IUP_COURIER_ITALIC_12 = "COURIER_ITALIC_12" iup.COURIER_ITALIC_12 = IUP_COURIER_ITALIC_12 +IUP_COURIER_BOLD_12 = "COURIER_BOLD_12" iup.COURIER_BOLD_12 = IUP_COURIER_BOLD_12 +IUP_COURIER_NORMAL_14 = "COURIER_NORMAL_14" iup.COURIER_NORMAL_14 = IUP_COURIER_NORMAL_14 +IUP_COURIER_ITALIC_14 = "COURIER_ITALIC_14" iup.COURIER_ITALIC_14 = IUP_COURIER_ITALIC_14 +IUP_COURIER_BOLD_14 = "COURIER_BOLD_14" iup.COURIER_BOLD_14 = IUP_COURIER_BOLD_14 +IUP_TIMES_NORMAL_8 = "TIMES_NORMAL_8" iup.TIMES_NORMAL_8 = IUP_TIMES_NORMAL_8 +IUP_TIMES_ITALIC_8 = "TIMES_ITALIC_8" iup.TIMES_ITALIC_8 = IUP_TIMES_ITALIC_8 +IUP_TIMES_BOLD_8 = "TIMES_BOLD_8" iup.TIMES_BOLD_8 = IUP_TIMES_BOLD_8 +IUP_TIMES_NORMAL_10 = "TIMES_NORMAL_10" iup.TIMES_NORMAL_10 = IUP_TIMES_NORMAL_10 +IUP_TIMES_ITALIC_10 = "TIMES_ITALIC_10" iup.TIMES_ITALIC_10 = IUP_TIMES_ITALIC_10 +IUP_TIMES_BOLD_10 = "TIMES_BOLD_10" iup.TIMES_BOLD_10 = IUP_TIMES_BOLD_10 +IUP_TIMES_NORMAL_12 = "TIMES_NORMAL_12" iup.TIMES_NORMAL_12 = IUP_TIMES_NORMAL_12 +IUP_TIMES_ITALIC_12 = "TIMES_ITALIC_12" iup.TIMES_ITALIC_12 = IUP_TIMES_ITALIC_12 +IUP_TIMES_BOLD_12 = "TIMES_BOLD_12" iup.TIMES_BOLD_12 = IUP_TIMES_BOLD_12 +IUP_TIMES_NORMAL_14 = "TIMES_NORMAL_14" iup.TIMES_NORMAL_14 = IUP_TIMES_NORMAL_14 +IUP_TIMES_ITALIC_14 = "TIMES_ITALIC_14" iup.TIMES_ITALIC_14 = IUP_TIMES_ITALIC_14 +IUP_TIMES_BOLD_14 = "TIMES_BOLD_14" iup.TIMES_BOLD_14 = IUP_TIMES_BOLD_14 + +iup.MASK_FLOAT = "[+/-]?(/d+/.?/d*|/./d+)" +iup.MASK_UFLOAT = "(/d+/.?/d*|/./d+)" +iup.MASK_EFLOAT = "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?" +iup.MASK_INT = "[+/-]?/d+" +iup.MASK_UINT = "/d+" diff --git a/iup/srclua3/dial.lua b/iup/srclua3/dial.lua new file mode 100755 index 0000000..ee2c488 --- /dev/null +++ b/iup/srclua3/dial.lua @@ -0,0 +1,15 @@ +IUPDIAL = {parent = WIDGET} + +function IUPDIAL:CreateIUPelement (obj) + return iupCreateDial (obj[1]) +end + +function iupdial (o) + return IUPDIAL:Constructor (o) +end +iup.dial = iupdial + +iup_callbacks.mousemove.dial = iup_val_mousemove_cb -- same callback at IupVal + +-- iup_callbacks.buttonpress = {"BUTTON_PRESS_CB", iup_val_button_press_cb} -- same callback at IupVal +-- iup_callbacks.buttonrelease = {"BUTTON_RELEASE_CB", iup_val_button_release_cb} -- same callback at IupVal diff --git a/iup/srclua3/gauge.lua b/iup/srclua3/gauge.lua new file mode 100755 index 0000000..3fd886f --- /dev/null +++ b/iup/srclua3/gauge.lua @@ -0,0 +1,10 @@ +IUPGAUGE = {parent = WIDGET} + +function IUPGAUGE:CreateIUPelement (obj) + return iupCreateGauge () +end + +function iupgauge (o) + return IUPGAUGE:Constructor (o) +end +iup.gauge = iupgauge diff --git a/iup/srclua3/il.h b/iup/srclua3/il.h new file mode 100755 index 0000000..406ccc4 --- /dev/null +++ b/iup/srclua3/il.h @@ -0,0 +1,81 @@ +/** \file + * \brief iupLua internal declarations + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IL_H +#define __IL_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iupluaapi_open(void); +int iupluawidgets_open(int tag); + +int sboxlua_open(void); +int spinlua_open(void); +int cboxlua_open(void); +int gclua_open (void); +int vallua_open (void); +int tabslua_open (void); +int treelua_open (void); + +void iupluaScanf(void); +void getparamlua_open (void); + +/** First function called inside a callback. + * It prepares the stack for the call and returns the Lua state. + */ +void iuplua_call_start(Ihandle* handle, char* name); + +/** Called when a callback in Lua should be called. + * Returns the callback return value. If nil returns IUP_DEFAULT. + * At the end clears the Lua stack. + */ +int iuplua_call(void); + +/** Same as /ref iuplua_call, but returns a string. + */ +char* iuplua_call_rs(void); + +/** Register a function. + */ +void iuplua_register(char* name, lua_CFunction func); + +/** Register a function. But consider no prefix. + */ +void iuplua_register_macro(char* name, lua_CFunction func); + +/** Register a number. + */ +void iuplua_regnumber(double num, char* name); + +/** Register a string. + */ +void iuplua_regstring(char* str, char* name); + +/** Register a string, but consider only 3 character as prefix. + */ +void iuplua_regstring_mask(char* str, char* name); + +/** Returns an array of ihandle stored in a Lua table. + */ +Ihandle** iuplua_checkihandle_array(int numArg); + +/** Pushes an ihandle inside a callback. + * If ihandle is from C must call iuplua_regihandle before iuplua_call_start. + */ +void iuplua_pushihandle_cb(Ihandle *n); + +/** Register an ihandle created in C in Lua. + */ +void iuplua_regihandle(Ihandle *n); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srclua3/il_cbox.c b/iup/srclua3/il_cbox.c new file mode 100755 index 0000000..9dc388d --- /dev/null +++ b/iup/srclua3/il_cbox.c @@ -0,0 +1,36 @@ +/** \file + * \brief Bindig of iupcbox to Lua 3. + * + * See Copyright Notice in "iup.h" + */ +#include + +#include + +#include "iup.h" + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + +static void CreateCbox(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + Ihandle** params = iuplua_checkihandle_array(1); + lua_pushusertag(IupCboxv(params),tag); + free(params); +} + +int cboxlua_open (void) +{ + lua_register("iupCreateCbox",CreateCbox); + + return lua_dostring("IUPCBOX = {parent = IUPCANVAS}\n" + "function IUPCBOX:CreateIUPelement (obj)\n" + " return iupCreateCbox (obj, getn(obj))\n" + "end\n" + "function iupcbox (o)\n" + " return IUPCBOX:Constructor (o)\n" + "end\n" + "iup.cbox = iupcbox\n"); +} diff --git a/iup/srclua3/il_cells.c b/iup/srclua3/il_cells.c new file mode 100755 index 0000000..92969f8 --- /dev/null +++ b/iup/srclua3/il_cells.c @@ -0,0 +1,150 @@ +/** \file + * \brief Bindig of IupCells to Lua 3. + * @author André Luiz Clinio. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include + +#include "iuplua.h" + +#include "il.h" +#include "il_controls.h" + + +static int luacells_mouseclick_cb( Ihandle* handle, int b, int m, + int i, int j, int x, int y, char* r ) +{ + iuplua_call_start(handle, "mouseclick"); + lua_pushnumber(b); + lua_pushnumber(m); + lua_pushnumber(i); + lua_pushnumber(j); + lua_pushnumber(x); + lua_pushnumber(y); + lua_pushstring(r); + return iuplua_call(); +} + +static int luacells_mousemotion_cb( Ihandle* handle, int i, int j, + int x, int y, char* r ) +{ + iuplua_call_start(handle, "mousemotion"); + lua_pushnumber(i); + lua_pushnumber(j); + lua_pushnumber(x); + lua_pushnumber(y); + lua_pushstring(r); + return iuplua_call(); +} + +static int luacells_width_cb( Ihandle* handle, int col ) +{ + iuplua_call_start(handle, "width"); + lua_pushnumber(col); + return iuplua_call(); +} + +static int luacells_height_cb( Ihandle* handle, int line ) +{ + iuplua_call_start(handle, "height"); + lua_pushnumber(line); + return iuplua_call(); +} + +static int luacells_nlines_cb( Ihandle* handle ) +{ + iuplua_call_start(handle, "nlines"); + return iuplua_call(); +} + +static int luacells_ncols_cb( Ihandle* handle ) +{ + iuplua_call_start(handle, "ncols"); + return iuplua_call(); +} + +static int luacells_hspan_cb( Ihandle* handle, int i, int j ) +{ + iuplua_call_start(handle, "hspan"); + lua_pushnumber(i); + lua_pushnumber(j); + return iuplua_call(); +} + +static int luacells_vspan_cb( Ihandle* handle, int i, int j ) +{ + iuplua_call_start(handle, "vspan"); + lua_pushnumber(i); + lua_pushnumber(j); + return iuplua_call(); +} + +static int luacells_scrolling_cb( Ihandle* handle, int fline, int fcol ) +{ + iuplua_call_start(handle, "scrolling"); + lua_pushnumber(fline); + lua_pushnumber(fcol); + return iuplua_call(); +} + +static void createCells(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupCells(), tag); +} + +int cellslua_open(void) +{ + int i; + struct TypeAssocList { + char *name; + lua_CFunction func; + } assoc_list [] = { + {"iup_cells_mouseclick_cb", (lua_CFunction) luacells_mouseclick_cb }, + {"iup_cells_mousemotion_cb", (lua_CFunction) luacells_mousemotion_cb }, + {"iup_cells_width_cb", (lua_CFunction) luacells_width_cb }, + {"iup_cells_height_cb", (lua_CFunction) luacells_height_cb }, + {"iup_cells_nlines_cb", (lua_CFunction) luacells_nlines_cb }, + {"iup_cells_ncols_cb", (lua_CFunction) luacells_ncols_cb }, + {"iup_cells_hspan_cb", (lua_CFunction) luacells_hspan_cb }, + {"iup_cells_vspan_cb", (lua_CFunction) luacells_vspan_cb }, + {"iup_cells_scrolling_cb", (lua_CFunction) luacells_scrolling_cb } + }; + int assoc_list_size = (sizeof(assoc_list)/sizeof(struct TypeAssocList)); + + lua_register("iupCreateCells", createCells); + + for( i = 0; i < assoc_list_size; i++ ) + lua_register(assoc_list[i].name, assoc_list[i].func); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/cells_be64.loh" +#else +#include "loh/cells_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/cells_le64w.loh" +#else +#include "loh/cells_le64.loh" +#endif +#else +#include "loh/cells.loh" +#endif +#endif +#else + iuplua_dofile("luacells.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_colorbar.c b/iup/srclua3/il_colorbar.c new file mode 100755 index 0000000..28c912e --- /dev/null +++ b/iup/srclua3/il_colorbar.c @@ -0,0 +1,97 @@ +/** \file + * \brief Bindig of iupcb to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static char* COLORBAR_cell_cb(Ihandle *handle, int cell) +{ + iuplua_call_start(handle, "cellcb"); + lua_pushnumber(cell); + return iuplua_call_rs(); +} + +static int COLORBAR_select_cb(Ihandle *handle, int cell, int type) +{ + iuplua_call_start(handle, "selectcb"); + lua_pushnumber(cell); + lua_pushnumber(type); + return iuplua_call(); +} + +static int COLORBAR_switch_cb(Ihandle *handle, int prim_cell, int sec_cell) +{ + iuplua_call_start(handle, "switchcb"); + lua_pushnumber(prim_cell); + lua_pushnumber(sec_cell); + return iuplua_call(); +} + +static int COLORBAR_extended_cb(Ihandle *handle, int cell) +{ + iuplua_call_start(handle, "extendedcb"); + lua_pushnumber(cell); + return iuplua_call(); +} + +static void CreateColorbar(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupColorbar(), tag); +} + +int colorbarlua_open(void) +{ + struct AssocList { + char *name; + lua_CFunction func; + } COLORBARAssocList [] = { + {"iup_colorbar_cell_cb", (lua_CFunction)COLORBAR_cell_cb}, + {"iup_colorbar_select_cb", (lua_CFunction)COLORBAR_select_cb}, + {"iup_colorbar_switch_cb", (lua_CFunction)COLORBAR_switch_cb}, + {"iup_colorbar_extended_cb", (lua_CFunction)COLORBAR_extended_cb} + }; + int SizeCOLORBARAssocList = (sizeof(COLORBARAssocList)/sizeof(struct AssocList)); + int i; + + lua_register("iupCreateColorbar", CreateColorbar); + + for (i = 0; i < SizeCOLORBARAssocList; i++) + lua_register(COLORBARAssocList[i].name, COLORBARAssocList[i].func); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/colorbar_be64.loh" +#else +#include "loh/colorbar_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/colorbar_le64w.loh" +#else +#include "loh/colorbar_le64.loh" +#endif +#else +#include "loh/colorbar.loh" +#endif +#endif +#else + iuplua_dofile("luacolorbar.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_colorbrowser.c b/iup/srclua3/il_colorbrowser.c new file mode 100755 index 0000000..9415244 --- /dev/null +++ b/iup/srclua3/il_colorbrowser.c @@ -0,0 +1,72 @@ +/** \file + * \brief Bindig of iupcb to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int CB_drag(Ihandle *handle, unsigned char r, unsigned char g, unsigned char b) +{ + iuplua_call_start(handle, "drag"); + lua_pushnumber(r); + lua_pushnumber(g); + lua_pushnumber(b); + return iuplua_call(); +} + +static int CB_change(Ihandle *handle, unsigned char r, unsigned char g, unsigned char b) +{ + iuplua_call_start(handle, "change"); + lua_pushnumber(r); + lua_pushnumber(g); + lua_pushnumber(b); + return iuplua_call(); +} + +static void CreateColorBrowser(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupColorBrowser(), tag); +} + +int cblua_open(void) +{ + lua_register("iupCreateColorBrowser", CreateColorBrowser); + lua_register("iup_colorbrowser_drag_cb", (lua_CFunction)CB_drag); + lua_register("iup_colorbrowser_change_cb", (lua_CFunction)CB_change); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/colorbrowser_be64.loh" +#else +#include "loh/colorbrowser_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/colorbrowser_le64w.loh" +#else +#include "loh/colorbrowser_le64.loh" +#endif +#else +#include "loh/colorbrowser.loh" +#endif +#endif +#else + iuplua_dofile("luacb.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_controls.h b/iup/srclua3/il_controls.h new file mode 100755 index 0000000..813ed58 --- /dev/null +++ b/iup/srclua3/il_controls.h @@ -0,0 +1,26 @@ +/** \file + * \brief iupLua Controls initialization + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IL_CONTROLS_H +#define __IL_CONTROLS_H + +#ifdef __cplusplus +extern "C" { +#endif + +int diallua_open (void); +int gaugelua_open (void); +int masklua_open (void); +int matrixlua_open (void); +int cblua_open (void); +int colorbarlua_open (void); +int cellslua_open(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srclua3/il_dial.c b/iup/srclua3/il_dial.c new file mode 100755 index 0000000..60582e6 --- /dev/null +++ b/iup/srclua3/il_dial.c @@ -0,0 +1,53 @@ +/** \file + * \brief Bindig of iupdial to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static void CreateDial(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupDial(luaL_check_string(1)), tag); +} + +int diallua_open(void) +{ + lua_register("iupCreateDial", CreateDial); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/dial_be64.loh" +#else +#include "loh/dial_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/dial_le64w.loh" +#else +#include "loh/dial_le64.loh" +#endif +#else +#include "loh/dial.loh" +#endif +#endif +#else + iuplua_dofile("luadial.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_gauge.c b/iup/srclua3/il_gauge.c new file mode 100755 index 0000000..670bb96 --- /dev/null +++ b/iup/srclua3/il_gauge.c @@ -0,0 +1,52 @@ +/** \file + * \brief Bindig of iupgauge to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static void CreateGauge(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupGauge(), tag); +} + +int gaugelua_open(void) +{ + lua_register("iupCreateGauge", CreateGauge); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/gauge_be64.loh" +#else +#include "loh/gauge_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/gauge_le64w.loh" +#else +#include "loh/gauge_le64.loh" +#endif +#else +#include "loh/gauge.loh" +#endif +#endif +#else + iuplua_dofile("luagauge.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_getcolor.c b/iup/srclua3/il_getcolor.c new file mode 100755 index 0000000..96ef20d --- /dev/null +++ b/iup/srclua3/il_getcolor.c @@ -0,0 +1,42 @@ +/** \file + * \brief Bindig of iupgc to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + +static void GetColor(void) +{ + int x = luaL_check_int(1); + int y = luaL_check_int(2); + unsigned char r = (unsigned char)luaL_check_int(3); + unsigned char g = (unsigned char)luaL_check_int(4); + unsigned char b = (unsigned char)luaL_check_int(5); + + if (IupGetColor(x, y, &r, &g, &b )) + { + lua_pushnumber(r); + lua_pushnumber(g); + lua_pushnumber(b); + } + else + { + lua_pushnil(); + } +} + +int gclua_open(void) +{ + iuplua_register("IupGetColor", GetColor); + return 1; +} diff --git a/iup/srclua3/il_getparam.c b/iup/srclua3/il_getparam.c new file mode 100755 index 0000000..28a41be --- /dev/null +++ b/iup/srclua3/il_getparam.c @@ -0,0 +1,171 @@ +/** \file + * \brief Bindig of iupgetparam to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +/* Used only by the Lua binding */ +int iupGetParamCount(const char *format, int *param_extra); +char iupGetParamType(const char* format, int *line_size); + + +typedef struct _getparam_data +{ + int has_func; + int func_ref; +}getparam_data; + +static int param_action(Ihandle* dialog, int param_index, void* user_data) +{ + int ret = 1; + getparam_data* gp = (getparam_data*)user_data; + if (gp->has_func) + { + lua_Object func; + lua_beginblock(); + func = lua_getref(gp->func_ref); + iuplua_pushihandle(dialog); + lua_pushnumber(param_index); + lua_callfunction(func); + ret = (int)luaL_check_number(1); + lua_endblock(); + } + return ret; +} + +static void GetParam(void) +{ + getparam_data gp; + lua_Object func; + const char* title = luaL_check_string(1); + void* user_data = (void*)&gp; + const char* format = luaL_check_string(3); + int param_count, param_extra, i, size, ret, + line_size = 0, lua_param_start = 4; + const char* f = format; + const char* s; + void* param_data[50]; + char param_type[50]; + + gp.has_func = 0; + gp.func_ref = 0; + + memset(param_data, 0, sizeof(void*)*50); + memset(param_type, 0, sizeof(char)*50); + + param_count = iupGetParamCount(format, ¶m_extra); + + for (i = 0; i < param_count; i++) + { + char t = iupGetParamType(f, &line_size); + + if (t == 't') /* if separator */ + { + f += line_size; + i--; /* compensate next increment */ + continue; + } + + switch(t) + { + case 'b': + case 'i': + case 'l': + param_data[i] = malloc(sizeof(int)); + *(int*)(param_data[i]) = (int)luaL_check_number(lua_param_start); lua_param_start++; + break; + case 'a': + case 'r': + param_data[i] = malloc(sizeof(float)); + *(float*)(param_data[i]) = (float)luaL_check_number(lua_param_start); lua_param_start++; + break; + case 's': + case 'm': + s = luaL_check_string(lua_param_start); lua_param_start++; + size = strlen(s); + if (size < 512) + param_data[i] = malloc(512); + else + param_data[i] = malloc(2*size); + memcpy(param_data[i], s, size+1); + break; + } + + param_type[i] = t; + f += line_size; + } + + func = lua_getparam(2); + if (lua_isfunction(func)) + { + lua_pushobject(func); + gp.func_ref = lua_ref(1); + gp.has_func = 1; + } + + ret = IupGetParamv(title, param_action, user_data, format, param_count, param_extra, param_data); + + lua_pushnumber(ret); + + if (ret) + { + for (i = 0; i < param_count; i++) + { + switch(param_type[i]) + { + case 'b': + case 'i': + case 'l': + lua_pushnumber(*(int*)(param_data[i])); + break; + case 'a': + case 'r': + lua_pushnumber(*(float*)(param_data[i])); + break; + case 's': + case 'm': + lua_pushstring((char*)(param_data[i])); + break; + } + } + } + + for (i = 0; i < param_count; i++) + { + free(param_data[i]); + } + + if (gp.has_func) + lua_unref(gp.func_ref); +} + +static void GetParamParam(void) +{ + Ihandle* param; + Ihandle *dialog = iuplua_checkihandle(1); + int param_index = luaL_check_int(2); + char param_str[50]; + sprintf(param_str, "PARAM%d", param_index); + param = (Ihandle*)IupGetAttribute(dialog, param_str); + iuplua_pushihandle(param); +} + +void getparamlua_open(void) +{ + iuplua_register("IupGetParam", GetParam); + iuplua_register("IupGetParamParam", GetParamParam); +} diff --git a/iup/srclua3/il_mask.c b/iup/srclua3/il_mask.c new file mode 100755 index 0000000..7f44090 --- /dev/null +++ b/iup/srclua3/il_mask.c @@ -0,0 +1,138 @@ +/** \file + * \brief Bindig of iupmask to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupmask.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static void cfMaskSet (void) +{ + iupmaskSet(iuplua_checkihandle(1), + luaL_check_string(2), + luaL_check_int(3), + luaL_check_int(4)); +} + +static void cfMaskRemove (void) +{ + iupmaskRemove(iuplua_checkihandle(1)); +} + +static void cfMaskMatSet(void) +{ + iupmaskMatSet(iuplua_checkihandle(1), + luaL_check_string(2), + luaL_check_int(3), + luaL_check_int(4), + luaL_check_int(5), + luaL_check_int(6)); + +} + +static void cfMaskMatRemove(void) +{ + iupmaskMatRemove(iuplua_checkihandle(1), + luaL_check_int(2), + luaL_check_int(3)); + +} + +static void cfMaskSetInt(void) +{ + iupmaskSetInt(iuplua_checkihandle(1), + luaL_check_int(2), + luaL_check_int(3), + luaL_check_int(4)); + +} + +static void cfMaskSetFloat(void) +{ + iupmaskSetFloat(iuplua_checkihandle(1), + luaL_check_int(2), + (float)luaL_check_number(3), + (float)luaL_check_number(4)); + + +} + +static void cfMaskMatSetInt (void) +{ + iupmaskMatSetInt(iuplua_checkihandle(1), + luaL_check_int(2), + luaL_check_int(3), + luaL_check_int(4), + luaL_check_int(5), + luaL_check_int(6)); + +} + +static void cfMaskMatSetFloat (void) +{ + iupmaskMatSetFloat(iuplua_checkihandle(1), + luaL_check_int(2), + (float)luaL_check_number(3), + (float)luaL_check_number(4), + luaL_check_int(5), + luaL_check_int(6)); +} + +static void cfMaskCheck (void) +{ + iupmaskCheck(iuplua_checkihandle(1)); +} + +static void cfMaskMatCheck (void) +{ + iupmaskMatCheck(iuplua_checkihandle(1), + luaL_check_int(2), + luaL_check_int(3)); +} + +static int match_cb (Ihandle *handle) +{ + iuplua_call_start(handle, "match_cb"); + return iuplua_call(); +} + + +int masklua_open(void) +{ + iuplua_regstring_mask(IUP_MASK_FLOAT, "IUPMASK_FLOAT"); + iuplua_regstring_mask(IUP_MASK_UFLOAT, "IUPMASK_UFLOAT"); + iuplua_regstring_mask(IUP_MASK_EFLOAT, "IUPMASK_EFLOAT"); + iuplua_regstring_mask(IUP_MASK_INT, "IUPMASK_INT"); + iuplua_regstring_mask(IUP_MASK_UINT, "IUPMASK_UINT"); + iuplua_regstring(IUP_MASK_FLOAT, "IUP_MASK_FLOAT"); + iuplua_regstring(IUP_MASK_UFLOAT, "IUP_MASK_UFLOAT"); + iuplua_regstring(IUP_MASK_EFLOAT, "IUP_MASK_EFLOAT"); + iuplua_regstring(IUP_MASK_INT, "IUP_MASK_INT"); + iuplua_regstring(IUP_MASK_UINT, "IUP_MASK_UINT"); + + iuplua_register("iupmaskRemove", cfMaskRemove); + iuplua_register("iupmaskMatRemove", cfMaskMatRemove); + iuplua_register("iupmaskSet", cfMaskSet); + iuplua_register("iupmaskMatSet", cfMaskMatSet); + iuplua_register("iupmaskSetInt", cfMaskSetInt); + iuplua_register("iupmaskSetFloat", cfMaskSetFloat); + iuplua_register("iupmaskMatSetInt", cfMaskMatSetInt); + iuplua_register("iupmaskMatSetFloat", cfMaskMatSetFloat); + iuplua_register("iupmaskCheck", cfMaskCheck); + iuplua_register("iupmaskMatCheck", cfMaskMatCheck); + + lua_register("iup_match_cb", (lua_CFunction)match_cb); + + return lua_dostring("iup_callbacks.match_cb = {\"MATCH_CB\", iup_match_cb}"); +} diff --git a/iup/srclua3/il_matrix.c b/iup/srclua3/il_matrix.c new file mode 100755 index 0000000..21bb8ce --- /dev/null +++ b/iup/srclua3/il_matrix.c @@ -0,0 +1,308 @@ +/** \file + * \brief Bindig of iupmatrix to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include + +#include + +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int MATRIX_draw(Ihandle *handle, int lin, int col, + int x1, int x2, int y1, int y2, cdCanvas* cnv) +{ + iuplua_call_start(handle, "draw"); + lua_pushnumber(lin); + lua_pushnumber(col); + lua_pushnumber(x1); + lua_pushnumber(x2); + lua_pushnumber(y1); + lua_pushnumber(y2); + cdlua_pushcanvas(cnv); + return iuplua_call(); +} + +static int MATRIX_action (Ihandle *handle, int c, int lin, int col, int active, char *after) +{ + iuplua_call_start(handle, "action"); + lua_pushnumber(c); + lua_pushnumber(lin); + lua_pushnumber(col); + lua_pushnumber(active); + lua_pushstring(after); + return iuplua_call(); +} + +static int MATRIX_edition (Ihandle *handle, int lin, int col, int modo, int update) +{ + iuplua_call_start(handle, "edition"); + lua_pushnumber(lin); + lua_pushnumber(col); + lua_pushnumber(modo); + lua_pushnumber(update); + return iuplua_call(); +} + +static int MATRIX_dropcheck (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "dropcheck"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call(); +} + +static int MATRIX_markedit_cb (Ihandle *handle, int lin, int col, int marked) +{ + iuplua_call_start(handle, "markedit_cb"); + lua_pushnumber(lin); + lua_pushnumber(col); + lua_pushnumber(marked); + return iuplua_call(); +} + +static int MATRIX_mark_cb (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "mark_cb"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call(); +} + +static int MATRIX_drop (Ihandle *handle, Ihandle *drop, int lin, int col) +{ + iuplua_regihandle(drop); + iuplua_call_start(handle, "drop"); + iuplua_pushihandle_cb(drop); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call(); +} + +static int MATRIX_dropselect (Ihandle *handle, int lin, int col, + Ihandle *list, char *t, int i, int v) +{ + iuplua_regihandle(list); + iuplua_call_start(handle, "dropselect"); + lua_pushnumber(lin); + lua_pushnumber(col); + iuplua_pushihandle_cb(list); + lua_pushstring(t); + lua_pushnumber(i); + lua_pushnumber(v); + return iuplua_call(); +} + +static int MATRIX_enteritem (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "enteritem"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call(); +} + +static int MATRIX_leaveitem (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "leaveitem"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call(); +} + +static int MATRIX_mousemove (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "mousemove"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call(); +} + +static int MATRIX_click (Ihandle *handle, int lin, int col, char *r) +{ + iuplua_call_start(handle, "click"); + lua_pushnumber(lin); + lua_pushnumber(col); + lua_pushstring(r); + return iuplua_call(); +} + +static int MATRIX_release_cb (Ihandle *handle, int lin, int col, char *r) +{ + iuplua_call_start(handle, "release_cb"); + lua_pushnumber(lin); + lua_pushnumber(col); + lua_pushstring(r); + return iuplua_call(); +} + +static int MATRIX_scrolltop (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "scrolltop"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call(); +} + +static int MATRIX_color(Ihandle *handle, char* name, int lin, int col, unsigned int *red, unsigned int *green, unsigned int *blue) +{ + lua_Object obj; + iuplua_call_start(handle, name); + lua_pushnumber(lin); + lua_pushnumber(col); + if (lua_call ("iupCallMethod")) + { + lua_endblock (); + return IUP_IGNORE; + } + obj = lua_getresult (1); + if (obj == LUA_NOOBJECT) + { + lua_endblock (); + return IUP_IGNORE; + } + else if (lua_isnumber (obj)) + { + int ret; + *red = (unsigned int)lua_getnumber (obj); + + obj = lua_getresult (2); + if (obj == LUA_NOOBJECT || !lua_isnumber (obj)) + { + lua_endblock (); + return IUP_IGNORE; + } + *green = (unsigned int)lua_getnumber (obj); + + obj = lua_getresult (3); + if (obj == LUA_NOOBJECT || !lua_isnumber (obj)) + { + lua_endblock (); + return IUP_IGNORE; + } + *blue = (unsigned int)lua_getnumber (obj); + + obj = lua_getresult (4); + if (obj == LUA_NOOBJECT || !lua_isnumber (obj)) + { + lua_endblock (); + return IUP_DEFAULT; + } + ret = (int)lua_getnumber (obj); + lua_endblock (); + return ret; + } + + lua_endblock (); + return IUP_IGNORE; +} + +static int MATRIX_fgcolor(Ihandle *handle, int lin, int col, unsigned int *red, unsigned int *green, unsigned int *blue) +{ + return MATRIX_color(handle, "fgcolorcb", lin, col, red, green, blue); +} + +static int MATRIX_bgcolor(Ihandle *handle, int lin, int col, unsigned int *red, unsigned int *green, unsigned int *blue) +{ + return MATRIX_color(handle, "bgcolorcb", lin, col, red, green, blue); +} + +static char* MATRIX_value (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "valuecb"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call_rs(); +} + +static int MATRIX_value_edit (Ihandle *handle, int lin, int col, char* val) +{ + iuplua_call_start(handle, "value_edit"); + lua_pushnumber(lin); + lua_pushnumber(col); + lua_pushstring(val); + return iuplua_call(); +} + +static char* MATRIX_font_cb (Ihandle *handle, int lin, int col) +{ + iuplua_call_start(handle, "font_cb"); + lua_pushnumber(lin); + lua_pushnumber(col); + return iuplua_call_rs(); +} + +static void CreateMatrix(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupMatrix(NULL), tag); +} + +int matrixlua_open(void) +{ + struct AssocList { + char *name; + lua_CFunction func; + } MatAssocList [] = { + {"iup_mat_action_cb", (lua_CFunction)MATRIX_action}, + {"iup_mat_edition_cb", (lua_CFunction)MATRIX_edition}, + {"iup_mat_enteritem_cb", (lua_CFunction)MATRIX_enteritem}, + {"iup_mat_drop_cb", (lua_CFunction)MATRIX_drop}, + {"iup_mat_dropselect_cb", (lua_CFunction)MATRIX_dropselect}, + {"iup_mat_leaveitem_cb", (lua_CFunction)MATRIX_leaveitem}, + {"iup_mat_click_cb", (lua_CFunction)MATRIX_click}, + {"iup_mat_release_cb", (lua_CFunction)MATRIX_release_cb}, + {"iup_mat_mousemove_cb", (lua_CFunction)MATRIX_mousemove}, + {"iup_mat_scrolltop_cb", (lua_CFunction)MATRIX_scrolltop}, + {"iup_mat_fgcolor_cb", (lua_CFunction)MATRIX_fgcolor}, + {"iup_mat_bgcolor_cb", (lua_CFunction)MATRIX_bgcolor}, + {"iup_mat_draw_cb", (lua_CFunction)MATRIX_draw}, + {"iup_mat_dropcheck_cb", (lua_CFunction)MATRIX_dropcheck}, + {"iup_mat_font_cb", (lua_CFunction)MATRIX_font_cb}, + {"iup_mat_value_cb", (lua_CFunction)MATRIX_value}, + {"iup_mat_value_edit_cb", (lua_CFunction)MATRIX_value_edit}, + {"iup_mat_mark_cb", (lua_CFunction)MATRIX_mark_cb}, + {"iup_mat_markedit_cb", (lua_CFunction)MATRIX_markedit_cb} + }; + int SizeMatAssocList = (sizeof(MatAssocList)/sizeof(struct AssocList)); + int i; + + lua_register("iupCreateMatrix", CreateMatrix); + + for (i = 0; i < SizeMatAssocList; i++) + lua_register(MatAssocList[i].name, MatAssocList[i].func); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/matrix_be64.loh" +#else +#include "loh/matrix_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/matrix_le64w.loh" +#else +#include "loh/matrix_le64.loh" +#endif +#else +#include "loh/matrix.loh" +#endif +#endif +#else + iuplua_dofile("luamatrix.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_sbox.c b/iup/srclua3/il_sbox.c new file mode 100755 index 0000000..6742819 --- /dev/null +++ b/iup/srclua3/il_sbox.c @@ -0,0 +1,50 @@ +/** \file + * \brief Bindig of iupsbox to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + +static void CreateSbox(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupSbox(iuplua_checkihandle(1)), tag); +} + +int sboxlua_open(void) +{ + lua_register("iupCreateSbox", CreateSbox); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/sbox_be64.loh" +#else +#include "loh/sbox_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/sbox_le64w.loh" +#else +#include "loh/sbox_le64.loh" +#endif +#else +#include "loh/sbox.loh" +#endif +#endif +#else + iuplua_dofile("luasbox.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_scanf.c b/iup/srclua3/il_scanf.c new file mode 100755 index 0000000..d98b586 --- /dev/null +++ b/iup/srclua3/il_scanf.c @@ -0,0 +1,181 @@ +/** \file + * \brief Iup API in Lua + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" + +#include "iuplua.h" +#include "il.h" + +#include "iup_str.h" +#include "iup_predial.h" + +#define ALLOC(n,t) ((t *)calloc((n),sizeof(t))) +#define REQUIRE(b) {if (!(b)) goto cleanup;} + +void iupluaScanf(void) +{ + char *format; + int i; + int fields; + int *width = NULL; + int *scroll = NULL; + char **prompt = NULL; + char **text = NULL; + char *title = NULL; + char *s = NULL; + char *s1 = NULL; + char *outf = NULL; + int indParam; /* va_list va; */ + + format = luaL_check_string(1); + fields = iupStrCountChar(format, '\n') - 1; + REQUIRE(fields > 0); + width = ALLOC(fields, int); + REQUIRE(width != NULL); + scroll = ALLOC(fields, int); + REQUIRE(scroll != NULL); + prompt = ALLOC(fields, char *); + REQUIRE(prompt != NULL); + text = ALLOC(fields, char *); + REQUIRE(text != NULL); + + indParam = 2; /* va_start(va,format); */ + REQUIRE((s1 = s = (char *) iupStrDup(format)) != NULL); + title = iupStrCopyUntil(&s, '\n'); + REQUIRE(title != NULL); + for (i = 0; i < fields; ++i) { + int n; + prompt[i] = iupStrCopyUntil(&s, '%'); + REQUIRE(prompt[i] != NULL); + n = sscanf(s, "%d.%d", width + i, scroll + i); + REQUIRE(n == 2); + s = strchr(s, '%'); + REQUIRE(s != NULL); + if (outf) free(outf); + outf = iupStrCopyUntil(&s, '\n'); + text[i] = ALLOC(width[i] + 1, char); + REQUIRE(text[i] != NULL); + + switch (s[-2]) { + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + if (s[-3] == 'l') + sprintf(text[i], outf, luaL_check_long(indParam++)); + else if (s[-3] == 'h') + sprintf(text[i], outf, (short)luaL_check_int(indParam++)); + else + sprintf(text[i], outf, luaL_check_int(indParam++)); + break; + case 'e': + case 'f': + case 'g': + case 'E': + case 'G': + if (s[-3] == 'l') + sprintf(text[i], outf, luaL_check_number(indParam++)); + else + sprintf(text[i], outf, (float)luaL_check_number(indParam++)); + break; + case 's': + sprintf(text[i], outf, (char *)luaL_check_string(indParam++)); + break; + default: + goto cleanup; + } + } + /* va_end(va); */ + + REQUIRE(iupDataEntry(fields, width, scroll, title, prompt, text)>0); + + /* va_start(va,format); */ + s = strchr(format, '\n') + 1; + for (i = 0; i < fields; ++i) { + s = strchr(s, '\n') + 1; + switch (s[-2]) { + case 'd': + case 'u': + if (s[-3] == 'l') { + long l = 0; + sscanf(text[i], "%ld", &l); + lua_pushnumber(l); + } else if (s[-3] == 'h') { + short l = 0; + sscanf(text[i], "%hd", &l); + lua_pushnumber(l); + } else { + int l = 0; + sscanf(text[i], "%d", &l); + lua_pushnumber(l); + } + break; + case 'i': + case 'o': + case 'x': + case 'X': + if (s[-3] == 'l') { + long l = 0; + sscanf(text[i], "%li", &l); + lua_pushnumber(l); + } else if (s[-3] == 'h') { + short l = 0; + sscanf(text[i], "%hi", &l); + lua_pushnumber(l); + } else { + int l = 0; + sscanf(text[i], "%i", &l); + lua_pushnumber(l); + } + break; + case 'e': + case 'f': + case 'g': + case 'E': + case 'G': + if (s[-3] == 'l') { + double l = 0; + sscanf(text[i], "%lg", &l); + lua_pushnumber(l); + } else { + float l = 0; + sscanf(text[i], "%g", &l); + lua_pushnumber(l); + } + break; + case 's': + lua_pushstring(text[i]); + break; + } + } + /* va_end(va); */ + +cleanup: + if (s1) free(s1); + if (title) free(title); + if (width) free(width); + if (scroll) free(scroll); + if (outf) free(outf); + if (prompt) { + for (i = 0; i < fields; ++i) + if (prompt[i]) free(prompt[i]); + free(prompt); + } + if (text) { + for (i = 0; i < fields; ++i) + if (text[i]) free(text[i]); + free(text); + } +} diff --git a/iup/srclua3/il_spin.c b/iup/srclua3/il_spin.c new file mode 100755 index 0000000..6319c51 --- /dev/null +++ b/iup/srclua3/il_spin.c @@ -0,0 +1,66 @@ +/** \file + * \brief Bindig of iupspin to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" + +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int SPIN_spin_cb (Ihandle *handle, int v) +{ + iuplua_call_start(handle, "spincb"); + lua_pushnumber(v); + return iuplua_call(); +} + +static void CreateSpin(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupSpin(), tag); +} + +static void CreateSpinbox(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupSpinbox(iuplua_checkihandle(1)), tag); +} + +int spinlua_open(void) +{ + lua_register("iupCreateSpin", CreateSpin); + lua_register("iupCreateSpinbox", CreateSpinbox); + lua_register("iup_spin_cb", (lua_CFunction)SPIN_spin_cb); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/spin_be64.loh" +#else +#include "loh/spin_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/spin_le64w.loh" +#else +#include "loh/spin_le64.loh" +#endif +#else +#include "loh/spin.loh" +#endif +#endif +#else + iuplua_dofile("luaspin.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_tabs.c b/iup/srclua3/il_tabs.c new file mode 100755 index 0000000..59332ec --- /dev/null +++ b/iup/srclua3/il_tabs.c @@ -0,0 +1,67 @@ +/** \file + * \brief Bindig of iuptabs to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int TABS_tabchange (Ihandle *handle, Ihandle *newtab, Ihandle *oldtab ) +{ + iuplua_regihandle(newtab); + iuplua_regihandle(oldtab); + iuplua_call_start(handle, "tabchange"); + iuplua_pushihandle_cb(newtab); + iuplua_pushihandle_cb(oldtab); + return iuplua_call(); +} + +static void CreateTabs(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + Ihandle** params = iuplua_checkihandle_array(1); + lua_pushusertag(IupTabsv(params), tag); + free(params); +} + +int tabslua_open(void) +{ + lua_register("iupCreateTabs", CreateTabs); + lua_register("iup_tabchange_cb", (lua_CFunction)TABS_tabchange); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/tabs_be64.loh" +#else +#include "loh/tabs_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/tabs_le64w.loh" +#else +#include "loh/tabs_le64.loh" +#endif +#else +#include "loh/tabs.loh" +#endif +#endif +#else + iuplua_dofile("luatabs.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_tree.c b/iup/srclua3/il_tree.c new file mode 100755 index 0000000..8d5fcf8 --- /dev/null +++ b/iup/srclua3/il_tree.c @@ -0,0 +1,283 @@ +/** \file + * \brief Bindig of iuptree to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int TREE_pattern (Ihandle *handle, int id, char* name) +{ + iuplua_call_start(handle, name); + lua_pushnumber(id); + return iuplua_call(); +} + +static int TREE_branchopen (Ihandle *handle, int id) +{ + return TREE_pattern(handle,id,"branchopen"); +} + +static int TREE_branchclose (Ihandle *handle, int id) +{ + return TREE_pattern(handle,id,"branchclose"); +} + +static int TREE_showrename (Ihandle *handle, int id) +{ + return TREE_pattern(handle,id,"showrenamecb"); +} + +static int TREE_executeleaf (Ihandle *handle, int id) +{ + return TREE_pattern(handle,id,"executeleaf"); +} + +static int TREE_selection (Ihandle *handle, int node, int state) +{ + iuplua_call_start(handle, "selection"); + lua_pushnumber(node); + lua_pushnumber(state); + return iuplua_call(); +} + +static int TREE_renamenode (Ihandle *handle, int id, char* name) +{ + iuplua_call_start(handle, "renamenode"); + lua_pushnumber(id); + lua_pushstring(name); + return iuplua_call(); +} + +static int TREE_rename (Ihandle *handle, int id, char* name) +{ + iuplua_call_start(handle, "renamecb"); + lua_pushnumber(id); + lua_pushstring(name); + return iuplua_call(); +} + +static int TREE_multiselection (Ihandle *handle, int *ids, int n) +{ + int i; + lua_Object tb; + + iuplua_call_start(handle, "multiselection"); + + tb = lua_createtable(); + for (i = 0; i < n; i++) + { + lua_beginblock(); + lua_pushobject(tb); + lua_pushnumber(i+1); + lua_pushnumber(ids[i]); + lua_settable(); + lua_endblock(); + } + lua_pushobject(tb); + + lua_pushnumber (n); + return iuplua_call(); +} + +static int TREE_dragdrop(Ihandle* handle, int drag_id, int drop_id, int isshift, int iscontrol) +{ + iuplua_call_start(handle, "dragdrop"); + lua_pushnumber(drag_id); + lua_pushnumber(drop_id); + lua_pushnumber(isshift); + lua_pushnumber(iscontrol); + return iuplua_call(); +} + +static int TREE_rightclick (Ihandle *handle, int id, char* r) +{ + iuplua_call_start(handle, "rightclick"); + lua_pushnumber(id); + lua_pushstring(r); + return iuplua_call(); +} + +static void CreateTree(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupTree(), tag); +} + +static int tree_getnumberintable(lua_Object o) +{ + lua_pushobject(lua_getglobal("IUPTREEREFERENCETABLE")); + lua_pushobject(o); + return (int)lua_getnumber(lua_rawgettable()); +} + +static void tree_setnumberintable(lua_Object o, int ref) +{ + /* Set in global table in index o, the value of ref. + If ref is 0, then set nil in the table. */ + lua_pushobject(lua_getglobal("IUPTREEREFERENCETABLE")); + lua_pushobject(o); + if(ref == 0) + lua_pushnil(); + else + lua_pushnumber(ref); + lua_rawsettable(); +} + +static void* check_userdata(int numArg) +{ + lua_Object o = lua_getparam(numArg); + luaL_arg_check(lua_isuserdata(o), numArg, "userdata expected"); + return lua_getuserdata(o); +} + +static void cfTreeSetUserId(void) +{ + lua_pushnumber(IupTreeSetUserId(iuplua_checkihandle(1), luaL_check_int(2), check_userdata(3))); +} + +static void cfTreeGetUserId(void) +{ + lua_pushusertag(IupTreeGetUserId(iuplua_checkihandle(1), luaL_check_int(2)), LUA_ANYTAG); +} + +static lua_Object tree_gettable(Ihandle* ih, int id) +{ + int ref = (int)IupTreeGetUserId(ih, id); + if(ref == 0) + return LUA_NOOBJECT; + else + return lua_getref(ref-1); +} + +static void cfTreeSetTableId(void) +{ + Ihandle* ih = iuplua_checkihandle(1); + int id = luaL_check_int(2); + + lua_Object o3 = lua_getparam(3); + if(lua_isnil(o3)) + { + int ref; + /* Setting in the id table the reference as nil */ + o3 = tree_gettable(ih, id); + if(o3 != LUA_NOOBJECT) + tree_setnumberintable(o3, 0); + + ref = (int)IupTreeGetUserId(ih, id); + lua_unref(ref); + lua_pushnumber(IupTreeSetUserId(ih, id, NULL)); + } + else + { + int ref; + lua_pushobject(o3); + ref = lua_ref(1); + lua_pushnumber(IupTreeSetUserId(ih, id, (void*)(ref+1))); + tree_setnumberintable(o3, ref+1); + } +} + +static void cfTreeGetTable(void) +{ + Ihandle* ih = iuplua_checkihandle(1); + int id = luaL_check_int(2); + + lua_Object o3 = tree_gettable(ih, id); + if(o3 == LUA_NOOBJECT) + lua_pushnil(); + else + lua_pushobject(o3); +} + +static int tree_gettableid(Ihandle* ih, lua_Object o) +{ + int ref = tree_getnumberintable(o); + if(ref == 0) + return -1; + return IupTreeGetId(ih, (void*) ref); +} + +static void cfTreeGetTableId(void) +{ + Ihandle* ih = iuplua_checkihandle(1); + lua_Object o2 = luaL_tablearg(2); + int ret = tree_gettableid(ih, o2); + if(ret == -1) + lua_pushnil(); + else + lua_pushnumber(ret); +} + +static void cfTreeGetId(void) +{ + lua_pushnumber(IupTreeGetId(iuplua_checkihandle(1), check_userdata(2))); +} + +int treelua_open(void) +{ + struct AssocList { + char *name; + lua_CFunction func; + } TreeAssocList [] = { + {"iup_tree_multiselection_cb", (lua_CFunction)TREE_multiselection}, + {"iup_tree_selection_cb", (lua_CFunction)TREE_selection}, + {"iup_tree_branchopen_cb", (lua_CFunction)TREE_branchopen}, + {"iup_tree_branchclose_cb", (lua_CFunction)TREE_branchclose}, + {"iup_tree_executeleaf_cb", (lua_CFunction)TREE_executeleaf}, + {"iup_tree_renamenode_cb", (lua_CFunction)TREE_renamenode}, + {"iup_tree_rename_cb", (lua_CFunction)TREE_rename}, + {"iup_tree_showrename_cb", (lua_CFunction)TREE_showrename}, + {"iup_tree_dragdrop_cb", (lua_CFunction)TREE_dragdrop}, + {"iup_tree_rightclick_cb", (lua_CFunction)TREE_rightclick} + }; + int SizeTreeAssocList = (sizeof(TreeAssocList)/sizeof(struct AssocList)); + int i ; + + iuplua_register("IupTreeSetUserId", cfTreeSetUserId); + iuplua_register("IupTreeGetUserId", cfTreeGetUserId); + iuplua_register("IupTreeGetId", cfTreeGetId); + iuplua_register("IupTreeSetTableId", cfTreeSetTableId); + iuplua_register("IupTreeGetTableId", cfTreeGetTableId); + iuplua_register("IupTreeGetTable", cfTreeGetTable); + + lua_register("iupCreateTree", CreateTree); + + for (i = 0; i < SizeTreeAssocList; i++) + lua_register(TreeAssocList[i].name, TreeAssocList[i].func); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/tree_be64.loh" +#else +#include "loh/tree_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/tree_le64w.loh" +#else +#include "loh/tree_le64.loh" +#endif +#else +#include "loh/tree.loh" +#endif +#endif +#else + iuplua_dofile("luatree.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/il_val.c b/iup/srclua3/il_val.c new file mode 100755 index 0000000..ae99754 --- /dev/null +++ b/iup/srclua3/il_val.c @@ -0,0 +1,77 @@ +/** \file + * \brief Bindig of iupval to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int VAL_mousemove (Ihandle *handle, double v) +{ + iuplua_call_start(handle, "mousemove"); + lua_pushnumber(v); + return iuplua_call(); +} + +static int VAL_button_press (Ihandle *handle, double v) +{ + iuplua_call_start(handle, "buttonpress"); + lua_pushnumber(v); + return iuplua_call(); +} + +static int VAL_button_release (Ihandle *handle, double v) +{ + iuplua_call_start(handle, "buttonrelease"); + lua_pushnumber(v); + return iuplua_call(); +} + +static void CreateVal(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupVal(luaL_check_string(1)), tag); +} + +int vallua_open(void) +{ + lua_register("iupCreateVal", CreateVal); + lua_register("iup_val_mousemove_cb", (lua_CFunction)VAL_mousemove); + lua_register("iup_val_button_press_cb", (lua_CFunction)VAL_button_press); + lua_register("iup_val_button_release_cb", (lua_CFunction)VAL_button_release); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/val_be64.loh" +#else +#include "loh/val_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/val_le64w.loh" +#else +#include "loh/val_le64.loh" +#endif +#else +#include "loh/val.loh" +#endif +#endif +#else + iuplua_dofile("luaval.lua"); +#endif + + return 1; +} diff --git a/iup/srclua3/iup_pplot.mak b/iup/srclua3/iup_pplot.mak new file mode 100755 index 0000000..66ee7db --- /dev/null +++ b/iup/srclua3/iup_pplot.mak @@ -0,0 +1,15 @@ +PROJNAME = iup +LIBNAME = iuplua_pplot3 +OPT = YES + +USE_LUA = Yes +USE_CDLUA = Yes + +LOHDIR = loh +SRCLUA = pplot.lua +SRC = iuplua_pplot.c + +DEFINES = IUPLUA_USELOH +INCLUDES = ../include +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup iuplua3 iup_pplot iupcd diff --git a/iup/srclua3/iupcd.mak b/iup/srclua3/iupcd.mak new file mode 100755 index 0000000..36db871 --- /dev/null +++ b/iup/srclua3/iupcd.mak @@ -0,0 +1,19 @@ +PROJNAME = iup +LIBNAME = iupluacd3 +OPT = YES + +DEF_FILE = iupluacd3.def +SRC = iuplua_cd.c + +# Can not use USE_IUPLUA because Tecmake will include "iupluacd3" in linker + +INCLUDES = ../include +LIBS = iuplua3 +LDIR = ../lib/$(TEC_UNAME) + +IUP := .. + +USE_CD = YES +USE_IUP3 = YES +USE_LUA = YES +USE_CDLUA = YES diff --git a/iup/srclua3/iupcontrols.mak b/iup/srclua3/iupcontrols.mak new file mode 100755 index 0000000..4498ddf --- /dev/null +++ b/iup/srclua3/iupcontrols.mak @@ -0,0 +1,19 @@ +BUILD_IUP3 = Yes + +PROJNAME = iup +LIBNAME = iupluacontrols3 +OPT = YES + +USE_LUA = Yes +USE_CDLUA = Yes + +LOHDIR = loh +SRCLUA = dial.lua gauge.lua colorbar.lua \ + matrix.lua colorbrowser.lua cells.lua +SRC = il_dial.c il_gauge.c il_colorbrowser.c il_colorbar.c il_cells.c \ + il_mask.c il_matrix.c iuplua_controls.c + +DEFINES = IUPLUA_USELOH +INCLUDES = ../include +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup iuplua3 iupcontrols iupcd diff --git a/iup/srclua3/iupgl.mak b/iup/srclua3/iupgl.mak new file mode 100755 index 0000000..3d65c48 --- /dev/null +++ b/iup/srclua3/iupgl.mak @@ -0,0 +1,12 @@ +PROJNAME = iup +LIBNAME = iupluagl3 +OPT = YES + +USE_LUA = Yes +USE_OPENGL = Yes + +SRC = iuplua_glcanvas.c + +INCLUDES = ../include +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup iuplua3 iupgl diff --git a/iup/srclua3/iupim.mak b/iup/srclua3/iupim.mak new file mode 100755 index 0000000..e4831ec --- /dev/null +++ b/iup/srclua3/iupim.mak @@ -0,0 +1,12 @@ +PROJNAME = iup +LIBNAME = iupluaim3 +OPT = YES + +USE_LUA = Yes +USE_IM = Yes + +SRC = iuplua_im.c + +INCLUDES = ../include ../src +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup iuplua3 iupim diff --git a/iup/srclua3/iuplua.c b/iup/srclua3/iuplua.c new file mode 100755 index 0000000..7789ce8 --- /dev/null +++ b/iup/srclua3/iuplua.c @@ -0,0 +1,494 @@ +/** \file + * \brief IULUA core - Bindig of iup to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" +#include "iupkey.h" + +#include "iuplua.h" +#include "il.h" + +#include "iup_str.h" + + +/* from iupkey.c */ +void iupKeyForEach(void (*func)(char *name, int code, void* user_data), void* user_data); + +static int iuplua_tag = 0; +static lua_Object iuplua_namespace; + + +void iuplua_call_start(Ihandle* handle, char* name) +{ + lua_beginblock(); + lua_pushstring(name); + lua_pushusertag(handle, iuplua_tag); +} + +int iuplua_call(void) +{ + lua_Object obj; + + if (lua_call("iupCallMethod")) + { + lua_endblock(); + return IUP_DEFAULT; /* call failed */ + } + + obj = lua_getresult(1); + if (obj == LUA_NOOBJECT) + { + lua_endblock(); + return IUP_DEFAULT; /* no return, provides IUP_DEFAULT return */ + } + else if (lua_isnumber(obj)) + { + int ret = (int) lua_getnumber(obj); + lua_endblock(); + return ret; + } + lua_endblock(); + return IUP_DEFAULT; /* returned a non normal value. what to do? */ +} + +char* iuplua_call_rs(void) +{ + lua_Object obj; + + if (lua_call("iupCallMethod")) + { + lua_endblock(); + return NULL; /* call failed */ + } + + obj = lua_getresult(1); + if (obj == LUA_NOOBJECT) + { + lua_endblock(); + return NULL; /* no return, provides IUP_DEFAULT return */ + } + else if (lua_isstring(obj)) + { + char* ret = lua_getstring(obj); + lua_endblock(); + return ret; + } + lua_endblock(); + return NULL; /* returned a non normal value. what to do? */ +} + +static void iuplua_set_callback(void) +{ + lua_Object o; + Icallback func; + + Ihandle* ih = iuplua_checkihandle(1); + char* name = luaL_check_string(2); + + o = lua_getparam(3); + if (!lua_iscfunction(o)) + lua_error("invalid function when set callback"); + func = (Icallback)lua_getcfunction(o); + + o = lua_getparam(4); + if (lua_isnil(o)) + IupSetCallback(ih, name, (Icallback)NULL); + else + IupSetCallback(ih, name, func); +} + +/*********************************************************************************** +***********************************************************************************/ + +static int idle_ref = 0; +static int default_idle(void) +{ + lua_Object obj; + lua_beginblock(); + obj = lua_getref(idle_ref); + if (lua_callfunction(obj)) + { + lua_endblock(); + return IUP_IGNORE; + } + + obj = lua_getresult(1); + if (lua_isnumber(obj)) + { + int ret = (int) lua_getnumber(obj); + lua_endblock(); + return ret; + } + lua_endblock(); + return IUP_DEFAULT; +} + +static void IupSetIdle(void) +{ + lua_Object obj = lua_getparam(1); + lua_Object old; + if (idle_ref != 0) + old = lua_getref(idle_ref); + else + old = LUA_NOOBJECT; + if (lua_isnil(obj)) + { + lua_unref(idle_ref); + idle_ref = 0; + IupSetFunction("IDLE_ACTION", (Icallback) NULL); + } + else + { + if (!lua_isfunction(obj) && !lua_iscfunction(obj)) + lua_error("IupSetIdle: parameter must be a function or a cfunction"); + lua_pushobject(obj); + idle_ref = lua_ref(1); + IupSetFunction("IDLE_ACTION", (Icallback) default_idle); + } + + if (old == LUA_NOOBJECT) + lua_pushnil(); + else + lua_pushobject(old); +} + +/*********************************************************************************** +***********************************************************************************/ + +static void iuplua_gettable(void) +{ + lua_Object t, index, tab, result; + t = lua_getparam(1); + index = lua_getparam(2); + lua_pushobject(lua_getglobal("iup_handles")); + lua_pushobject(t); + tab = lua_gettable(); + if (lua_isnil(tab)) + { + lua_pushnil(); + return; + } + else + { + lua_Object method; + lua_pushobject(tab); + lua_pushstring("get"); + method = lua_gettable(); + lua_pushobject(tab); + lua_pushobject(index); + if (lua_callfunction(method)) + return; + } + + result = lua_getresult(1); + if (result != LUA_NOOBJECT) + lua_pushobject(result); + else + lua_pushnil(); +} + +static void iuplua_settable(void) +{ + lua_Object t, index, value, tab, result; + t = lua_getparam(1); + index = lua_getparam(2); + value = lua_getparam(3); + lua_pushobject(lua_getglobal("iup_handles")); + lua_pushobject(t); + tab = lua_gettable(); + if (lua_isnil(tab)) + { + lua_pushnil(); + return; + } + else + { + lua_Object method; + lua_pushobject(tab); + lua_pushstring("set"); + method = lua_gettable(); + lua_pushobject(tab); + lua_pushobject(index); + lua_pushobject(value); + if (lua_callfunction(method)) + return; + } + + result = lua_getresult(1); + if (result != LUA_NOOBJECT) + lua_pushobject(result); +} + +static void iuplua_index(void) +{ + lua_Object t, f, result; + t = lua_getparam(1); + f = lua_getparam(2); + if (!(lua_isstring(f) && iupStrEqual(lua_getstring(f), "parent"))) + { + lua_Object p; + lua_pushobject(t); + lua_pushstring("parent"); + p = lua_gettable(); + if (lua_istable(p)) + { + lua_pushobject(p); + lua_pushobject(f); + result = lua_gettable(); + if (lua_isnil(result)) + lua_pushnil(); + else + lua_pushobject(result); + return; + } + } + lua_pushnil(); +} + +/*********************************************************************************** +***********************************************************************************/ + +static void iuplua_setnamespace(char* name, char* new_name) +{ + lua_Object obj = lua_getglobal(name); + lua_pushobject(iuplua_namespace); + lua_pushstring(new_name); + lua_pushobject(obj); + lua_settable(); +} + +void iuplua_register(char* name, lua_CFunction func) +{ + lua_register(name, func); + iuplua_setnamespace(name, name+3); /* IupXxx */ +} + +void iuplua_register_macro(char* name, lua_CFunction func) +{ + lua_register(name, func); + iuplua_setnamespace(name, name); /* xxx */ +} + +void iuplua_regstring_mask(char* str, char* name) +{ + lua_pushstring(str); lua_setglobal(name); + iuplua_setnamespace(name, name+3); /* IUPMASK_XXX */ +} + +void iuplua_regnumber(double num, char* name) +{ + lua_pushnumber(num); lua_setglobal(name); + iuplua_setnamespace(name, name+4); /* IUP_XXXX */ +} + +void iuplua_regstring(char* str, char* name) +{ + lua_pushstring(str); lua_setglobal(name); + iuplua_setnamespace(name, name+4); /* IUP_XXXX */ +} + +void iuplua_regihandle(Ihandle *h) +{ + if (h) + { + lua_pushusertag((void*)h, iuplua_tag); + lua_pushstring(IupGetClassName(h)); + lua_call("IupRegisterHandle"); + } +} + +void iuplua_pushihandle_cb(Ihandle *h) +{ + if (h) + lua_pushusertag((void*)h, iuplua_tag); + else + lua_pushnil(); +} + +void iuplua_pushihandle(Ihandle *h) +{ + if (h) + { + lua_pushusertag((void*)h, iuplua_tag); + lua_pushstring(IupGetClassName(h)); + lua_call("IupRegisterHandle"); + lua_pushobject(lua_getresult(1)); + } + else + lua_pushnil(); +} + +Ihandle* iuplua_checkihandle(int numArg) +{ + lua_Object o = lua_getparam(numArg); + luaL_arg_check(lua_tag(o)==iuplua_tag, numArg, "handle expected"); + return (Ihandle*)lua_getuserdata(o); +} + +static Ihandle* checkihandle_table(lua_Object tab, int index) +{ + Ihandle* ih; + lua_Object o; + lua_beginblock(); + lua_pushobject(tab); + lua_pushnumber(index); + o = lua_gettable(); + luaL_arg_check(lua_tag(o)==iuplua_tag, index, "handle expected"); + ih = (Ihandle*)lua_getuserdata(o); + lua_endblock(); + return ih; +} + +Ihandle** iuplua_checkihandle_array(int numArg) +{ + int i; + lua_Object tab = luaL_tablearg(numArg); + int count = luaL_check_int(numArg+1); + + Ihandle **params = (Ihandle **) malloc(sizeof(Ihandle *) * (count+1)); + + for (i = 0; i < count; i++) + params[i] = checkihandle_table(tab, i+1); + params[count] = NULL; + + return params; +} + +int iuplua_dofile(char *filename) +{ + if (lua_dofile(filename) != 0) + { + char *dir = getenv("IUPLUA_DIR"); + if (!dir) + return 0; + else + { + int len = strlen(dir); + char *full_name = malloc((len + strlen(filename) + 2) * sizeof(char)); + if (!full_name) + return 0; + strcpy(full_name, dir); + strcat(full_name, "/"); + strcat(full_name, filename); + if (lua_dofile(full_name)) + { + free(full_name); + return 0; + } + free(full_name); + } + } + return 1; +} + +/*********************************************************************************** +***********************************************************************************/ + +static void register_key(char *name, int code, void* user_data) +{ + (void)user_data; + lua_pushnumber(code); lua_setglobal(name); + iuplua_setnamespace(name, name); /* K_xxx */ +} + +int iupkey_open(void) +{ + /* does nothing, kept for backward compatibility */ + return 1; +} + +/*********************************************************************************** +***********************************************************************************/ + +static void setinfo(void) +{ + iuplua_regstring_mask(IUP_COPYRIGHT, "IUP_COPYRIGHT"); + iuplua_regstring_mask("Portable toolkit for building graphical user interfaces.", "IUP_DESCRIPTION"); + iuplua_regstring_mask("IUP - Portable User Interface", "IUP_NAME"); + iuplua_regstring_mask("IUP "IUP_VERSION, "IUP_VERSION"); + iuplua_regstring_mask(LUA_COPYRIGHT, "IUP_LUA_COPYRIGHT"); +} + +int iuplua_open(void) +{ + struct FuncList { + char *name; + lua_CFunction func; + } FuncList[] = { + { "IupSetIdle", IupSetIdle }, + }; + int SizeFuncList = (sizeof(FuncList)/sizeof(struct FuncList)); + int i; + + iuplua_tag = lua_newtag(); + lua_pushnumber(iuplua_tag); + lua_setglobal("iuplua_tag"); + + iuplua_namespace = lua_createtable(); + lua_pushobject(iuplua_namespace); lua_setglobal ("iup"); + + setinfo(); + + for (i = 0; i < SizeFuncList; i++) + iuplua_register(FuncList[i].name, FuncList[i].func); + + lua_register("iup_gettable", iuplua_gettable); + lua_register("iup_settable", iuplua_settable); + lua_register("iup_index", iuplua_index); + lua_register("iupSetCallback", iuplua_set_callback); + + iupKeyForEach(register_key, NULL); + + iupluaapi_open(); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/iuplua_be64.loh" +#include "loh/constants_be64.loh" +#else +#include "loh/iuplua_be32.loh" +#include "loh/constants_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/iuplua_le64w.loh" +#include "loh/constants_le64w.loh" +#else +#include "loh/iuplua_le64.loh" +#include "loh/constants_le64.loh" +#endif +#else +#include "loh/iuplua.loh" +#include "loh/constants.loh" +#endif +#endif +#else + iuplua_dofile("iuplua.lua"); + iuplua_dofile("constants.lua"); +#endif + + iupluawidgets_open(iuplua_tag); + + sboxlua_open(); + spinlua_open(); + cboxlua_open(); + vallua_open(); + tabslua_open(); + gclua_open(); + getparamlua_open(); + treelua_open(); + + return 1; +} + diff --git a/iup/srclua3/iuplua.lua b/iup/srclua3/iuplua.lua new file mode 100755 index 0000000..5bfd7d4 --- /dev/null +++ b/iup/srclua3/iuplua.lua @@ -0,0 +1,134 @@ + + +-- ################################################################################# +-- Private functions +-- ################################################################################# + +-- maps Ihandles into Lua objects +iup_handles = {} + +settagmethod(iuplua_tag, "gettable", iup_gettable) +settagmethod(iuplua_tag, "settable", iup_settable) +settagmethod (tag({}), "index", iup_index) + +function _ALERT(s) + local bt = iupbutton{title="Ok", size="60", action="return IUP_CLOSE"} + local ml = iupmultiline{expand="YES", readonly="YES", value=s, size="300x150"} + local vb = iupvbox{ml, bt; alignment="ACENTER", margin="10x10", gap="10"} + local dg = iupdialog{vb; title="Lua Error",defaultesc=bt,defaultenter=bt,startfocus=bt} + dg:popup(IUP_CENTER, IUP_CENTER) + dg:destroy() +end + +function type_string (o) + return type(o) == "string" +end + +function type_number (o) + return type(o) == "number" +end + +function type_nil (o) + return type(o) == "nil" +end + +function type_function (o) + return type(o) == "function" +end + +function type_widget(w) + if w then + return iup_handles[w] + else + return nil + end +end + +function type_menu (o) + return type_widget(o) and (o.parent==IUPMENU) +end + +function type_item (o) + return type_widget(o) and (o.parent==IUPITEM or o.parent==IUPSUBMENU or o.parent==IUPSEPARATOR) +end + +function iupCallMethod(name, ...) + local handle = arg[1] -- always the handle + + local func = handle[name] -- this is the old name + if (not func) then + local full_name = strlower(iup_callbacks[name][1]) + func = handle[full_name] -- check also for the full name + + if (not func) then + return + end + end + + if type_function (func) then + return call(func, arg) + elseif type_string(func) then + local temp = self + self = handle + local result = dostring(func) + self = temp + return result + else + return IUP_ERROR + end +end + +function iupSetName (handle) + if not type_string(iup_handles[handle].IUP_name) then + iup_handles[handle].IUP_name = format("_IUPLUA_NAME(%s)", tostring(handle)) + IupSetHandle(handle.IUP_name, handle) + end +end + +function iupCreateChildrenNames (obj) + if obj.parent.parent == COMPOSITION then + local i = 1 + while obj[i] do + iupCreateChildrenNames (obj[i]) + i = i+1 + end + elseif obj.parent == IUPFRAME then + iupCreateChildrenNames (obj[1]) + else + iupSetName (obj) + end +end + + +-- ################################################################################# +-- Public Functions +-- ################################################################################# + + +function IupRGB (red, green, blue) + return floor(red*255).." "..floor(green*255).." "..floor(blue*255) +end +iup.RGB = IupRGB + +function IupRegisterHandle(handle, typename) + if not iup_handles[handle] then + local obj = getglobal("IUP"..strupper(typename)) + if not obj then + obj = WIDGET + end + iup_handles[handle] = { parent=obj, handle=handle } + end + return handle +end +iup.RegisterHandle = IupRegisterHandle + +function IupGetFromC(obj) + local handle = IupGetHandle(obj[1]) + return IupRegisterHandle(handle, IupGetClassName(handle)) +end + +iup.GetFromC = function (name) + local handle = IupGetHandle(name) + return IupRegisterHandle(handle, IupGetClassName(handle)) +end + diff --git a/iup/srclua3/iuplua3.def b/iup/srclua3/iuplua3.def new file mode 100755 index 0000000..c67aeca --- /dev/null +++ b/iup/srclua3/iuplua3.def @@ -0,0 +1,16 @@ +EXPORTS + iuplua_open + iupkey_open + iuplua_dofile + iuplua_checkihandle + iuplua_checkihandle_array + iuplua_pushihandle + iuplua_call_start + iuplua_call + iuplua_call_rs + iuplua_register + iuplua_regstring + iuplua_regnumber + iuplua_regstring_mask + iuplua_regihandle + iuplua_pushihandle_cb \ No newline at end of file diff --git a/iup/srclua3/iuplua_api.c b/iup/srclua3/iuplua_api.c new file mode 100755 index 0000000..3221658 --- /dev/null +++ b/iup/srclua3/iuplua_api.c @@ -0,0 +1,762 @@ +/** \file + * \brief Iup API in Lua + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" +#include "iupkey.h" + +#include "iuplua.h" +#include "il.h" + +#include "iup_attrib.h" +#include "iup_globalattrib.h" + + +static void SaveImageAsText(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + const char *file_name = luaL_check_string(2); + const char *format = luaL_check_string(3); + const char *name = luaL_opt_string(4, NULL); + lua_pushnumber(IupSaveImageAsText(ih, file_name, format, name)); +} + +static void Reparent(void) +{ + lua_pushnumber(IupReparent(iuplua_checkihandle(1), + iuplua_checkihandle(2))); +} + +static void PreviousField(void) +{ + iuplua_pushihandle(IupPreviousField(iuplua_checkihandle(1))); +} + +static void NextField(void) +{ + iuplua_pushihandle(IupNextField(iuplua_checkihandle(1))); +} + +static void cf_isprint(void) +{ + int cod = luaL_check_int(1); + lua_pushnumber(iup_isprint(cod)); +} + +static void codekey(void) +{ + int cod = luaL_check_int(1); + lua_pushnumber(IUPxCODE(cod)); +} + +static void cf_isxkey(void) +{ + int cod = luaL_check_int(1); + lua_pushnumber(iup_isXkey(cod)); +} + +static void cf_isShiftXkey(void) +{ + int cod = luaL_check_int(1); + lua_pushnumber(iup_isShiftXkey(cod)); +} + +static void cf_isCtrlXkey(void) +{ + int cod = luaL_check_int(1); + lua_pushnumber(iup_isCtrlXkey(cod)); +} + +static void cf_isAltXkey(void) +{ + int cod = luaL_check_int(1); + lua_pushnumber(iup_isAltXkey(cod)); +} + +static void cf_isSysXkey(void) +{ + int cod = luaL_check_int(1); + lua_pushnumber(iup_isSysXkey(cod)); +} + +static void cf_isbutton1(void) +{ + if(iup_isbutton1(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_isbutton2(void) +{ + if(iup_isbutton2(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_isbutton3(void) +{ + if(iup_isbutton3(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_isshift(void) +{ + if(iup_isshift(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_isdouble(void) +{ + if(iup_isdouble(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_isalt(void) +{ + if(iup_isalt(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_isbutton4(void) +{ + if(iup_isbutton4(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_isbutton5(void) +{ + if(iup_isbutton5(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_issys(void) +{ + if(iup_issys(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void cf_iscontrol(void) +{ + if(iup_iscontrol(luaL_check_string(1))) + lua_pushnumber(1); + else + lua_pushnil(); +} + +static void GetAttributeData(void) +{ + char *value = IupGetAttribute(iuplua_checkihandle(1), luaL_check_string(2)); + if (value) + lua_pushuserdata((void*)value); + else + lua_pushnil(); +} + +static void GetAttribute(void) +{ + char *name = luaL_check_string(2); + Ihandle* ih = iuplua_checkihandle(1); + char *value = IupGetAttribute(ih, name); + if (!value || iupAttribIsInternal(name)) + lua_pushnil(); + else + { + if (iupAttribIsPointer(ih, name)) + lua_pushuserdata((void*)value); + else + lua_pushstring(value); + } +} + +static void GetDialog(void) +{ + iuplua_pushihandle(IupGetDialog(iuplua_checkihandle(1))); +} + +static void GetHandle(void) +{ + iuplua_pushihandle(IupGetHandle(luaL_check_string(1))); +} + +static void SetAttribute(void) +{ + if (lua_isnil(lua_getparam(3))) + IupSetAttribute(iuplua_checkihandle(1), luaL_check_string(2), NULL); + else + IupStoreAttribute(iuplua_checkihandle(1), luaL_check_string(2), luaL_check_string(3)); +} + +static void SetHandle(void) +{ + if (lua_isnil(lua_getparam(2))) + IupSetHandle(luaL_check_string(1), NULL); + else + IupSetHandle(luaL_check_string(1), iuplua_checkihandle(2)); +} + +static void Destroy(void) +{ + IupDestroy(iuplua_checkihandle(1)); +} + +static void Detach(void) +{ + IupDetach(iuplua_checkihandle(1)); +} + +static void Map(void) +{ + lua_pushnumber(IupMap(iuplua_checkihandle(1))); +} + +static void Unmap(void) +{ + IupUnmap(iuplua_checkihandle(1)); +} + +static void Show(void) +{ + lua_pushnumber(IupShow(iuplua_checkihandle(1))); +} + +static void GetChildCount(void) +{ + lua_pushnumber(IupGetChildCount(iuplua_checkihandle(1))); +} + +static void Refresh(void) +{ + IupRefresh(iuplua_checkihandle(1)); +} + +static void Update(void) +{ + IupUpdate(iuplua_checkihandle(1)); +} + +static void UpdateChildren(void) +{ + IupUpdateChildren(iuplua_checkihandle(1)); +} + +static void Redraw(void) +{ + IupRedraw(iuplua_checkihandle(1), luaL_check_int(2)); +} + +static void VersionNumber(void) +{ + lua_pushnumber(IupVersionNumber()); +} + +static void ShowXY(void) +{ + lua_pushnumber(IupShowXY(iuplua_checkihandle(1), + luaL_opt_int(2, IUP_CURRENT), luaL_opt_int(3, IUP_CURRENT))); +} + +static void Hide(void) +{ + lua_pushnumber(IupHide(iuplua_checkihandle(1))); +} + +static void Popup(void) +{ + lua_pushnumber(IupPopup(iuplua_checkihandle(1), + luaL_opt_int(2, IUP_CURRENT), luaL_opt_int(3, IUP_CURRENT))); +} + +static void Insert(void) +{ + if (lua_isnil(lua_getparam(2))) + iuplua_pushihandle(IupInsert(iuplua_checkihandle(1), NULL, iuplua_checkihandle(3))); + else + iuplua_pushihandle(IupInsert(iuplua_checkihandle(1), iuplua_checkihandle(2), iuplua_checkihandle(3))); +} + +static void Append(void) +{ + iuplua_pushihandle(IupAppend(iuplua_checkihandle(1), iuplua_checkihandle(2))); +} + +static void GetNextChild(void) +{ + if (lua_isnil(lua_getparam(2))) + iuplua_pushihandle(IupGetNextChild(iuplua_checkihandle(1), NULL)); + else + iuplua_pushihandle(IupGetNextChild(iuplua_checkihandle(1), iuplua_checkihandle(2))); +} + +static void ConvertXYToPos(void) +{ + lua_pushnumber(IupConvertXYToPos(iuplua_checkihandle(1), luaL_check_int(2), luaL_check_int(3))); +} + +static void TextConvertLinColToPos(void) +{ + int pos; + IupTextConvertLinColToPos(iuplua_checkihandle(1), luaL_check_int(2), luaL_check_int(3), &pos); + lua_pushnumber(pos); +} + +static void TextConvertPosToLinCol(void) +{ + int lin, col; + IupTextConvertPosToLinCol(iuplua_checkihandle(1), luaL_check_int(2), &lin, &col); + lua_pushnumber(lin); + lua_pushnumber(col); +} + +static void GetChildPos(void) +{ + lua_pushnumber(IupGetChildPos(iuplua_checkihandle(1), iuplua_checkihandle(2))); +} + +static void GetDialogChild(void) +{ + iuplua_pushihandle(IupGetDialogChild(iuplua_checkihandle(1), luaL_check_string(2))); +} + +static void GetBrother(void) +{ + iuplua_pushihandle(IupGetBrother(iuplua_checkihandle(1))); +} + +static void ClassName(void) +{ + lua_pushstring(IupGetClassName(iuplua_checkihandle(1))); +} + +static void ClassType(void) +{ + lua_pushstring(IupGetClassType(iuplua_checkihandle(1))); +} + +static void GetFocus(void) +{ + iuplua_pushihandle(IupGetFocus()); +} + +static void SetFocus(void) +{ + IupSetFocus(iuplua_checkihandle(1)); +} + +static void GetName(void) +{ + char* s = IupGetName(iuplua_checkihandle(1)); + lua_pushstring(s); +} + +static void Alarm(void) +{ + lua_pushnumber(IupAlarm(luaL_check_string(1), + luaL_check_string(2), + luaL_check_string(3), + luaL_opt_string(4, NULL), + luaL_opt_string(5, NULL))); +} + +static void GetFile(void) +{ + char buffer[10240]; + int ret; + strcpy(buffer, luaL_check_string(1)); + ret = IupGetFile(buffer); + lua_pushstring(buffer); + lua_pushnumber(ret); +} + +static void GetParent(void) +{ + Ihandle *p = IupGetParent(iuplua_checkihandle(1)); + iuplua_pushihandle(p); +} + +static void MapFont(void) +{ + lua_pushstring(IupMapFont(luaL_check_string(1))); +} + +static void UnMapFont(void) +{ + lua_pushstring(IupUnMapFont(luaL_check_string(1))); +} + +static void GetLanguage(void) +{ + lua_pushstring(IupGetLanguage()); +} + +static void SetLanguage(void) +{ + IupSetLanguage(luaL_check_string(1)); +} + +static void ListDialog(void) +{ + lua_Object list_tbl = luaL_tablearg(4); + lua_Object marks_tbl; + int i, ret; + char **list; + int *marks = NULL; + + int type = luaL_check_int(1); + char* title = luaL_check_string(2); + int size = luaL_check_int(3); + int opt = luaL_check_int(5); + int max_col = luaL_check_int(6); + int max_lin = luaL_check_int(7); + + marks_tbl = lua_getparam(8); + if (!lua_isnil(marks_tbl)) + { + luaL_arg_check(lua_istable(marks_tbl), 8, "table expected"); + marks = malloc(sizeof(int) * size); + } + + if (!marks && type==2) + lua_error("invalid marks, must not be nil."); + + list = malloc(sizeof(char *) * size); + + for (i = 0; i < size; i++) + { + lua_beginblock(); + + lua_pushobject(list_tbl); + lua_pushnumber(i + 1); + list[i] = lua_getstring(lua_gettable()); + + if (marks) + { + lua_pushobject(marks_tbl); + lua_pushnumber(i + 1); + marks[i] = (int) lua_getnumber(lua_gettable()); + } + + lua_endblock(); + } + + ret = IupListDialog(type, title, size, list, opt, max_col, max_lin, marks); + + if (marks && type==2 && ret!=-1) + { + for (i = 0; i < size; i++) + { + lua_beginblock(); + lua_pushobject(marks_tbl); + lua_pushnumber(i + 1); + lua_pushnumber(marks[i]); + lua_settable(); + lua_endblock(); + } + } + + lua_pushnumber(ret); + + if (marks) free(marks); + free(list); +} + +static void Message(void) +{ + IupMessage(luaL_check_string(1), luaL_check_string(2)); +} + +static void GetText(void) +{ + char buffer[10240]; + strcpy(buffer, luaL_check_string(2)); + if(IupGetText(luaL_check_string(1), buffer)) + lua_pushstring(buffer); + else + lua_pushnil(); +} + +static void GetAttributes(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + char *value = IupGetAttributes(ih); + lua_pushstring(value); +} + +static void GetAllAttributes(void) +{ + int max_n = luaL_check_int(2); + char **names = (char **) malloc(max_n * sizeof(char *)); + int i; + int n = IupGetAllAttributes(iuplua_checkihandle(1), names, max_n); + + lua_Object tb = lua_createtable(); + for (i = 0; i < n; i++) + { + lua_beginblock(); + lua_pushobject(tb); + lua_pushnumber(i); + lua_pushstring(names[i]); + lua_settable(); + lua_endblock(); /* end a section and starts another */ + } + + lua_pushobject(tb); + lua_pushnumber(n); + free(names); +} + +static void GetClassAttributes(void) +{ + int max_n = luaL_check_int(2); + char **names = (char **) malloc(max_n * sizeof(char *)); + int n = IupGetClassAttributes(luaL_check_string(1), names, max_n); + lua_Object tb; + int i; + + if (n == -1) + { + lua_pushnil(); + return; + } + + tb = lua_createtable(); + for (i = 0; i < n; i++) + { + lua_beginblock(); + lua_pushobject(tb); + lua_pushnumber(i); + lua_pushstring(names[i]); + lua_settable(); + lua_endblock(); /* end a section and starts another */ + } + + lua_pushobject(tb); + lua_pushnumber(n); + free(names); +} + +static void GetAllNames(void) +{ + int max_n = luaL_check_int(1); + char **names = (char **) malloc(max_n * sizeof(char *)); + int i; + int n = IupGetAllNames(names, max_n); + + lua_Object tb = lua_createtable(); + for (i = 0; i < n; i++) + { + lua_beginblock(); + lua_pushobject(tb); + lua_pushnumber(i); + lua_pushstring(names[i]); + lua_settable(); + lua_endblock(); /* end a section and starts another */ + } + + lua_pushobject(tb); + lua_pushnumber(n); + free(names); +} + +static void SetClassDefaultAttribute(void) +{ + IupSetClassDefaultAttribute(luaL_check_string(1), luaL_check_string(2), luaL_opt_string(3,NULL)); +} + +static void GetAllDialogs(void) +{ + int max_n = luaL_check_int(1); + char **names = (char **) malloc(max_n * sizeof(char *)); + int i; + int n = IupGetAllDialogs(names, 100); + + lua_Object tb = lua_createtable(); + for (i = 0; i < n; i++) + { + lua_beginblock(); + lua_pushobject(tb); + lua_pushnumber(i); + lua_pushstring(names[i]); + lua_settable(); + lua_endblock(); /* end a section and starts another */ + } + + lua_pushobject(tb); + lua_pushnumber(n); + free(names); +} + +static void GetGlobal(void) +{ + const char* a = luaL_check_string(1); + char *v = IupGetGlobal(a); + if (iupGlobalIsPointer(a)) + lua_pushuserdata((void*)v); + else + lua_pushstring(v); +} + +static void SetGlobal(void) +{ + IupStoreGlobal(luaL_check_string(1), luaL_check_string(2)); +} + +static void LoopStep(void) +{ + lua_pushnumber(IupLoopStep()); +} + +static void ExitLoop(void) +{ + IupExitLoop(); +} + +static void Version(void) +{ + lua_pushstring(IupVersion()); +} + +static void MainLoop(void) +{ + lua_pushnumber(IupMainLoop()); +} + +static void MainLoopLevel(void) +{ + lua_pushnumber(IupMainLoopLevel()); +} + +static void Open(void) +{ + lua_pushnumber(IupOpen(NULL, NULL)); +} + +static void Help(void) +{ + IupHelp(luaL_check_string(1)); +} + +int iupluaapi_open(void) +{ + struct FuncList { + char *name; + lua_CFunction func; + } FuncList[] = { + { "IupGetAttribute", GetAttribute }, + { "IupGetAttributeData", GetAttributeData }, + { "IupGetHandle", GetHandle }, + { "IupGetDialog", GetDialog }, + { "IupSetAttribute", SetAttribute }, + { "IupSetHandle", SetHandle }, + { "IupDestroy", Destroy }, + { "IupDetach", Detach }, + { "IupMap", Map }, + { "IupUnmap", Unmap }, + { "IupShow", Show }, + { "IupGetChildCount", GetChildCount }, + { "IupRefresh", Refresh }, + { "IupUpdate", Update }, + { "IupUpdateChildren", UpdateChildren }, + { "IupRedraw", Redraw }, + { "IupVersionNumber", VersionNumber }, + { "IupShowXY", ShowXY }, + { "IupHide", Hide }, + { "IupPopup", Popup }, + { "IupAppend", Append }, + { "IupInsert", Insert }, + { "IupReparent", Reparent }, + { "IupSaveImageAsText", SaveImageAsText }, + { "IupGetNextChild", GetNextChild }, + { "IupGetChildPos", GetChildPos }, + { "IupGetBrother", GetBrother }, + { "IupGetDialogChild", GetDialogChild }, + { "IupGetClassName", ClassName }, + { "IupGetClassType", ClassType }, + { "IupGetFocus", GetFocus }, + { "IupSetFocus", SetFocus }, + { "IupGetName", GetName }, + { "IupAlarm", Alarm }, + { "IupGetFile", GetFile }, + { "IupMapFont", MapFont }, + { "IupGetParent", GetParent }, + { "IupUnMapFont", UnMapFont }, + { "IupSetLanguage", SetLanguage }, + { "IupGetLanguage", GetLanguage }, + { "IupListDialog", ListDialog }, + { "IupMessage", Message }, + { "IupGetText", GetText }, + { "IupGetAttributes", GetAttributes }, + { "IupGetAllAttributes", GetAllAttributes }, + { "IupSetClassDefaultAttribute", SetClassDefaultAttribute}, + { "IupGetClassAttributes", GetClassAttributes }, + { "IupGetAllNames", GetAllNames }, + { "IupGetAllDialogs", GetAllDialogs }, + { "IupGetGlobal", GetGlobal }, + { "IupSetGlobal", SetGlobal }, + { "IupLoopStep", LoopStep }, + { "IupExitLoop", ExitLoop }, + { "IupMainLoop", MainLoop }, + { "IupMainLoopLevel", MainLoopLevel }, + { "IupOpen", Open }, + { "IupClose", (lua_CFunction)IupClose }, + { "IupFlush", IupFlush }, + { "IupVersion", Version }, + { "IupHelp", Help }, + { "IupScanf", iupluaScanf }, + { "IupTextConvertLinColToPos", TextConvertLinColToPos}, + { "IupTextConvertPosToLinCol", TextConvertPosToLinCol}, + { "IupConvertXYToPos", ConvertXYToPos}, + { "IupPreviousField", PreviousField }, + { "IupNextField", NextField } + }; + int SizeFuncList = (sizeof(FuncList)/sizeof(struct FuncList)); + int i; + + for (i = 0; i < SizeFuncList; i++) + iuplua_register(FuncList[i].name, FuncList[i].func); + + iuplua_register_macro("isbutton1",cf_isbutton1); + iuplua_register_macro("isbutton2",cf_isbutton2); + iuplua_register_macro("isbutton3",cf_isbutton3); + iuplua_register_macro("isshift",cf_isshift); + iuplua_register_macro("iscontrol",cf_iscontrol); + iuplua_register_macro("isdouble",cf_isdouble); + iuplua_register_macro("isalt",cf_isalt); + iuplua_register_macro("issys",cf_issys); + iuplua_register_macro("isbutton4",cf_isbutton4); + iuplua_register_macro("isbutton5",cf_isbutton5); + iuplua_register_macro("isprint",cf_isprint); + iuplua_register_macro("IUPxCODE", codekey); + iuplua_register_macro("isxkey", cf_isxkey); + iuplua_register_macro("isXkey", cf_isxkey); + iuplua_register_macro("isShiftXkey", cf_isShiftXkey); + iuplua_register_macro("isCtrlXkey", cf_isCtrlXkey); + iuplua_register_macro("isAltXkey", cf_isAltXkey); + iuplua_register_macro("isSysXkey", cf_isSysXkey); + + return 1; +} diff --git a/iup/srclua3/iuplua_cd.c b/iup/srclua3/iuplua_cd.c new file mode 100755 index 0000000..d0a38ad --- /dev/null +++ b/iup/srclua3/iuplua_cd.c @@ -0,0 +1,43 @@ +/** \file + * \brief IUP Canvas Lua 3 Binding + * + * See Copyright Notice in cd.h + */ + +#include +#include + +#include +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" + +#include +#include +#include + + +static void *cdiup_checkdata(int param) +{ + return iuplua_checkihandle(param); +} + +static cdContextLUA cdluaiupctx = +{ + 0, + "CD_IUP", + cdContextIup, + cdiup_checkdata, + NULL, + 0 +}; + +void cdluaiup_open(void) +{ + cdlua_addcontext(&cdluaiupctx); +} + diff --git a/iup/srclua3/iuplua_controls.c b/iup/srclua3/iuplua_controls.c new file mode 100755 index 0000000..a2414d1 --- /dev/null +++ b/iup/srclua3/iuplua_controls.c @@ -0,0 +1,25 @@ +/** \file + * \brief Bindig of iupcontrols to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupluacontrols.h" +#include "il.h" +#include "il_controls.h" + +int iupcontrolslua_open(void) +{ + gaugelua_open(); + matrixlua_open(); + masklua_open(); + diallua_open(); + cblua_open(); + colorbarlua_open(); + cellslua_open(); + return 1; +} diff --git a/iup/srclua3/iuplua_glcanvas.c b/iup/srclua3/iuplua_glcanvas.c new file mode 100755 index 0000000..57f696b --- /dev/null +++ b/iup/srclua3/iuplua_glcanvas.c @@ -0,0 +1,112 @@ +/** \file + * \brief Bindig of iupgl to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include + +#include "iup.h" +#include "iupgl.h" + +#include "iuplua.h" +#include "iupluagl.h" +#include "il.h" + +#ifdef _WIN32 +#include +#endif +#include + + +static void createglcanvas(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupGLCanvas(NULL), tag); +} + +static void iscurrent(void) +{ + lua_pushnumber(IupGLIsCurrent(iuplua_checkihandle(1))); +} + +static void makecurrent(void) +{ + IupGLMakeCurrent(iuplua_checkihandle(1)); + + iuplua_regstring_mask((char*)glGetString(GL_VENDOR), "IUPGL_VENDOR"); + iuplua_regstring_mask((char*)glGetString(GL_RENDERER), "IUPGL_RENDERER"); + iuplua_regstring_mask((char*)glGetString(GL_VERSION), "IUPGL_VERSION"); +} + +static void swapbuffers(void) +{ + IupGLSwapBuffers(iuplua_checkihandle(1)); +} + +static void palette(void) +{ + IupGLPalette(iuplua_checkihandle(1), + luaL_check_int(2), + (float)luaL_check_number(3), + (float)luaL_check_number(4), + (float)luaL_check_number(5)); +} + +static void usefont(void) +{ + IupGLUseFont(iuplua_checkihandle(1), + luaL_check_int(2), + luaL_check_int(3), + luaL_check_int(4)); +} + +static void glwait(void) +{ + IupGLWait(luaL_check_int(1)); +} + +int iupgllua_open (void) +{ + iuplua_register("iupCreateGLCanvas",createglcanvas); + iuplua_register("IupGLMakeCurrent",makecurrent); + iuplua_register("IupGLIsCurrent",iscurrent); + iuplua_register("IupGLSwapBuffers",swapbuffers); + iuplua_register("IupGLPalette",palette); + iuplua_register("IupGLUseFont",usefont); + iuplua_register("IupGLWait",glwait); + + iuplua_regstring("BUFFER", "IUP_BUFFER"); + iuplua_regstring("STEREO", "IUP_STEREO"); + iuplua_regstring("COLOR", "IUP_COLOR"); + iuplua_regstring("BUFFER_SIZE", "IUP_BUFFER_SIZE"); + iuplua_regstring("RED_SIZE", "IUP_RED_SIZE"); + iuplua_regstring("GREEN_SIZE", "IUP_GREEN_SIZE"); + iuplua_regstring("BLUE_SIZE", "IUP_BLUE_SIZE"); + iuplua_regstring("ALPHA_SIZE", "IUP_ALPHA_SIZE"); + iuplua_regstring("DEPTH_SIZE", "IUP_DEPTH_SIZE"); + iuplua_regstring("STENCIL_SIZE", "IUP_STENCIL_SIZE"); + iuplua_regstring("ACCUM_RED_SIZE", "IUP_ACCUM_RED_SIZE"); + iuplua_regstring("ACCUM_GREEN_SIZE", "IUP_ACCUM_GREEN_SIZE"); + iuplua_regstring("ACCUM_BLUE_SIZE", "IUP_ACCUM_BLUE_SIZE"); + iuplua_regstring("ACCUM_ALPHA_SIZE", "IUP_ACCUM_ALPHA_SIZE"); + iuplua_regstring("DOUBLE", "IUP_DOUBLE"); + iuplua_regstring("SINGLE", "IUP_SINGLE"); + iuplua_regstring("INDEX", "IUP_INDEX"); + iuplua_regstring("RGBA", "IUP_RGBA"); + iuplua_regstring("YES", "IUP_YES"); + iuplua_regstring("NO", "IUP_NO"); + + return lua_dostring("IUPGLCANVAS = {parent = IUPCANVAS}\n" + "function IUPGLCANVAS:CreateIUPelement (obj)\n" + " return iupCreateGLCanvas ()\n" + "end\n" + "function iupglcanvas (o)\n" + " return IUPGLCANVAS:Constructor (o)\n" + "end\n" + "iup.glcanvas = iupglcanvas\n" + "iup_callbacks.action.glcanvas = iup_action_canvas\n"); +} diff --git a/iup/srclua3/iuplua_im.c b/iup/srclua3/iuplua_im.c new file mode 100755 index 0000000..2104e0d --- /dev/null +++ b/iup/srclua3/iuplua_im.c @@ -0,0 +1,39 @@ +/** \file + * \brief IULUA core - Bindig of iup to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include "iup.h" +#include "iupim.h" + +#include +#include + +#include "iuplua.h" +#include "iupluaim.h" +#include "il.h" + +static void SaveImage(void) +{ + Ihandle* image = iuplua_checkihandle(1); + char *filename = luaL_check_string(2); + char *format = luaL_check_string(3); + lua_pushnumber(IupSaveImage(image, filename, format)); +} + +static void LoadImage(void) +{ + char *filename = luaL_check_string(1); + iuplua_pushihandle(IupLoadImage(filename)); +} + +void iupimlua_open(void) +{ + iuplua_register("IupLoadImage", LoadImage); + iuplua_register("IupSaveImage", SaveImage); +} diff --git a/iup/srclua3/iuplua_olecontrol.c b/iup/srclua3/iuplua_olecontrol.c new file mode 100755 index 0000000..f302713 --- /dev/null +++ b/iup/srclua3/iuplua_olecontrol.c @@ -0,0 +1,34 @@ +/** \file + * \brief Bindig of iupole to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include + +#include "iup.h" +#include "iupole.h" +#include "iupluaole.h" + +static void createOleControl (void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupOleControl(luaL_check_string(1)),tag); +} + +int iupolelua_open (void) +{ + lua_register("iupCreateOleControl",createOleControl); + + return lua_dostring("IUPOLECONTROL = {parent = WIDGET}\n" + "function IUPOLECONTROL:CreateIUPelement (obj)\n" + " return iupCreateOleControl (obj[1])\n" + "end\n" + "function iupolecontrol (o)\n" + " return IUPOLECONTROL:Constructor (o)\n" + "end\n" + "iup.olecontrol = iupolecontrol\n"); +} diff --git a/iup/srclua3/iuplua_pplot.c b/iup/srclua3/iuplua_pplot.c new file mode 100755 index 0000000..588f203 --- /dev/null +++ b/iup/srclua3/iuplua_pplot.c @@ -0,0 +1,241 @@ +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iup_pplot.h" + +#include +#include + +#include "il.h" + + +static int pplot_edit_cb(Ihandle *self, int p0, int p1, float p2, float p3, float *p4, float *p5) +{ + lua_Object obj; + iuplua_call_start(self, "edit_cb"); + lua_pushnumber(p0); + lua_pushnumber(p1); + lua_pushnumber(p2); + lua_pushnumber(p3); + if (lua_call ("iupCallMethod")) + { + lua_endblock (); + return IUP_IGNORE; + } + obj = lua_getresult (1); + if (obj == LUA_NOOBJECT) + { + lua_endblock (); + return IUP_IGNORE; + } + else if (lua_isnumber (obj)) + { + int ret; + *p4 = (float)lua_getnumber (obj); + + obj = lua_getresult (2); + if (obj == LUA_NOOBJECT || !lua_isnumber (obj)) + { + lua_endblock (); + return IUP_IGNORE; + } + *p5 = (float)lua_getnumber (obj); + + obj = lua_getresult (4); + if (obj == LUA_NOOBJECT || !lua_isnumber (obj)) + { + lua_endblock (); + return IUP_DEFAULT; + } + ret = (int)lua_getnumber (obj); + lua_endblock (); + return ret; + } + + lua_endblock (); + return IUP_IGNORE; +} + +static int pplot_postdraw_cb(Ihandle *self, cdCanvas* cnv) +{ + iuplua_call_start(self, "postdraw_cb"); + cdlua_pushcanvas(cnv); + return iuplua_call(); +} + +static int pplot_predraw_cb(Ihandle *self, cdCanvas* cnv) +{ + iuplua_call_start(self, "predraw_cb"); + cdlua_pushcanvas(cnv); + return iuplua_call(); +} + +static int pplot_deleteend_cb(Ihandle *self) +{ + iuplua_call_start(self, "deleteend_cb"); + return iuplua_call(); +} + +static int pplot_selectbegin_cb(Ihandle *self) +{ + iuplua_call_start(self, "selectbegin_cb"); + return iuplua_call(); +} + +static int pplot_editend_cb(Ihandle *self) +{ + iuplua_call_start(self, "editend_cb"); + return iuplua_call(); +} + +static int pplot_editbegin_cb(Ihandle *self) +{ + iuplua_call_start(self, "editbegin_cb"); + return iuplua_call(); +} + +static int pplot_selectend_cb(Ihandle *self) +{ + iuplua_call_start(self, "selectend_cb"); + return iuplua_call(); +} + +static int pplot_select_cb(Ihandle *self, int p0, int p1, float p2, float p3, int p4) +{ + iuplua_call_start(self, "select_cb"); + lua_pushnumber(p0); + lua_pushnumber(p1); + lua_pushnumber(p2); + lua_pushnumber(p3); + lua_pushnumber(p4); + return iuplua_call(); +} + +static int pplot_deletebegin_cb(Ihandle *self) +{ + iuplua_call_start(self, "deletebegin_cb"); + return iuplua_call(); +} + +static int pplot_delete_cb(Ihandle *self, int p0, int p1, float p2, float p3) +{ + iuplua_call_start(self, "delete_cb"); + lua_pushnumber(p0); + lua_pushnumber(p1); + lua_pushnumber(p2); + lua_pushnumber(p3); + return iuplua_call(); +} + +static void PPlot(void) +{ + int tag = (int)lua_getnumber(lua_getglobal("iuplua_tag")); + lua_pushusertag(IupPPlot(), tag); +} + +static void PPlotBegin(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + IupPPlotBegin(ih, luaL_check_int(2)); +} + +static void PPlotAdd(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + IupPPlotAdd(ih, (float)luaL_check_number(2), (float)luaL_check_number(3)); +} + +static void PPlotAddStr(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + IupPPlotAddStr(ih, luaL_check_string(2), (float)luaL_check_number(3)); +} + +static void PPlotEnd(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + int ret = IupPPlotEnd(ih); + lua_pushnumber(ret); +} + +static void PPlotInsertStr(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + IupPPlotInsertStr(ih, luaL_check_int(2), luaL_check_int(3), luaL_check_string(4), (float)luaL_check_number(5)); +} + +static void PPlotInsert(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + IupPPlotInsert(ih, luaL_check_int(2), luaL_check_int(3), (float)luaL_check_number(4), (float)luaL_check_number(5)); +} + +static void PPlotTransform(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + int ix, iy; + IupPPlotTransform(ih, (float)luaL_check_number(2), (float)luaL_check_number(3), &ix, &iy); + lua_pushnumber(ix); + lua_pushnumber(iy); +} + +static void PPlotPaintTo(void) +{ + Ihandle *ih = iuplua_checkihandle(1); + IupPPlotPaintTo(ih, cdlua_checkcanvas(2)); +} + +int iup_pplotlua_open(void) +{ + lua_register("iupCreatePPlot", PPlot); + + lua_register("iup_pplot_edit_cb", (lua_CFunction)pplot_edit_cb); + lua_register("iup_pplot_deleteend_cb", (lua_CFunction)pplot_deleteend_cb); + lua_register("iup_pplot_selectbegin_cb", (lua_CFunction)pplot_selectbegin_cb); + lua_register("iup_pplot_postdraw_cb", (lua_CFunction)pplot_postdraw_cb); + lua_register("iup_pplot_editend_cb", (lua_CFunction)pplot_editend_cb); + lua_register("iup_pplot_editbegin_cb", (lua_CFunction)pplot_editbegin_cb); + lua_register("iup_pplot_selectend_cb", (lua_CFunction)pplot_selectend_cb); + lua_register("iup_pplot_select_cb", (lua_CFunction)pplot_select_cb); + lua_register("iup_pplot_deletebegin_cb", (lua_CFunction)pplot_deletebegin_cb); + lua_register("iup_pplot_predraw_cb", (lua_CFunction)pplot_predraw_cb); + lua_register("iup_pplot_delete_cb", (lua_CFunction)pplot_delete_cb); + + iuplua_register("IupPPlotBegin", PPlotBegin); + iuplua_register("IupPPlotAdd", PPlotAdd); + iuplua_register("IupPPlotAddStr", PPlotAddStr); + iuplua_register("IupPPlotEnd", PPlotEnd); + iuplua_register("IupPPlotInsertStr", PPlotInsertStr); + iuplua_register("IupPPlotInsert", PPlotInsert); + iuplua_register("IupPPlotTransform", PPlotTransform); + iuplua_register("IupPPlotPaintTo", PPlotPaintTo); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/pplot_be64.loh" +#else +#include "loh/pplot_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/pplot_le64w.loh" +#else +#include "loh/pplot_le64.loh" +#endif +#else +#include "loh/pplot.loh" +#endif +#endif +#else + iuplua_dofile("luapplot.lua"); +#endif + + return 1; +} + diff --git a/iup/srclua3/iuplua_pplot3.def b/iup/srclua3/iuplua_pplot3.def new file mode 100755 index 0000000..3701b0f --- /dev/null +++ b/iup/srclua3/iuplua_pplot3.def @@ -0,0 +1,2 @@ +EXPORTS + iup_pplotlua_open diff --git a/iup/srclua3/iuplua_widgets.c b/iup/srclua3/iuplua_widgets.c new file mode 100755 index 0000000..f6b801b --- /dev/null +++ b/iup/srclua3/iuplua_widgets.c @@ -0,0 +1,662 @@ +/** \file + * \brief IULUA core - Bindig of iup to Lua 3. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" + +#include "iuplua.h" +#include "il.h" + + +static int iuplua_tag = 0; + +static int valuechanged_cb(Ihandle* handle) +{ + iuplua_call_start(handle, "valuechanged_cb"); + return iuplua_call(); +} + +static int file_cb(Ihandle* handle, char* file_name, char* status) +{ + iuplua_call_start(handle, "file_cb"); + lua_pushstring(file_name); + lua_pushstring(status); + return iuplua_call(); +} + +static int text_action(Ihandle* handle, int carac, char *newtext) +{ + iuplua_call_start(handle, "action"); + lua_pushnumber(carac); + lua_pushstring(newtext); + return iuplua_call(); +} + +static int timer_action(Ihandle* handle) +{ + iuplua_call_start(handle, "actioncb"); + return iuplua_call(); +} + +static int button_action(Ihandle* handle) +{ + iuplua_call_start(handle, "action"); + return iuplua_call(); +} + +static int toggle_action(Ihandle* handle, int v) +{ + iuplua_call_start(handle, "action"); + lua_pushnumber(v); + return iuplua_call(); +} + +static int iupluaCanvasFocusCb(Ihandle* handle, int focus) +{ + iuplua_call_start(handle, "focus"); + lua_pushnumber(focus); + return iuplua_call(); +} + +static int iupluaGetfocusCb(Ihandle* handle) +{ + iuplua_call_start(handle, "getfocus"); + return iuplua_call(); +} + +static int iupluaKillfocusCb(Ihandle* handle) +{ + iuplua_call_start(handle, "killfocus"); + return iuplua_call(); +} + +static int item_highlight(Ihandle* handle) +{ + iuplua_call_start(handle, "highlight"); + return iuplua_call(); +} + +static int menu_open(Ihandle* handle) +{ + iuplua_call_start(handle, "open"); + return iuplua_call(); +} + +static int menu_close(Ihandle* handle) +{ + iuplua_call_start(handle, "menu_close"); + return iuplua_call(); +} + +static int iupluaKanyCb(Ihandle* handle, int carac) +{ + iuplua_call_start(handle, "k_any"); + lua_pushnumber(carac); + return iuplua_call(); +} + +static int iupluaHelpCb(Ihandle* handle) +{ + iuplua_call_start(handle, "help"); + return iuplua_call(); +} + +static int iupluaCanvasKeypressCb(Ihandle *handle, int carac, int press) +{ + iuplua_call_start(handle, "keypress"); + lua_pushnumber(carac); + lua_pushnumber(press); + return iuplua_call(); +} + +static int iupluaCanvasScrollCb(Ihandle *handle, int op, float posx, float posy) +{ + iuplua_call_start(handle, "scroll"); + lua_pushnumber(op); + lua_pushnumber(posx); + lua_pushnumber(posy); + return iuplua_call(); +} + +static int text_caret(Ihandle *handle, int row, int col, int pos) +{ + iuplua_call_start(handle, "caretcb"); + lua_pushnumber(row); + lua_pushnumber(col); + lua_pushnumber(pos); + return iuplua_call(); +} + +static int list_dblclick_cb(Ihandle *handle, int p0, char * p1) +{ + iuplua_call_start(handle, "dblclick_cb"); + lua_pushnumber(p0); + lua_pushstring(p1); + return iuplua_call(); +} + +static int list_dropdown_cb(Ihandle *handle, int p0) +{ + iuplua_call_start(handle, "dropdown_cb"); + lua_pushnumber(p0); + return iuplua_call(); +} + +static int dialog_close(Ihandle* handle) +{ + iuplua_call_start(handle, "close"); + return iuplua_call(); +} + +static int dialog_show(Ihandle* handle, int v) +{ + iuplua_call_start(handle, "showcb"); + lua_pushnumber(v); + return iuplua_call(); +} + +static int iupluaUnMapCb(Ihandle* handle) +{ + iuplua_call_start(handle, "unmapcb"); + return iuplua_call(); +} + +static int iupluaMapCb(Ihandle* handle) +{ + iuplua_call_start(handle, "mapcb"); + return iuplua_call(); +} + +static int iupluaDropfilesCb(Ihandle *handle, char* filename, int numFile, int posx, int posy) +{ + iuplua_call_start(handle, "dropfiles"); + lua_pushstring(filename); + lua_pushnumber(numFile); + lua_pushnumber(posx); + lua_pushnumber(posy); + return iuplua_call(); +} + +static int dialog_trayclick(Ihandle *handle, int p1, int p2, int p3) +{ + iuplua_call_start(handle, "trayclick"); + lua_pushnumber(p1); + lua_pushnumber(p2); + lua_pushnumber(p3); + return iuplua_call(); +} + +static int iupluaCanvasAction(Ihandle* handle, float x, float y) +{ + iuplua_call_start(handle, "action"); + lua_pushnumber(x); + lua_pushnumber(y); + return iuplua_call(); +} + +static int iupluaCanvasButtonCb(Ihandle* handle, int b, int e, int x, int y, char *r) +{ + iuplua_call_start(handle, "button"); + lua_pushnumber(b); + lua_pushnumber(e); + lua_pushnumber(x); + lua_pushnumber(y); + lua_pushstring(r); + return iuplua_call(); +} + +static int iupluaCanvasResizeCb(Ihandle* handle, int w, int h) +{ + iuplua_call_start(handle, "resize"); + lua_pushnumber(w); + lua_pushnumber(h); + return iuplua_call(); +} + +static int iupluaCanvasMotionCb(Ihandle* handle, int x, int y, char *r) +{ + iuplua_call_start(handle, "motion"); + lua_pushnumber(x); + lua_pushnumber(y); + lua_pushstring(r); + return iuplua_call(); +} + +static int iupluaDialogMoveCb(Ihandle* handle, int x, int y) +{ + iuplua_call_start(handle, "move"); + lua_pushnumber(x); + lua_pushnumber(y); + return iuplua_call(); +} + +static int canvas_mdiactivate(Ihandle* handle) +{ + iuplua_call_start(handle, "mdiactivatecb"); + return iuplua_call(); +} + +static int iupluaCanvasEnterwindowCb(Ihandle* handle) +{ + iuplua_call_start(handle, "enterwindow"); + return iuplua_call(); +} + +static int iupluaCanvasLeavewindowCb(Ihandle* handle) +{ + iuplua_call_start(handle, "leavewindow"); + return iuplua_call(); +} + +static int iupluaCanvasWheelCb(Ihandle* handle, float delta, int x, int y, char *r) +{ + iuplua_call_start(handle, "wheel"); + lua_pushnumber(delta); + lua_pushnumber(x); + lua_pushnumber(y); + lua_pushstring(r); + return iuplua_call(); +} + +static int iupluaCanvasWomCb(Ihandle* handle, int i) +{ + iuplua_call_start(handle, "wom"); + lua_pushnumber(i); + return iuplua_call(); +} + +static int list_edit(Ihandle *handle, int c, char *after) +{ + iuplua_call_start(handle, "edit"); + lua_pushnumber(c); + lua_pushstring(after); + return iuplua_call(); +} + +static int list_action(Ihandle* handle, char *text, int opt, int select) +{ + iuplua_call_start(handle, "action"); + lua_pushstring(text); + lua_pushnumber(opt); + lua_pushnumber(select); + return iuplua_call(); +} + +static int list_multiselect(Ihandle *handle, char *value) +{ + iuplua_call_start(handle, "multiselect"); + lua_pushstring(value); + return iuplua_call(); +} + +/*********************************************************************************** +***********************************************************************************/ + +static void CreateTimer(void) +{ + lua_pushusertag(IupTimer(), iuplua_tag); +} + +static void CreateClipboard(void) +{ + lua_pushusertag(IupClipboard(), iuplua_tag); +} + +static void CreateDialog(void) +{ + lua_pushusertag(IupDialog(iuplua_checkihandle(1)), iuplua_tag); +} + +static void CreateRadio(void) +{ + lua_pushusertag(IupRadio(iuplua_checkihandle(1)), iuplua_tag); +} + +static void CreateMenu(void) +{ + lua_pushusertag(IupMenu(NULL), iuplua_tag); +} + +static void CreateHbox(void) +{ + lua_pushusertag(IupHbox(NULL), iuplua_tag); +} + +static void CreateVbox(void) +{ + lua_pushusertag(IupVbox(NULL), iuplua_tag); +} + +static void CreateZbox(void) +{ + lua_pushusertag(IupZbox(NULL), iuplua_tag); +} + +static void CreateFill(void) +{ + lua_pushusertag(IupFill(), iuplua_tag); +} + +static void CreateNormalizer(void) +{ + lua_pushusertag(IupNormalizer(NULL), iuplua_tag); +} + +static void CreateButton(void) +{ + lua_pushusertag(IupButton(luaL_opt_string(1, NULL), NULL), iuplua_tag); +} + +static void CreateText(void) +{ + lua_pushusertag(IupText(NULL), iuplua_tag); +} + +static void CreateMultiLine(void) +{ + lua_pushusertag(IupMultiLine(NULL), iuplua_tag); +} + +static void CreateLabel(void) +{ + lua_pushusertag(IupLabel(luaL_opt_string(1, NULL)), iuplua_tag); +} + +static void CreateToggle(void) +{ + lua_pushusertag(IupToggle(luaL_opt_string(1, NULL), NULL), iuplua_tag); +} + +static void CreateItem(void) +{ + lua_pushusertag(IupItem(luaL_opt_string(1, NULL), NULL), iuplua_tag); +} + +static void CreateSubmenu(void) +{ + lua_pushusertag(IupSubmenu(luaL_opt_string(1, NULL), iuplua_checkihandle(2)), iuplua_tag); +} + +static void CreateSeparator(void) +{ + lua_pushusertag(IupSeparator(), iuplua_tag); +} + +static void CreateFileDlg(void) +{ + lua_pushusertag(IupFileDlg(), iuplua_tag); +} + +static void CreateMessageDlg(void) +{ + lua_pushusertag(IupMessageDlg(), iuplua_tag); +} + +static void CreateFontDlg(void) +{ + lua_pushusertag(IupFontDlg(), iuplua_tag); +} + +static void CreateColorDlg(void) +{ + lua_pushusertag(IupColorDlg(), iuplua_tag); +} + +static void CreateProgressBar(void) +{ + lua_pushusertag(IupProgressBar(), iuplua_tag); +} + +static void CreateUser(void) +{ + lua_pushusertag(IupUser(), iuplua_tag); +} + +static void CreateFrame(void) +{ + lua_pushusertag(IupFrame(iuplua_checkihandle(1)), iuplua_tag); +} + +static void CreateCanvas(void) +{ + lua_pushusertag(IupCanvas(NULL), iuplua_tag); +} + +static void CreateList(void) +{ + lua_pushusertag(IupList(NULL), iuplua_tag); +} + +static void CreateImage(void) +{ + int i, j; + lua_Object linha; + int width, height; + unsigned char *pixels; + lua_Object obj = luaL_tablearg(3); + width = luaL_check_int(1); + height = luaL_check_int(2); + pixels = (unsigned char *) malloc(width*height); + + for (i = 1; i <= height; i++) + { + lua_beginblock(); + lua_pushobject(obj); + lua_pushnumber(i); + linha = lua_gettable(); + if (!lua_istable(linha)) + { + lua_endblock(); + lua_error("iupCreateImage: incorrect value in argument"); + } + + for (j = 1; j <= width; j++) + { + lua_Object n; + lua_beginblock(); + lua_pushobject(linha); + lua_pushnumber(j); + n = lua_gettable(); + if (!lua_isnumber(n)) + { + lua_endblock(); + lua_error("iupCreateImage: incorrect value in argument"); + } + pixels[(i - 1) * width + (j - 1)] = (unsigned char) lua_getnumber(n); + lua_endblock(); + } + + lua_pushobject(obj); + lua_pushnumber(i); + lua_pushnil(); + lua_settable(); + lua_endblock(); + } + + lua_pushusertag(IupImage(width, height, pixels), iuplua_tag); + free(pixels); +} + +static void CreateImageRGB(void) +{ + int i, count, width, height; + unsigned char *pixels; + lua_Object n, obj = luaL_tablearg(3); + width = luaL_check_int(1); + height = luaL_check_int(2); + count = width * height * 3; + pixels = (unsigned char *) malloc(count); + + for (i = 0; i < count; i++) + { + lua_beginblock(); + lua_pushobject(obj); + lua_pushnumber(i+1); + + n = lua_gettable(); + if (!lua_isnumber(n)) + { + lua_endblock(); + lua_error("iupCreateImage: incorrect value in argument"); + } + pixels[i] = (unsigned char)lua_getnumber(n); + lua_endblock(); + } + + lua_pushusertag(IupImageRGB(width, height, pixels), iuplua_tag); + free(pixels); +} + +static void CreateImageRGBA(void) +{ + int i, count, width, height; + unsigned char *pixels; + lua_Object n, obj = luaL_tablearg(3); + width = luaL_check_int(1); + height = luaL_check_int(2); + count = width * height * 4; + pixels = (unsigned char *) malloc(count); + + for (i = 0; i < count; i++) + { + lua_beginblock(); + lua_pushobject(obj); + lua_pushnumber(i+1); + + n = lua_gettable(); + if (!lua_isnumber(n)) + { + lua_endblock(); + lua_error("iupCreateImage: incorrect value in argument"); + } + pixels[i] = (unsigned char)lua_getnumber(n); + lua_endblock(); + } + + lua_pushusertag(IupImageRGBA(width, height, pixels), iuplua_tag); + free(pixels); +} + +/*********************************************************************************** +***********************************************************************************/ + +int iupluawidgets_open(int tag) +{ + struct FuncList { + char *name; + lua_CFunction func; + } FuncList[] = { + + { "iupCreateButton", CreateButton }, + { "iupCreateDialog", CreateDialog }, + { "iupCreateTimer", CreateTimer }, + { "iupCreateClipboard", CreateClipboard }, + { "iupCreateHbox", CreateHbox }, + { "iupCreateVbox", CreateVbox }, + { "iupCreateZbox", CreateZbox }, + { "iupCreateText", CreateText }, + { "iupCreateMultiLine", CreateMultiLine }, + { "iupCreateLabel", CreateLabel }, + { "iupCreateToggle", CreateToggle }, + { "iupCreateItem", CreateItem }, + { "iupCreateSubmenu", CreateSubmenu }, + { "iupCreateSeparator", CreateSeparator }, + { "iupCreateFileDlg", CreateFileDlg }, + { "iupCreateMessageDlg", CreateMessageDlg}, + { "iupCreateColorDlg", CreateColorDlg}, + { "iupCreateFontDlg", CreateFontDlg}, + { "iupCreateUser", CreateUser }, + { "iupCreateFrame", CreateFrame }, + { "iupCreateCanvas", CreateCanvas }, + { "iupCreateList", CreateList }, + { "iupCreateImage", CreateImage }, + { "iupCreateImageRGB", CreateImageRGB }, + { "iupCreateImageRGBA", CreateImageRGBA }, + { "iupCreateFill", CreateFill }, + { "iupCreateRadio", CreateRadio }, + { "iupCreateMenu", CreateMenu }, + { "iupCreateProgressBar", CreateProgressBar }, + { "iupCreateNormalizer", CreateNormalizer }, + + { "iup_action_timer", (lua_CFunction)timer_action}, + { "iup_action_text", (lua_CFunction)text_action}, + { "iup_action_toggle", (lua_CFunction)toggle_action}, + { "iup_action_button", (lua_CFunction)button_action}, + { "iup_action_list", (lua_CFunction)list_action}, + { "iup_action_canvas", (lua_CFunction)iupluaCanvasAction}, + { "iup_focus_cb", (lua_CFunction)iupluaCanvasFocusCb}, + { "iup_keypress_cb", (lua_CFunction)iupluaCanvasKeypressCb}, + { "iup_scroll_cb", (lua_CFunction)iupluaCanvasScrollCb}, + { "iup_resize_cb", (lua_CFunction)iupluaCanvasResizeCb}, + { "iup_move_cb", (lua_CFunction)iupluaDialogMoveCb}, + { "iup_motion_cb", (lua_CFunction)iupluaCanvasMotionCb}, + { "iup_mdiactivate_cb", (lua_CFunction)canvas_mdiactivate}, + { "iup_enterwindow_cb", (lua_CFunction)iupluaCanvasEnterwindowCb}, + { "iup_leavewindow_cb", (lua_CFunction)iupluaCanvasLeavewindowCb}, + { "iup_wom_cb", (lua_CFunction)iupluaCanvasWomCb}, + { "iup_wheel_cb", (lua_CFunction)iupluaCanvasWheelCb}, + { "iup_highlight_cb", (lua_CFunction)item_highlight}, + { "iup_button_cb", (lua_CFunction)iupluaCanvasButtonCb}, + { "iup_close_cb", (lua_CFunction)dialog_close}, + { "iup_show_cb", (lua_CFunction)dialog_show}, + { "iup_map_cb", (lua_CFunction)iupluaMapCb}, + { "iup_unmap_cb", (lua_CFunction)iupluaUnMapCb}, + { "iup_dropfiles_cb", (lua_CFunction)iupluaDropfilesCb}, + { "iup_trayclick_cb", (lua_CFunction)dialog_trayclick}, + { "iup_getfocus_cb", (lua_CFunction)iupluaGetfocusCb}, + { "iup_killfocus_cb", (lua_CFunction)iupluaKillfocusCb}, + { "iup_k_any", (lua_CFunction)iupluaKanyCb}, + { "iup_help_cb", (lua_CFunction)iupluaHelpCb}, + { "iup_edit_cb", (lua_CFunction)list_edit}, + { "iup_caret_cb", (lua_CFunction)text_caret}, + { "iup_multiselect_cb", (lua_CFunction)list_multiselect}, + { "iup_open_cb", (lua_CFunction)menu_open}, + { "iup_menuclose_cb", (lua_CFunction)menu_close}, + { "iup_file_cb", (lua_CFunction)file_cb}, + { "iup_dropdown_cb", (lua_CFunction)list_dropdown_cb}, + { "iup_dblclick_cb", (lua_CFunction)list_dblclick_cb}, + { "iup_valuechanged_cb", (lua_CFunction)valuechanged_cb} + }; + + int SizeFuncList = (sizeof(FuncList)/sizeof(struct FuncList)); + int ret_val = 1; + int i; + + iuplua_tag = tag; + + for (i = 0; i < SizeFuncList; i++) + lua_register(FuncList[i].name, FuncList[i].func); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/iuplua_widgets_be64.loh" +#else +#include "loh/iuplua_widgets_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/iuplua_widgets_le64w.loh" +#else +#include "loh/iuplua_widgets_le64.loh" +#endif +#else +#include "loh/iuplua_widgets.loh" +#endif +#endif +#else + iuplua_dofile("iuplua_widgets.lua"); +#endif + + return ret_val; +} diff --git a/iup/srclua3/iuplua_widgets.lua b/iup/srclua3/iuplua_widgets.lua new file mode 100755 index 0000000..33be9e3 --- /dev/null +++ b/iup/srclua3/iuplua_widgets.lua @@ -0,0 +1,942 @@ + +-- ################################################################################# +-- Widgets +-- ################################################################################# + + +-- "type" is used to check the type of each parameter in the creation table +WIDGET = {type = {}} + +-- called by the iupxxx functions +-- obj is a lua table +function WIDGET:Constructor(obj) + -- the parent of the table is the widget class used to create the control + obj.parent = self + + -- check the table parameters + self:checkParams(obj) + + -- create the IUP control, calling iupCreateXXX + obj.handle = self:CreateIUPelement(obj) + + -- set the parameters that are attributes + self:setAttributes(obj) + + -- save the table indexed by the handle + iup_handles[obj.handle] = obj + + -- the returned value is the handle, not the table + return obj.handle +end + +function WIDGET:checkParams (obj) + local type = self.type + local param, func = next(type, nil) + while param do + if not func(obj[param]) then + error("parameter " .. param .. " has wrong value or is not initialized") + end + param, func = next(type, param) + end +end + +function WIDGET:setAttributes (obj) + local temp = {} + local f = next(obj, nil) + while f do + temp[f] = 1 + f = next(obj, f) + end + f = next(temp, nil) + while f do + obj:set (f, obj[f]) + f = next(temp, f) + end +end + +function WIDGET:get(index) + if type_string (index) then + if (iup_callbacks[index]) then + return self[index] + else + local INDEX = strupper (index) + local value = IupGetAttribute (self.handle, INDEX) + if value then + local handle = IupGetHandle (value) + if handle then + return handle + else + return value + end + end + end + end + return self[index] +end + +function WIDGET:set(index, value) + if type_string (index) then + local INDEX = strupper (index) + local cb = iup_callbacks[index] + + -- workaround for resize attribute in dialog + if (index == "resize" and IupGetClassName(self.handle) == "dialog") then + cb = nil + end + + if (cb) then + local func = cb[2] + if (not func) then + func = cb[IupGetClassName(self.handle)] + end + iupSetCallback(self.handle, cb[1], func, value) + self[index] = value + return + elseif type_string(value) or type_number(value) then + IupSetAttribute(self.handle, INDEX, value) + return + elseif type_nil(value) then + local old_value = IupGetAttribute(self.handle, INDEX) + if old_value then + IupSetAttribute(self.handle, INDEX, value) + return + end + elseif type_widget(value) then + iupSetName(value) + IupSetAttribute(self.handle, INDEX, value.IUP_name) + return + end + end + self[index] = value +end + +function WIDGET:r_destroy() + local i = 1 + local elem = self[i] + while elem do + if type_widget (elem) and elem.IUP_parent then + if elem.IUP_parent == self then + elem.IUP_parent = nil + elem:r_destroy () + else -- wrong parent + error ("Internal table inconsistency") + exit() + end + end + + i = i + 1 + elem = self[i] + end + iup_handles[self] = nil +end + +function WIDGET:destroy() + self:r_destroy () + IupDestroy (self) +end + +function WIDGET:detach() + IupDetach (self) + local parent = self.IUP_parent + if parent then + self.IUP_parent = nil + local i = 1 + while parent[i] do + if parent[i] == self then + while parent[i+1] do + parent[i] = parent[i+1] + i = i+1 + end + parent[i] = nil + return + end + i = i+1 + end + end +end + +function WIDGET:append(o) + if IupAppend (self, o) then + o.IUP_parent = self + local i = 1 + while self[i] do + if self[i] == o then + return i + end + i = i+1 + end + iup_handles[self][i] = o + return i + else + return nil + end +end + +function WIDGET:map() + return IupMap(self) +end + +function WIDGET:hide() + return IupHide(self) +end + + +-- ############### +IUPTIMER = {parent = WIDGET} + +function IUPTIMER:CreateIUPelement (obj) + return iupCreateTimer() +end + +function iuptimer(o) + return IUPTIMER:Constructor(o) +end +iup.timer = iuptimer + + +-- ############### +IUPCLIPBOARD = {parent = WIDGET} + +function IUPCLIPBOARD:CreateIUPelement (obj) + return iupCreateClipboard() +end + +function iupclipboard(o) + return IUPCLIPBOARD:Constructor(o) +end +iup.clipboard = iupclipboard + + +-- ############### +IUPDIALOG = {parent = WIDGET, type = {type_widget}} + +function IUPDIALOG:CreateIUPelement (obj) + local handle = iupCreateDialog(obj[1]) + obj[1].IUP_parent = handle + return handle +end + +function IUPDIALOG:show () + return IupShow(self) +end + +function IUPDIALOG:showxy (x,y) + return IupShowXY(self, x, y) +end + +function IUPDIALOG:popup (x, y) + return IupPopup (self, x, y) +end + +function iupdialog (o) + return IUPDIALOG:Constructor (o) +end +iup.dialog = iupdialog + + +-- ############### +IUPRADIO = {parent = WIDGET, type = {type_widget}} + +function IUPRADIO:CreateIUPelement (obj) + local handle = iupCreateRadio (obj[1]) + obj[1].IUP_parent = handle + return handle +end + +function iupradio (o) + local handle = IUPRADIO:Constructor (o) + iupCreateChildrenNames (handle[1]) + return handle +end +iup.radio = iupradio + +-- OLD STUFF +function edntoggles (h) + local tmp = {} + local i = 1 + while h[i] do + if type_string (h[i]) then + tmp[i] = iuptoggle{title = h[i], action = h.action} + else + error ("option "..i.." must be a string") + end + i = i + 1 + end + + if h.value then + local j = 1 + while h[j] and (h[j] ~= h.value) do + j = j + 1 + end + if h[j] then + tmp.value = tmp[j] + end + elseif h.nvalue then + tmp.value = tmp[h.nvalue] + end + + return tmp +end + +-- OLD STUFF +function edhradio (o) + local toggles = edntoggles (o) + return iupradio{edhbox (toggles); value = toggles.value} +end + +-- OLD STUFF +function edvradio (o) + local toggles = edntoggles (o) + return iupradio{edvbox (toggles); value = toggles.value} +end + + +-- ############### +IUPMENU = {parent = WIDGET} + +function IUPMENU:checkParams (obj) + local i = 1 + while obj[i] do + local o = obj[i] + if not type_item (o) then -- not a menu item + if type (o) ~= 'table' then + error("parameter " .. i .. " is not a table nor a menu item") + elseif (o[1] and not type_string (o[1])) then + error("parameter " .. i .. " does not have a string title") + elseif (o[2] and not type_string (o[2]) and not type_function (o[2]) + and not type_widget (o[2])) then + error("parameter " .. i .. " does not have an action nor a menu") + end + end + i = i + 1 + end +end + +function IUPMENU:CreateIUPelement (obj) + local handle = iupCreateMenu () + local i = 1 + while obj[i] do + local o = obj[i] + local elem + if type_widget (o) then -- predefined + elem = o + elseif not o[1] then -- Separator + elem = iupseparator {} + elseif type_widget (o[2]) then -- SubMenu + o.title = o[1] + o[1] = o[2] + o[2] = nil + elem = iupsubmenu(o) + else -- Item + o.title = o[1] + o.action = o[2] + o[1] = nil + o[2] = nil + elem = iupitem(o) + end + IupAppend (handle, elem) + elem.IUP_parent = handle + obj[i] = elem + i = i + 1 + end + return handle +end + +function iupmenu (o) + return IUPMENU:Constructor (o) +end +iup.menu = iupmenu + +function IUPMENU:popup (x, y) + return IupPopup (self, x, y) +end + + +-- ############### +COMPOSITION = {parent = WIDGET} + +function COMPOSITION:checkParams (obj) + local i = 1 + while obj[i] do + if not type_widget (obj[i]) then + error("parameter " .. i .. " has wrong value or is not initialized") + end + i = i + 1 + end +end + +function COMPOSITION:CreateIUPelement (obj) + local handle = self:CreateBoxElement () + local filled = obj.filled + local i = 1 + local n = 0 + while obj[i] do + n = n + 1 + i = i + 1 + end + i = 1 + + if filled == IUP_YES then + obj[i+n] = iupfill{} + IupAppend (handle, obj[i+n]) + obj[i+n].IUP_parent = handle + end + + while i <= n do + IupAppend (handle, obj[i]) + obj[i].IUP_parent = handle + i = i + 1 + if filled == IUP_YES then + obj[i+n] = iupfill{} + IupAppend (handle, obj[i+n]) + obj[i+n].IUP_parent = handle + end + end + return handle +end + + +-- ############### +IUPHBOX = {parent = COMPOSITION} + +function IUPHBOX:CreateBoxElement () + return iupCreateHbox () +end + +function iuphbox (o) + return IUPHBOX:Constructor (o) +end +iup.hbox = iuphbox + +-- OLD STUFF +function edhbox (o) + o.filled = IUP_YES + return IUPHBOX:Constructor (o) +end + +-- OLD STUFF +function edfield (f) + local l, t + if (type_string (f.prompt) or type_number (f.prompt)) then + l = iuplabel {title = f.prompt} + else + error ("parameter prompt has wrong value or is not initialized") + end + if f.value then + t = iuptext {value = f.value} + else + t = iuptext {value = f.nvalue} + end + if t and l then + return edhbox {l, t} + else + return nil + end +end + + +-- ############### +IUPVBOX = {parent = COMPOSITION} + +function IUPVBOX:CreateBoxElement () + return iupCreateVbox () +end + +function iupvbox (o) + return IUPVBOX:Constructor (o) +end +iup.vbox = iupvbox + +-- OLD STUFF +function edvbox (o) + o.filled = IUP_YES + return IUPVBOX:Constructor (o) +end + + +-- ############### +IUPZBOX = {parent = COMPOSITION} + +function IUPZBOX:CreateBoxElement () + return iupCreateZbox () +end + +function iupzbox (obj) + local handle = IUPZBOX:Constructor (obj) + local i = 1 + while obj[i] do + iupSetName(handle[i]) + i = i+1 + end + return handle +end +iup.zbox = iupzbox + + +-- ############### +IUPFILL = {parent = WIDGET} + +function IUPFILL:CreateIUPelement (obj) + return iupCreateFill () +end + +function iupfill (o) + return IUPFILL:Constructor (o) +end +iup.fill = iupfill + + +-- ############### +IUPBUTTON = {parent = WIDGET, type = {title = type_string}} + +function IUPBUTTON:CreateIUPelement (obj) + if not obj.title and obj.image then + obj.title='' + end + return iupCreateButton(obj.title) +end + +function iupbutton (o) + return IUPBUTTON:Constructor (o) +end +iup.button = iupbutton + + +-- ############### +IUPTEXT = {parent = WIDGET} + +function IUPTEXT:CreateIUPelement (obj) + return iupCreateText() +end + +function iuptext (o) + return IUPTEXT:Constructor (o) +end +iup.text = iuptext + + +-- ############### +IUPMULTILINE = {parent = IUPTEXT} + +function IUPMULTILINE:CreateIUPelement (obj) + return iupCreateMultiLine() +end + +function iupmultiline (o) + return IUPMULTILINE:Constructor (o) +end +iup.multiline = iupmultiline + + +-- ############### +IUPLABEL = {parent = WIDGET, type = {title = type_string}} + +function IUPLABEL:CreateIUPelement (obj) + if not obj.title and obj.image then + obj.title='' + end + return iupCreateLabel (obj.title) +end + +function iuplabel (o) + return IUPLABEL:Constructor (o) +end +iup.label = iuplabel + + +-- ############### +IUPTOGGLE = {parent = IUPBUTTON} + +function IUPTOGGLE:CreateIUPelement (obj) + return iupCreateToggle (obj.title) +end + +function iuptoggle (o) + return IUPTOGGLE:Constructor (o) +end +iup.toggle = iuptoggle + + +-- ############### +IUPITEM = {parent = IUPBUTTON} + +function IUPITEM:CreateIUPelement (obj) + return iupCreateItem (obj.title) +end + +function iupitem (o) + return IUPITEM:Constructor (o) +end +iup.item = iupitem + + +-- ############### +IUPSUBMENU = {parent = WIDGET, type = {type_menu; title = type_string}} + +function IUPSUBMENU:CreateIUPelement (obj) + local h = iupCreateSubmenu (obj.title, obj[1]) + obj[1].IUP_parent = h + return h +end + +function iupsubmenu (o) + return IUPSUBMENU:Constructor (o) +end +iup.submenu = iupsubmenu + + +-- ############### +IUPSEPARATOR = {parent = WIDGET} + +function IUPSEPARATOR:CreateIUPelement (obj) + return iupCreateSeparator () +end + +function iupseparator (o) + return IUPSEPARATOR:Constructor (o) +end +iup.separator = iupseparator + + +-- ############### +IUPFILEDLG = {parent = WIDGET} + +function IUPFILEDLG:popup (x, y) + return IupPopup (self, x, y) +end + +function IUPFILEDLG:CreateIUPelement () + return iupCreateFileDlg () +end + +function iupfiledlg (o) + return IUPFILEDLG:Constructor (o) +end +iup.filedlg = iupfiledlg + + +-- ############### +IUPMESSAGEDLG = {parent = WIDGET} + +function IUPMESSAGEDLG:popup (x, y) + return IupPopup (self, x, y) +end + +function IUPMESSAGEDLG:CreateIUPelement () + return iupCreateMessageDlg () +end + +function iupmessagedlg (o) + return IUPMESSAGEDLG:Constructor (o) +end +iup.messagedlg = iupmessagedlg + + +-- ############### +IUPCOLORDLG = {parent = WIDGET} + +function IUPCOLORDLG:popup (x, y) + return IupPopup (self, x, y) +end + +function IUPCOLORDLG:CreateIUPelement () + return iupCreateColorDlg () +end + +function iupcolordlg (o) + return IUPCOLORDLG:Constructor (o) +end +iup.colordlg = iupcolordlg + + +-- ############### +IUPFONTDLG = {parent = WIDGET} + +function IUPFONTDLG:popup (x, y) + return IupPopup (self, x, y) +end + +function IUPFONTDLG:CreateIUPelement () + return iupCreateFontDlg () +end + +function iupfontdlg (o) + return IUPFONTDLG:Constructor (o) +end +iup.fontdlg = iupfontdlg + + +-- ############### +IUPUSER = {parent = WIDGET} + +function IUPUSER:CreateIUPelement () + return iupCreateUser () +end + +function iupuser () + return IUPUSER:Constructor () +end +iup.user = iupuser + + +-- ############### +IUPNORMALIZER = {parent = WIDGET} + +function IUPNORMALIZER:checkParams (obj) + local i = 1 + while obj[i] do + if not type_widget (obj[i]) then + error("parameter " .. i .. " has wrong value or is not initialized") + end + i = i + 1 + end +end + +function IUPNORMALIZER:CreateIUPelement (obj) + local handle = iupCreateNormalizer () + local i = 1 + while obj[i] do + handle.addcontrol = obj[i] + i = i + 1 + end + return handle +end + +function iupnormalizer () + return IUPNORMALIZER:Constructor () +end +iup.normalizer = iupnormalizer + + +-- ############### +IUPFRAME = {parent = WIDGET, type = {type_widget}} + +function IUPFRAME:CreateIUPelement (obj) + local h = iupCreateFrame (obj[1]) + obj[1].IUP_parent = h + return h +end + +function iupframe (o) + return IUPFRAME:Constructor (o) +end +iup.frame = iupframe + + +-- ############### +IUPCANVAS = {parent = WIDGET} + +function IUPCANVAS:CreateIUPelement (obj) + return iupCreateCanvas () +end + +function iupcanvas (o) + return IUPCANVAS:Constructor (o) +end +iup.canvas = iupcanvas + + +-- ############### +IUPLIST = {parent = WIDGET} + +function IUPLIST:CreateIUPelement (obj) + return iupCreateList () +end + +function IUPLIST:get(index) + if type (index) == 'number' then + return IupGetAttribute (self.handle, ""..index) + else + return WIDGET.get(self, index) + end +end + +function IUPLIST:set (index, value) + if type (index) == 'number' then + if (type_string (value) or type_number (value)) then + return IupSetAttribute (self.handle, ""..index, ""..value) + elseif value == nil then + return IupSetAttribute (self.handle, ""..index, value) + end + end + return WIDGET.set(self, index, value) +end + +function iuplist (o) + return IUPLIST:Constructor (o) +end +iup.list = iuplist + + +-- ############### +IUPIMAGE = {parent = WIDGET} + +function IUPIMAGE:checkParams (obj) + local i = 1 + while obj[i] do + local j = 1 + while obj[i][j] do + if type (obj[i][j]) ~= 'number' then + error ("non-numeric value in image definition") + end + j = j + 1 + end + + if obj.width and (j - 1) ~= obj.width then + error ("inconsistent image lenght") + else + obj.width = j - 1 + end + + i = i + 1 + end + + obj.height = i - 1 +end + +function IUPIMAGE:CreateIUPelement (obj) + local handle = iupCreateImage (obj.width, obj.height, obj) + if type (obj.colors) == 'table' then + local i = 1 + while obj.colors[i] do + IupSetAttribute (handle, i, obj.colors[i]) + i = i + 1 + end + end + return handle +end + +function iupimage (o) + return IUPIMAGE:Constructor (o) +end +iup.image = iupimage + + +IUPIMAGERGB = {parent = WIDGET} + +function IUPIMAGERGB:CreateIUPelement (obj) + return iupCreateImageRGB(obj.width, obj.height, obj.pixels) +end + +function iupimagergb (o) + return IUPIMAGERGB:Constructor (o) +end +iup.imagergb = iupimagergb + + +IUPIMAGERGBA = {parent = WIDGET} + +function IUPIMAGERGBA:CreateIUPelement (obj) + return iupCreateImageRGBA(obj.width, obj.height, obj.pixels) +end + +function iupimagergba (o) + return IUPIMAGERGBA:Constructor (o) +end +iup.imagergba = iupimagergba + + +-- ############### +IUPPROGRESSBAR = {parent = WIDGET} + +function IUPPROGRESSBAR:CreateIUPelement () + return iupCreateProgressBar() +end + +function iupprogressbar (o) + return IUPPROGRESSBAR:Constructor (o) +end +iup.progressbar = iupprogressbar + + +-- ################################################################################# +-- Callbacks +-- ################################################################################# + + +-- global list of callbacks +-- index is the Lua callback name +-- each callback contains the full name, and the C callback +iup_callbacks = +{ + action = {"ACTION", nil}, + actioncb = {"ACTION_CB", nil}, + getfocus = {"GETFOCUS_CB", iup_getfocus_cb}, + killfocus = {"KILLFOCUS_CB", iup_killfocus_cb}, + focus = {"FOCUS_CB", iup_focus_cb}, + k_any = {"K_ANY", iup_k_any}, + help = {"HELP_CB", iup_help_cb}, + caretcb = {"CARET_CB", iup_caret_cb}, + keypress = {"KEYPRESS_CB", iup_keypress_cb}, + scroll = {"SCROLL_CB", iup_scroll_cb}, + trayclick = {"TRAYCLICK_CB", iup_trayclick_cb}, + close = {"CLOSE_CB", iup_close_cb}, + open = {"OPEN_CB", iup_open_cb}, + showcb = {"SHOW_CB", iup_show_cb}, + mapcb = {"MAP_CB", iup_map_cb}, + unmapcb = {"UNMAP_CB", iup_unmap_cb}, + dropfiles = {"DROPFILES_CB", iup_dropfiles_cb}, + menuclose = {"MENUCLOSE_CB", iup_menuclose_cb}, + highlight = {"HIGHLIGHT_CB", iup_highlight_cb}, + wom = {"WOM_CB", iup_wom_cb}, + wheel = {"WHEEL_CB", iup_wheel_cb}, + button = {"BUTTON_CB", iup_button_cb}, + resize = {"RESIZE_CB", iup_resize_cb}, + move = {"RESIZE_CB", iup_move_cb}, + motion = {"MOTION_CB", iup_motion_cb}, + enterwindow = {"ENTERWINDOW_CB", iup_enterwindow_cb}, + leavewindow = {"LEAVEWINDOW_CB", iup_leavewindow_cb}, + edit = {"EDIT_CB", iup_edit_cb}, + multiselect = {"MULTISELECT_CB", iup_multiselect_cb}, + filecb = {"FILE_CB", iup_file_cb}, + mdiactivatecb = {"MDIACTIVATE_CB", iup_mdiactivate_cb}, + dropdowncb = {"DROPDOWN_CB", iup_dropdown_cb}, + dblclickcb = {"DBLCLICK_CB", iup_dblclick_cb}, +} + +iup_callbacks.action.toggle = iup_action_toggle +iup_callbacks.action.multiline = iup_action_text +iup_callbacks.action.text = iup_action_text +iup_callbacks.action.button = iup_action_button +iup_callbacks.action.list = iup_action_list +iup_callbacks.action.item = iup_action_button +iup_callbacks.action.canvas = iup_action_canvas + +-- must set here because it is also used elsewhere with a different signature +iup_callbacks.actioncb.timer = iup_action_timer + +-- aliases for the full names +iup_callbacks.action_cb = iup_callbacks.actioncb +iup_callbacks.getfocus_cb = iup_callbacks.getfocus +iup_callbacks.killfocus_cb = iup_callbacks.killfocus +iup_callbacks.focus_cb = iup_callbacks.focus +iup_callbacks.k_any = iup_callbacks.k_any +iup_callbacks.help_cb = iup_callbacks.help +iup_callbacks.caret_cb = iup_callbacks.caretcb +iup_callbacks.keypress_cb = iup_callbacks.keypress +iup_callbacks.scroll_cb = iup_callbacks.scroll +iup_callbacks.trayclick_cb = iup_callbacks.trayclick +iup_callbacks.close_cb = iup_callbacks.close +iup_callbacks.open_cb = iup_callbacks.open +iup_callbacks.show_cb = iup_callbacks.showcb +iup_callbacks.map_cb = iup_callbacks.mapcb +iup_callbacks.unmap_cb = iup_callbacks.unmapcb +iup_callbacks.dropfiles_cb = iup_callbacks.dropfiles +iup_callbacks.menuclose_cb = iup_callbacks.menuclose +iup_callbacks.highlight_cb = iup_callbacks.highlight +iup_callbacks.wom_cb = iup_callbacks.wom +iup_callbacks.wheel_cb = iup_callbacks.wheel +iup_callbacks.button_cb = iup_callbacks.button +iup_callbacks.resize_cb = iup_callbacks.resize +iup_callbacks.move_cb = iup_callbacks.move +iup_callbacks.motion_cb = iup_callbacks.motion +iup_callbacks.enterwindow_cb = iup_callbacks.enterwindow +iup_callbacks.leavewindow_cb = iup_callbacks.leavewindow +iup_callbacks.edit_cb = iup_callbacks.edit +iup_callbacks.multiselect_cb = iup_callbacks.multiselect +iup_callbacks.mdiactivate_cb = iup_callbacks.mdiactivatecb +iup_callbacks.file_cb = iup_callbacks.filecb +iup_callbacks.dropdown_cb = iup_callbacks.dropdowncb +iup_callbacks.dblclick_cb = iup_callbacks.dblclickcb +iup_callbacks.valuechanged_cb = iup_callbacks.valuechangedcb + \ No newline at end of file diff --git a/iup/srclua3/iupluacd3.def b/iup/srclua3/iupluacd3.def new file mode 100755 index 0000000..a281128 --- /dev/null +++ b/iup/srclua3/iupluacd3.def @@ -0,0 +1,3 @@ +EXPORTS + cdluaiup_open + \ No newline at end of file diff --git a/iup/srclua3/iupluacontrols3.def b/iup/srclua3/iupluacontrols3.def new file mode 100755 index 0000000..7736388 --- /dev/null +++ b/iup/srclua3/iupluacontrols3.def @@ -0,0 +1,2 @@ +EXPORTS + iupcontrolslua_open diff --git a/iup/srclua3/iupluagl3.def b/iup/srclua3/iupluagl3.def new file mode 100755 index 0000000..dfc4849 --- /dev/null +++ b/iup/srclua3/iupluagl3.def @@ -0,0 +1,2 @@ +EXPORTS + iupgllua_open diff --git a/iup/srclua3/iupluaim3.def b/iup/srclua3/iupluaim3.def new file mode 100755 index 0000000..3acf8ae --- /dev/null +++ b/iup/srclua3/iupluaim3.def @@ -0,0 +1,2 @@ +EXPORTS + iupimlua_open diff --git a/iup/srclua3/iupluaole3.def b/iup/srclua3/iupluaole3.def new file mode 100755 index 0000000..6389829 --- /dev/null +++ b/iup/srclua3/iupluaole3.def @@ -0,0 +1,2 @@ +EXPORTS + iupolelua_open diff --git a/iup/srclua3/iupole.mak b/iup/srclua3/iupole.mak new file mode 100755 index 0000000..30ea1f9 --- /dev/null +++ b/iup/srclua3/iupole.mak @@ -0,0 +1,13 @@ +PROJNAME = iup +LIBNAME = iupluaole3 +OPT = YES + +USE_LUA = Yes +USE_OPENGL = Yes + +SRC = iuplua_olecontrol.c + +INCLUDES = ../include +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup iuplua3 iupole + diff --git a/iup/srclua3/loh/cells.loh b/iup/srclua3/loh/cells.loh new file mode 100755 index 0000000..78336b8 --- /dev/null +++ b/iup/srclua3/loh/cells.loh @@ -0,0 +1,76 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacells.lo"); +*/ +/* ../obj/iupluacontrols3/luacells.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8, + 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29, + 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11, + 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15, + 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, + 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11, + 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, + 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15, + 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18, + 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26, + 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11, + 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, + 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, + 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101, +109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0, + 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108, +117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0, + 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115, +101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101, +108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108, +108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97, +108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111, +117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117, +115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77, + 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101, +108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83, + 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, + 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, + 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84, + 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95, +119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, + 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, + 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98, + 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76, + 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108, +108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99, +111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99, + 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83, + 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108, +115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97, +110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0, + 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, + 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0, + 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103, +104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9, +104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95, + 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells.lo"); +} diff --git a/iup/srclua3/loh/cells_be32.loh b/iup/srclua3/loh/cells_be32.loh new file mode 100755 index 0000000..d1db35f --- /dev/null +++ b/iup/srclua3/loh/cells_be32.loh @@ -0,0 +1,76 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacells_be32.lo"); +*/ +/* ../obj/iupluacontrols3/luacells_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8, + 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29, + 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11, + 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15, + 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, + 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11, + 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, + 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15, + 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18, + 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26, + 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11, + 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, + 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, + 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101, +109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0, + 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108, +117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0, + 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115, +101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101, +108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108, +108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97, +108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111, +117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117, +115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77, + 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101, +108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83, + 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, + 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, + 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84, + 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95, +119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, + 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, + 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98, + 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76, + 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108, +108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99, +111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99, + 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83, + 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108, +115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97, +110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0, + 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, + 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0, + 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103, +104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9, +104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95, + 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells_be32.lo"); +} diff --git a/iup/srclua3/loh/cells_be64.loh b/iup/srclua3/loh/cells_be64.loh new file mode 100755 index 0000000..b832e4b --- /dev/null +++ b/iup/srclua3/loh/cells_be64.loh @@ -0,0 +1,75 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/cells_be64.lo"); +*/ +/* ../obj/iupluacontrols3/cells_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64, 99,101,108,108,115, + 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8, 25, 7, 15, + 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0, 2, 26, + 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11, 18, 22, 2, + 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, + 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 11, 11, 27, + 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11, 31, 15, 32, + 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 11, + 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15, 11, 18, 12, + 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18, 18, 26, 15, + 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26, 15, 11, 11, + 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11, 11, 46, 15, + 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, + 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64, 99,101,108,108,115, 46,108,117, + 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67, +114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0, 0, 7,114,101,100,114, + 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 11, 64, 99,101,108,108,115, 46,108, +117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0, 11, 1, 15, 2, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8, +114,101,112, 97,105,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, + 0, 2, 0, 0, 0, 9,105,117,112, 99,101,108,108,115, 0, 4, 0, 0, 0, 11, + 0, 0, 0, 11, 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, + 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, + 11,109,111,117,115,101, 99,108,105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, + 83, 69, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, + 99,101,108,108,115, 95,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, + 2, 0, 0, 0, 12,109,111,117,115,101,109,111,116,105,111,110, 0, 2, 0, 0, + 0, 15, 77, 79, 85, 83, 69, 77, 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, + 0, 25,105,117,112, 95, 99,101,108,108,115, 95,109,111,117,115,101,109,111,116, +105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,105,110, +103, 0, 2, 0, 0, 0, 13, 83, 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, + 2, 0, 0, 0, 23,105,117,112, 95, 99,101,108,108,115, 95,115, 99,114,111,108, +108,105,110,103, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, + 0, 0, 0, 9, 87, 73, 68, 84, 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117, +112, 95, 99,101,108,108,115, 95,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, + 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, + 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108,108,115, 95,104, +101,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, + 0, 2, 0, 0, 0, 10, 78, 76, 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, + 20,105,117,112, 95, 99,101,108,108,115, 95,110,108,105,110,101,115, 95, 99, 98, + 0, 2, 0, 0, 0, 6,110, 99,111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, + 76, 83, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, + 95,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, + 0, 2, 0, 0, 0, 9, 72, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19, +105,117,112, 95, 99,101,108,108,115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, + 0, 0, 0, 6,118,115,112, 97,110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, + 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,118, +115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,111,117,115,101, 99,108, +105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,111,117,115,101,109,111,116, +105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,105,110, +103, 95, 99, 98, 0, 2, 0, 0, 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, + 0, 0, 0, 10,104,101,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110, +108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, + 99, 98, 0, 2, 0, 0, 0, 9,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, + 0, 9,118,115,112, 97,110, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/cells_be64.lo"); +} diff --git a/iup/srclua3/loh/cells_le64.loh b/iup/srclua3/loh/cells_le64.loh new file mode 100755 index 0000000..11a2caf --- /dev/null +++ b/iup/srclua3/loh/cells_le64.loh @@ -0,0 +1,76 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacells_le64.lo"); +*/ +/* ../obj/iupluacontrols3/luacells_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8, + 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29, + 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11, + 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15, + 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, + 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11, + 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, + 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15, + 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18, + 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26, + 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11, + 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, + 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, + 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101, +109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0, + 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108, +117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0, + 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115, +101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101, +108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108, +108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97, +108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111, +117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117, +115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77, + 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101, +108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83, + 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, + 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, + 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84, + 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95, +119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, + 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, + 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98, + 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76, + 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108, +108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99, +111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99, + 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83, + 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108, +115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97, +110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0, + 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, + 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0, + 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103, +104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9, +104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95, + 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells_le64.lo"); +} diff --git a/iup/srclua3/loh/cells_le64w.loh b/iup/srclua3/loh/cells_le64w.loh new file mode 100755 index 0000000..9084ea9 --- /dev/null +++ b/iup/srclua3/loh/cells_le64w.loh @@ -0,0 +1,76 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacells_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luacells_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0,245, 5, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 11, 8, + 25, 7, 15, 9, 11, 10, 15, 7, 26, 15, 11, 11, 12, 22, 2, 11, 13, 15, 14, 29, + 0, 2, 26, 15, 11, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 11, 11, + 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 11, 11, 21, 22, 2, 11, 22, 15, + 23, 29, 0, 2, 26, 15, 11, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, + 11, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 11, 11, 30, 22, 2, 11, + 31, 15, 32, 29, 0, 2, 26, 15, 11, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, + 26, 15, 11, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 11, 11, 39, 15, + 11, 18, 12, 26, 15, 11, 11, 40, 15, 11, 18, 15, 26, 15, 11, 11, 41, 15, 11, 18, + 18, 26, 15, 11, 11, 42, 15, 11, 18, 21, 26, 15, 11, 11, 43, 15, 11, 18, 24, 26, + 15, 11, 11, 44, 15, 11, 18, 27, 26, 15, 11, 11, 45, 15, 11, 18, 30, 26, 15, 11, + 11, 46, 15, 11, 18, 33, 26, 15, 11, 11, 47, 15, 11, 18, 36, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 2, 0, 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, + 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, + 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101, +109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97, 99,101, +108,108,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 15,105,117,112, 67,114,101, 97,116,101, 67,101,108,108,115, 0, 2, 0, 0, + 0, 7,114,101,100,114, 97,119, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108, +117, 97, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 1, 13, 0, + 11, 1, 15, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115, +101,108,102, 0, 2, 0, 0, 0, 8,114,101,112, 97,105,110,116, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 9,105,117,112, 99,101, +108,108,115, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 64,108,117, 97, 99,101,108, +108,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 67, 69, 76, 76, 83, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 6, 99,101,108,108,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97, +108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 11,109,111,117,115,101, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 77, 79, 85, 83, 69, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95, 99,101,108,108,115, 95,109,111, +117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12,109,111,117, +115,101,109,111,116,105,111,110, 0, 2, 0, 0, 0, 15, 77, 79, 85, 83, 69, 77, + 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,101, +108,108,115, 95,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108,105,110,103, 0, 2, 0, 0, 0, 13, 83, + 67, 82, 79, 76, 76, 73, 78, 71, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, + 95, 99,101,108,108,115, 95,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, + 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 9, 87, 73, 68, 84, + 72, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95, +119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, + 0, 2, 0, 0, 0, 10, 72, 69, 73, 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, + 20,105,117,112, 95, 99,101,108,108,115, 95,104,101,105,103,104,116, 95, 99, 98, + 0, 2, 0, 0, 0, 7,110,108,105,110,101,115, 0, 2, 0, 0, 0, 10, 78, 76, + 73, 78, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95, 99,101,108, +108,115, 95,110,108,105,110,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 6,110, 99, +111,108,115, 0, 2, 0, 0, 0, 9, 78, 67, 79, 76, 83, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95, 99,101,108,108,115, 95,110, 99,111,108,115, 95, 99, + 98, 0, 2, 0, 0, 0, 6,104,115,112, 97,110, 0, 2, 0, 0, 0, 9, 72, 83, + 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, 99,101,108,108, +115, 95,104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 6,118,115,112, 97, +110, 0, 2, 0, 0, 0, 9, 86, 83, 80, 65, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 19,105,117,112, 95, 99,101,108,108,115, 95,118,115,112, 97,110, 95, 99, 98, 0, + 2, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 2, + 0, 0, 0, 15,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 2, + 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 2, 0, 0, + 0, 9,119,105,100,116,104, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,101,105,103, +104,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 2, 0, 0, 0, 9, +104,115,112, 97,110, 95, 99, 98, 0, 2, 0, 0, 0, 9,118,115,112, 97,110, 95, + 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacells_le64w.lo"); +} diff --git a/iup/srclua3/loh/colorbar.loh b/iup/srclua3/loh/colorbar.loh new file mode 100755 index 0000000..6dd3f7e --- /dev/null +++ b/iup/srclua3/loh/colorbar.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacolorbar.lo"); +*/ +/* ../obj/iupluacontrols3/luacolorbar.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111, +108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11, + 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, + 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, + 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11, + 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2, + 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15, + 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, + 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108, +117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4, + 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99, +111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, + 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76, + 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97, +114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99, +116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, + 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108, +101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98, + 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0, + 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104, + 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0, + 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0, + 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, +115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar.lo"); +} diff --git a/iup/srclua3/loh/colorbar_be32.loh b/iup/srclua3/loh/colorbar_be32.loh new file mode 100755 index 0000000..2a33b10 --- /dev/null +++ b/iup/srclua3/loh/colorbar_be32.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacolorbar_be32.lo"); +*/ +/* ../obj/iupluacontrols3/luacolorbar_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111, +108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11, + 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, + 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, + 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11, + 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2, + 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15, + 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, + 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108, +117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4, + 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99, +111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, + 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76, + 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97, +114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99, +116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, + 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108, +101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98, + 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0, + 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104, + 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0, + 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0, + 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, +115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar_be32.lo"); +} diff --git a/iup/srclua3/loh/colorbar_be64.loh b/iup/srclua3/loh/colorbar_be64.loh new file mode 100755 index 0000000..cb0ed3e --- /dev/null +++ b/iup/srclua3/loh/colorbar_be64.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/colorbar_be64.lo"); +*/ +/* ../obj/iupluacontrols3/colorbar_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64, 99,111,108,111,114, + 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, + 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, + 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11, 17, 15, 18, + 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2, 26, 15, 9, + 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15, 9, 11, 24, + 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 64, 99,111,108,111, +114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, + 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, + 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, 67,111,108,111,114, 98, + 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,111,114, 98, 97,114, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 14, 64, 99,111,108,111,114, 98, 97,114, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, + 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, + 0, 9, 99,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, + 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7, 99,101,108,108, 99, + 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76, 95, 67, 66, 0, 2, 0, 0, 0, 21, +105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95, 99,101,108,108, 95, 99, 98, + 0, 2, 0, 0, 0, 9,115,101,108,101, 99,116, 99, 98, 0, 2, 0, 0, 0, 10, + 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95, 99, +111,108,111,114, 98, 97,114, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, + 0, 0, 9,115,119,105,116, 99,104, 99, 98, 0, 2, 0, 0, 0, 10, 83, 87, 73, + 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95, 99,111,108,111, +114, 98, 97,114, 95,115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 11, +101,120,116,101,110,100,101,100, 99, 98, 0, 2, 0, 0, 0, 12, 69, 88, 84, 69, + 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95, 99,111,108, +111,114, 98, 97,114, 95,101,120,116,101,110,100,101,100, 95, 99, 98, 0, 2, 0, + 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 10,115,101,108,101, + 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10,115,119,105,116, 99,104, 95, 99, 98, + 0, 2, 0, 0, 0, 12,101,120,116,101,110,100,101,100, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/colorbar_be64.lo"); +} diff --git a/iup/srclua3/loh/colorbar_le64.loh b/iup/srclua3/loh/colorbar_le64.loh new file mode 100755 index 0000000..583e9d3 --- /dev/null +++ b/iup/srclua3/loh/colorbar_le64.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacolorbar_le64.lo"); +*/ +/* ../obj/iupluacontrols3/luacolorbar_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111, +108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11, + 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, + 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, + 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11, + 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2, + 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15, + 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, + 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108, +117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4, + 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99, +111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, + 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76, + 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97, +114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99, +116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, + 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108, +101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98, + 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0, + 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104, + 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0, + 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0, + 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, +115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar_le64.lo"); +} diff --git a/iup/srclua3/loh/colorbar_le64w.loh b/iup/srclua3/loh/colorbar_le64w.loh new file mode 100755 index 0000000..ce8d260 --- /dev/null +++ b/iup/srclua3/loh/colorbar_le64w.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacolorbar_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luacolorbar_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,108,117, 97, 99,111, +108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0,123, 5, 0, 22, 1, 11, + 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, + 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, + 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 22, 2, 11, + 17, 15, 18, 29, 0, 2, 26, 15, 9, 11, 19, 22, 2, 11, 20, 15, 21, 29, 0, 2, + 26, 15, 9, 11, 22, 15, 9, 18, 10, 26, 15, 9, 11, 23, 15, 9, 18, 13, 26, 15, + 9, 11, 24, 15, 9, 18, 16, 26, 15, 9, 11, 25, 15, 9, 18, 19, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, + 65, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 17, 64,108, +117, 97, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4, + 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 98, 97,114, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 0, 0, 0, 17, 64,108,117, 97, 99, +111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, + 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 66, 65, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 9, 99,111,108,111,114, 98, 97,114, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 7, 99,101,108,108, 99, 98, 0, 2, 0, 0, 0, 8, 67, 69, 76, 76, + 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95, 99,111,108,111,114, 98, 97, +114, 95, 99,101,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,101,108,101, 99, +116, 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, + 0, 0, 0, 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,101,108, +101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 9,115,119,105,116, 99,104, 99, 98, + 0, 2, 0, 0, 0, 10, 83, 87, 73, 84, 67, 72, 95, 67, 66, 0, 2, 0, 0, 0, + 23,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,115,119,105,116, 99,104, + 95, 99, 98, 0, 2, 0, 0, 0, 11,101,120,116,101,110,100,101,100, 99, 98, 0, + 2, 0, 0, 0, 12, 69, 88, 84, 69, 78, 68, 69, 68, 95, 67, 66, 0, 2, 0, 0, + 0, 25,105,117,112, 95, 99,111,108,111,114, 98, 97,114, 95,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, 2, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, +115,119,105,116, 99,104, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacolorbar_le64w.lo"); +} diff --git a/iup/srclua3/loh/colorbrowser.loh b/iup/srclua3/loh/colorbrowser.loh new file mode 100755 index 0000000..eb3301a --- /dev/null +++ b/iup/srclua3/loh/colorbrowser.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacb.lo"); +*/ +/* ../obj/iupluacontrols3/luacb.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98, + 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11, + 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17, + 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73, + 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7, +112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, + 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, + 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, + 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112, + 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2, + 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67, + 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5, +100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, +100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0, + 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27, +105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97, +110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0, + 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb.lo"); +} diff --git a/iup/srclua3/loh/colorbrowser_be32.loh b/iup/srclua3/loh/colorbrowser_be32.loh new file mode 100755 index 0000000..950ac0b --- /dev/null +++ b/iup/srclua3/loh/colorbrowser_be32.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacb_be32.lo"); +*/ +/* ../obj/iupluacontrols3/luacb_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98, + 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11, + 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17, + 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73, + 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7, +112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, + 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, + 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, + 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112, + 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2, + 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67, + 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5, +100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, +100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0, + 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27, +105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97, +110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0, + 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb_be32.lo"); +} diff --git a/iup/srclua3/loh/colorbrowser_be64.loh b/iup/srclua3/loh/colorbrowser_be64.loh new file mode 100755 index 0000000..e307445 --- /dev/null +++ b/iup/srclua3/loh/colorbrowser_be64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/colorbrowser_be64.lo"); +*/ +/* ../obj/iupluacontrols3/colorbrowser_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 18, 64, 99,111,108,111,114, + 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, + 11, 1, 15, 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, + 7, 11, 8, 15, 5, 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, + 15, 9, 11, 13, 22, 2, 11, 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, + 18, 10, 26, 15, 9, 11, 17, 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 2, 0, 0, 0, 16, 73, 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, + 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80, +101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 18, 64, 99,111, +108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 10, 4, + 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2, 0, 0, 0, 16,105,117, +112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 0, 0, 0, 7, 0, + 0, 0, 18, 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, + 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, + 0, 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, + 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, + 5,100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, + 0, 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, + 95,100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, + 0, 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, + 27,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, + 97,110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, + 0, 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/colorbrowser_be64.lo"); +} diff --git a/iup/srclua3/loh/colorbrowser_le64.loh b/iup/srclua3/loh/colorbrowser_le64.loh new file mode 100755 index 0000000..dbf21d2 --- /dev/null +++ b/iup/srclua3/loh/colorbrowser_le64.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacb_le64.lo"); +*/ +/* ../obj/iupluacontrols3/luacb_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98, + 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11, + 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17, + 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73, + 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7, +112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, + 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, + 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, + 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112, + 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2, + 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67, + 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5, +100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, +100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0, + 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27, +105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97, +110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0, + 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb_le64.lo"); +} diff --git a/iup/srclua3/loh/colorbrowser_le64w.loh b/iup/srclua3/loh/colorbrowser_le64w.loh new file mode 100755 index 0000000..5738bec --- /dev/null +++ b/iup/srclua3/loh/colorbrowser_le64w.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luacb_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luacb_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,108,117, 97, 99, 98, + 46,108,117, 97, 0, 0, 0, 0, 77, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 22, 2, 11, + 14, 15, 15, 29, 0, 2, 26, 15, 9, 11, 16, 15, 9, 18, 10, 26, 15, 9, 11, 17, + 15, 9, 18, 13, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 16, 73, + 85, 80, 67, 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 7, +112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, + 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, + 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, + 0, 0, 0, 0, 10, 4, 2, 15, 1, 13, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 22,105,117,112, + 67,114,101, 97,116,101, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 2, + 0, 0, 0, 16,105,117,112, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,108,117, 97, 99, 98, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 16, 73, 85, 80, 67, + 79, 76, 79, 82, 66, 82, 79, 87, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 13, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5, +100,114, 97,103, 0, 2, 0, 0, 0, 8, 68, 82, 65, 71, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, +100,114, 97,103, 95, 99, 98, 0, 2, 0, 0, 0, 7, 99,104, 97,110,103,101, 0, + 2, 0, 0, 0, 10, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 27, +105,117,112, 95, 99,111,108,111,114, 98,114,111,119,115,101,114, 95, 99,104, 97, +110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0, + 2, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luacb_le64w.lo"); +} diff --git a/iup/srclua3/loh/constants.loh b/iup/srclua3/loh/constants.loh new file mode 100755 index 0000000..c9c3c4b --- /dev/null +++ b/iup/srclua3/loh/constants.loh @@ -0,0 +1,301 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/constants.lo"); +*/ +/* ../obj/iuplua3/constants.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116, + 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,182, 4, 0, 7, 1, 25, 0, 15, + 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25, + 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6, +255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12, + 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15, + 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6, +255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15, + 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11, + 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15, + 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25, + 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9, + 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39, + 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44, + 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1, + 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51, + 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6, + 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26, + 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15, + 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11, + 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15, + 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25, + 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15, + 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15, + 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15, + 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15, + 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15, + 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15, + 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11, + 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86, + 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91, + 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1, + 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98, + 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103, + 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26, + 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15, +108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11, +113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15, + 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25, +120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11, +125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126, + 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131, + 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1, + 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138, + 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143, + 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26, + 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15, +148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11, +153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15, + 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25, +160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11, +165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166, + 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171, + 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1, + 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178, + 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183, + 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26, + 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15, +188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11, +193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15, + 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25, +200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11, +205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206, + 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211, + 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1, + 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218, + 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223, + 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26, + 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15, +228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11, +233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15, + 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25, +240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 15, + 1, 11,244, 11,245, 26, 15, 1, 11,246, 11,247, 26, 15, 1, 11,248, 11,249, 26, + 15, 1, 11,250, 11,251, 26, 15, 1, 11,252, 11,253, 26, 0, 0, 0, 0, 0, 0, + 0, 0,254, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, + 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, 79, 82, 0, 2, 0, + 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 8, + 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 79, 80, 69, + 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 8, 73, 78, + 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, + 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 9, 73, + 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, 70, 84, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 6, 82, 73, + 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, 85, 83, 69, 80, 79, + 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 67, 85, + 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 67, 69, 78, 84, 69, + 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, 78, 84, 69, 82, 80, + 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 84, 79, 80, 0, 2, + 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 66, 79, 84, + 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, + 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, + 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 73, 71, 78, 79, 82, + 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 12, 73, + 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 8, 68, 69, 70, 65, + 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2, + 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 67, + 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85, + 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, 0, 2, 0, 0, 0, + 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 68, 78, 0, + 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, + 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, 85, 80, 0, 2, 0, + 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 7, 83, + 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 79, 83, + 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 12, 73, + 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 8, 83, 66, 68, 82, + 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, 0, 12, 73, 85, 80, + 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72, + 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, 0, 0, 0, 14, 73, + 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 10, 83, 66, + 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, + 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 8, 83, 66, + 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 72, 79, 87, 0, + 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 82, + 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, + 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, + 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 77, 65, 88, 73, 77, + 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, 68, 69, 0, 2, 0, + 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, 68, 0, 2, 0, 0, + 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, 82, 69, 69, 78, 0, + 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, 66, 76, 65, 67, 75, + 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, 0, 7, 89, 69, 76, + 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, 0, 2, 0, 0, 0, + 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, 70, 0, 2, 0, 0, + 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, + 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 80, 80, + 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0, + 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 9, 86, + 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, 80, 95, 72, 79, 82, + 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, + 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, 69, 78, 84, 69, 82, + 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 10, 73, + 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, + 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 65, 84, 79, + 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 12, 73, 85, 80, + 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, 66, 79, 84, 84, 79, + 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, 72, 0, 2, 0, 0, + 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 83, 79, 85, + 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 9, 73, + 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, 83, 84, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, 0, 5, 69, 65, 83, + 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, 0, 0, 0, 3, 78, + 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, 0, 0, 0, 3, 83, + 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, 0, 0, 0, 3, 78, + 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, 0, 0, 0, 3, 83, + 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, 0, 2, 0, 0, 0, + 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 65, 76, 70, 0, + 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 84, + 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 8, 81, 85, + 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 69, 73, 71, 72, 84, + 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 10, 73, + 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, 82, 82, 79, 87, 0, + 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, 0, 0, 0, 5, 66, + 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, + 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0, + 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 9, 82, + 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, + 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 69, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, + 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80, + 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, + 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, + 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 78, 87, 0, + 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, + 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, 0, 0, 0, 14, 73, + 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 10, 82, 69, + 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 77, 79, 86, + 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, + 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, 78, 79, 78, 69, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, 0, 0, 4, 73, 85, + 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, 83, 0, 2, 0, 0, + 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 80, 69, 78, + 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 84, + 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, 0, 0, 0, 13, 73, + 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 9, 82, 69, 83, + 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 79, 80, 69, 78, 72, + 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0, + 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, + 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, + 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, + 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69, + 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, + 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, + 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, + 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, + 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, + 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, + 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, + 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, + 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, + 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20, + 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, + 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, + 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, + 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 52, + 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, + 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73, + 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, + 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, + 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, + 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, + 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, + 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, + 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, + 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, + 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, + 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, + 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, + 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, + 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, + 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, + 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, + 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 16, + 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, + 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, + 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, + 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, + 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, + 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, + 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 52, + 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, + 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, + 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, + 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 13, 84, 73, 77, + 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 16, + 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, + 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, + 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, + 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, + 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, + 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, + 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 16, + 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, + 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, + 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, + 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, + 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 14, 84, 73, + 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 11, 77, 65, 83, + 75, 95, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 24, 91, 43, 47, 45, 93, 63, 40, + 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0, + 0, 12, 77, 65, 83, 75, 95, 85, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 18, 40, + 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0, + 0, 12, 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 40, 91, + 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, + 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 2, + 0, 0, 0, 9, 77, 65, 83, 75, 95, 73, 78, 84, 0, 2, 0, 0, 0, 10, 91, 43, + 47, 45, 93, 63, 47,100, 43, 0, 2, 0, 0, 0, 10, 77, 65, 83, 75, 95, 85, 73, + 78, 84, 0, 2, 0, 0, 0, 4, 47,100, 43, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants.lo"); +} diff --git a/iup/srclua3/loh/constants_be32.loh b/iup/srclua3/loh/constants_be32.loh new file mode 100755 index 0000000..0b6a3a8 --- /dev/null +++ b/iup/srclua3/loh/constants_be32.loh @@ -0,0 +1,289 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/constants_be32.lo"); +*/ +/* ../obj/iuplua3/constants_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116, + 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,147, 4, 0, 7, 1, 25, 0, 15, + 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25, + 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6, +255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12, + 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15, + 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6, +255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15, + 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11, + 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15, + 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25, + 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9, + 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39, + 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44, + 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1, + 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51, + 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6, + 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26, + 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15, + 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11, + 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15, + 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25, + 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15, + 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15, + 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15, + 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15, + 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15, + 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15, + 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11, + 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86, + 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91, + 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1, + 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98, + 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103, + 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26, + 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15, +108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11, +113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15, + 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25, +120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11, +125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126, + 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131, + 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1, + 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138, + 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143, + 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26, + 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15, +148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11, +153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15, + 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25, +160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11, +165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166, + 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171, + 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1, + 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178, + 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183, + 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26, + 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15, +188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11, +193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15, + 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25, +200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11, +205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206, + 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211, + 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1, + 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218, + 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223, + 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26, + 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15, +228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11, +233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15, + 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25, +240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 0, + 0, 0, 0, 0, 0, 0, 0,244, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, + 79, 82, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, + 79, 82, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, + 2, 0, 0, 0, 8, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, + 0, 0, 8, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, + 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, + 70, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, + 0, 0, 6, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, + 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, + 0, 0, 8, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, + 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, + 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 84, 79, 80, 0, 2, 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, + 0, 0, 8, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, + 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, + 0, 0, 8, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, + 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, + 0, 0, 8, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, + 0, 0, 0, 12, 73, 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, + 8, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, + 79, 83, 69, 0, 2, 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, + 73, 85, 80, 95, 67, 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, + 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, + 0, 2, 0, 0, 0, 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, + 83, 66, 68, 78, 0, 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, + 73, 85, 80, 95, 83, 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, + 85, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, + 0, 0, 0, 7, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, + 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, + 8, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, + 76, 69, 70, 84, 0, 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, + 0, 12, 73, 85, 80, 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, + 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, + 76, 69, 70, 84, 0, 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, + 0, 0, 0, 14, 73, 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, + 0, 0, 10, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, + 0, 0, 8, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, + 83, 72, 79, 87, 0, 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, + 73, 85, 80, 95, 82, 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, + 84, 79, 82, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, + 90, 69, 0, 2, 0, 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, + 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, + 68, 69, 0, 2, 0, 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, + 68, 0, 2, 0, 0, 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, + 82, 69, 69, 78, 0, 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, + 66, 76, 65, 67, 75, 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, + 0, 7, 89, 69, 76, 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, + 0, 2, 0, 0, 0, 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, + 70, 0, 2, 0, 0, 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, + 80, 95, 78, 79, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, + 0, 0, 0, 9, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, + 80, 95, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, + 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, + 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, + 76, 69, 70, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, + 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95, 65, 84, 79, 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, + 0, 12, 73, 85, 80, 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, + 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, + 72, 0, 2, 0, 0, 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, + 80, 95, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, + 0, 0, 0, 9, 73, 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, + 83, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, + 0, 5, 69, 65, 83, 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, + 0, 0, 0, 3, 78, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, + 0, 0, 0, 3, 83, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, + 0, 0, 0, 3, 78, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, + 0, 0, 0, 3, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, + 0, 2, 0, 0, 0, 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, + 72, 65, 76, 70, 0, 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, + 73, 85, 80, 95, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, + 0, 0, 8, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, + 82, 82, 79, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, + 0, 0, 0, 5, 66, 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, + 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, + 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, + 80, 95, 82, 69, 83, 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, + 90, 69, 95, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, + 95, 87, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, + 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, + 10, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, + 82, 69, 83, 73, 90, 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, + 69, 95, 78, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, + 95, 83, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, + 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, + 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95, 77, 79, 86, 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, + 0, 9, 73, 85, 80, 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, + 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, + 78, 79, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, + 0, 0, 4, 73, 85, 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, + 83, 0, 2, 0, 0, 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, + 80, 95, 80, 69, 78, 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 95, 84, 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, + 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, + 0, 9, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, + 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, + 78, 68, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, + 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, + 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, + 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, + 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, + 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, + 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, + 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, + 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, + 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, + 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, + 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, + 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, + 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, + 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, + 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, + 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, + 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, + 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, + 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, + 76, 95, 49, 52, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, + 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, + 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, + 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, + 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, + 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, + 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, + 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, + 73, 67, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, + 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, + 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, + 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, + 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, + 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, + 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, + 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, + 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, + 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, + 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, + 76, 95, 49, 50, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, + 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, + 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, + 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, + 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, + 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, + 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, + 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, + 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, + 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, + 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, + 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, + 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, + 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, + 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, + 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, + 0, 13, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, + 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, + 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, + 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, + 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, + 83, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, + 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, + 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, + 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, + 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, + 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, + 95, 49, 50, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, + 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, + 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, + 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, + 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, + 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, + 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_be32.lo"); +} diff --git a/iup/srclua3/loh/constants_be64.loh b/iup/srclua3/loh/constants_be64.loh new file mode 100755 index 0000000..bb31b19 --- /dev/null +++ b/iup/srclua3/loh/constants_be64.loh @@ -0,0 +1,301 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/constants_be64.lo"); +*/ +/* ../obj/iuplua3/constants_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116, + 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,182, 4, 0, 7, 1, 25, 0, 15, + 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25, + 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6, +255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12, + 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15, + 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6, +255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15, + 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11, + 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15, + 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25, + 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9, + 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39, + 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44, + 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1, + 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51, + 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6, + 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26, + 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15, + 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11, + 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15, + 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25, + 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15, + 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15, + 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15, + 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15, + 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15, + 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15, + 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11, + 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86, + 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91, + 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1, + 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98, + 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103, + 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26, + 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15, +108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11, +113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15, + 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25, +120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11, +125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126, + 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131, + 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1, + 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138, + 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143, + 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26, + 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15, +148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11, +153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15, + 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25, +160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11, +165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166, + 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171, + 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1, + 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178, + 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183, + 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26, + 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15, +188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11, +193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15, + 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25, +200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11, +205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206, + 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211, + 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1, + 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218, + 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223, + 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26, + 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15, +228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11, +233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15, + 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25, +240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 15, + 1, 11,244, 11,245, 26, 15, 1, 11,246, 11,247, 26, 15, 1, 11,248, 11,249, 26, + 15, 1, 11,250, 11,251, 26, 15, 1, 11,252, 11,253, 26, 0, 0, 0, 0, 0, 0, + 0, 0,254, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, + 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, 79, 82, 0, 2, 0, + 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 8, + 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 79, 80, 69, + 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 8, 73, 78, + 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, + 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 9, 73, + 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, 70, 84, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 6, 82, 73, + 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, 85, 83, 69, 80, 79, + 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 67, 85, + 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 67, 69, 78, 84, 69, + 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, 78, 84, 69, 82, 80, + 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 84, 79, 80, 0, 2, + 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 66, 79, 84, + 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, + 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, + 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 73, 71, 78, 79, 82, + 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 12, 73, + 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 8, 68, 69, 70, 65, + 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2, + 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 67, + 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85, + 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, 0, 2, 0, 0, 0, + 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 68, 78, 0, + 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, + 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, 85, 80, 0, 2, 0, + 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 7, 83, + 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 79, 83, + 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 12, 73, + 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 8, 83, 66, 68, 82, + 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, 0, 12, 73, 85, 80, + 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72, + 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, 0, 0, 0, 14, 73, + 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 10, 83, 66, + 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, + 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 8, 83, 66, + 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 72, 79, 87, 0, + 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 82, + 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, + 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, + 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 77, 65, 88, 73, 77, + 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, 68, 69, 0, 2, 0, + 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, 68, 0, 2, 0, 0, + 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, 82, 69, 69, 78, 0, + 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, 66, 76, 65, 67, 75, + 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, 0, 7, 89, 69, 76, + 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, 0, 2, 0, 0, 0, + 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, 70, 0, 2, 0, 0, + 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, + 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 80, 80, + 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0, + 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 9, 86, + 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, 80, 95, 72, 79, 82, + 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, + 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, 69, 78, 84, 69, 82, + 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 10, 73, + 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, + 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 65, 84, 79, + 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 12, 73, 85, 80, + 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, 66, 79, 84, 84, 79, + 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, 72, 0, 2, 0, 0, + 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 83, 79, 85, + 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 9, 73, + 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, 83, 84, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, 0, 5, 69, 65, 83, + 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, 0, 0, 0, 3, 78, + 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, 0, 0, 0, 3, 83, + 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, 0, 0, 0, 3, 78, + 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, 0, 0, 0, 3, 83, + 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, 0, 2, 0, 0, 0, + 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 65, 76, 70, 0, + 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 84, + 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 8, 81, 85, + 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 69, 73, 71, 72, 84, + 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 10, 73, + 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, 82, 82, 79, 87, 0, + 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, 0, 0, 0, 5, 66, + 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, + 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0, + 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 9, 82, + 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, + 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 69, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, + 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80, + 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, + 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, + 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 78, 87, 0, + 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, + 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, 0, 0, 0, 14, 73, + 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 10, 82, 69, + 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 77, 79, 86, + 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, + 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, 78, 79, 78, 69, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, 0, 0, 4, 73, 85, + 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, 83, 0, 2, 0, 0, + 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 80, 69, 78, + 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 84, + 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, 0, 0, 0, 13, 73, + 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 9, 82, 69, 83, + 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 79, 80, 69, 78, 72, + 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0, + 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, + 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, + 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, + 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69, + 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, + 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, + 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, + 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, + 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, + 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, + 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, + 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, + 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, + 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20, + 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, + 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, + 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, + 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 52, + 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, + 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73, + 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, + 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, + 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, + 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, + 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, + 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, + 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, + 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, + 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, + 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, + 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, + 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, + 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, + 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, + 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, + 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 16, + 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, + 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, + 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, + 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, + 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, + 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, + 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 52, + 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, + 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, + 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, + 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 13, 84, 73, 77, + 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 16, + 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, + 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, + 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, + 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, + 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, + 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, + 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 16, + 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, + 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, + 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, + 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, + 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 14, 84, 73, + 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 11, 77, 65, 83, + 75, 95, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 24, 91, 43, 47, 45, 93, 63, 40, + 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0, + 0, 12, 77, 65, 83, 75, 95, 85, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 18, 40, + 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0, + 0, 12, 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 40, 91, + 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, + 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 2, + 0, 0, 0, 9, 77, 65, 83, 75, 95, 73, 78, 84, 0, 2, 0, 0, 0, 10, 91, 43, + 47, 45, 93, 63, 47,100, 43, 0, 2, 0, 0, 0, 10, 77, 65, 83, 75, 95, 85, 73, + 78, 84, 0, 2, 0, 0, 0, 4, 47,100, 43, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_be64.lo"); +} diff --git a/iup/srclua3/loh/constants_le64.loh b/iup/srclua3/loh/constants_le64.loh new file mode 100755 index 0000000..54ece5d --- /dev/null +++ b/iup/srclua3/loh/constants_le64.loh @@ -0,0 +1,289 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/constants_le64.lo"); +*/ +/* ../obj/iuplua3/constants_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116, + 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,147, 4, 0, 7, 1, 25, 0, 15, + 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25, + 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6, +255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12, + 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15, + 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6, +255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15, + 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11, + 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15, + 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25, + 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9, + 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39, + 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44, + 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1, + 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51, + 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6, + 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26, + 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15, + 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11, + 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15, + 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25, + 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15, + 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15, + 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15, + 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15, + 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15, + 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15, + 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11, + 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86, + 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91, + 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1, + 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98, + 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103, + 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26, + 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15, +108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11, +113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15, + 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25, +120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11, +125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126, + 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131, + 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1, + 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138, + 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143, + 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26, + 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15, +148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11, +153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15, + 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25, +160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11, +165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166, + 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171, + 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1, + 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178, + 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183, + 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26, + 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15, +188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11, +193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15, + 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25, +200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11, +205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206, + 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211, + 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1, + 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218, + 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223, + 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26, + 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15, +228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11, +233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15, + 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25, +240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 0, + 0, 0, 0, 0, 0, 0, 0,244, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, + 79, 82, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, + 79, 82, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, + 2, 0, 0, 0, 8, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, + 0, 0, 8, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, + 0, 0, 0, 9, 73, 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, + 70, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, + 0, 0, 6, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, + 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, + 0, 0, 8, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, + 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, + 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 84, 79, 80, 0, 2, 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, + 0, 0, 8, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, + 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, + 0, 0, 8, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, + 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, + 0, 0, 8, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, + 0, 0, 0, 12, 73, 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, + 8, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, + 79, 83, 69, 0, 2, 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, + 73, 85, 80, 95, 67, 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, + 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, + 0, 2, 0, 0, 0, 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, + 83, 66, 68, 78, 0, 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, + 73, 85, 80, 95, 83, 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, + 85, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, + 0, 0, 0, 7, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, + 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, + 8, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, + 76, 69, 70, 84, 0, 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, + 0, 12, 73, 85, 80, 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, + 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, + 76, 69, 70, 84, 0, 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, + 0, 0, 0, 14, 73, 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, + 0, 0, 10, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, + 0, 0, 8, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, + 83, 72, 79, 87, 0, 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, + 73, 85, 80, 95, 82, 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, + 84, 79, 82, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, + 90, 69, 0, 2, 0, 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, + 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, + 68, 69, 0, 2, 0, 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, + 68, 0, 2, 0, 0, 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, + 82, 69, 69, 78, 0, 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, + 66, 76, 65, 67, 75, 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, + 0, 7, 89, 69, 76, 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, + 0, 2, 0, 0, 0, 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, + 70, 0, 2, 0, 0, 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, + 80, 95, 78, 79, 0, 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 95, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, + 0, 0, 0, 9, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, + 80, 95, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, + 82, 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, + 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, + 76, 69, 70, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, + 0, 2, 0, 0, 0, 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95, 65, 84, 79, 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, + 0, 12, 73, 85, 80, 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, + 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, + 72, 0, 2, 0, 0, 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, + 80, 95, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, + 0, 0, 0, 9, 73, 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, + 83, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, + 0, 5, 69, 65, 83, 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, + 0, 0, 0, 3, 78, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, + 0, 0, 0, 3, 83, 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, + 0, 0, 0, 3, 78, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, + 0, 0, 0, 3, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, + 0, 2, 0, 0, 0, 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, + 72, 65, 76, 70, 0, 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, + 73, 85, 80, 95, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, + 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, + 0, 0, 8, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, + 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, + 82, 82, 79, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, + 0, 0, 0, 5, 66, 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, + 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, + 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, + 80, 95, 82, 69, 83, 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, + 90, 69, 95, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, + 95, 87, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, + 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, + 10, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, + 82, 69, 83, 73, 90, 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, + 69, 95, 78, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, + 95, 83, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, + 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, + 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95, 77, 79, 86, 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, + 0, 9, 73, 85, 80, 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, + 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, + 78, 79, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, + 0, 0, 4, 73, 85, 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, + 83, 0, 2, 0, 0, 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, + 80, 95, 80, 69, 78, 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 95, 84, 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, + 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, + 0, 9, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, + 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, + 78, 68, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, + 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, + 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, + 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, + 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, + 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, + 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, + 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, + 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, + 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, + 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, + 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, + 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, + 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, + 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, + 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, + 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, + 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, + 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, + 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, + 76, 95, 49, 52, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, + 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, + 0, 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, + 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, + 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, + 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, + 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, + 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, + 73, 67, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, + 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, + 82, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, + 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, + 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, + 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, + 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, + 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, + 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, + 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, + 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, + 76, 95, 49, 50, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, + 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, + 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, + 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, + 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, + 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, + 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, + 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, + 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, + 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, + 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, + 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, + 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, + 83, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, + 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, + 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, + 0, 13, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, + 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, + 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, + 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, + 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, + 83, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, + 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, + 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, + 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, + 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, + 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, + 95, 49, 50, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, + 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, + 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, + 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, + 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, + 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, + 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, + 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_le64.lo"); +} diff --git a/iup/srclua3/loh/constants_le64w.loh b/iup/srclua3/loh/constants_le64w.loh new file mode 100755 index 0000000..6e7ed93 --- /dev/null +++ b/iup/srclua3/loh/constants_le64w.loh @@ -0,0 +1,301 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/constants_le64w.lo"); +*/ +/* ../obj/iuplua3/constants_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,115,116, + 97,110,116,115, 46,108,117, 97, 0, 0, 0, 5,182, 4, 0, 7, 1, 25, 0, 15, + 1, 11, 2, 15, 0, 26, 7, 0, 25, 3, 15, 1, 11, 4, 15, 3, 26, 9, 1, 25, + 5, 15, 1, 11, 6, 15, 5, 26, 9, 1, 25, 7, 15, 1, 11, 8, 15, 7, 26, 6, +255,255, 25, 9, 15, 1, 11, 10, 15, 9, 26, 6,255,254, 25, 11, 15, 1, 11, 12, + 15, 11, 26, 6,255,253, 25, 13, 15, 1, 11, 14, 15, 13, 26, 6,255,252, 25, 15, + 15, 1, 11, 16, 15, 15, 26, 6,255,251, 25, 17, 15, 1, 11, 18, 15, 17, 26, 6, +255,250, 25, 19, 15, 1, 11, 20, 15, 19, 26, 15, 11, 25, 21, 15, 1, 11, 22, 15, + 21, 26, 15, 13, 25, 23, 15, 1, 11, 24, 15, 23, 26, 7, 49, 25, 25, 15, 1, 11, + 26, 15, 25, 26, 7, 50, 25, 27, 15, 1, 11, 28, 15, 27, 26, 7, 51, 25, 29, 15, + 1, 11, 30, 15, 29, 26, 7, 52, 25, 31, 15, 1, 11, 32, 15, 31, 26, 7, 53, 25, + 33, 15, 1, 11, 34, 15, 33, 26, 9, 1, 25, 35, 15, 1, 11, 36, 15, 35, 26, 9, + 2, 25, 37, 15, 1, 11, 38, 15, 37, 26, 9, 3, 25, 39, 15, 1, 11, 40, 15, 39, + 26, 9, 4, 25, 41, 15, 1, 11, 42, 15, 41, 26, 7, 0, 25, 43, 15, 1, 11, 44, + 15, 43, 26, 7, 1, 25, 45, 15, 1, 11, 46, 15, 45, 26, 7, 2, 25, 47, 15, 1, + 11, 48, 15, 47, 26, 7, 3, 25, 49, 15, 1, 11, 50, 15, 49, 26, 7, 4, 25, 51, + 15, 1, 11, 52, 15, 51, 26, 7, 5, 25, 53, 15, 1, 11, 54, 15, 53, 26, 7, 6, + 25, 55, 15, 1, 11, 56, 15, 55, 26, 7, 7, 25, 57, 15, 1, 11, 58, 15, 57, 26, + 7, 8, 25, 59, 15, 1, 11, 60, 15, 59, 26, 7, 9, 25, 61, 15, 1, 11, 62, 15, + 61, 26, 7, 10, 25, 63, 15, 1, 11, 64, 15, 63, 26, 7, 11, 25, 65, 15, 1, 11, + 66, 15, 65, 26, 7, 0, 25, 67, 15, 1, 11, 68, 15, 67, 26, 7, 1, 25, 69, 15, + 1, 11, 70, 15, 69, 26, 7, 2, 25, 71, 15, 1, 11, 72, 15, 71, 26, 7, 3, 25, + 73, 15, 1, 11, 74, 15, 73, 26, 7, 4, 25, 75, 15, 1, 11, 76, 15, 75, 26, 15, + 78, 7, 1, 7, 0, 7, 0, 2, 1, 3, 25, 77, 15, 1, 11, 77, 15, 77, 26, 15, + 78, 7, 0, 7, 1, 7, 0, 2, 1, 3, 25, 79, 15, 1, 11, 79, 15, 79, 26, 15, + 78, 7, 0, 7, 0, 7, 1, 2, 1, 3, 25, 80, 15, 1, 11, 80, 15, 80, 26, 15, + 78, 7, 0, 7, 0, 7, 0, 2, 1, 3, 25, 81, 15, 1, 11, 81, 15, 81, 26, 15, + 78, 7, 1, 7, 1, 7, 1, 2, 1, 3, 25, 82, 15, 1, 11, 82, 15, 82, 26, 15, + 78, 7, 1, 7, 1, 7, 0, 2, 1, 3, 25, 83, 15, 1, 11, 83, 15, 83, 26, 11, + 85, 25, 84, 15, 1, 11, 85, 15, 84, 26, 11, 87, 25, 86, 15, 1, 11, 87, 15, 86, + 26, 11, 89, 25, 88, 15, 1, 11, 89, 15, 88, 26, 11, 91, 25, 90, 15, 1, 11, 91, + 15, 90, 26, 11, 93, 25, 92, 15, 1, 11, 93, 15, 92, 26, 11, 95, 25, 94, 15, 1, + 11, 95, 15, 94, 26, 11, 97, 25, 96, 15, 1, 11, 97, 15, 96, 26, 11, 99, 25, 98, + 15, 1, 11, 99, 15, 98, 26, 11,101, 25,100, 15, 1, 11,101, 15,100, 26, 11,103, + 25,102, 15, 1, 11,103, 15,102, 26, 11,105, 25,104, 15, 1, 11,105, 15,104, 26, + 11,107, 25,106, 15, 1, 11,107, 15,106, 26, 11,109, 25,108, 15, 1, 11,109, 15, +108, 26, 11,111, 25,110, 15, 1, 11,111, 15,110, 26, 11,113, 25,112, 15, 1, 11, +113, 15,112, 26, 11,115, 25,114, 15, 1, 11,115, 15,114, 26, 11,117, 25,116, 15, + 1, 11,117, 15,116, 26, 11,119, 25,118, 15, 1, 11,119, 15,118, 26, 11,121, 25, +120, 15, 1, 11,121, 15,120, 26, 11,123, 25,122, 15, 1, 11,123, 15,122, 26, 11, +125, 25,124, 15, 1, 11,125, 15,124, 26, 11,127, 25,126, 15, 1, 11,127, 15,126, + 26, 11,129, 25,128, 15, 1, 11,129, 15,128, 26, 11,131, 25,130, 15, 1, 11,131, + 15,130, 26, 11,133, 25,132, 15, 1, 11,133, 15,132, 26, 11,135, 25,134, 15, 1, + 11,135, 15,134, 26, 11,137, 25,136, 15, 1, 11,137, 15,136, 26, 11,139, 25,138, + 15, 1, 11,139, 15,138, 26, 11,141, 25,140, 15, 1, 11,141, 15,140, 26, 11,143, + 25,142, 15, 1, 11,143, 15,142, 26, 11,145, 25,144, 15, 1, 11,145, 15,144, 26, + 11,147, 25,146, 15, 1, 11,147, 15,146, 26, 11,149, 25,148, 15, 1, 11,149, 15, +148, 26, 11,151, 25,150, 15, 1, 11,151, 15,150, 26, 11,153, 25,152, 15, 1, 11, +153, 15,152, 26, 11,155, 25,154, 15, 1, 11,155, 15,154, 26, 11,157, 25,156, 15, + 1, 11,157, 15,156, 26, 11,159, 25,158, 15, 1, 11,159, 15,158, 26, 11,161, 25, +160, 15, 1, 11,161, 15,160, 26, 11,163, 25,162, 15, 1, 11,163, 15,162, 26, 11, +165, 25,164, 15, 1, 11,165, 15,164, 26, 11,167, 25,166, 15, 1, 11,167, 15,166, + 26, 11,169, 25,168, 15, 1, 11,169, 15,168, 26, 11,171, 25,170, 15, 1, 11,171, + 15,170, 26, 11,173, 25,172, 15, 1, 11,173, 15,172, 26, 11,175, 25,174, 15, 1, + 11,175, 15,174, 26, 11,177, 25,176, 15, 1, 11,177, 15,176, 26, 11,179, 25,178, + 15, 1, 11,179, 15,178, 26, 11,181, 25,180, 15, 1, 11,181, 15,180, 26, 11,183, + 25,182, 15, 1, 11,183, 15,182, 26, 11,185, 25,184, 15, 1, 11,185, 15,184, 26, + 11,187, 25,186, 15, 1, 11,187, 15,186, 26, 11,189, 25,188, 15, 1, 11,189, 15, +188, 26, 11,191, 25,190, 15, 1, 11,191, 15,190, 26, 11,193, 25,192, 15, 1, 11, +193, 15,192, 26, 11,195, 25,194, 15, 1, 11,195, 15,194, 26, 11,197, 25,196, 15, + 1, 11,197, 15,196, 26, 11,199, 25,198, 15, 1, 11,199, 15,198, 26, 11,201, 25, +200, 15, 1, 11,201, 15,200, 26, 11,203, 25,202, 15, 1, 11,203, 15,202, 26, 11, +205, 25,204, 15, 1, 11,205, 15,204, 26, 11,207, 25,206, 15, 1, 11,207, 15,206, + 26, 11,209, 25,208, 15, 1, 11,209, 15,208, 26, 11,211, 25,210, 15, 1, 11,211, + 15,210, 26, 11,213, 25,212, 15, 1, 11,213, 15,212, 26, 11,215, 25,214, 15, 1, + 11,215, 15,214, 26, 11,217, 25,216, 15, 1, 11,217, 15,216, 26, 11,219, 25,218, + 15, 1, 11,219, 15,218, 26, 11,221, 25,220, 15, 1, 11,221, 15,220, 26, 11,223, + 25,222, 15, 1, 11,223, 15,222, 26, 11,225, 25,224, 15, 1, 11,225, 15,224, 26, + 11,227, 25,226, 15, 1, 11,227, 15,226, 26, 11,229, 25,228, 15, 1, 11,229, 15, +228, 26, 11,231, 25,230, 15, 1, 11,231, 15,230, 26, 11,233, 25,232, 15, 1, 11, +233, 15,232, 26, 11,235, 25,234, 15, 1, 11,235, 15,234, 26, 11,237, 25,236, 15, + 1, 11,237, 15,236, 26, 11,239, 25,238, 15, 1, 11,239, 15,238, 26, 11,241, 25, +240, 15, 1, 11,241, 15,240, 26, 11,243, 25,242, 15, 1, 11,243, 15,242, 26, 15, + 1, 11,244, 11,245, 26, 15, 1, 11,246, 11,247, 26, 15, 1, 11,248, 11,249, 26, + 15, 1, 11,250, 11,251, 26, 15, 1, 11,252, 11,253, 26, 0, 0, 0, 0, 0, 0, + 0, 0,254, 2, 0, 0, 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, + 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6, 69, 82, 82, 79, 82, 0, 2, 0, + 0, 0, 12, 73, 85, 80, 95, 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 8, + 78, 79, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 79, 80, 69, + 78, 69, 68, 0, 2, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 73, 78, 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 8, 73, 78, + 86, 65, 76, 73, 68, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 67, 69, 78, 84, 69, + 82, 0, 2, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 9, 73, + 85, 80, 95, 76, 69, 70, 84, 0, 2, 0, 0, 0, 5, 76, 69, 70, 84, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 95, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 6, 82, 73, + 71, 72, 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 79, 85, 83, 69, 80, 79, + 83, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 67, 85, 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 67, 85, + 82, 82, 69, 78, 84, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 67, 69, 78, 84, 69, + 82, 80, 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 13, 67, 69, 78, 84, 69, 82, 80, + 65, 82, 69, 78, 84, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 84, 79, 80, 0, 2, + 0, 0, 0, 4, 84, 79, 80, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 66, 79, 84, + 84, 79, 77, 0, 2, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 49, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, + 78, 50, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 51, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, + 78, 52, 0, 2, 0, 0, 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 66, 85, 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 8, 66, 85, + 84, 84, 79, 78, 53, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 73, 71, 78, 79, 82, + 69, 0, 2, 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 2, 0, 0, 0, 12, 73, + 85, 80, 95, 68, 69, 70, 65, 85, 76, 84, 0, 2, 0, 0, 0, 8, 68, 69, 70, 65, + 85, 76, 84, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 76, 79, 83, 69, 0, 2, + 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 67, + 79, 78, 84, 73, 78, 85, 69, 0, 2, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85, + 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 85, 80, 0, 2, 0, 0, 0, + 5, 83, 66, 85, 80, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 66, 68, 78, 0, + 2, 0, 0, 0, 5, 83, 66, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, + 66, 80, 71, 85, 80, 0, 2, 0, 0, 0, 7, 83, 66, 80, 71, 85, 80, 0, 2, 0, + 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 7, 83, + 66, 80, 71, 68, 78, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, 79, 83, + 86, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 2, 0, 0, 0, 12, 73, + 85, 80, 95, 83, 66, 68, 82, 65, 71, 86, 0, 2, 0, 0, 0, 8, 83, 66, 68, 82, + 65, 71, 86, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 2, 0, 0, 0, 12, 73, 85, 80, + 95, 83, 66, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72, + 84, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 83, 66, 80, 71, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 2, 0, 0, 0, 14, 73, + 85, 80, 95, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 10, 83, 66, + 80, 71, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 83, 66, 80, + 79, 83, 72, 0, 2, 0, 0, 0, 7, 83, 66, 80, 79, 83, 72, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 83, 66, 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 8, 83, 66, + 68, 82, 65, 71, 72, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 83, 72, 79, 87, 0, + 2, 0, 0, 0, 5, 83, 72, 79, 87, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 82, + 69, 83, 84, 79, 82, 69, 0, 2, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 95, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, + 0, 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 13, 73, 85, 80, + 95, 77, 65, 88, 73, 77, 73, 90, 69, 0, 2, 0, 0, 0, 9, 77, 65, 88, 73, 77, + 73, 90, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 73, 68, 69, 0, 2, 0, + 0, 0, 5, 72, 73, 68, 69, 0, 2, 0, 0, 0, 4, 82, 69, 68, 0, 2, 0, 0, + 0, 7, 73,117,112, 82, 71, 66, 0, 2, 0, 0, 0, 6, 71, 82, 69, 69, 78, 0, + 2, 0, 0, 0, 5, 66, 76, 85, 69, 0, 2, 0, 0, 0, 6, 66, 76, 65, 67, 75, + 0, 2, 0, 0, 0, 6, 87, 72, 73, 84, 69, 0, 2, 0, 0, 0, 7, 89, 69, 76, + 76, 79, 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 79, 78, 0, 2, 0, 0, 0, + 3, 79, 78, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 79, 70, 70, 0, 2, 0, 0, + 0, 4, 79, 70, 70, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, 69, 83, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 79, 0, + 2, 0, 0, 0, 3, 78, 79, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 80, 80, + 69, 78, 68, 0, 2, 0, 0, 0, 7, 65, 80, 80, 69, 78, 68, 0, 2, 0, 0, 0, + 13, 73, 85, 80, 95, 86, 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 9, 86, + 69, 82, 84, 73, 67, 65, 76, 0, 2, 0, 0, 0, 15, 73, 85, 80, 95, 72, 79, 82, + 73, 90, 79, 78, 84, 65, 76, 0, 2, 0, 0, 0, 11, 72, 79, 82, 73, 90, 79, 78, + 84, 65, 76, 0, 2, 0, 0, 0, 12, 73, 85, 80, 95, 65, 67, 69, 78, 84, 69, 82, + 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 10, 73, + 85, 80, 95, 65, 76, 69, 70, 84, 0, 2, 0, 0, 0, 6, 65, 76, 69, 70, 84, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, + 7, 65, 82, 73, 71, 72, 84, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 65, 84, 79, + 80, 0, 2, 0, 0, 0, 5, 65, 84, 79, 80, 0, 2, 0, 0, 0, 12, 73, 85, 80, + 95, 65, 66, 79, 84, 84, 79, 77, 0, 2, 0, 0, 0, 8, 65, 66, 79, 84, 84, 79, + 77, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 78, 79, 82, 84, 72, 0, 2, 0, 0, + 0, 6, 78, 79, 82, 84, 72, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 83, 79, 85, + 84, 72, 0, 2, 0, 0, 0, 6, 83, 79, 85, 84, 72, 0, 2, 0, 0, 0, 9, 73, + 85, 80, 95, 87, 69, 83, 84, 0, 2, 0, 0, 0, 5, 87, 69, 83, 84, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95, 69, 65, 83, 84, 0, 2, 0, 0, 0, 5, 69, 65, 83, + 84, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 69, 0, 2, 0, 0, 0, 3, 78, + 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 69, 0, 2, 0, 0, 0, 3, 83, + 69, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 78, 87, 0, 2, 0, 0, 0, 3, 78, + 87, 0, 2, 0, 0, 0, 7, 73, 85, 80, 95, 83, 87, 0, 2, 0, 0, 0, 3, 83, + 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 70, 85, 76, 76, 0, 2, 0, 0, 0, + 5, 70, 85, 76, 76, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 72, 65, 76, 70, 0, + 2, 0, 0, 0, 5, 72, 65, 76, 70, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 84, + 72, 73, 82, 68, 0, 2, 0, 0, 0, 6, 84, 72, 73, 82, 68, 0, 2, 0, 0, 0, + 12, 73, 85, 80, 95, 81, 85, 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 8, 81, 85, + 65, 82, 84, 69, 82, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, 69, 73, 71, 72, 84, + 72, 0, 2, 0, 0, 0, 7, 69, 73, 71, 72, 84, 72, 0, 2, 0, 0, 0, 10, 73, + 85, 80, 95, 65, 82, 82, 79, 87, 0, 2, 0, 0, 0, 6, 65, 82, 82, 79, 87, 0, + 2, 0, 0, 0, 9, 73, 85, 80, 95, 66, 85, 83, 89, 0, 2, 0, 0, 0, 5, 66, + 85, 83, 89, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, + 78, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 78, 0, 2, 0, 0, 0, + 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 9, 82, + 69, 83, 73, 90, 69, 95, 83, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, + 73, 90, 69, 95, 69, 0, 2, 0, 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 69, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, + 0, 0, 9, 82, 69, 83, 73, 90, 69, 95, 87, 0, 2, 0, 0, 0, 14, 73, 85, 80, + 95, 82, 69, 83, 73, 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, + 90, 69, 95, 78, 69, 0, 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, + 69, 95, 78, 87, 0, 2, 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 78, 87, 0, + 2, 0, 0, 0, 14, 73, 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, + 0, 0, 0, 10, 82, 69, 83, 73, 90, 69, 95, 83, 69, 0, 2, 0, 0, 0, 14, 73, + 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 10, 82, 69, + 83, 73, 90, 69, 95, 83, 87, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 77, 79, 86, + 69, 0, 2, 0, 0, 0, 5, 77, 79, 86, 69, 0, 2, 0, 0, 0, 9, 73, 85, 80, + 95, 72, 65, 78, 68, 0, 2, 0, 0, 0, 5, 72, 65, 78, 68, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 95, 78, 79, 78, 69, 0, 2, 0, 0, 0, 5, 78, 79, 78, 69, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 95, 73, 85, 80, 0, 2, 0, 0, 0, 4, 73, 85, + 80, 0, 2, 0, 0, 0, 10, 73, 85, 80, 95, 67, 82, 79, 83, 83, 0, 2, 0, 0, + 0, 6, 67, 82, 79, 83, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 80, 69, 78, + 0, 2, 0, 0, 0, 4, 80, 69, 78, 0, 2, 0, 0, 0, 9, 73, 85, 80, 95, 84, + 69, 88, 84, 0, 2, 0, 0, 0, 5, 84, 69, 88, 84, 0, 2, 0, 0, 0, 13, 73, + 85, 80, 95, 82, 69, 83, 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 9, 82, 69, 83, + 73, 90, 69, 95, 67, 0, 2, 0, 0, 0, 13, 73, 85, 80, 95, 79, 80, 69, 78, 72, + 65, 78, 68, 0, 2, 0, 0, 0, 9, 79, 80, 69, 78, 72, 65, 78, 68, 0, 2, 0, + 0, 0, 23, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 23, 73, 85, 80, 95, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, + 0, 0, 19, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, + 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 17, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, + 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, + 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, + 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, 0, 0, 20, 72, 69, + 76, 86, 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, 0, 2, 0, + 0, 0, 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, + 68, 95, 49, 48, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, + 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, + 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, + 0, 20, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, + 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, + 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, + 69, 84, 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 22, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, + 49, 50, 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, + 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, + 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 20, + 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 78, 79, 82, 77, 65, 76, 95, 49, 52, 0, + 2, 0, 0, 0, 24, 73, 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 20, 72, 69, 76, 86, 69, 84, + 73, 67, 65, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, + 85, 80, 95, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, 95, 49, 52, + 0, 2, 0, 0, 0, 18, 72, 69, 76, 86, 69, 84, 73, 67, 65, 95, 66, 79, 76, 68, + 95, 49, 52, 0, 2, 0, 0, 0, 21, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 17, 67, 79, 85, 82, 73, + 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 21, 73, 85, 80, + 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, + 0, 0, 17, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, + 2, 0, 0, 0, 19, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, + 68, 95, 56, 0, 2, 0, 0, 0, 15, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, + 68, 95, 56, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, + 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, + 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, + 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, + 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, + 82, 95, 66, 79, 76, 68, 95, 49, 48, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, + 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, + 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, + 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 73, 84, 65, + 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, + 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 67, + 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, 16, + 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, 0, 0, + 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, 65, 76, 95, + 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, 85, 82, 73, 69, 82, 95, 78, 79, 82, 77, + 65, 76, 95, 49, 52, 0, 2, 0, 0, 0, 22, 73, 85, 80, 95, 67, 79, 85, 82, 73, + 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 67, 79, + 85, 82, 73, 69, 82, 95, 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, + 20, 73, 85, 80, 95, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, 52, + 0, 2, 0, 0, 0, 16, 67, 79, 85, 82, 73, 69, 82, 95, 66, 79, 76, 68, 95, 49, + 52, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, 95, 78, 79, 82, + 77, 65, 76, 95, 56, 0, 2, 0, 0, 0, 19, 73, 85, 80, 95, 84, 73, 77, 69, 83, + 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 15, 84, 73, 77, 69, 83, + 95, 73, 84, 65, 76, 73, 67, 95, 56, 0, 2, 0, 0, 0, 17, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 13, 84, 73, 77, + 69, 83, 95, 66, 79, 76, 68, 95, 56, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, 16, + 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, 49, 48, 0, 2, 0, 0, 0, + 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 48, + 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, + 48, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, + 68, 95, 49, 48, 0, 2, 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, + 95, 49, 48, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, + 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, + 78, 79, 82, 77, 65, 76, 95, 49, 50, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, 16, + 84, 73, 77, 69, 83, 95, 73, 84, 65, 76, 73, 67, 95, 49, 50, 0, 2, 0, 0, 0, + 18, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, + 0, 0, 0, 14, 84, 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 50, 0, 2, 0, + 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, 95, + 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, 78, 79, 82, 77, 65, 76, + 95, 49, 52, 0, 2, 0, 0, 0, 20, 73, 85, 80, 95, 84, 73, 77, 69, 83, 95, 73, + 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 16, 84, 73, 77, 69, 83, 95, + 73, 84, 65, 76, 73, 67, 95, 49, 52, 0, 2, 0, 0, 0, 18, 73, 85, 80, 95, 84, + 73, 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 14, 84, 73, + 77, 69, 83, 95, 66, 79, 76, 68, 95, 49, 52, 0, 2, 0, 0, 0, 11, 77, 65, 83, + 75, 95, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 24, 91, 43, 47, 45, 93, 63, 40, + 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0, + 0, 12, 77, 65, 83, 75, 95, 85, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 18, 40, + 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 2, 0, 0, + 0, 12, 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 2, 0, 0, 0, 40, 91, + 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, + 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 2, + 0, 0, 0, 9, 77, 65, 83, 75, 95, 73, 78, 84, 0, 2, 0, 0, 0, 10, 91, 43, + 47, 45, 93, 63, 47,100, 43, 0, 2, 0, 0, 0, 10, 77, 65, 83, 75, 95, 85, 73, + 78, 84, 0, 2, 0, 0, 0, 4, 47,100, 43, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/constants_le64w.lo"); +} diff --git a/iup/srclua3/loh/dial.loh b/iup/srclua3/loh/dial.loh new file mode 100755 index 0000000..f1811dd --- /dev/null +++ b/iup/srclua3/loh/dial.loh @@ -0,0 +1,31 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luadial.lo"); +*/ +/* ../obj/iupluacontrols3/luadial.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105, + 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, + 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, + 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, + 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117, +112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100, +105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108, +108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118, +101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101, +109,111,118,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial.lo"); +} diff --git a/iup/srclua3/loh/dial_be32.loh b/iup/srclua3/loh/dial_be32.loh new file mode 100755 index 0000000..8a2e8ed --- /dev/null +++ b/iup/srclua3/loh/dial_be32.loh @@ -0,0 +1,31 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luadial_be32.lo"); +*/ +/* ../obj/iupluacontrols3/luadial_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105, + 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, + 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, + 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, + 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117, +112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100, +105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108, +108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118, +101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101, +109,111,118,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial_be32.lo"); +} diff --git a/iup/srclua3/loh/dial_be64.loh b/iup/srclua3/loh/dial_be64.loh new file mode 100755 index 0000000..d6a30c1 --- /dev/null +++ b/iup/srclua3/loh/dial_be64.loh @@ -0,0 +1,30 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/dial_be64.lo"); +*/ +/* ../obj/iupluacontrols3/dial_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,100,105, 97,108, 46, +108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, + 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, + 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, + 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114, +101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, + 0, 0, 0, 10, 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, + 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117,112,100,105, 97,108, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,100,105, 97,108, 46,108,117, 97, 0, 0, + 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 68, 73, + 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,100,105, 97,108, 0, 2, + 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, + 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117, +112, 95,118, 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/dial_be64.lo"); +} diff --git a/iup/srclua3/loh/dial_le64.loh b/iup/srclua3/loh/dial_le64.loh new file mode 100755 index 0000000..e68eb83 --- /dev/null +++ b/iup/srclua3/loh/dial_le64.loh @@ -0,0 +1,31 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luadial_le64.lo"); +*/ +/* ../obj/iupluacontrols3/luadial_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105, + 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, + 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, + 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, + 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117, +112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100, +105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108, +108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118, +101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101, +109,111,118,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial_le64.lo"); +} diff --git a/iup/srclua3/loh/dial_le64w.loh b/iup/srclua3/loh/dial_le64w.loh new file mode 100755 index 0000000..ace3d04 --- /dev/null +++ b/iup/srclua3/loh/dial_le64w.loh @@ -0,0 +1,31 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luadial_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luadial_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,100,105, + 97,108, 46,108,117, 97, 0, 0, 0, 0, 40, 3, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, + 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, + 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, + 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,100,105, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 68,105, 97,108, 0, 2, 0, 0, 0, 8,105,117, +112,100,105, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,100, +105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 68, 73, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, + 0, 0, 5,100,105, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108, +108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111,118, +101, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101, +109,111,118,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luadial_le64w.lo"); +} diff --git a/iup/srclua3/loh/gauge.loh b/iup/srclua3/loh/gauge.loh new file mode 100755 index 0000000..f4f22bf --- /dev/null +++ b/iup/srclua3/loh/gauge.loh @@ -0,0 +1,28 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luagauge.lo"); +*/ +/* ../obj/iupluacontrols3/luagauge.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97, +117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, + 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, + 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, + 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, + 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117, +103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103, +101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge.lo"); +} diff --git a/iup/srclua3/loh/gauge_be32.loh b/iup/srclua3/loh/gauge_be32.loh new file mode 100755 index 0000000..c4ef637 --- /dev/null +++ b/iup/srclua3/loh/gauge_be32.loh @@ -0,0 +1,28 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luagauge_be32.lo"); +*/ +/* ../obj/iupluacontrols3/luagauge_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97, +117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, + 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, + 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, + 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, + 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117, +103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103, +101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge_be32.lo"); +} diff --git a/iup/srclua3/loh/gauge_be64.loh b/iup/srclua3/loh/gauge_be64.loh new file mode 100755 index 0000000..99ce14d --- /dev/null +++ b/iup/srclua3/loh/gauge_be64.loh @@ -0,0 +1,27 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/gauge_be64.lo"); +*/ +/* ../obj/iupluacontrols3/gauge_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,103, 97,117,103,101, + 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71, 65, 85, 71, + 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80, +101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 11, 64,103, 97, +117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117,103,101, 0, 2, 0, 0, + 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0, 0, 7, 0, 0, 0, 11, + 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, + 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71, 65, 85, 71, 69, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117, +112, 0, 2, 0, 0, 0, 6,103, 97,117,103,101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/gauge_be64.lo"); +} diff --git a/iup/srclua3/loh/gauge_le64.loh b/iup/srclua3/loh/gauge_le64.loh new file mode 100755 index 0000000..5c3803c --- /dev/null +++ b/iup/srclua3/loh/gauge_le64.loh @@ -0,0 +1,28 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luagauge_le64.lo"); +*/ +/* ../obj/iupluacontrols3/luagauge_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97, +117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, + 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, + 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, + 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, + 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117, +103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103, +101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge_le64.lo"); +} diff --git a/iup/srclua3/loh/gauge_le64w.loh b/iup/srclua3/loh/gauge_le64w.loh new file mode 100755 index 0000000..7aeedac --- /dev/null +++ b/iup/srclua3/loh/gauge_le64w.loh @@ -0,0 +1,28 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luagauge_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luagauge_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,103, 97, +117,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, + 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, + 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, + 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, + 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 71, 97,117, +103,101, 0, 2, 0, 0, 0, 9,105,117,112,103, 97,117,103,101, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 14, 64,108,117, 97,103, 97,117,103,101, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 71, + 65, 85, 71, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,103, 97,117,103, +101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luagauge_le64w.lo"); +} diff --git a/iup/srclua3/loh/iuplua.loh b/iup/srclua3/loh/iuplua.loh new file mode 100755 index 0000000..d55bd40 --- /dev/null +++ b/iup/srclua3/loh/iuplua.loh @@ -0,0 +1,170 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua.lo"); +*/ +/* ../obj/iuplua3/iuplua.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2, + 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1, + 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13, + 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23, + 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33, + 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26, + 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, + 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11, +105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116, + 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98, +108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, + 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4, +116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10, +105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82, + 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108, +117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11, + 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13, + 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13, + 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2, + 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1, + 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15, + 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10, +105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2, + 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, + 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, + 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108, +121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48, + 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105, +117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110, +116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, +109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, + 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3, +100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0, + 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101, +102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99, +117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114, +111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, + 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, + 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, + 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101, + 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, + 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2, + 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0, + 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3, + 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105, +117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101, + 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1, + 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100, +103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105, +116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97, + 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25, + 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0, + 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, + 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0, + 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29, + 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3, + 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8, + 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11, + 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5, + 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, + 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, + 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, + 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114, +108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, + 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116, +105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116, +121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112, + 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117, +108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112, + 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13, + 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11, + 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0, + 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114, +109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, + 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0, + 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15, + 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1, + 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13, + 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67, + 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, + 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, + 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7, +255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11, + 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114, +101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102, +108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, + 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101, +103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0, + 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2, + 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42, + 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8, + 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, + 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0, + 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125, + 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27, + 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, + 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73, +117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0, + 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0, + 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15, + 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, + 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71, +101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103, +105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112, + 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua.lo"); +} diff --git a/iup/srclua3/loh/iuplua_be32.loh b/iup/srclua3/loh/iuplua_be32.loh new file mode 100755 index 0000000..2d41b1b --- /dev/null +++ b/iup/srclua3/loh/iuplua_be32.loh @@ -0,0 +1,170 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_be32.lo"); +*/ +/* ../obj/iuplua3/iuplua_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2, + 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1, + 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13, + 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23, + 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33, + 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26, + 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, + 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11, +105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116, + 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98, +108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, + 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4, +116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10, +105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82, + 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108, +117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11, + 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13, + 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13, + 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2, + 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1, + 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15, + 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10, +105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2, + 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, + 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, + 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108, +121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48, + 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105, +117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110, +116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, +109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, + 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3, +100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0, + 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101, +102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99, +117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114, +111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, + 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, + 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, + 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101, + 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, + 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2, + 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0, + 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3, + 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105, +117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101, + 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1, + 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100, +103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105, +116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97, + 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25, + 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0, + 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, + 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0, + 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29, + 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3, + 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8, + 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11, + 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5, + 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, + 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, + 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, + 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114, +108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, + 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116, +105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116, +121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112, + 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117, +108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112, + 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13, + 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11, + 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0, + 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114, +109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, + 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0, + 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15, + 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1, + 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13, + 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67, + 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, + 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, + 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7, +255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11, + 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114, +101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102, +108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, + 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101, +103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0, + 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2, + 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42, + 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8, + 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, + 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0, + 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125, + 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27, + 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, + 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73, +117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0, + 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0, + 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15, + 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, + 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71, +101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103, +105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112, + 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_be32.lo"); +} diff --git a/iup/srclua3/loh/iuplua_be64.loh b/iup/srclua3/loh/iuplua_be64.loh new file mode 100755 index 0000000..f9f7162 --- /dev/null +++ b/iup/srclua3/loh/iuplua_be64.loh @@ -0,0 +1,170 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_be64.lo"); +*/ +/* ../obj/iuplua3/iuplua_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2, + 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1, + 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13, + 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23, + 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33, + 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26, + 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, + 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11, +105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116, + 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98, +108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, + 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4, +116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10, +105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82, + 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108, +117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11, + 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13, + 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13, + 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2, + 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1, + 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15, + 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10, +105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2, + 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, + 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, + 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108, +121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48, + 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105, +117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110, +116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, +109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, + 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3, +100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0, + 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101, +102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99, +117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114, +111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, + 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, + 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, + 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101, + 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, + 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2, + 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0, + 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3, + 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105, +117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101, + 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1, + 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100, +103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105, +116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97, + 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25, + 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0, + 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, + 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0, + 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29, + 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3, + 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8, + 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11, + 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5, + 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, + 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, + 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, + 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114, +108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, + 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116, +105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116, +121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112, + 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117, +108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112, + 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13, + 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11, + 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0, + 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114, +109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, + 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0, + 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15, + 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1, + 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13, + 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67, + 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, + 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, + 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7, +255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11, + 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114, +101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102, +108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, + 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101, +103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0, + 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2, + 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42, + 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8, + 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, + 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0, + 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125, + 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27, + 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, + 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73, +117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0, + 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0, + 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15, + 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, + 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71, +101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103, +105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112, + 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_be64.lo"); +} diff --git a/iup/srclua3/loh/iuplua_le64.loh b/iup/srclua3/loh/iuplua_le64.loh new file mode 100755 index 0000000..0e58b29 --- /dev/null +++ b/iup/srclua3/loh/iuplua_le64.loh @@ -0,0 +1,170 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_le64.lo"); +*/ +/* ../obj/iuplua3/iuplua_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2, + 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1, + 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13, + 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23, + 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33, + 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26, + 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, + 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11, +105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116, + 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98, +108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, + 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4, +116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10, +105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82, + 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108, +117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11, + 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13, + 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13, + 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2, + 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1, + 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15, + 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10, +105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2, + 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, + 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, + 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108, +121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48, + 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105, +117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110, +116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, +109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, + 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3, +100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0, + 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101, +102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99, +117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114, +111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, + 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, + 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, + 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101, + 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, + 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2, + 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0, + 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3, + 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105, +117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101, + 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1, + 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100, +103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105, +116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97, + 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25, + 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0, + 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, + 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0, + 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29, + 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3, + 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8, + 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11, + 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5, + 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, + 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, + 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, + 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114, +108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, + 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116, +105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116, +121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112, + 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117, +108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112, + 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13, + 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11, + 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0, + 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114, +109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, + 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0, + 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15, + 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1, + 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13, + 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67, + 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, + 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, + 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7, +255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11, + 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114, +101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102, +108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, + 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101, +103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0, + 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2, + 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42, + 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8, + 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, + 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0, + 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125, + 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27, + 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, + 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73, +117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0, + 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0, + 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15, + 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, + 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71, +101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103, +105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112, + 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_le64.lo"); +} diff --git a/iup/srclua3/loh/iuplua_le64w.loh b/iup/srclua3/loh/iuplua_le64w.loh new file mode 100755 index 0000000..6755c03 --- /dev/null +++ b/iup/srclua3/loh/iuplua_le64w.loh @@ -0,0 +1,170 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_le64w.lo"); +*/ +/* ../obj/iuplua3/iuplua_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0,122, 4, 0, 22, 0, 25, 0, 15, 1, 15, 2, + 11, 3, 15, 4, 2, 0, 3, 15, 1, 15, 2, 11, 5, 15, 6, 2, 0, 3, 15, 1, + 15, 7, 22, 0, 2, 1, 1, 11, 8, 15, 9, 2, 0, 3, 11, 11, 25, 10, 11, 13, + 25, 12, 11, 15, 25, 14, 11, 17, 25, 16, 11, 19, 25, 18, 11, 21, 25, 20, 11, 23, + 25, 22, 11, 25, 25, 24, 11, 27, 25, 26, 11, 29, 25, 28, 11, 31, 25, 30, 11, 33, + 25, 32, 15, 34, 11, 35, 15, 32, 26, 11, 37, 25, 36, 15, 34, 11, 38, 15, 36, 26, + 11, 40, 25, 39, 15, 34, 11, 41, 11, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, + 0, 13,115,101,116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 11, +105,117,112,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,103,101,116,116, + 97, 98,108,101, 0, 2, 0, 0, 0, 13,105,117,112, 95,103,101,116,116, 97, 98, +108,101, 0, 2, 0, 0, 0, 9,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, + 0, 13,105,117,112, 95,115,101,116,116, 97, 98,108,101, 0, 2, 0, 0, 0, 4, +116, 97,103, 0, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 10, +105,117,112, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 7, 95, 65, 76, 69, 82, + 84, 0, 4, 0, 0, 0, 14, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108, +117, 97, 0, 0, 0, 0,125, 14, 1, 15, 2, 22, 3, 11, 3, 11, 4, 11, 5, 11, + 6, 11, 7, 11, 8, 30, 2, 2, 1, 1, 15, 10, 22, 4, 11, 11, 11, 12, 11, 13, + 11, 12, 11, 14, 13, 0, 11, 5, 11, 15, 30, 3, 2, 1, 1, 15, 17, 22, 5, 13, + 2, 13, 1, 29, 0, 2, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 30, 2, + 2, 1, 1, 15, 25, 22, 5, 13, 3, 29, 0, 1, 11, 3, 11, 26, 11, 27, 13, 1, + 11, 28, 13, 1, 11, 29, 13, 1, 30, 3, 2, 1, 1, 13, 4, 20, 30, 15, 31, 15, + 31, 2, 0, 3, 13, 4, 20, 32, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 3, 98,116, 0, 2, 0, 0, 0, 10, +105,117,112, 98,117,116,116,111,110, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 2, 0, 0, 0, 3, 79,107, 0, 2, 0, 0, 0, 5,115,105,122,101, 0, 2, + 0, 0, 0, 3, 54, 48, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, + 0, 0, 0, 17,114,101,116,117,114,110, 32, 73, 85, 80, 95, 67, 76, 79, 83, 69, + 0, 2, 0, 0, 0, 3,109,108, 0, 2, 0, 0, 0, 13,105,117,112,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 2, + 0, 0, 0, 4, 89, 69, 83, 0, 2, 0, 0, 0, 9,114,101, 97,100,111,110,108, +121, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8, 51, 48, + 48,120, 49, 53, 48, 0, 2, 0, 0, 0, 3,118, 98, 0, 2, 0, 0, 0, 8,105, +117,112,118, 98,111,120, 0, 2, 0, 0, 0, 10, 97,108,105,103,110,109,101,110, +116, 0, 2, 0, 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 7, +109, 97,114,103,105,110, 0, 2, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 2, 0, + 0, 0, 4,103, 97,112, 0, 2, 0, 0, 0, 3, 49, 48, 0, 2, 0, 0, 0, 3, +100,103, 0, 2, 0, 0, 0, 10,105,117,112,100,105, 97,108,111,103, 0, 2, 0, + 0, 0, 10, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 11,100,101, +102, 97,117,108,116,101,115, 99, 0, 2, 0, 0, 0, 13,100,101,102, 97,117,108, +116,101,110,116,101,114, 0, 2, 0, 0, 0, 11,115,116, 97,114,116,102,111, 99, +117,115, 0, 2, 0, 0, 0, 6,112,111,112,117,112, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 95, 67, 69, 78, 84, 69, 82, 0, 2, 0, 0, 0, 8,100,101,115,116,114, +111,121, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, + 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 27, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, + 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, + 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 9,116,121,112,101, + 95,110,105,108, 0, 4, 0, 0, 0, 31, 0, 0, 0, 12, 64,105,117,112,108,117, + 97, 46,108,117, 97, 0, 0, 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, + 2, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,110,105,108, 0, 2, + 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116,105,111,110, 0, 4, 0, + 0, 0, 35, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0, 15, 3, 1, 15, 1, 13, 0, 2, 1, 1, 11, 2, 32, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, 39, 0, + 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 20, 3, + 1, 13, 0, 52, 9, 15, 1, 13, 0, 16, 1, 1, 50, 4, 4, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2,119, 0, 2, 0, 0, 0, 12,105, +117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 10,116,121,112,101, + 95,109,101,110,117, 0, 4, 0, 0, 0, 47, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 21, 3, 1, 15, 1, 13, 0, 2, 1, 1, + 48, 7, 13, 0, 18, 2, 15, 3, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100, +103,101,116, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116,121,112,101, 95,105, +116,101,109, 0, 4, 0, 0, 0, 51, 0, 0, 0, 12, 64,105,117,112,108,117, 97, + 46,108,117, 97, 0, 0, 0, 0, 39, 3, 1, 15, 1, 13, 0, 2, 1, 1, 48, 25, + 13, 0, 18, 2, 15, 3, 32, 46, 7, 13, 0, 18, 2, 15, 4, 32, 46, 7, 13, 0, + 18, 2, 15, 5, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 73, 84, 69, 77, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, + 0, 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, + 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0, + 0, 0, 55, 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, + 0, 0,105, 7,129, 13, 1, 7, 1, 16, 13, 2, 13, 0, 16, 13, 3, 44, 52, 29, + 15, 5, 15, 6, 13, 0, 16, 7, 1, 16, 2, 1, 1, 13, 2, 13, 4, 16, 23, 3, + 13, 3, 44, 52, 2, 1, 5, 5, 1, 15, 7, 13, 3, 2, 1, 1, 52, 11, 15, 8, + 13, 3, 13, 1, 3, 4, 2, 50, 38, 15, 9, 13, 3, 2, 1, 1, 52, 25, 15, 11, + 13, 2, 25, 11, 15, 13, 13, 3, 2, 1, 1, 13, 4, 25, 11, 13, 5, 1, 6, 5, + 2, 50, 4, 15, 14, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, + 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, + 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, + 0, 10,102,117,108,108, 95,110, 97,109,101, 0, 2, 0, 0, 0, 9,115,116,114, +108,111,119,101,114, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, + 97, 99,107,115, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99,116, +105,111,110, 0, 2, 0, 0, 0, 5, 99, 97,108,108, 0, 2, 0, 0, 0, 12,116, +121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 5,116,101,109,112, + 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,114,101,115,117, +108,116, 0, 2, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 95, 69, 82, 82, 79, 82, 0, 2, 0, 0, 0, 11,105,117,112, + 83,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 51, 7, 1, 15, 1, 15, 2, 13, + 0, 16, 18, 3, 2, 1, 1, 44, 52, 33, 15, 2, 13, 0, 16, 11, 3, 15, 4, 11, + 5, 15, 6, 13, 0, 2, 1, 1, 2, 1, 2, 26, 15, 7, 13, 0, 18, 3, 13, 0, + 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, + 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, + 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 7,102,111,114, +109, 97,116, 0, 2, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, + 69, 40, 37,115, 41, 0, 2, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0, + 2, 0, 0, 0, 13, 73,117,112, 83,101,116, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 0, 0, 0, 88, 0, 0, 0, 12, 64,105,117,112,108, +117, 97, 46,108,117, 97, 0, 0, 0, 0, 74, 5, 1, 13, 0, 18, 1, 18, 1, 15, + 2, 32, 52, 32, 7, 1, 50, 17, 15, 4, 13, 0, 13, 1, 16, 2, 0, 1, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 54, 24, 5, 1, 50, 28, 13, 0, 18, 1, + 15, 5, 32, 52, 12, 15, 4, 13, 0, 7, 1, 16, 2, 0, 1, 50, 7, 15, 6, 13, + 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 12, 67, + 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, + 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, + 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, + 7, 73,117,112, 82, 71, 66, 0, 4, 0, 0, 0,108, 0, 0, 0, 12, 64,105,117, +112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 43, 7, 3, 15, 3, 13, 0, 7, +255, 39, 2, 1, 1, 11, 4, 42, 15, 3, 13, 1, 7,255, 39, 2, 1, 1, 42, 11, + 4, 42, 15, 3, 13, 2, 7,255, 39, 2, 1, 1, 42, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 2, 0, 0, 0, 4,114,101,100, 0, 2, 0, 0, 0, 6,103,114, +101,101,110, 0, 2, 0, 0, 0, 5, 98,108,117,101, 0, 2, 0, 0, 0, 6,102, +108,111,111,114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 4,105,117,112, + 0, 2, 0, 0, 0, 4, 82, 71, 66, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101, +103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0,113, 0, 0, + 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 58, 10, 2, + 15, 2, 13, 0, 16, 44, 52, 43, 15, 4, 11, 5, 15, 6, 13, 1, 2, 1, 1, 42, + 2, 1, 1, 13, 2, 44, 52, 4, 15, 7, 23, 2, 15, 2, 13, 0, 22, 2, 11, 8, + 13, 2, 11, 0, 13, 0, 30, 1, 26, 5, 1, 13, 0, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 9,116,121,112,101,110, 97,109,101, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, + 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 10,103,101,116,103,108,111, 98, 97,108, 0, 2, 0, 0, 0, 4, 73, 85, 80, 0, + 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 15, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, + 0, 0, 12, 73,117,112, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,125, + 0, 0, 0, 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 27, + 6, 1, 15, 2, 13, 0, 7, 1, 16, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, + 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, + 13, 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73, +117,112, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0, + 0, 0, 9, 71,101,116, 70,114,111,109, 67, 0, 4, 0, 0, 0,130, 0, 0, 0, + 12, 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 24, 6, 1, 15, + 2, 13, 0, 2, 1, 1, 15, 3, 13, 1, 15, 4, 13, 1, 2, 1, 1, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, + 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71, +101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 18, 73,117,112, 82,101,103, +105,115,116,101,114, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 16, 73,117,112, + 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_le64w.lo"); +} diff --git a/iup/srclua3/loh/iuplua_widgets.loh b/iup/srclua3/loh/iuplua_widgets.loh new file mode 100755 index 0000000..efaed40 --- /dev/null +++ b/iup/srclua3/loh/iuplua_widgets.loh @@ -0,0 +1,939 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_widgets.lo"); +*/ +/* ../obj/iuplua3/iuplua_widgets.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0, + 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11, + 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0, + 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15, + 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26, + 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11, + 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15, + 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36, + 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, + 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42, + 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46, + 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49, + 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55, + 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60, + 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30, + 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25, + 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11, + 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0, + 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26, + 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89, + 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26, + 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98, + 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1, + 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15, + 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26, + 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0, + 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119, + 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0, + 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26, + 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25, +131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135, + 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26, + 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, +141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26, + 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0, + 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156, + 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15, +158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11, +163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165, + 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172, + 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11, + 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15, +178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25, +181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189, + 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11, + 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197, + 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15, +199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11, +205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207, + 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0, + 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26, + 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25, +218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0, + 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228, + 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233, + 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2, + 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244, + 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2, + 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29, + 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22, + 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1, + 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1, + 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16, + 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2, + 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10, + 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0, + 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2, + 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36, + 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40, + 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14, + 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10, + 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1, + 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0, + 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25, +221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62, + 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63, + 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63, + 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66, + 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226, + 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232, + 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26, + 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26, + 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26, + 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0, + 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17, + 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15, +221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1, + 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221, + 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15, +221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32, + 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17, + 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15, +221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1, + 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221, + 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26, + 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100, + 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112, +101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4, + 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0, + 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1, + 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13, + 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97, +114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, + 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2, + 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0, + 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12, + 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2, + 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, + 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23, + 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102, +117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101, +114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, + 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108, +117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108, +105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117, +116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22, + 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15, + 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0, + 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0, + 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116, +101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116, + 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4, + 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1, + 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15, + 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52, + 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3, + 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121, +112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, + 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112, +112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16, + 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72, + 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15, + 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8, + 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55, + 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1, + 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2, + 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2, + 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13, + 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15, + 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10, + 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1, + 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18, + 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6, +118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115, +116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7, +114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108, + 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, + 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111, +103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112, + 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95, +110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2, + 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111, +121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13, + 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52, + 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20, + 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0, + 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2, + 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100, +101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110, + 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105, +116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, + 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11, + 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97, + 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0, + 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26, + 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2, + 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, + 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37, + 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5, +115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0, + 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1, + 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13, + 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13, + 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, + 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, + 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0, + 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101, + 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, + 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112, +116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117, +112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0, + 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13, + 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98, +111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, + 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, + 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, + 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, + 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0, + 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, + 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, + 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, + 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119, + 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111, +112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, + 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, + 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16, + 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16, + 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101, + 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114, + 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, + 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1, + 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4, + 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1, + 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1, + 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7, + 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13, + 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13, + 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13, + 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, + 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, + 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, + 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0, + 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106, + 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100, +104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35, + 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1, + 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108, +101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2, + 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100, +104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, + 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, + 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111, +103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101, +115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, + 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3, + 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6, + 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11, + 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42, + 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7, + 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48, + 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2, + 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, + 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, + 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111, +114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0, + 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110, +111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111, +101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103, + 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, + 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97, +118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109, +101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15, + 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2, + 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7, + 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52, + 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16, + 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13, + 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13, + 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1, + 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1, + 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54, +173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13, +105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112, +105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, + 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, + 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80, +111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, + 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1, + 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7, + 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114, +114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, + 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117, +101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105, +122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13, + 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1, + 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23, + 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2, + 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1, + 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13, + 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37, + 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, + 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, + 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13, + 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101, +109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, + 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80, + 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101, +110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, + 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104, + 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104, + 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1, +156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, + 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, + 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, + 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15, + 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4, + 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10, + 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50, + 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2, + 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1, + 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2, +102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114, +111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101, +114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, + 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32, +104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105, +115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, + 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120, +116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101, +100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4, + 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, + 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0, + 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, + 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8, +105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1, + 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24, + 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83, +101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, + 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, + 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, + 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116, +116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4, + 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116, +111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1, +252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117, +112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2, + 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, + 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, + 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, + 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19, +105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2, + 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, + 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76, + 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7, + 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116, +105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0, + 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101, +108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2, + 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85, + 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114, +101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0, + 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4, + 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1, + 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26, + 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, + 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0, + 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0, + 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0, + 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101, +112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, + 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, + 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101, +100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69, + 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, + 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67, +114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0, + 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14, + 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115, + 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, + 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68, + 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, + 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, + 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105, +117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79, + 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116, +111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0, + 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114, + 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, + 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, + 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, + 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, + 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, + 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114, +111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32, +105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4, + 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24, + 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105, +117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2, + 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111, +108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114, + 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80, + 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105, +122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, + 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, + 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67, + 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, + 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97, +110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0, + 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110, +118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0, + 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52, + 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18, + 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, + 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, + 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101, +116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0, + 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2, + 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2, + 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2, + 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11, + 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3, + 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101, +120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, + 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80, + 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50, + 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15, + 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3, + 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52, + 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26, + 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9, + 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0, + 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, + 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45, +110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97, +103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101, +110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0, + 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5, + 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2, + 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13, + 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109, + 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7, +104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, + 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, + 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103, +101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, + 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109, + 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, + 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, + 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67, +114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, + 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97, +103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, + 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73, + 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18, + 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103, +101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, + 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115, + 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4, + 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105, +109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, + 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115, + 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115, + 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83, + 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, + 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0, + 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, + 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78, + 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10, + 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111, + 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66, + 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99, + 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0, + 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17, +105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, + 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67, + 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0, + 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78, + 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0, + 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0, + 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0, + 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84, + 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0, + 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115, + 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66, + 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13, + 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117, +112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6, + 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0, + 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66, + 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0, + 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0, + 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95, + 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2, + 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77, + 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2, + 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0, + 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77, + 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, + 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104, +105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73, + 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104, +108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0, + 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119, +111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0, + 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, +119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78, + 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10, + 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114, +101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2, + 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99, + 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2, + 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, + 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95, + 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0, + 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, + 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119, + 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69, + 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116, + 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66, + 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99, +116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0, + 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102, +105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118, + 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65, + 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99, +116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100, +111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110, + 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0, + 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, + 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, + 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120, +116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117, +116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, + 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111, +110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99, +116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95, + 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8, +104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116, +114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111, +115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2, + 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0, + 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0, + 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104, +105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109, + 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0, + 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101, +115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98, + 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115, +101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116, +105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99, + 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, + 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, + 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0, + 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets.lo"); +} diff --git a/iup/srclua3/loh/iuplua_widgets_be32.loh b/iup/srclua3/loh/iuplua_widgets_be32.loh new file mode 100755 index 0000000..4ed9835 --- /dev/null +++ b/iup/srclua3/loh/iuplua_widgets_be32.loh @@ -0,0 +1,939 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_widgets_be32.lo"); +*/ +/* ../obj/iuplua3/iuplua_widgets_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0, + 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11, + 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0, + 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15, + 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26, + 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11, + 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15, + 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36, + 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, + 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42, + 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46, + 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49, + 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55, + 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60, + 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30, + 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25, + 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11, + 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0, + 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26, + 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89, + 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26, + 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98, + 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1, + 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15, + 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26, + 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0, + 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119, + 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0, + 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26, + 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25, +131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135, + 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26, + 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, +141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26, + 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0, + 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156, + 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15, +158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11, +163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165, + 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172, + 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11, + 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15, +178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25, +181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189, + 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11, + 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197, + 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15, +199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11, +205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207, + 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0, + 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26, + 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25, +218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0, + 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228, + 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233, + 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2, + 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244, + 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2, + 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29, + 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22, + 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1, + 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1, + 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16, + 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2, + 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10, + 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0, + 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2, + 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36, + 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40, + 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14, + 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10, + 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1, + 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0, + 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25, +221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62, + 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63, + 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63, + 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66, + 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226, + 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232, + 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26, + 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26, + 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26, + 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0, + 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17, + 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15, +221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1, + 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221, + 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15, +221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32, + 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17, + 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15, +221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1, + 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221, + 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26, + 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100, + 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112, +101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4, + 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0, + 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1, + 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13, + 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97, +114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, + 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2, + 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0, + 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12, + 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2, + 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, + 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23, + 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102, +117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101, +114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, + 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108, +117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108, +105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117, +116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22, + 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15, + 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0, + 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0, + 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116, +101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116, + 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4, + 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1, + 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15, + 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52, + 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3, + 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121, +112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, + 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112, +112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16, + 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72, + 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15, + 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8, + 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55, + 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1, + 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2, + 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2, + 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13, + 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15, + 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10, + 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1, + 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18, + 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6, +118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115, +116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7, +114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108, + 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, + 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111, +103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112, + 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95, +110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2, + 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111, +121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13, + 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52, + 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20, + 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0, + 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2, + 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100, +101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110, + 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105, +116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, + 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11, + 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97, + 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0, + 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26, + 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2, + 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, + 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37, + 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5, +115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0, + 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1, + 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13, + 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13, + 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, + 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, + 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0, + 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101, + 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, + 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112, +116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117, +112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0, + 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13, + 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98, +111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, + 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, + 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, + 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, + 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0, + 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, + 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, + 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, + 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119, + 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111, +112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, + 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, + 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16, + 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16, + 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101, + 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114, + 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, + 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1, + 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4, + 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1, + 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1, + 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7, + 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13, + 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13, + 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13, + 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, + 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, + 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, + 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0, + 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106, + 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100, +104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35, + 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1, + 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108, +101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2, + 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100, +104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, + 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, + 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111, +103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101, +115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, + 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3, + 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6, + 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11, + 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42, + 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7, + 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48, + 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2, + 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, + 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, + 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111, +114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0, + 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110, +111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111, +101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103, + 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, + 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97, +118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109, +101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15, + 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2, + 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7, + 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52, + 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16, + 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13, + 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13, + 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1, + 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1, + 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54, +173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13, +105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112, +105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, + 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, + 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80, +111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, + 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1, + 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7, + 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114, +114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, + 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117, +101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105, +122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13, + 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1, + 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23, + 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2, + 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1, + 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13, + 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37, + 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, + 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, + 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13, + 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101, +109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, + 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80, + 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101, +110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, + 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104, + 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104, + 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1, +156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, + 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, + 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, + 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15, + 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4, + 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10, + 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50, + 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2, + 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1, + 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2, +102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114, +111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101, +114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, + 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32, +104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105, +115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, + 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120, +116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101, +100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4, + 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, + 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0, + 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, + 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8, +105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1, + 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24, + 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83, +101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, + 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, + 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, + 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116, +116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4, + 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116, +111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1, +252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117, +112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2, + 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, + 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, + 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, + 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19, +105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2, + 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, + 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76, + 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7, + 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116, +105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0, + 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101, +108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2, + 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85, + 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114, +101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0, + 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4, + 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1, + 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26, + 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, + 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0, + 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0, + 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0, + 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101, +112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, + 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, + 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101, +100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69, + 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, + 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67, +114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0, + 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14, + 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115, + 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, + 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68, + 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, + 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, + 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105, +117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79, + 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116, +111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0, + 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114, + 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, + 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, + 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, + 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, + 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, + 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114, +111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32, +105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4, + 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24, + 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105, +117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2, + 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111, +108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114, + 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80, + 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105, +122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, + 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, + 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67, + 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, + 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97, +110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0, + 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110, +118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0, + 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52, + 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18, + 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, + 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, + 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101, +116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0, + 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2, + 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2, + 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2, + 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11, + 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3, + 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101, +120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, + 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80, + 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50, + 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15, + 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3, + 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52, + 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26, + 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9, + 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0, + 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, + 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45, +110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97, +103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101, +110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0, + 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5, + 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2, + 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13, + 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109, + 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7, +104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, + 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, + 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103, +101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, + 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109, + 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, + 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, + 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67, +114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, + 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97, +103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, + 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73, + 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18, + 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103, +101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, + 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115, + 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4, + 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105, +109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, + 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115, + 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115, + 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83, + 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, + 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0, + 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, + 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78, + 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10, + 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111, + 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66, + 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99, + 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0, + 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17, +105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, + 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67, + 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0, + 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78, + 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0, + 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0, + 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0, + 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84, + 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0, + 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115, + 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66, + 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13, + 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117, +112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6, + 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0, + 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66, + 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0, + 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0, + 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95, + 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2, + 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77, + 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2, + 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0, + 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77, + 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, + 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104, +105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73, + 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104, +108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0, + 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119, +111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0, + 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, +119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78, + 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10, + 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114, +101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2, + 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99, + 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2, + 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, + 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95, + 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0, + 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, + 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119, + 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69, + 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116, + 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66, + 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99, +116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0, + 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102, +105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118, + 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65, + 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99, +116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100, +111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110, + 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0, + 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, + 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, + 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120, +116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117, +116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, + 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111, +110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99, +116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95, + 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8, +104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116, +114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111, +115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2, + 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0, + 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0, + 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104, +105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109, + 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0, + 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101, +115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98, + 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115, +101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116, +105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99, + 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, + 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, + 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0, + 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_be32.lo"); +} diff --git a/iup/srclua3/loh/iuplua_widgets_be64.loh b/iup/srclua3/loh/iuplua_widgets_be64.loh new file mode 100755 index 0000000..6ca1eb6 --- /dev/null +++ b/iup/srclua3/loh/iuplua_widgets_be64.loh @@ -0,0 +1,939 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_widgets_be64.lo"); +*/ +/* ../obj/iuplua3/iuplua_widgets_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0, + 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11, + 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0, + 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15, + 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26, + 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11, + 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15, + 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36, + 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, + 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42, + 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46, + 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49, + 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55, + 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60, + 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30, + 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25, + 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11, + 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0, + 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26, + 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89, + 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26, + 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98, + 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1, + 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15, + 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26, + 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0, + 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119, + 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0, + 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26, + 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25, +131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135, + 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26, + 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, +141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26, + 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0, + 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156, + 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15, +158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11, +163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165, + 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172, + 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11, + 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15, +178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25, +181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189, + 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11, + 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197, + 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15, +199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11, +205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207, + 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0, + 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26, + 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25, +218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0, + 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228, + 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233, + 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2, + 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244, + 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2, + 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29, + 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22, + 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1, + 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1, + 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16, + 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2, + 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10, + 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0, + 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2, + 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36, + 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40, + 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14, + 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10, + 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1, + 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0, + 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25, +221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62, + 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63, + 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63, + 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66, + 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226, + 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232, + 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26, + 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26, + 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26, + 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0, + 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17, + 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15, +221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1, + 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221, + 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15, +221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32, + 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17, + 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15, +221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1, + 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221, + 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26, + 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100, + 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112, +101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4, + 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0, + 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1, + 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13, + 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97, +114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, + 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2, + 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0, + 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12, + 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2, + 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, + 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23, + 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102, +117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101, +114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, + 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108, +117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108, +105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117, +116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22, + 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15, + 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0, + 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0, + 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116, +101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116, + 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4, + 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1, + 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15, + 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52, + 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3, + 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121, +112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, + 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112, +112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16, + 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72, + 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15, + 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8, + 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55, + 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1, + 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2, + 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2, + 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13, + 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15, + 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10, + 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1, + 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18, + 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6, +118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115, +116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7, +114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108, + 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, + 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111, +103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112, + 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95, +110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2, + 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111, +121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13, + 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52, + 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20, + 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0, + 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2, + 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100, +101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110, + 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105, +116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, + 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11, + 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97, + 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0, + 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26, + 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2, + 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, + 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37, + 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5, +115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0, + 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1, + 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13, + 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13, + 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, + 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, + 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0, + 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101, + 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, + 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112, +116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117, +112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0, + 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13, + 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98, +111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, + 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, + 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, + 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, + 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0, + 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, + 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, + 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, + 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119, + 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111, +112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, + 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, + 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16, + 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16, + 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101, + 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114, + 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, + 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1, + 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4, + 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1, + 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1, + 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7, + 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13, + 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13, + 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13, + 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, + 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, + 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, + 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0, + 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106, + 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100, +104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35, + 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1, + 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108, +101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2, + 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100, +104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, + 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, + 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111, +103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101, +115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, + 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3, + 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6, + 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11, + 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42, + 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7, + 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48, + 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2, + 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, + 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, + 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111, +114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0, + 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110, +111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111, +101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103, + 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, + 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97, +118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109, +101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15, + 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2, + 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7, + 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52, + 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16, + 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13, + 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13, + 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1, + 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1, + 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54, +173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13, +105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112, +105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, + 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, + 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80, +111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, + 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1, + 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7, + 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114, +114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, + 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117, +101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105, +122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13, + 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1, + 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23, + 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2, + 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1, + 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13, + 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37, + 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, + 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, + 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13, + 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101, +109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, + 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80, + 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101, +110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, + 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104, + 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104, + 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1, +156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, + 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, + 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, + 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15, + 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4, + 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10, + 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50, + 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2, + 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1, + 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2, +102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114, +111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101, +114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, + 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32, +104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105, +115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, + 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120, +116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101, +100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4, + 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, + 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0, + 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, + 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8, +105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1, + 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24, + 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83, +101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, + 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, + 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, + 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116, +116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4, + 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116, +111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1, +252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117, +112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2, + 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, + 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, + 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, + 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19, +105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2, + 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, + 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76, + 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7, + 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116, +105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0, + 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101, +108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2, + 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85, + 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114, +101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0, + 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4, + 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1, + 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26, + 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, + 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0, + 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0, + 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0, + 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101, +112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, + 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, + 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101, +100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69, + 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, + 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67, +114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0, + 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14, + 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115, + 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, + 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68, + 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, + 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, + 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105, +117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79, + 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116, +111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0, + 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114, + 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, + 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, + 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, + 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, + 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, + 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114, +111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32, +105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4, + 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24, + 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105, +117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2, + 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111, +108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114, + 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80, + 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105, +122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, + 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, + 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67, + 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, + 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97, +110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0, + 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110, +118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0, + 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52, + 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18, + 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, + 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, + 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101, +116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0, + 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2, + 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2, + 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2, + 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11, + 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3, + 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101, +120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, + 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80, + 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50, + 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15, + 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3, + 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52, + 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26, + 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9, + 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0, + 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, + 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45, +110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97, +103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101, +110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0, + 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5, + 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2, + 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13, + 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109, + 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7, +104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, + 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, + 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103, +101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, + 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109, + 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, + 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, + 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67, +114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, + 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97, +103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, + 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73, + 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18, + 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103, +101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, + 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115, + 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4, + 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105, +109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, + 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115, + 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115, + 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83, + 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, + 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0, + 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, + 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78, + 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10, + 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111, + 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66, + 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99, + 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0, + 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17, +105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, + 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67, + 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0, + 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78, + 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0, + 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0, + 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0, + 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84, + 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0, + 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115, + 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66, + 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13, + 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117, +112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6, + 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0, + 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66, + 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0, + 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0, + 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95, + 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2, + 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77, + 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2, + 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0, + 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77, + 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, + 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104, +105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73, + 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104, +108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0, + 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119, +111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0, + 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, +119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78, + 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10, + 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114, +101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2, + 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99, + 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2, + 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, + 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95, + 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0, + 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, + 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119, + 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69, + 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116, + 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66, + 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99, +116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0, + 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102, +105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118, + 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65, + 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99, +116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100, +111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110, + 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0, + 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, + 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, + 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120, +116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117, +116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, + 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111, +110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99, +116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95, + 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8, +104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116, +114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111, +115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2, + 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0, + 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0, + 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104, +105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109, + 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0, + 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101, +115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98, + 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115, +101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116, +105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99, + 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, + 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, + 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0, + 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_be64.lo"); +} diff --git a/iup/srclua3/loh/iuplua_widgets_le64.loh b/iup/srclua3/loh/iuplua_widgets_le64.loh new file mode 100755 index 0000000..dd42bf4 --- /dev/null +++ b/iup/srclua3/loh/iuplua_widgets_le64.loh @@ -0,0 +1,939 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_widgets_le64.lo"); +*/ +/* ../obj/iuplua3/iuplua_widgets_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,202, 67, 0, + 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11, + 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0, + 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15, + 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26, + 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11, + 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 1, 11, 25, 15, + 0, 30, 0, 25, 32, 15, 32, 11, 26, 11, 33, 26, 11, 35, 25, 34, 15, 30, 11, 36, + 15, 34, 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, + 25, 37, 15, 37, 11, 26, 11, 39, 26, 15, 37, 11, 40, 11, 41, 26, 15, 37, 11, 42, + 11, 43, 26, 15, 37, 11, 44, 11, 45, 26, 11, 47, 25, 46, 15, 30, 11, 48, 15, 46, + 26, 22, 2, 11, 25, 15, 0, 11, 1, 22, 1, 15, 38, 29, 0, 1, 30, 1, 25, 49, + 15, 49, 11, 26, 11, 50, 26, 11, 52, 25, 51, 15, 30, 11, 53, 15, 51, 26, 11, 55, + 25, 54, 11, 57, 25, 56, 11, 59, 25, 58, 22, 1, 11, 25, 15, 0, 30, 0, 25, 60, + 15, 60, 11, 4, 11, 61, 26, 15, 60, 11, 26, 11, 62, 26, 11, 64, 25, 63, 15, 30, + 11, 65, 15, 63, 26, 15, 66, 11, 44, 11, 67, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 68, 15, 68, 11, 4, 11, 69, 26, 15, 68, 11, 26, 11, 70, 26, 22, 1, 11, 25, + 15, 68, 30, 0, 25, 71, 15, 71, 11, 72, 11, 73, 26, 11, 75, 25, 74, 15, 30, 11, + 76, 15, 74, 26, 11, 78, 25, 77, 11, 80, 25, 79, 22, 1, 11, 25, 15, 68, 30, 0, + 25, 81, 15, 81, 11, 72, 11, 82, 26, 11, 84, 25, 83, 15, 30, 11, 85, 15, 83, 26, + 11, 87, 25, 86, 22, 1, 11, 25, 15, 68, 30, 0, 25, 88, 15, 88, 11, 72, 11, 89, + 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 1, 11, 25, 15, 0, 30, 0, + 25, 93, 15, 93, 11, 26, 11, 94, 26, 11, 96, 25, 95, 15, 30, 11, 97, 15, 95, 26, + 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 11,100, 15,101, 30, 0, 30, 1, 25, 98, + 15, 98, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1, + 11, 25, 15, 0, 30, 0, 25,106, 15,106, 11, 26, 11,107, 26, 11,109, 25,108, 15, + 30, 11,110, 15,108, 26, 22, 1, 11, 25, 15,112, 30, 0, 25,111, 15,111, 11, 26, + 11,113, 26, 11,115, 25,114, 15, 30, 11,116, 15,114, 26, 22, 2, 11, 25, 15, 0, + 11, 99, 22, 1, 11,118, 15,101, 30, 0, 30, 1, 25,117, 15,117, 11, 26, 11,119, + 26, 11,121, 25,120, 15, 30, 11,122, 15,120, 26, 22, 1, 11, 25, 15,124, 30, 0, + 25,123, 15,123, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26, + 22, 1, 11, 25, 15,124, 30, 0, 25,129, 15,129, 11, 26, 11,130, 26, 11,132, 25, +131, 15, 30, 11,133, 15,131, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 2, 15,135, + 29, 0, 1, 11,136, 15,101, 30, 0, 30, 1, 25,134, 15,134, 11, 26, 11,137, 26, + 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, +141, 15,141, 11, 26, 11,142, 26, 11,144, 25,143, 15, 30, 11,145, 15,143, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,146, 15,146, 11, 44, 11,147, 26, 15,146, 11, 26, + 11,148, 26, 11,150, 25,149, 15, 30, 11,151, 15,149, 26, 22, 1, 11, 25, 15, 0, + 30, 0, 25,152, 15,152, 11, 44, 11,153, 26, 15,152, 11, 26, 11,154, 26, 11,156, + 25,155, 15, 30, 11,157, 15,155, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,158, 15, +158, 11, 44, 11,159, 26, 15,158, 11, 26, 11,160, 26, 11,162, 25,161, 15, 30, 11, +163, 15,161, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,164, 15,164, 11, 44, 11,165, + 26, 15,164, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 26, 11,171, 26, 11,173, 25,172, + 15, 30, 11,174, 15,172, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,175, 15,175, 11, + 4, 11,176, 26, 15,175, 11, 26, 11,177, 26, 11,179, 25,178, 15, 30, 11,180, 15, +178, 26, 22, 2, 11, 25, 15, 0, 11, 99, 22, 1, 15,182, 29, 0, 1, 30, 1, 25, +181, 15,181, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 11,190, 25,189, + 15, 30, 11,191, 15,189, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,192, 15,192, 11, + 26, 11,193, 26, 15,192, 11, 8, 11,194, 26, 15,192, 11, 10, 11,195, 26, 11,197, + 25,196, 15, 30, 11,198, 15,196, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,199, 15, +199, 11, 4, 11,201, 26, 15,199, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11, +205, 15,203, 26, 22, 1, 11, 25, 15,200, 30, 0, 25,206, 15,206, 11, 26, 11,207, + 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,200, 30, 0, + 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26, + 22, 1, 11, 25, 15,200, 30, 0, 25,216, 15,216, 11, 26, 11,217, 26, 11,219, 25, +218, 15, 30, 11,220, 15,218, 26, 22, 33, 11,222, 22, 2, 11,223, 4, 0, 29, 0, + 2, 11,224, 22, 2, 11,225, 4, 0, 29, 0, 2, 11,226, 22, 2, 11,227, 15,228, + 29, 0, 2, 11,229, 22, 2, 11,230, 15,231, 29, 0, 2, 11,232, 22, 2, 11,233, + 15,234, 29, 0, 2, 11,235, 22, 2, 11,236, 15,237, 29, 0, 2, 11,238, 22, 2, + 11,239, 15,240, 29, 0, 2, 11,241, 22, 2, 11,242, 15,243, 29, 0, 2, 11,244, + 22, 2, 11,245, 15,246, 29, 0, 2, 11,247, 22, 2, 11,248, 15,249, 29, 0, 2, + 11,250, 22, 2, 11,251, 15,252, 29, 0, 2, 11,253, 22, 2, 11,254, 15,255, 29, + 0, 2, 10, 1, 0, 22, 2, 10, 1, 1, 14, 1, 2, 29, 0, 2, 10, 1, 3, 22, + 2, 10, 1, 4, 14, 1, 5, 29, 0, 2, 10, 1, 6, 22, 2, 10, 1, 7, 14, 1, + 8, 29, 0, 2, 10, 1, 9, 22, 2, 10, 1, 10, 14, 1, 11, 29, 0, 2, 10, 1, + 12, 22, 2, 10, 1, 13, 14, 1, 14, 29, 0, 2, 10, 1, 15, 22, 2, 10, 1, 16, + 14, 1, 17, 29, 0, 2, 10, 1, 18, 22, 2, 10, 1, 19, 14, 1, 20, 29, 0, 2, + 10, 1, 21, 22, 2, 10, 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10, + 1, 25, 14, 1, 26, 29, 0, 2, 11,105, 22, 2, 10, 1, 27, 14, 1, 28, 29, 0, + 2, 10, 1, 29, 22, 2, 10, 1, 30, 14, 1, 31, 29, 0, 2, 10, 1, 32, 22, 2, + 10, 1, 30, 14, 1, 33, 29, 0, 2, 10, 1, 34, 22, 2, 10, 1, 35, 14, 1, 36, + 29, 0, 2, 10, 1, 37, 22, 2, 10, 1, 38, 14, 1, 39, 29, 0, 2, 10, 1, 40, + 22, 2, 10, 1, 41, 14, 1, 42, 29, 0, 2, 10, 1, 43, 22, 2, 10, 1, 44, 14, + 1, 45, 29, 0, 2, 10, 1, 46, 22, 2, 10, 1, 47, 14, 1, 48, 29, 0, 2, 10, + 1, 49, 22, 2, 10, 1, 50, 14, 1, 51, 29, 0, 2, 10, 1, 52, 22, 2, 10, 1, + 53, 14, 1, 54, 29, 0, 2, 10, 1, 55, 22, 2, 10, 1, 56, 14, 1, 57, 29, 0, + 2, 30, 31, 10, 1, 58, 22, 2, 10, 1, 59, 14, 1, 60, 29, 0, 2, 30, 0, 25, +221, 15,221, 18,222, 11,128, 14, 1, 61, 26, 15,221, 18,222, 11,116, 14, 1, 62, + 26, 15,221, 18,222, 11,110, 14, 1, 62, 26, 15,221, 18,222, 11,105, 14, 1, 63, + 26, 15,221, 18,222, 11,198, 14, 1, 64, 26, 15,221, 18,222, 11,133, 14, 1, 63, + 26, 15,221, 18,222, 11,191, 14, 1, 65, 26, 15,221, 18,224, 11, 31, 14, 1, 66, + 26, 15,221, 10, 1, 67, 15,221, 18,224, 26, 15,221, 10, 1, 68, 15,221, 18,226, + 26, 15,221, 10, 1, 69, 15,221, 18,229, 26, 15,221, 10, 1, 70, 15,221, 18,232, + 26, 15,221, 11,235, 15,221, 18,235, 26, 15,221, 10, 1, 71, 15,221, 18,238, 26, + 15,221, 10, 1, 72, 15,221, 18,241, 26, 15,221, 10, 1, 73, 15,221, 18,244, 26, + 15,221, 10, 1, 74, 15,221, 18,247, 26, 15,221, 10, 1, 75, 15,221, 18,250, 26, + 15,221, 10, 1, 76, 15,221, 18,253, 26, 15,221, 10, 1, 77, 15,221, 17, 1, 0, + 26, 15,221, 10, 1, 78, 15,221, 17, 1, 3, 26, 15,221, 10, 1, 79, 15,221, 17, + 1, 6, 26, 15,221, 10, 1, 80, 15,221, 17, 1, 9, 26, 15,221, 10, 1, 81, 15, +221, 17, 1, 12, 26, 15,221, 10, 1, 82, 15,221, 17, 1, 15, 26, 15,221, 10, 1, + 83, 15,221, 17, 1, 18, 26, 15,221, 10, 1, 84, 15,221, 17, 1, 21, 26, 15,221, + 10, 1, 85, 15,221, 17, 1, 24, 26, 15,221, 10, 1, 86, 15,221, 18,105, 26, 15, +221, 10, 1, 87, 15,221, 17, 1, 29, 26, 15,221, 10, 1, 88, 15,221, 17, 1, 32, + 26, 15,221, 10, 1, 89, 15,221, 17, 1, 34, 26, 15,221, 10, 1, 90, 15,221, 17, + 1, 37, 26, 15,221, 10, 1, 91, 15,221, 17, 1, 40, 26, 15,221, 10, 1, 92, 15, +221, 17, 1, 43, 26, 15,221, 10, 1, 93, 15,221, 17, 1, 46, 26, 15,221, 10, 1, + 94, 15,221, 17, 1, 52, 26, 15,221, 10, 1, 95, 15,221, 17, 1, 49, 26, 15,221, + 10, 1, 96, 15,221, 17, 1, 55, 26, 15,221, 10, 1, 97, 15,221, 17, 1, 58, 26, + 15,221, 10, 1, 98, 15,221, 17, 1, 99, 26, 0, 0, 0, 0, 0, 0, 0, 1,100, + 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 5,116,121,112, +101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 4, + 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, 2, 13, 1, 11, 1, 13, 0, + 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, 4, 13, 0, 20, 5, 13, 1, + 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, 15, 7, 13, 1, 18, 4, 13, + 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97, +114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, + 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 2, + 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 2, 0, + 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, 0, 0, 0, 12, + 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, 0, 0, 0, 32, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, 13, 2, 4, 0, 2, 2, 2, + 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, + 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, 3, 2, 2, 2, 23, 4, 23, + 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, 0, 2, 0, 0, 0, 5,102, +117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 6,101, +114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, + 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108, +117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108, +105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117, +116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 80, 9, 2, 22, + 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, 2, 13, 3, 7, 1, 26, 15, + 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 22, 15, 3, 13, 2, 4, 0, + 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, 13, 1, 13, 3, 16, 2, 0, + 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116, +101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,110,101,120,116, + 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4, + 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, 2, 15, 1, 13, 1, 2, 1, + 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, 1, 16, 1, 2, 50, 47, 15, + 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, 2, 2, 1, 2, 13, 3, 52, + 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, 4, 1, 5, 50, 4, 13, 3, + 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 12,116,121, +112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, + 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115,116,114,117,112, +112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 16, + 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, 73,117,112, 71,101,116, 72, + 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101,116, 0, 4, 0, 0, 0, 77, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, 1, 2, 1, 1, 52,209, 15, + 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, 11, 7, 32, 48, 12, 15, 8, + 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, 0, 23, 4, 13, 4, 52, 55, + 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, 8, 13, 0, 18, 10, 2, 1, + 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, 1, 16, 13, 5, 13, 2, 2, + 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, 50,111, 15, 2, 13, 2, 2, + 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, 15, 15, 13, 0, 18, 10, 13, + 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, 2, 2, 1, 1, 52, 34, 15, + 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, 15, 15, 15, 13, 0, 18, 10, + 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, 15, 19, 13, 2, 2, 1, 1, + 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 18, + 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, 2, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 6, +118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, 0, 9,115, +116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, 99, 98, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7, +114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 67,108, + 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, + 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 7,100,105, 97,108,111, +103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 15,105,117,112, + 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,116,121,112,101, 95, +110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95,118, 97,108,117,101, 0, 2, + 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111, +121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 89, 6, 1, 7, 1, 13, + 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, 48, 4, 13, 2, 18, 4, 52, + 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, 4, 4, 0, 26, 13, 2, 20, + 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, 15, 8, 2, 0, 0, 13, 1, + 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, 2, 54, 70, 15, 9, 13, 0, + 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,105, 0, 2, + 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 10,114, 95,100, +101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, 97, 98,108,101, 32,105,110, + 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, 0, 0, 0, 5,101,120,105, +116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, 2, + 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,133, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, 1, 15, 2, 13, 0, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 11, + 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, 0, 0, 7,100,101,116, 97, + 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 96, 8, 1, 15, 0, + 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, 13, 0, 11, 3, 4, 0, 26, + 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, 41, 50, 20, 13, 1, 13, 2, + 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, + 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, 1, 3, 13, 2, 7, 1, 37, + 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99,104, 0, 2, 0, 0, 0, 5, +115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 2,105, 0, + 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0,158, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, 2, 1, 2, 52, 57, 13, 1, + 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, 16, 13, 1, 32, 52, 4, 13, + 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 28, 15, 5, 13, + 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, 50, 4, 4, 0, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, + 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101,115, 0, + 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0,175, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0,179, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105,100,101, 0, 2, 0, 0, 0, + 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 17, 67,114,101, + 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0,187, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, + 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, 0, 0, 0, 9,105,117,112, +116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 84, 73, 77, 69, 82, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105,109,101,114, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 4, 0, 0, 0,200, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105,117, +112, 67,114,101, 97,116,101, 67,108,105,112, 98,111, 97,114,100, 0, 2, 0, 0, + 0, 13,105,117,112, 99,108,105,112, 98,111, 97,114,100, 0, 4, 0, 0, 0,204, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 13, + 73, 85, 80, 67, 76, 73, 80, 66, 79, 65, 82, 68, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10, 99,108,105,112, 98, +111, 97,114,100, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, + 0,213, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, + 1, 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, + 97,110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, + 68,105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,219, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0, + 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, + 0, 0, 0,223, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, + 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, + 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119, + 88, 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111, +112,117,112, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, + 0, 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,231, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, + 68, 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,240, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16, + 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,246, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16, + 2, 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101, + 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114, + 97,100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, + 0, 4, 0, 0, 0,254, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1, + 50, 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4, + 22, 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1, + 26, 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1, + 37, 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7, + 13, 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13, + 0, 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13, + 3, 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13, + 0, 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, + 0, 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, + 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, + 6,101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0, + 2, 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105, +110,103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106, + 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100, +104,114, 97,100,105,111, 0, 4, 0, 0, 1, 26, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35, + 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1, + 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108, +101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2, + 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100, +104, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, + 9,101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 32, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, + 2, 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111, +103,103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101, +115, 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, + 7,101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 41, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3, + 2, 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6, + 11, 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11, + 15, 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42, + 11, 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7, + 2, 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48, + 11, 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2, + 42, 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, + 16, 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, + 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111, +114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0, + 0, 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110, +111,114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111, +101,115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103, + 32,116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, + 99,116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97, +118,101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109, +101,110,117, 0, 4, 0, 0, 1, 59, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15, + 2, 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2, + 1, 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7, + 22, 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52, + 38, 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16, + 26, 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13, + 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13, + 4, 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1, + 23, 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1, + 13, 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54, +173, 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105, + 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13, +105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112, +105,116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, + 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, + 8,105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, + 85, 0, 4, 0, 0, 1, 94, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, + 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, + 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80, +111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, + 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1,102, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1, + 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7, + 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114, +114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, + 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117, +101, 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105, +122,101,100, 0, 4, 0, 0, 1,112, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13, + 0, 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1, + 37, 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23, + 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2, + 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1, + 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13, + 4, 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37, + 23, 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, + 2, 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, + 1, 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13, + 2, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101, +109,101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, + 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80, + 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101, +110,116, 0, 4, 0, 0, 1,146, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, + 67,114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104, + 98,111,120, 0, 4, 0, 0, 1,150, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104, + 98,111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1, +156, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, + 20, 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, + 73, 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, + 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, + 0, 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,162, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15, + 5, 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4, + 30, 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10, + 52, 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50, + 17, 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2, + 48, 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1, + 50, 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2, +102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114, +111,109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101, +114, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, + 6,116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, + 0, 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32, +104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105, +115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, + 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120, +116, 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101, +100,104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4, + 0, 0, 1,185, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, + 4, 0, 0, 1,189, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0, + 2, 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, + 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,204, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, + 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8, +105,117,112,122, 98,111,120, 0, 4, 0, 0, 1,208, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 44, 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1, + 13, 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24, + 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83, +101,116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0, + 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,223, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97, +116,101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, + 4, 0, 0, 1,227, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, + 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,236, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, + 7, 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, + 0, 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116, +116,111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4, + 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116, +111,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1, +252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117, +112,116,101,120,116, 0, 4, 0, 0, 2, 0, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2, + 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, + 5,116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, + 73, 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, + 2, 9, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19, +105,117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2, + 0, 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, + 2, 13, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108, +116,105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76, + 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 22, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7, + 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116, +105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0, + 1, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101, +108, 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2, + 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, + 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85, + 80, 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 38, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114, +101, 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0, + 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 51, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4, + 0, 0, 2, 55, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10, +116,121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 4, 0, 0, 2, 64, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1, + 18, 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26, + 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, + 97,116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108, +101, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 70, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, + 2, 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0, + 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 19,105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0, + 2, 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0, + 0, 2, 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101, +112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, + 68, 76, 71, 0, 4, 0, 0, 2, 92, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2, 96, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, + 70,105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101, +100,108,103, 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69, + 83, 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2,109, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, + 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67, +114,101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0, + 14,105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,117, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14, + 73, 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115, + 97,103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, + 68, 76, 71, 0, 4, 0, 0, 2,126, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, + 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117, +112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, + 2,130, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, + 67,111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108, +111,114,100,108,103, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68, + 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73, + 85, 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,143, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, + 0, 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, + 67,114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105, +117,112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79, + 78, 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116, +111,114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,160, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0, + 0, 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,164, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114, + 0, 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, + 4, 0, 0, 2,173, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, + 2, 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, + 5, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, + 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, + 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114, +111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32, +105,110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,183, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4, + 13, 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24, + 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105, +117,112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2, + 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111, +108, 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114, + 0, 4, 0, 0, 2,193, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80, + 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105, +122,101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0, + 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,202, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, + 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9, +105,117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,208, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, + 77, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67, + 65, 78, 86, 65, 83, 0, 4, 0, 0, 2,217, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, + 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97, +110,118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0, + 4, 0, 0, 2,221, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110, +118, 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0, + 2,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,234, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52, + 16, 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18, + 8, 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, + 0, 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, + 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101, +116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0, + 4, 0, 0, 2,242, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2, + 1, 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2, + 2, 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2, + 42, 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11, + 9, 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3, + 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101, +120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121, +112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112, +101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, + 0, 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,253, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 76, 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80, + 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 3, 6, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50, + 32, 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15, + 5, 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3, + 16, 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52, + 9, 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26, + 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9, + 13, 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4, +111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0, + 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, + 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45, +110,117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97, +103,101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101, +110,116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0, + 7,104,101,105,103,104,116, 0, 4, 0, 0, 3, 29, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 74, 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5, + 13, 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2, + 13, 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13, + 1, 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109, + 97,103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7, +104,101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, + 0, 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, + 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103, +101, 0, 4, 0, 0, 3, 41, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, + 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109, + 97,103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, + 0, 4, 0, 0, 3, 49, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, + 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67, +114,101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119, +105,100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, + 0, 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97, +103,101,114,103, 98, 0, 4, 0, 0, 3, 53, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, + 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, + 71, 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73, + 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 61, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18, + 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103, +101, 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, + 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115, + 0, 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4, + 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0, + 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105, +109, 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, + 71, 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 74, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115, + 66, 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115, + 98, 97,114, 0, 4, 0, 0, 3, 78, 0, 0, 0, 20, 64,105,117,112,108,117, 97, + 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, + 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83, + 66, 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, + 0, 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0, + 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, + 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78, + 0, 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10, + 65, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111, + 99,117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66, + 0, 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99, + 98, 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0, + 0, 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17, +105,117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, + 0, 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67, + 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0, + 2, 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78, + 89, 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0, + 0, 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0, + 2, 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0, + 0, 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84, + 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0, + 12, 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115, + 99,114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66, + 0, 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0, + 2, 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13, + 84, 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117, +112, 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6, + 99,108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0, + 2, 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66, + 0, 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0, + 0, 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0, + 2, 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95, + 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2, + 0, 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77, + 65, 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2, + 0, 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0, + 0, 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77, + 69, 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, + 95,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104, +105,103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73, + 71, 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104, +108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0, + 0, 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119, +111,109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0, + 0, 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, +119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78, + 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10, + 82, 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114, +101,115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,109,111,118,101, 0, 2, + 0, 0, 0, 12,105,117,112, 95,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 7,109,111,116,105,111,110, 0, 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,109,111,116,105,111,110, 95, 99, + 98, 0, 2, 0, 0, 0, 12,101,110,116,101,114,119,105,110,100,111,119, 0, 2, + 0, 0, 0, 15, 69, 78, 84, 69, 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, + 0, 0, 0, 19,105,117,112, 95,101,110,116,101,114,119,105,110,100,111,119, 95, + 99, 98, 0, 2, 0, 0, 0, 12,108,101, 97,118,101,119,105,110,100,111,119, 0, + 2, 0, 0, 0, 15, 76, 69, 65, 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, + 2, 0, 0, 0, 19,105,117,112, 95,108,101, 97,118,101,119,105,110,100,111,119, + 95, 99, 98, 0, 2, 0, 0, 0, 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69, + 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109,117,108,116,105,115,101,108,101, 99,116, + 0, 2, 0, 0, 0, 15, 77, 85, 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66, + 0, 2, 0, 0, 0, 19,105,117,112, 95,109,117,108,116,105,115,101,108,101, 99, +116, 95, 99, 98, 0, 2, 0, 0, 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0, + 0, 8, 70, 73, 76, 69, 95, 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102, +105,108,101, 95, 99, 98, 0, 2, 0, 0, 0, 14,109,100,105, 97, 99,116,105,118, + 97,116,101, 99, 98, 0, 2, 0, 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65, + 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109,100,105, 97, 99, +116,105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100, +111,119,110, 99, 98, 0, 2, 0, 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100,114,111,112,100,111,119,110, + 95, 99, 98, 0, 2, 0, 0, 0, 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0, + 2, 0, 0, 0, 12, 68, 66, 76, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, + 0, 16,105,117,112, 95,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, + 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95,116,111,103,103,108,101, + 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,116,101,120, +116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 98,117, +116,116,111,110, 0, 2, 0, 0, 0, 16,105,117,112, 95, 97, 99,116,105,111,110, + 95,108,105,115,116, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, 99,116,105,111, +110, 95, 99, 97,110,118, 97,115, 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99, +116,105,111,110, 95,116,105,109,101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,103,101,116,102,111, 99,117,115, 95, + 99, 98, 0, 2, 0, 0, 0, 13,107,105,108,108,102,111, 99,117,115, 95, 99, 98, + 0, 2, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8, +104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, + 98, 0, 2, 0, 0, 0, 12,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116, +114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111, +115,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2, + 0, 0, 0, 8,115,104,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112, + 95, 99, 98, 0, 2, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0, + 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0, + 13,109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104, +105,103,104,108,105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109, + 95, 99, 98, 0, 2, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0, + 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101, +115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,109,111,118,101, 95, 99, 98, + 0, 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 15,101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115, +101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116, +105,118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99, + 98, 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, + 0, 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, + 16,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, 0, 2, 0, 0, + 0, 15,118, 97,108,117,101, 99,104, 97,110,103,101,100, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_le64.lo"); +} diff --git a/iup/srclua3/loh/iuplua_widgets_le64w.loh b/iup/srclua3/loh/iuplua_widgets_le64w.loh new file mode 100755 index 0000000..cce26b4 --- /dev/null +++ b/iup/srclua3/loh/iuplua_widgets_le64w.loh @@ -0,0 +1,920 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/iuplua_widgets_le64w.lo"); +*/ +/* ../obj/iuplua3/iuplua_widgets_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 7,129, 67, 0, + 22, 1, 11, 1, 22, 0, 30, 0, 25, 0, 15, 0, 11, 2, 11, 3, 26, 15, 0, 11, + 4, 11, 5, 26, 15, 0, 11, 6, 11, 7, 26, 15, 0, 11, 8, 11, 9, 26, 15, 0, + 11, 10, 11, 11, 26, 15, 0, 11, 12, 11, 13, 26, 15, 0, 11, 14, 11, 15, 26, 15, + 0, 11, 16, 11, 17, 26, 15, 0, 11, 18, 11, 19, 26, 15, 0, 11, 20, 11, 21, 26, + 15, 0, 11, 22, 11, 23, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 24, 15, 24, 11, + 26, 11, 27, 26, 11, 29, 25, 28, 15, 30, 11, 31, 15, 28, 26, 22, 2, 11, 25, 15, + 0, 11, 1, 22, 1, 15, 33, 29, 0, 1, 30, 1, 25, 32, 15, 32, 11, 26, 11, 34, + 26, 15, 32, 11, 35, 11, 36, 26, 15, 32, 11, 37, 11, 38, 26, 15, 32, 11, 39, 11, + 40, 26, 11, 42, 25, 41, 15, 30, 11, 43, 15, 41, 26, 22, 2, 11, 25, 15, 0, 11, + 1, 22, 1, 15, 33, 29, 0, 1, 30, 1, 25, 44, 15, 44, 11, 26, 11, 45, 26, 11, + 47, 25, 46, 15, 30, 11, 48, 15, 46, 26, 11, 50, 25, 49, 11, 52, 25, 51, 11, 54, + 25, 53, 22, 1, 11, 25, 15, 0, 30, 0, 25, 55, 15, 55, 11, 4, 11, 56, 26, 15, + 55, 11, 26, 11, 57, 26, 11, 59, 25, 58, 15, 30, 11, 60, 15, 58, 26, 15, 61, 11, + 39, 11, 62, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 63, 15, 63, 11, 4, 11, 64, + 26, 15, 63, 11, 26, 11, 65, 26, 22, 1, 11, 25, 15, 63, 30, 0, 25, 66, 15, 66, + 11, 67, 11, 68, 26, 11, 70, 25, 69, 15, 30, 11, 71, 15, 69, 26, 11, 73, 25, 72, + 11, 75, 25, 74, 22, 1, 11, 25, 15, 63, 30, 0, 25, 76, 15, 76, 11, 67, 11, 77, + 26, 11, 79, 25, 78, 15, 30, 11, 80, 15, 78, 26, 11, 82, 25, 81, 22, 1, 11, 25, + 15, 63, 30, 0, 25, 83, 15, 83, 11, 67, 11, 84, 26, 11, 86, 25, 85, 15, 30, 11, + 87, 15, 85, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, 88, 15, 88, 11, 26, 11, 89, + 26, 11, 91, 25, 90, 15, 30, 11, 92, 15, 90, 26, 22, 2, 11, 25, 15, 0, 11, 94, + 22, 1, 11, 95, 15, 96, 30, 0, 30, 1, 25, 93, 15, 93, 11, 26, 11, 97, 26, 11, + 99, 25, 98, 15, 30, 11,100, 15, 98, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,101, + 15,101, 11, 26, 11,102, 26, 11,104, 25,103, 15, 30, 11,105, 15,103, 26, 22, 1, + 11, 25, 15,107, 30, 0, 25,106, 15,106, 11, 26, 11,108, 26, 11,110, 25,109, 15, + 30, 11,111, 15,109, 26, 22, 2, 11, 25, 15, 0, 11, 94, 22, 1, 11,113, 15, 96, + 30, 0, 30, 1, 25,112, 15,112, 11, 26, 11,114, 26, 11,116, 25,115, 15, 30, 11, +117, 15,115, 26, 22, 1, 11, 25, 15,119, 30, 0, 25,118, 15,118, 11, 26, 11,120, + 26, 11,122, 25,121, 15, 30, 11,123, 15,121, 26, 22, 1, 11, 25, 15,119, 30, 0, + 25,124, 15,124, 11, 26, 11,125, 26, 11,127, 25,126, 15, 30, 11,128, 15,126, 26, + 22, 2, 11, 25, 15, 0, 11, 94, 22, 2, 15,130, 29, 0, 1, 11,131, 15, 96, 30, + 0, 30, 1, 25,129, 15,129, 11, 26, 11,132, 26, 11,134, 25,133, 15, 30, 11,135, + 15,133, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,136, 15,136, 11, 26, 11,137, 26, + 11,139, 25,138, 15, 30, 11,140, 15,138, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, +141, 15,141, 11, 39, 11,142, 26, 15,141, 11, 26, 11,143, 26, 11,145, 25,144, 15, + 30, 11,146, 15,144, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,147, 15,147, 11, 39, + 11,148, 26, 15,147, 11, 26, 11,149, 26, 11,151, 25,150, 15, 30, 11,152, 15,150, + 26, 22, 1, 11, 25, 15, 0, 30, 0, 25,153, 15,153, 11, 39, 11,154, 26, 15,153, + 11, 26, 11,155, 26, 11,157, 25,156, 15, 30, 11,158, 15,156, 26, 22, 1, 11, 25, + 15, 0, 30, 0, 25,159, 15,159, 11, 39, 11,160, 26, 15,159, 11, 26, 11,161, 26, + 11,163, 25,162, 15, 30, 11,164, 15,162, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, +165, 15,165, 11, 26, 11,166, 26, 11,168, 25,167, 15, 30, 11,169, 15,167, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,170, 15,170, 11, 4, 11,171, 26, 15,170, 11, 26, + 11,172, 26, 11,174, 25,173, 15, 30, 11,175, 15,173, 26, 22, 2, 11, 25, 15, 0, + 11, 94, 22, 1, 15,177, 29, 0, 1, 30, 1, 25,176, 15,176, 11, 26, 11,178, 26, + 11,180, 25,179, 15, 30, 11,181, 15,179, 26, 22, 1, 11, 25, 15, 0, 30, 0, 25, +182, 15,182, 11, 26, 11,183, 26, 11,185, 25,184, 15, 30, 11,186, 15,184, 26, 22, + 1, 11, 25, 15, 0, 30, 0, 25,187, 15,187, 11, 26, 11,188, 26, 15,187, 11, 8, + 11,189, 26, 15,187, 11, 10, 11,190, 26, 11,192, 25,191, 15, 30, 11,193, 15,191, + 26, 22, 1, 11, 25, 15,195, 30, 0, 25,194, 15,194, 11, 4, 11,196, 26, 15,194, + 11, 26, 11,197, 26, 11,199, 25,198, 15, 30, 11,200, 15,198, 26, 22, 1, 11, 25, + 15,195, 30, 0, 25,201, 15,201, 11, 26, 11,202, 26, 11,204, 25,203, 15, 30, 11, +205, 15,203, 26, 22, 1, 11, 25, 15,195, 30, 0, 25,206, 15,206, 11, 26, 11,207, + 26, 11,209, 25,208, 15, 30, 11,210, 15,208, 26, 22, 1, 11, 25, 15,195, 30, 0, + 25,211, 15,211, 11, 26, 11,212, 26, 11,214, 25,213, 15, 30, 11,215, 15,213, 26, + 22, 32, 11,217, 22, 2, 11,218, 4, 0, 29, 0, 2, 11,219, 22, 2, 11,220, 4, + 0, 29, 0, 2, 11,221, 22, 2, 11,222, 15,223, 29, 0, 2, 11,224, 22, 2, 11, +225, 15,226, 29, 0, 2, 11,227, 22, 2, 11,228, 15,229, 29, 0, 2, 11,230, 22, + 2, 11,231, 15,232, 29, 0, 2, 11,233, 22, 2, 11,234, 15,235, 29, 0, 2, 11, +236, 22, 2, 11,237, 15,238, 29, 0, 2, 11,239, 22, 2, 11,240, 15,241, 29, 0, + 2, 11,242, 22, 2, 11,243, 15,244, 29, 0, 2, 11,245, 22, 2, 11,246, 15,247, + 29, 0, 2, 11,248, 22, 2, 11,249, 15,250, 29, 0, 2, 11,251, 22, 2, 11,252, + 15,253, 29, 0, 2, 11,254, 22, 2, 11,255, 14, 1, 0, 29, 0, 2, 10, 1, 1, + 22, 2, 10, 1, 2, 14, 1, 3, 29, 0, 2, 10, 1, 4, 22, 2, 10, 1, 5, 14, + 1, 6, 29, 0, 2, 10, 1, 7, 22, 2, 10, 1, 8, 14, 1, 9, 29, 0, 2, 10, + 1, 10, 22, 2, 10, 1, 11, 14, 1, 12, 29, 0, 2, 10, 1, 13, 22, 2, 10, 1, + 14, 14, 1, 15, 29, 0, 2, 10, 1, 16, 22, 2, 10, 1, 17, 14, 1, 18, 29, 0, + 2, 10, 1, 19, 22, 2, 10, 1, 20, 14, 1, 21, 29, 0, 2, 11,100, 22, 2, 10, + 1, 22, 14, 1, 23, 29, 0, 2, 10, 1, 24, 22, 2, 10, 1, 25, 14, 1, 26, 29, + 0, 2, 10, 1, 27, 22, 2, 10, 1, 28, 14, 1, 29, 29, 0, 2, 10, 1, 30, 22, + 2, 10, 1, 31, 14, 1, 32, 29, 0, 2, 10, 1, 33, 22, 2, 10, 1, 34, 14, 1, + 35, 29, 0, 2, 10, 1, 36, 22, 2, 10, 1, 37, 14, 1, 38, 29, 0, 2, 10, 1, + 39, 22, 2, 10, 1, 40, 14, 1, 41, 29, 0, 2, 10, 1, 42, 22, 2, 10, 1, 43, + 14, 1, 44, 29, 0, 2, 10, 1, 45, 22, 2, 10, 1, 46, 14, 1, 47, 29, 0, 2, + 10, 1, 48, 22, 2, 10, 1, 49, 14, 1, 50, 29, 0, 2, 10, 1, 51, 22, 2, 10, + 1, 52, 14, 1, 53, 29, 0, 2, 30, 31, 25,216, 15,216, 18,217, 11,123, 14, 1, + 54, 26, 15,216, 18,217, 11,111, 14, 1, 55, 26, 15,216, 18,217, 11,105, 14, 1, + 55, 26, 15,216, 18,217, 11,100, 14, 1, 56, 26, 15,216, 18,217, 11,193, 14, 1, + 57, 26, 15,216, 18,217, 11,128, 14, 1, 56, 26, 15,216, 18,217, 11,186, 14, 1, + 58, 26, 15,216, 18,219, 11, 31, 14, 1, 59, 26, 15,216, 10, 1, 60, 15,216, 18, +219, 26, 15,216, 10, 1, 61, 15,216, 18,221, 26, 15,216, 10, 1, 62, 15,216, 18, +224, 26, 15,216, 10, 1, 63, 15,216, 18,227, 26, 15,216, 11,230, 15,216, 18,230, + 26, 15,216, 10, 1, 64, 15,216, 18,233, 26, 15,216, 10, 1, 65, 15,216, 18,236, + 26, 15,216, 10, 1, 66, 15,216, 18,239, 26, 15,216, 10, 1, 67, 15,216, 18,242, + 26, 15,216, 10, 1, 68, 15,216, 18,245, 26, 15,216, 10, 1, 69, 15,216, 18,248, + 26, 15,216, 10, 1, 70, 15,216, 18,251, 26, 15,216, 10, 1, 71, 15,216, 18,254, + 26, 15,216, 10, 1, 72, 15,216, 17, 1, 1, 26, 15,216, 10, 1, 73, 15,216, 17, + 1, 4, 26, 15,216, 10, 1, 74, 15,216, 17, 1, 7, 26, 15,216, 10, 1, 75, 15, +216, 17, 1, 10, 26, 15,216, 10, 1, 76, 15,216, 17, 1, 13, 26, 15,216, 10, 1, + 77, 15,216, 17, 1, 16, 26, 15,216, 10, 1, 78, 15,216, 17, 1, 19, 26, 15,216, + 10, 1, 79, 15,216, 18,100, 26, 15,216, 10, 1, 80, 15,216, 17, 1, 24, 26, 15, +216, 10, 1, 81, 15,216, 17, 1, 27, 26, 15,216, 10, 1, 82, 15,216, 17, 1, 30, + 26, 15,216, 10, 1, 83, 15,216, 17, 1, 33, 26, 15,216, 10, 1, 84, 15,216, 17, + 1, 36, 26, 15,216, 10, 1, 85, 15,216, 17, 1, 39, 26, 15,216, 10, 1, 86, 15, +216, 17, 1, 45, 26, 15,216, 10, 1, 87, 15,216, 17, 1, 42, 26, 15,216, 10, 1, + 88, 15,216, 17, 1, 48, 26, 15,216, 10, 1, 89, 15,216, 17, 1, 51, 26, 0, 0, + 0, 0, 0, 0, 0, 1, 90, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, + 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 4, 0, 0, 0, 12, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 57, 7, + 2, 13, 1, 11, 1, 13, 0, 26, 13, 0, 20, 3, 13, 1, 2, 0, 2, 13, 1, 11, + 4, 13, 0, 20, 5, 13, 1, 2, 1, 2, 26, 13, 0, 20, 6, 13, 1, 2, 0, 2, + 15, 7, 13, 1, 18, 4, 13, 1, 26, 13, 1, 18, 4, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,112, 97, +114,101,110,116, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, + 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 2, 0, 0, 0, 7,104, 97,110, +100,108,101, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108, +101,109,101,110,116, 0, 2, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98, +117,116,101,115, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97,110,100,108,101, +115, 0, 2, 0, 0, 0, 12, 99,104,101, 99,107, 80, 97,114, 97,109,115, 0, 4, + 0, 0, 0, 32, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 61, 8, 2, 13, 0, 18, 1, 15, 5, + 13, 2, 4, 0, 2, 2, 2, 50, 39, 13, 4, 13, 1, 13, 3, 16, 2, 1, 1, 44, + 52, 13, 15, 6, 11, 7, 13, 3, 42, 11, 8, 42, 2, 0, 1, 15, 5, 13, 2, 13, + 3, 2, 2, 2, 23, 4, 23, 3, 13, 3, 54, 43, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, + 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112, 97,114, 97,109, + 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 5,110,101,120,116, + 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, + 97,109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114, +111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32, +105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, 0, 0, 14,115,101,116, + 65,116,116,114,105, 98,117,116,101,115, 0, 4, 0, 0, 0, 43, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 80, 9, 2, 22, 0, 15, 3, 13, 1, 4, 0, 2, 1, 2, 50, 18, 13, + 2, 13, 3, 7, 1, 26, 15, 3, 13, 1, 13, 3, 2, 1, 2, 23, 3, 13, 3, 54, + 22, 15, 3, 13, 2, 4, 0, 2, 1, 2, 23, 3, 50, 25, 13, 1, 20, 4, 13, 3, + 13, 1, 13, 3, 16, 2, 0, 3, 15, 3, 13, 2, 13, 3, 2, 1, 2, 23, 3, 13, + 3, 54, 29, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 5,116,101,109,112, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, + 0, 0, 5,110,101,120,116, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, 0, + 0, 4,103,101,116, 0, 4, 0, 0, 0, 57, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 82, 6, + 2, 15, 1, 13, 1, 2, 1, 1, 52, 63, 15, 2, 13, 1, 16, 52, 9, 13, 0, 13, + 1, 16, 1, 2, 50, 47, 15, 5, 13, 1, 2, 1, 1, 15, 7, 13, 0, 18, 8, 13, + 2, 2, 1, 2, 13, 3, 52, 23, 15, 9, 13, 3, 2, 1, 1, 13, 4, 52, 6, 13, + 4, 1, 5, 50, 4, 13, 3, 1, 5, 5, 1, 5, 2, 13, 0, 13, 1, 16, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 6,105,110,100,101,120, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, + 5,115,101,108,102, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 2, 0, 0, + 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 6,118, 97,108,117, +101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 13, + 73,117,112, 71,101,116, 72, 97,110,100,108,101, 0, 2, 0, 0, 0, 4,115,101, +116, 0, 4, 0, 0, 0, 77, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,228, 11, 3, 15, 2, 13, + 1, 2, 1, 1, 52,209, 15, 4, 13, 1, 2, 1, 1, 15, 6, 13, 1, 16, 13, 1, + 11, 7, 32, 48, 12, 15, 8, 13, 0, 18, 10, 2, 1, 1, 11, 11, 32, 52, 4, 4, + 0, 23, 4, 13, 4, 52, 55, 13, 4, 7, 2, 16, 13, 5, 44, 52, 14, 13, 4, 15, + 8, 13, 0, 18, 10, 2, 1, 1, 16, 23, 5, 15, 13, 13, 0, 18, 10, 13, 4, 7, + 1, 16, 13, 5, 13, 2, 2, 0, 4, 13, 0, 13, 1, 13, 2, 26, 1, 6, 5, 1, + 50,111, 15, 2, 13, 2, 2, 1, 1, 46, 7, 15, 14, 13, 2, 2, 1, 1, 52, 17, + 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 2, 0, 3, 1, 5, 50, 76, 15, 16, 13, + 2, 2, 1, 1, 52, 34, 15, 18, 13, 0, 18, 10, 13, 3, 2, 1, 2, 13, 5, 52, + 15, 15, 15, 13, 0, 18, 10, 13, 3, 13, 2, 2, 0, 3, 1, 6, 5, 1, 50, 33, + 15, 19, 13, 2, 2, 1, 1, 52, 24, 15, 20, 13, 2, 2, 0, 1, 15, 15, 13, 0, + 18, 10, 13, 3, 13, 2, 18, 21, 2, 0, 3, 1, 5, 5, 2, 13, 0, 13, 1, 13, + 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 6,105,110,100,101, +120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 12,116,121, +112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 6, 73, 78, 68, 69, 88, + 0, 2, 0, 0, 0, 9,115,116,114,117,112,112,101,114, 0, 2, 0, 0, 0, 3, + 99, 98, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107, +115, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 16, 73, +117,112, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, 2, 0, 0, 0, 5, +115,101,108,102, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, + 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, + 0, 0, 0, 15,105,117,112, 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, 2, + 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, + 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, + 0, 9,116,121,112,101, 95,110,105,108, 0, 2, 0, 0, 0, 10,111,108,100, 95, +118, 97,108,117,101, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116, +114,105, 98,117,116,101, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100, +103,101,116, 0, 2, 0, 0, 0, 11,105,117,112, 83,101,116, 78, 97,109,101, 0, + 2, 0, 0, 0, 9, 73, 85, 80, 95,110, 97,109,101, 0, 2, 0, 0, 0, 10,114, + 95,100,101,115,116,114,111,121, 0, 4, 0, 0, 0,113, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 89, 6, 1, 7, 1, 13, 0, 13, 1, 16, 50, 66, 15, 3, 13, 2, 2, 1, 1, + 48, 4, 13, 2, 18, 4, 52, 37, 13, 2, 18, 4, 13, 0, 32, 52, 16, 13, 2, 11, + 4, 4, 0, 26, 13, 2, 20, 5, 2, 0, 1, 50, 12, 15, 6, 11, 7, 2, 0, 1, + 15, 8, 2, 0, 0, 13, 1, 7, 1, 37, 23, 1, 13, 0, 13, 1, 16, 23, 2, 13, + 2, 54, 70, 15, 9, 13, 0, 4, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, + 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, 0, + 5,115,101,108,102, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, + 0, 0, 0, 10,114, 95,100,101,115,116,114,111,121, 0, 2, 0, 0, 0, 6,101, +114,114,111,114, 0, 2, 0, 0, 0, 29, 73,110,116,101,114,110, 97,108, 32,116, + 97, 98,108,101, 32,105,110, 99,111,110,115,105,115,116,101,110, 99,121, 0, 2, + 0, 0, 0, 5,101,120,105,116, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, 97, +110,100,108,101,115, 0, 2, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, + 0, 0, 0,133, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 17, 3, 1, 13, 0, 20, 1, 2, 0, + 1, 15, 2, 13, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 10,114, 95,100,101,115,116,114,111, +121, 0, 2, 0, 0, 0, 11, 73,117,112, 68,101,115,116,114,111,121, 0, 2, 0, + 0, 0, 7,100,101,116, 97, 99,104, 0, 4, 0, 0, 0,138, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0, 96, 8, 1, 15, 0, 13, 0, 2, 0, 1, 13, 0, 18, 3, 13, 1, 52, 78, + 13, 0, 11, 3, 4, 0, 26, 7, 1, 50, 58, 13, 1, 13, 2, 16, 13, 0, 32, 52, + 41, 50, 20, 13, 1, 13, 2, 13, 1, 13, 2, 7, 1, 37, 16, 26, 13, 2, 7, 1, + 37, 23, 2, 13, 1, 13, 2, 7, 1, 37, 16, 54, 30, 13, 1, 13, 2, 4, 0, 26, + 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 65, 5, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 10, 73,117,112, 68,101,116, 97, 99, +104, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, + 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 4, + 0, 0, 0,158, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 75, 6, 2, 15, 1, 13, 0, 13, 1, + 2, 1, 2, 52, 57, 13, 1, 11, 3, 13, 0, 26, 7, 1, 50, 21, 13, 0, 13, 2, + 16, 13, 1, 32, 52, 4, 13, 2, 1, 3, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, + 2, 16, 54, 28, 15, 5, 13, 0, 16, 13, 2, 13, 1, 26, 13, 2, 1, 3, 5, 1, + 50, 4, 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, + 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 12,105,117,112, 95,104, + 97,110,100,108,101,115, 0, 2, 0, 0, 0, 4,109, 97,112, 0, 4, 0, 0, 0, +175, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 7, 73,117,112, 77, 97,112, 0, 2, + 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,104,105,100,101, 0, 4, + 0, 0, 0,179, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 72,105, +100,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 84, 73, 77, 69, 82, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, + 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, + 0, 4, 0, 0, 0,187, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, + 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 84,105,109,101,114, 0, 2, + 0, 0, 0, 9,105,117,112,116,105,109,101,114, 0, 4, 0, 0, 0,191, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, + 80, 84, 73, 77, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99, +116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,116,105, +109,101,114, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, 73, 65, 76, 79, 71, 0, 2, + 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 0, +200, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, + 1, 13, 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97, +110,100,108,101, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 68, +105, 97,108,111,103, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110, +116, 0, 2, 0, 0, 0, 5,115,104,111,119, 0, 4, 0, 0, 0,206, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 10, 3, 1, 15, 0, 13, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 8, 73,117,112, 83,104,111,119, 0, 2, 0, 0, 0, + 5,115,101,108,102, 0, 2, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, 0, + 0, 0,210, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, + 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, + 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 10, 73,117,112, 83,104,111,119, 88, + 89, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6,112,111,112, +117,112, 0, 4, 0, 0, 0,214, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, + 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, + 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, + 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, + 10,105,117,112,100,105, 97,108,111,103, 0, 4, 0, 0, 0,218, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 68, + 73, 65, 76, 79, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116, +111,114, 0, 2, 0, 0, 0, 7,100,105, 97,108,111,103, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 82, 65, 68, 73, 79, 0, 4, 0, 0, 0,227, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, 1, 7, 1, 16, 11, + 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, + 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 82, 97,100,105,111, 0, 2, 0, + 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,105, +117,112,114, 97,100,105,111, 0, 4, 0, 0, 0,233, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 26, 5, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 15, 4, 13, 1, 7, 1, 16, 2, + 0, 1, 13, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 9, 73, + 85, 80, 82, 65, 68, 73, 79, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, + 99,116,111,114, 0, 2, 0, 0, 0, 23,105,117,112, 67,114,101, 97,116,101, 67, +104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 2, 0, 0, 0, 6,114, 97, +100,105,111, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, + 4, 0, 0, 0,241, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,156, 11, 1, 22, 0, 7, 1, 50, + 61, 15, 3, 13, 0, 13, 2, 16, 2, 1, 1, 52, 29, 13, 1, 13, 2, 15, 4, 22, + 2, 11, 5, 13, 0, 13, 2, 16, 11, 6, 13, 0, 18, 6, 30, 1, 2, 1, 1, 26, + 50, 13, 15, 7, 11, 8, 13, 2, 42, 11, 9, 42, 2, 0, 1, 13, 2, 7, 1, 37, + 23, 2, 13, 0, 13, 2, 16, 54, 68, 13, 0, 18, 10, 52, 51, 7, 1, 50, 7, 13, + 3, 7, 1, 37, 23, 3, 13, 0, 13, 3, 16, 48, 10, 13, 0, 13, 3, 16, 13, 0, + 18, 10, 31, 54, 26, 13, 0, 13, 3, 16, 52, 10, 13, 1, 11, 10, 13, 1, 13, 3, + 16, 26, 5, 1, 50, 18, 13, 0, 18, 12, 52, 12, 13, 1, 11, 10, 13, 1, 13, 0, + 18, 12, 16, 26, 13, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, + 0, 2,104, 0, 2, 0, 0, 0, 4,116,109,112, 0, 2, 0, 0, 0, 2,105, 0, + 2, 0, 0, 0, 12,116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, + 0, 10,105,117,112,116,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 6, +101,114,114,111,114, 0, 2, 0, 0, 0, 8,111,112,116,105,111,110, 32, 0, 2, + 0, 0, 0, 18, 32,109,117,115,116, 32, 98,101, 32, 97, 32,115,116,114,105,110, +103, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 2,106, 0, + 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 9,101,100,104, +114, 97,100,105,111, 0, 4, 0, 0, 1, 13, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 35, 6, + 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, 1, 1, 29, + 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103,103,108,101, +115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, 0, 2, 0, + 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7,101,100,104, + 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 9, +101,100,118,114, 97,100,105,111, 0, 4, 0, 0, 1, 19, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 35, 6, 1, 15, 2, 13, 0, 2, 1, 1, 15, 3, 22, 2, 15, 4, 13, 1, 2, + 1, 1, 29, 0, 1, 11, 5, 13, 1, 18, 5, 30, 0, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,111,103, +103,108,101,115, 0, 2, 0, 0, 0, 11,101,100,110,116,111,103,103,108,101,115, + 0, 2, 0, 0, 0, 9,105,117,112,114, 97,100,105,111, 0, 2, 0, 0, 0, 7, +101,100,118, 98,111,120, 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, 0, 4, 0, 0, 1, 28, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0,159, 7, 2, 7, 1, 50,145, 13, 1, 13, 2, 16, 15, 3, 13, 3, 2, + 1, 1, 44, 52,121, 15, 4, 13, 3, 2, 1, 1, 11, 5, 31, 52, 15, 15, 6, 11, + 7, 13, 2, 42, 11, 8, 42, 2, 0, 1, 50, 94, 13, 3, 7, 1, 16, 48, 11, 15, + 9, 13, 3, 7, 1, 16, 2, 1, 1, 44, 52, 15, 15, 6, 11, 7, 13, 2, 42, 11, + 10, 42, 2, 0, 1, 50, 59, 13, 3, 7, 2, 16, 48, 11, 15, 9, 13, 3, 7, 2, + 16, 2, 1, 1, 44, 48, 11, 15, 11, 13, 3, 7, 2, 16, 2, 1, 1, 44, 48, 11, + 15, 12, 13, 3, 7, 2, 16, 2, 1, 1, 44, 52, 13, 15, 6, 11, 7, 13, 2, 42, + 11, 13, 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, + 54,152, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98,106, 0, + 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10,116, +121,112,101, 95,105,116,101,109, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, + 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, + 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, 0, 0, + 0, 32, 32,105,115, 32,110,111,116, 32, 97, 32,116, 97, 98,108,101, 32,110,111, +114, 32, 97, 32,109,101,110,117, 32,105,116,101,109, 0, 2, 0, 0, 0, 12,116, +121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 30, 32,100,111,101, +115, 32,110,111,116, 32,104, 97,118,101, 32, 97, 32,115,116,114,105,110,103, 32, +116,105,116,108,101, 0, 2, 0, 0, 0, 14,116,121,112,101, 95,102,117,110, 99, +116,105,111,110, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101, +116, 0, 2, 0, 0, 0, 36, 32,100,111,101,115, 32,110,111,116, 32,104, 97,118, +101, 32, 97,110, 32, 97, 99,116,105,111,110, 32,110,111,114, 32, 97, 32,109,101, +110,117, 0, 4, 0, 0, 1, 46, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,189, 10, 2, 15, 2, + 2, 1, 0, 7, 1, 50,166, 13, 1, 13, 3, 16, 4, 0, 15, 6, 13, 4, 2, 1, + 1, 52, 6, 13, 4, 23, 5, 50,112, 13, 4, 7, 1, 16, 44, 52, 11, 15, 7, 22, + 0, 2, 1, 1, 23, 5, 50, 93, 15, 6, 13, 4, 7, 2, 16, 2, 1, 1, 52, 38, + 13, 4, 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 7, 1, 13, 4, 7, 2, 16, 26, + 13, 4, 7, 2, 4, 0, 26, 15, 9, 13, 4, 2, 1, 1, 23, 5, 50, 43, 13, 4, + 11, 8, 13, 4, 7, 1, 16, 26, 13, 4, 11, 10, 13, 4, 7, 2, 16, 26, 13, 4, + 7, 1, 4, 0, 26, 13, 4, 7, 2, 4, 0, 26, 15, 11, 13, 4, 2, 1, 1, 23, + 5, 15, 12, 13, 2, 13, 5, 2, 0, 2, 13, 5, 11, 13, 13, 2, 26, 13, 1, 13, + 3, 13, 5, 26, 13, 3, 7, 1, 37, 23, 3, 5, 2, 13, 1, 13, 3, 16, 54,173, + 13, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 4,111, 98, +106, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 77,101,110,117, 0, 2, 0, 0, 0, 2,105, 0, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 5,101,108,101,109, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 13,105, +117,112,115,101,112, 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 6,116,105,116, +108,101, 0, 2, 0, 0, 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 2, + 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 8,105,117,112,105, +116,101,109, 0, 2, 0, 0, 0, 10, 73,117,112, 65,112,112,101,110,100, 0, 2, + 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, +105,117,112,109,101,110,117, 0, 4, 0, 0, 1, 76, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, + 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, + 0, 0, 5,109,101,110,117, 0, 2, 0, 0, 0, 8, 73, 85, 80, 77, 69, 78, 85, + 0, 4, 0, 0, 1, 81, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, 13, 0, + 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, + 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, 80,111, +112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 12, 67, + 79, 77, 80, 79, 83, 73, 84, 73, 79, 78, 0, 4, 0, 0, 1, 89, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, 13, 1, 13, 2, 16, 2, 1, 1, + 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, 42, 2, 0, 1, 13, 2, 7, 1, + 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, + 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,119,105,100,103,101,116, 0, 2, 0, 0, 0, 6,101,114,114, +111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97,109,101,116,101,114, 32, 0, 2, + 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, + 32,111,114, 32,105,115, 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122, +101,100, 0, 4, 0, 0, 1, 99, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0,187, 11, 2, 13, 0, + 20, 3, 2, 1, 1, 13, 1, 18, 4, 7, 1, 7, 0, 50, 14, 13, 5, 7, 1, 37, + 23, 5, 13, 4, 7, 1, 37, 23, 4, 13, 1, 13, 4, 16, 54, 21, 7, 1, 23, 4, + 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2, 1, + 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1, 13, + 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 50, 79, 15, 9, 13, 2, 13, 1, 13, 4, + 16, 2, 0, 2, 13, 1, 13, 4, 16, 11, 10, 13, 2, 26, 13, 4, 7, 1, 37, 23, + 4, 13, 3, 15, 7, 32, 52, 43, 13, 1, 13, 4, 13, 5, 37, 15, 8, 22, 0, 2, + 1, 1, 26, 15, 9, 13, 2, 13, 1, 13, 4, 13, 5, 37, 16, 2, 0, 2, 13, 1, + 13, 4, 13, 5, 37, 16, 11, 10, 13, 2, 26, 13, 4, 13, 5, 34, 54, 86, 13, 2, + 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 4,111, 98,106, 0, + 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109, +101,110,116, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, + 2,105, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, + 69, 83, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 2, 0, 0, 0, + 10, 73,117,112, 65,112,112,101,110,100, 0, 2, 0, 0, 0, 11, 73, 85, 80, 95, +112, 97,114,101,110,116, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 66,111,120, 69,108,101,109,101,110, +116, 0, 4, 0, 0, 1,133, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67, +114,101, 97,116,101, 72, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,104, 98, +111,120, 0, 4, 0, 0, 1,137, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, + 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,104, 98, +111,120, 0, 2, 0, 0, 0, 7,101,100,104, 98,111,120, 0, 4, 0, 0, 1,143, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, + 4, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, + 85, 80, 95, 89, 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 72, 66, 79, 88, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 8,101,100,102,105,101,108,100, 0, 4, 0, 0, 1,149, 0, 0, 0, 20, 64, +105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, + 0, 0,123, 7, 1, 4, 1, 15, 3, 13, 0, 18, 4, 2, 1, 1, 46, 9, 15, 5, + 13, 0, 18, 4, 2, 1, 1, 52, 19, 15, 6, 22, 1, 11, 7, 13, 0, 18, 4, 30, + 0, 2, 1, 1, 23, 1, 50, 7, 15, 8, 11, 9, 2, 0, 1, 13, 0, 18, 10, 52, + 19, 15, 11, 22, 1, 11, 10, 13, 0, 18, 10, 30, 0, 2, 1, 1, 23, 2, 50, 17, + 15, 11, 22, 1, 11, 10, 13, 0, 18, 12, 30, 0, 2, 1, 1, 23, 2, 13, 2, 48, + 2, 13, 1, 52, 16, 15, 13, 22, 2, 13, 1, 13, 2, 29, 0, 2, 3, 3, 1, 50, + 4, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 2,102, + 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 7,112,114,111, +109,112,116, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,110,117,109, 98,101,114, + 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 2, 0, 0, 0, 6, +116,105,116,108,101, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, + 0, 55,112, 97,114, 97,109,101,116,101,114, 32,112,114,111,109,112,116, 32,104, + 97,115, 32,119,114,111,110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, + 32,110,111,116, 32,105,110,105,116,105, 97,108,105,122,101,100, 0, 2, 0, 0, + 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 8,105,117,112,116,101,120,116, + 0, 2, 0, 0, 0, 7,110,118, 97,108,117,101, 0, 2, 0, 0, 0, 7,101,100, +104, 98,111,120, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 4, 0, + 0, 1,172, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116, +101, 86, 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,118, 98,111,120, 0, 4, + 0, 0, 1,176, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,118, 98,111,120, 0, 2, + 0, 0, 0, 7,101,100,118, 98,111,120, 0, 4, 0, 0, 1,182, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 19, 4, 1, 13, 0, 11, 1, 15, 2, 26, 15, 3, 20, 4, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 7,102,105,108,108,101,100, 0, 2, 0, 0, 0, 8, 73, 85, 80, 95, 89, + 69, 83, 0, 2, 0, 0, 0, 8, 73, 85, 80, 86, 66, 79, 88, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 8, 73, 85, + 80, 90, 66, 79, 88, 0, 4, 0, 0, 1,191, 0, 0, 0, 20, 64,105,117,112,108, +117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, + 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 90, 98,111,120, 0, 2, 0, 0, 0, 8,105, +117,112,122, 98,111,120, 0, 4, 0, 0, 1,195, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 44, + 6, 1, 15, 2, 20, 3, 13, 0, 2, 1, 2, 7, 1, 50, 17, 15, 5, 13, 1, 13, + 2, 16, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 0, 13, 2, 16, 54, 24, 13, + 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 8, 73, 85, + 80, 90, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116, +111,114, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 11,105,117,112, 83,101, +116, 78, 97,109,101, 0, 2, 0, 0, 0, 5,122, 98,111,120, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 70, 73, 76, 76, 0, 4, 0, 0, 1,210, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116, +101, 70,105,108,108, 0, 2, 0, 0, 0, 8,105,117,112,102,105,108,108, 0, 4, + 0, 0, 1,214, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 8, 73, 85, 80, 70, 73, 76, 76, 0, 2, 0, 0, 0, 12, 67,111,110, +115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,102,105,108,108, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 5,116, +121,112,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, 2, 0, 0, 0, 12, +116,121,112,101, 95,115,116,114,105,110,103, 0, 4, 0, 0, 1,223, 0, 0, 0, + 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, + 0, 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7, + 13, 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116, +105,116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0, + 1, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 66,117,116,116, +111,110, 0, 2, 0, 0, 0, 10,105,117,112, 98,117,116,116,111,110, 0, 4, 0, + 0, 1,230, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 10, 73, 85, 80, 66, 85, 84, 84, 79, 78, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 98,117,116,116,111, +110, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1,239, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117, +112, 67,114,101, 97,116,101, 84,101,120,116, 0, 2, 0, 0, 0, 8,105,117,112, +116,101,120,116, 0, 4, 0, 0, 1,243, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, + 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, + 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 2, 0, + 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5, +116,101,120,116, 0, 2, 0, 0, 0, 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, + 78, 69, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 69, 88, 84, 0, 4, 0, 0, 1, +252, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19,105, +117,112, 67,114,101, 97,116,101, 77,117,108,116,105, 76,105,110,101, 0, 2, 0, + 0, 0, 13,105,117,112,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, 2, + 0, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, + 13, 73, 85, 80, 77, 85, 76, 84, 73, 76, 73, 78, 69, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,109,117,108,116, +105,108,105,110,101, 0, 2, 0, 0, 0, 9, 73, 85, 80, 76, 65, 66, 69, 76, 0, + 2, 0, 0, 0, 6,116,105,116,108,101, 0, 4, 0, 0, 2, 9, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 32, 5, 2, 13, 1, 18, 1, 44, 48, 4, 13, 1, 18, 2, 52, 7, 13, + 1, 11, 1, 11, 3, 26, 15, 4, 13, 1, 18, 1, 3, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 6,116,105, +116,108,101, 0, 2, 0, 0, 0, 6,105,109, 97,103,101, 0, 2, 0, 0, 0, 1, + 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 76, 97, 98,101,108, + 0, 2, 0, 0, 0, 9,105,117,112,108, 97, 98,101,108, 0, 4, 0, 0, 2, 16, + 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46, +108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, + 73, 85, 80, 76, 65, 66, 69, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 6,108, 97, 98,101,108, 0, 2, 0, 0, + 0, 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 10, 73, 85, 80, + 66, 85, 84, 84, 79, 78, 0, 4, 0, 0, 2, 25, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, + 97,116,101, 84,111,103,103,108,101, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 2, 0, 0, 0, 10,105,117,112,116,111,103,103,108,101, 0, 4, 0, 0, 2, + 29, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, + 10, 73, 85, 80, 84, 79, 71, 71, 76, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7,116,111,103,103,108,101, 0, + 2, 0, 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 4, 0, 0, 2, 38, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 2, 15, 1, 13, 1, 18, 2, 3, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14, +105,117,112, 67,114,101, 97,116,101, 73,116,101,109, 0, 2, 0, 0, 0, 6,116, +105,116,108,101, 0, 2, 0, 0, 0, 8,105,117,112,105,116,101,109, 0, 4, 0, + 0, 2, 42, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 73, 84, 69, 77, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,105,116,101,109, 0, 2, 0, + 0, 0, 11, 73, 85, 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 10,116, +121,112,101, 95,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101, 0, + 4, 0, 0, 2, 51, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 31, 6, 2, 15, 2, 13, 1, 18, + 3, 13, 1, 7, 1, 16, 2, 1, 2, 13, 1, 7, 1, 16, 11, 4, 13, 2, 26, 13, + 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97, +116,101, 83,117, 98,109,101,110,117, 0, 2, 0, 0, 0, 6,116,105,116,108,101, + 0, 2, 0, 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, + 0, 11,105,117,112,115,117, 98,109,101,110,117, 0, 4, 0, 0, 2, 57, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 83, 85, 66, 77, 69, 78, 85, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, 2, + 0, 0, 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 4, 0, 0, + 2, 66, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 19, +105,117,112, 67,114,101, 97,116,101, 83,101,112, 97,114, 97,116,111,114, 0, 2, + 0, 0, 0, 13,105,117,112,115,101,112, 97,114, 97,116,111,114, 0, 4, 0, 0, + 2, 70, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, + 0, 13, 73, 85, 80, 83, 69, 80, 65, 82, 65, 84, 79, 82, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,115,101,112, + 97,114, 97,116,111,114, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, + 76, 71, 0, 4, 0, 0, 2, 79, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, + 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, + 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, + 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, 2, + 83, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 70, +105,108,101, 68,108,103, 0, 2, 0, 0, 0, 11,105,117,112,102,105,108,101,100, +108,103, 0, 4, 0, 0, 2, 87, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, + 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 73, 76, 69, 68, 76, 71, 0, 2, + 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, + 8,102,105,108,101,100,108,103, 0, 2, 0, 0, 0, 14, 73, 85, 80, 77, 69, 83, + 83, 65, 71, 69, 68, 76, 71, 0, 4, 0, 0, 2, 96, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, + 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, + 0, 4, 0, 0, 2,100, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 20,105,117,112, 67,114, +101, 97,116,101, 77,101,115,115, 97,103,101, 68,108,103, 0, 2, 0, 0, 0, 14, +105,117,112,109,101,115,115, 97,103,101,100,108,103, 0, 4, 0, 0, 2,104, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 14, 73, + 85, 80, 77, 69, 83, 83, 65, 71, 69, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,109,101,115,115, 97, +103,101,100,108,103, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68, + 76, 71, 0, 4, 0, 0, 2,113, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 14, 7, 3, 15, 2, + 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, + 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, 0, 0, 9, 73,117,112, + 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, 2, +117, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 0, 0, 0, 18,105,117,112, 67,114,101, 97,116,101, 67, +111,108,111,114, 68,108,103, 0, 2, 0, 0, 0, 12,105,117,112, 99,111,108,111, +114,100,108,103, 0, 4, 0, 0, 2,121, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, + 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, + 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 67, 79, 76, 79, 82, 68, 76, + 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 9, 99,111,108,111,114,100,108,103, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 70, 79, 78, 84, 68, 76, 71, 0, 4, 0, 0, 2,130, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 14, 7, 3, 15, 2, 13, 0, 13, 1, 13, 2, 3, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 2, 0, 0, 0, 2,120, 0, 2, 0, 0, 0, 2,121, 0, 2, 0, + 0, 0, 9, 73,117,112, 80,111,112,117,112, 0, 2, 0, 0, 0, 5,115,101,108, +102, 0, 4, 0, 0, 2,134, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119, +105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 2, 1, 15, 0, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 17,105,117,112, 67, +114,101, 97,116,101, 70,111,110,116, 68,108,103, 0, 2, 0, 0, 0, 11,105,117, +112,102,111,110,116,100,108,103, 0, 4, 0, 0, 2,138, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 70, 79, 78, + 84, 68, 76, 71, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, 2, 0, 0, 0, 8, + 73, 85, 80, 85, 83, 69, 82, 0, 4, 0, 0, 2,147, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, + 0, 14,105,117,112, 67,114,101, 97,116,101, 85,115,101,114, 0, 2, 0, 0, 0, + 8,105,117,112,117,115,101,114, 0, 4, 0, 0, 2,151, 0, 0, 0, 20, 64,105, +117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, + 0, 10, 2, 0, 15, 0, 20, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 8, 73, 85, 80, 85, 83, 69, 82, 0, 2, 0, 0, 0, 12, 67,111, +110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 5,117,115,101,114, 0, + 2, 0, 0, 0, 14, 73, 85, 80, 78, 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 4, + 0, 0, 2,160, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 47, 6, 2, 7, 1, 50, 33, 15, 2, + 13, 1, 13, 2, 16, 2, 1, 1, 44, 52, 13, 15, 3, 11, 4, 13, 2, 42, 11, 5, + 42, 2, 0, 1, 13, 2, 7, 1, 37, 23, 2, 13, 1, 13, 2, 16, 54, 40, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 2,105, 0, 2, 0, 0, 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, + 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 11,112, 97,114, 97, +109,101,116,101,114, 32, 0, 2, 0, 0, 0, 39, 32,104, 97,115, 32,119,114,111, +110,103, 32,118, 97,108,117,101, 32,111,114, 32,105,115, 32,110,111,116, 32,105, +110,105,116,105, 97,108,105,122,101,100, 0, 4, 0, 0, 2,170, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 40, 8, 2, 15, 2, 2, 1, 0, 7, 1, 50, 17, 13, 2, 11, 4, 13, + 1, 13, 3, 16, 26, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 3, 16, 54, 24, 13, + 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 20,105,117, +112, 67,114,101, 97,116,101, 78,111,114,109, 97,108,105,122,101,114, 0, 2, 0, + 0, 0, 2,105, 0, 2, 0, 0, 0, 11, 97,100,100, 99,111,110,116,114,111,108, + 0, 2, 0, 0, 0, 14,105,117,112,110,111,114,109, 97,108,105,122,101,114, 0, + 4, 0, 0, 2,180, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 10, 2, 0, 15, 0, 20, 1, 3, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 14, 73, 85, 80, 78, + 79, 82, 77, 65, 76, 73, 90, 69, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116, +114,117, 99,116,111,114, 0, 2, 0, 0, 0, 11,110,111,114,109, 97,108,105,122, +101,114, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 2, 0, 0, + 0, 12,116,121,112,101, 95,119,105,100,103,101,116, 0, 4, 0, 0, 2,189, 0, + 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108, +117, 97, 0, 0, 0, 0, 27, 6, 2, 15, 2, 13, 1, 7, 1, 16, 2, 1, 1, 13, + 1, 7, 1, 16, 11, 3, 13, 2, 26, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, + 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 70,114, 97,109,101, 0, 2, 0, + 0, 0, 11, 73, 85, 80, 95,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 9,105, +117,112,102,114, 97,109,101, 0, 4, 0, 0, 2,195, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, + 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 6,102,114, 97,109,101, 0, 2, 0, 0, 0, 10, 73, 85, 80, 67, 65, + 78, 86, 65, 83, 0, 4, 0, 0, 2,204, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, + 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 67, 97,110, +118, 97,115, 0, 2, 0, 0, 0, 10,105,117,112, 99, 97,110,118, 97,115, 0, 4, + 0, 0, 2,208, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, + 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, + 0, 0, 0, 10, 73, 85, 80, 67, 65, 78, 86, 65, 83, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 7, 99, 97,110,118, + 97,115, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, 73, 83, 84, 0, 4, 0, 0, 2, +217, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, + 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105, +117,112, 67,114,101, 97,116,101, 76,105,115,116, 0, 4, 0, 0, 2,221, 0, 0, + 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, + 97, 0, 0, 0, 0, 42, 6, 2, 15, 1, 13, 1, 2, 1, 1, 11, 2, 32, 52, 16, + 15, 3, 13, 0, 18, 5, 11, 6, 13, 1, 42, 3, 2, 2, 50, 11, 15, 7, 18, 8, + 13, 0, 13, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, + 6,105,110,100,101,120, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, + 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, + 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,103,101,116, 0, 4, + 0, 0, 2,229, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103, +101,116,115, 46,108,117, 97, 0, 0, 0, 0, 90, 8, 3, 15, 2, 13, 1, 2, 1, + 1, 11, 3, 32, 52, 62, 15, 4, 13, 2, 2, 1, 1, 46, 7, 15, 5, 13, 2, 2, + 1, 1, 52, 21, 15, 6, 13, 0, 18, 8, 11, 9, 13, 1, 42, 11, 9, 13, 2, 42, + 3, 3, 3, 50, 23, 13, 2, 4, 0, 32, 52, 16, 15, 6, 13, 0, 18, 8, 11, 9, + 13, 1, 42, 13, 2, 3, 3, 3, 15, 10, 18, 11, 13, 0, 13, 1, 13, 2, 3, 3, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 6,105,110,100,101,120, + 0, 2, 0, 0, 0, 6,118, 97,108,117,101, 0, 2, 0, 0, 0, 5,116,121,112, +101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 12,116, +121,112,101, 95,115,116,114,105,110,103, 0, 2, 0, 0, 0, 12,116,121,112,101, + 95,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65, +116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, + 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, + 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 4,115,101,116, 0, 2, 0, + 0, 0, 8,105,117,112,108,105,115,116, 0, 4, 0, 0, 2,240, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 76, + 73, 83, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, + 0, 2, 0, 0, 0, 5,108,105,115,116, 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, + 77, 65, 71, 69, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, + 2,249, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116, +115, 46,108,117, 97, 0, 0, 0, 0,116, 8, 2, 7, 1, 50, 92, 7, 1, 50, 32, + 15, 3, 13, 1, 13, 2, 16, 13, 3, 16, 2, 1, 1, 11, 4, 31, 52, 7, 15, 5, + 11, 6, 2, 0, 1, 13, 3, 7, 1, 37, 23, 3, 13, 1, 13, 2, 16, 13, 3, 16, + 54, 42, 13, 1, 18, 7, 48, 10, 13, 3, 7, 1, 38, 13, 1, 18, 7, 31, 52, 9, + 15, 5, 11, 8, 2, 0, 1, 50, 10, 13, 1, 11, 7, 13, 3, 7, 1, 38, 26, 13, + 2, 7, 1, 37, 23, 2, 5, 1, 13, 1, 13, 2, 16, 54, 99, 13, 1, 11, 9, 13, + 2, 7, 1, 38, 26, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 0, 0, 0, 4,111, + 98,106, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2,106, 0, 2, 0, 0, + 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, + 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 38,110,111,110, 45,110, +117,109,101,114,105, 99, 32,118, 97,108,117,101, 32,105,110, 32,105,109, 97,103, +101, 32,100,101,102,105,110,105,116,105,111,110, 0, 2, 0, 0, 0, 6,119,105, +100,116,104, 0, 2, 0, 0, 0, 26,105,110, 99,111,110,115,105,115,116,101,110, +116, 32,105,109, 97,103,101, 32,108,101,110,103,104,116, 0, 2, 0, 0, 0, 7, +104,101,105,103,104,116, 0, 4, 0, 0, 3, 16, 0, 0, 0, 20, 64,105,117,112, +108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 74, + 9, 2, 15, 2, 13, 1, 18, 3, 13, 1, 18, 4, 13, 1, 2, 1, 3, 15, 5, 13, + 1, 18, 6, 2, 1, 1, 11, 7, 32, 52, 38, 7, 1, 50, 23, 15, 9, 13, 2, 13, + 3, 13, 1, 18, 6, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 37, 23, 3, 13, 1, + 18, 6, 13, 3, 16, 54, 32, 5, 1, 13, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 7,104, 97,110,100, +108,101, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, 73,109, 97, +103,101, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, 7,104, +101,105,103,104,116, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, + 7, 99,111,108,111,114,115, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, + 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116, +114,105, 98,117,116,101, 0, 2, 0, 0, 0, 9,105,117,112,105,109, 97,103,101, + 0, 4, 0, 0, 3, 28, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105, +100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, + 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, + 0, 2, 0, 0, 0, 9, 73, 85, 80, 73, 77, 65, 71, 69, 0, 2, 0, 0, 0, 12, + 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 6,105,109, 97, +103,101, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 0, + 4, 0, 0, 3, 36, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100, +103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, + 2, 13, 1, 18, 3, 13, 1, 18, 4, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 18,105,117,112, 67,114, +101, 97,116,101, 73,109, 97,103,101, 82, 71, 66, 0, 2, 0, 0, 0, 6,119,105, +100,116,104, 0, 2, 0, 0, 0, 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, + 7,112,105,120,101,108,115, 0, 2, 0, 0, 0, 12,105,117,112,105,109, 97,103, +101,114,103, 98, 0, 4, 0, 0, 3, 40, 0, 0, 0, 20, 64,105,117,112,108,117, + 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, + 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, + 0, 0, 2,111, 0, 2, 0, 0, 0, 12, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, + 66, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 9,105,109, 97,103,101,114,103, 98, 0, 2, 0, 0, 0, 13, 73, 85, + 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 4, 0, 0, 3, 48, 0, 0, 0, 20, + 64,105,117,112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, + 0, 0, 0, 20, 6, 2, 15, 1, 13, 1, 18, 2, 13, 1, 18, 3, 13, 1, 18, 4, + 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 4,111, 98,106, + 0, 2, 0, 0, 0, 19,105,117,112, 67,114,101, 97,116,101, 73,109, 97,103,101, + 82, 71, 66, 65, 0, 2, 0, 0, 0, 6,119,105,100,116,104, 0, 2, 0, 0, 0, + 7,104,101,105,103,104,116, 0, 2, 0, 0, 0, 7,112,105,120,101,108,115, 0, + 2, 0, 0, 0, 13,105,117,112,105,109, 97,103,101,114,103, 98, 97, 0, 4, 0, + 0, 3, 52, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95,119,105,100,103,101, +116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 13, 73, 85, 80, 73, 77, 65, 71, 69, 82, 71, 66, 65, 0, 2, 0, 0, 0, + 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 10,105,109, + 97,103,101,114,103, 98, 97, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, + 82, 69, 83, 83, 66, 65, 82, 0, 4, 0, 0, 3, 61, 0, 0, 0, 20, 64,105,117, +112,108,117, 97, 95,119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, + 8, 2, 1, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, + 0, 21,105,117,112, 67,114,101, 97,116,101, 80,114,111,103,114,101,115,115, 66, + 97,114, 0, 2, 0, 0, 0, 15,105,117,112,112,114,111,103,114,101,115,115, 98, + 97,114, 0, 4, 0, 0, 3, 65, 0, 0, 0, 20, 64,105,117,112,108,117, 97, 95, +119,105,100,103,101,116,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, + 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, + 2,111, 0, 2, 0, 0, 0, 15, 73, 85, 80, 80, 82, 79, 71, 82, 69, 83, 83, 66, + 65, 82, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 12,112,114,111,103,114,101,115,115, 98, 97,114, 0, 2, 0, 0, + 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, + 7, 97, 99,116,105,111,110, 0, 2, 0, 0, 0, 7, 65, 67, 84, 73, 79, 78, 0, + 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 10, 65, + 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 9,103,101,116,102,111, 99, +117,115, 0, 2, 0, 0, 0, 12, 71, 69, 84, 70, 79, 67, 85, 83, 95, 67, 66, 0, + 2, 0, 0, 0, 16,105,117,112, 95,103,101,116,102,111, 99,117,115, 95, 99, 98, + 0, 2, 0, 0, 0, 10,107,105,108,108,102,111, 99,117,115, 0, 2, 0, 0, 0, + 13, 75, 73, 76, 76, 70, 79, 67, 85, 83, 95, 67, 66, 0, 2, 0, 0, 0, 17,105, +117,112, 95,107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, + 6,102,111, 99,117,115, 0, 2, 0, 0, 0, 9, 70, 79, 67, 85, 83, 95, 67, 66, + 0, 2, 0, 0, 0, 13,105,117,112, 95,102,111, 99,117,115, 95, 99, 98, 0, 2, + 0, 0, 0, 6,107, 95, 97,110,121, 0, 2, 0, 0, 0, 6, 75, 95, 65, 78, 89, + 0, 2, 0, 0, 0, 10,105,117,112, 95,107, 95, 97,110,121, 0, 2, 0, 0, 0, + 5,104,101,108,112, 0, 2, 0, 0, 0, 8, 72, 69, 76, 80, 95, 67, 66, 0, 2, + 0, 0, 0, 12,105,117,112, 95,104,101,108,112, 95, 99, 98, 0, 2, 0, 0, 0, + 8, 99, 97,114,101,116, 99, 98, 0, 2, 0, 0, 0, 9, 67, 65, 82, 69, 84, 95, + 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95, 99, 97,114,101,116, 95, 99, 98, + 0, 2, 0, 0, 0, 9,107,101,121,112,114,101,115,115, 0, 2, 0, 0, 0, 12, + 75, 69, 89, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, + 95,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 7,115, 99, +114,111,108,108, 0, 2, 0, 0, 0, 10, 83, 67, 82, 79, 76, 76, 95, 67, 66, 0, + 2, 0, 0, 0, 14,105,117,112, 95,115, 99,114,111,108,108, 95, 99, 98, 0, 2, + 0, 0, 0, 10,116,114, 97,121, 99,108,105, 99,107, 0, 2, 0, 0, 0, 13, 84, + 82, 65, 89, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, + 95,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99, +108,111,115,101, 0, 2, 0, 0, 0, 9, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, + 0, 0, 0, 13,105,117,112, 95, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, + 0, 5,111,112,101,110, 0, 2, 0, 0, 0, 8, 79, 80, 69, 78, 95, 67, 66, 0, + 2, 0, 0, 0, 12,105,117,112, 95,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, + 0, 7,115,104,111,119, 99, 98, 0, 2, 0, 0, 0, 8, 83, 72, 79, 87, 95, 67, + 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,104,111,119, 95, 99, 98, 0, 2, + 0, 0, 0, 6,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 7, 77, 65, 80, 95, 67, + 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,109, 97,112, 95, 99, 98, 0, 2, 0, + 0, 0, 8,117,110,109, 97,112, 99, 98, 0, 2, 0, 0, 0, 9, 85, 78, 77, 65, + 80, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,117,110,109, 97,112, 95, + 99, 98, 0, 2, 0, 0, 0, 10,100,114,111,112,102,105,108,101,115, 0, 2, 0, + 0, 0, 13, 68, 82, 79, 80, 70, 73, 76, 69, 83, 95, 67, 66, 0, 2, 0, 0, 0, + 17,105,117,112, 95,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 2, 0, + 0, 0, 10,109,101,110,117, 99,108,111,115,101, 0, 2, 0, 0, 0, 13, 77, 69, + 78, 85, 67, 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95, +109,101,110,117, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,104,105, +103,104,108,105,103,104,116, 0, 2, 0, 0, 0, 13, 72, 73, 71, 72, 76, 73, 71, + 72, 84, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,104,105,103,104,108, +105,103,104,116, 95, 99, 98, 0, 2, 0, 0, 0, 4,119,111,109, 0, 2, 0, 0, + 0, 7, 87, 79, 77, 95, 67, 66, 0, 2, 0, 0, 0, 11,105,117,112, 95,119,111, +109, 95, 99, 98, 0, 2, 0, 0, 0, 6,119,104,101,101,108, 0, 2, 0, 0, 0, + 9, 87, 72, 69, 69, 76, 95, 67, 66, 0, 2, 0, 0, 0, 13,105,117,112, 95,119, +104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 66, 85, 84, 84, 79, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95, 98,117,116,116,111,110, 95, 99, + 98, 0, 2, 0, 0, 0, 7,114,101,115,105,122,101, 0, 2, 0, 0, 0, 10, 82, + 69, 83, 73, 90, 69, 95, 67, 66, 0, 2, 0, 0, 0, 14,105,117,112, 95,114,101, +115,105,122,101, 95, 99, 98, 0, 2, 0, 0, 0, 7,109,111,116,105,111,110, 0, + 2, 0, 0, 0, 10, 77, 79, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 14, +105,117,112, 95,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 12,101, +110,116,101,114,119,105,110,100,111,119, 0, 2, 0, 0, 0, 15, 69, 78, 84, 69, + 82, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95, +101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, +108,101, 97,118,101,119,105,110,100,111,119, 0, 2, 0, 0, 0, 15, 76, 69, 65, + 86, 69, 87, 73, 78, 68, 79, 87, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, + 95,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, + 5,101,100,105,116, 0, 2, 0, 0, 0, 8, 69, 68, 73, 84, 95, 67, 66, 0, 2, + 0, 0, 0, 12,105,117,112, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, + 12,109,117,108,116,105,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 15, 77, 85, + 76, 84, 73, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117, +112, 95,109,117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, + 0, 7,102,105,108,101, 99, 98, 0, 2, 0, 0, 0, 8, 70, 73, 76, 69, 95, 67, + 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,102,105,108,101, 95, 99, 98, 0, 2, + 0, 0, 0, 14,109,100,105, 97, 99,116,105,118, 97,116,101, 99, 98, 0, 2, 0, + 0, 0, 15, 77, 68, 73, 65, 67, 84, 73, 86, 65, 84, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99, + 98, 0, 2, 0, 0, 0, 11,100,114,111,112,100,111,119,110, 99, 98, 0, 2, 0, + 0, 0, 12, 68, 82, 79, 80, 68, 79, 87, 78, 95, 67, 66, 0, 2, 0, 0, 0, 16, +105,117,112, 95,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, 0, 0, 0, + 11,100, 98,108, 99,108,105, 99,107, 99, 98, 0, 2, 0, 0, 0, 12, 68, 66, 76, + 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,100, 98, +108, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 18,105,117,112, 95, 97, + 99,116,105,111,110, 95,116,111,103,103,108,101, 0, 2, 0, 0, 0, 16,105,117, +112, 95, 97, 99,116,105,111,110, 95,116,101,120,116, 0, 2, 0, 0, 0, 18,105, +117,112, 95, 97, 99,116,105,111,110, 95, 98,117,116,116,111,110, 0, 2, 0, 0, + 0, 16,105,117,112, 95, 97, 99,116,105,111,110, 95,108,105,115,116, 0, 2, 0, + 0, 0, 18,105,117,112, 95, 97, 99,116,105,111,110, 95, 99, 97,110,118, 97,115, + 0, 2, 0, 0, 0, 17,105,117,112, 95, 97, 99,116,105,111,110, 95,116,105,109, +101,114, 0, 2, 0, 0, 0, 10, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, + 0, 0, 12,103,101,116,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 13, +107,105,108,108,102,111, 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 9,102,111, + 99,117,115, 95, 99, 98, 0, 2, 0, 0, 0, 8,104,101,108,112, 95, 99, 98, 0, + 2, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, 98, 0, 2, 0, 0, 0, 12,107, +101,121,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 10,115, 99,114,111, +108,108, 95, 99, 98, 0, 2, 0, 0, 0, 13,116,114, 97,121, 99,108,105, 99,107, + 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, + 0, 0, 8,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 8,115,104,111,119, + 95, 99, 98, 0, 2, 0, 0, 0, 7,109, 97,112, 95, 99, 98, 0, 2, 0, 0, 0, + 9,117,110,109, 97,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112,102, +105,108,101,115, 95, 99, 98, 0, 2, 0, 0, 0, 13,109,101,110,117, 99,108,111, +115,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,104,105,103,104,108,105,103,104,116, + 95, 99, 98, 0, 2, 0, 0, 0, 7,119,111,109, 95, 99, 98, 0, 2, 0, 0, 0, + 9,119,104,101,101,108, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,117,116,116,111, +110, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,115,105,122,101, 95, 99, 98, 0, + 2, 0, 0, 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, +101,110,116,101,114,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 15, +108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 2, 0, 0, 0, 8, +101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,101, +108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,100,105, 97, 99,116,105, +118, 97,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,102,105,108,101, 95, 99, 98, + 0, 2, 0, 0, 0, 12,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 2, 0, + 0, 0, 12,100, 98,108, 99,108,105, 99,107, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/iuplua_widgets_le64w.lo"); +} diff --git a/iup/srclua3/loh/matrix.loh b/iup/srclua3/loh/matrix.loh new file mode 100755 index 0000000..3f8ee52 --- /dev/null +++ b/iup/srclua3/loh/matrix.loh @@ -0,0 +1,120 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/matrix.lo"); +*/ +/* ../obj/iupluacontrols3/matrix.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105, +120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, + 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7, + 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12, + 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19, + 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, + 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2, + 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, + 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36, + 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41, + 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13, + 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49, + 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26, + 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2, + 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0, + 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66, + 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15, + 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11, + 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15, + 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18, + 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26, + 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13, + 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0, + 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, + 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116, +101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, + 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42, + 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108, + 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8, +103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97, +116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13, + 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, + 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97, +108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, + 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15, + 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73, + 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117, +112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95, +109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101, +100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0, + 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100, +114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97, +116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, + 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69, + 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97, +116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10, +108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69, + 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, + 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99, +108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98, + 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0, + 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105, +117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, + 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65, + 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, +118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2, + 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, + 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114, +111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69, + 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100, +114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99, +111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95, + 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111, +108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99, + 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99, + 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0, + 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, + 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98, + 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95, + 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, + 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97, +116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101, + 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0, + 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79, + 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102, +111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, + 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13, +101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101, + 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99, +107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, + 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99, +104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114, + 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0, + 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix.lo"); +} diff --git a/iup/srclua3/loh/matrix_be32.loh b/iup/srclua3/loh/matrix_be32.loh new file mode 100755 index 0000000..5f88a5b --- /dev/null +++ b/iup/srclua3/loh/matrix_be32.loh @@ -0,0 +1,120 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/matrix_be32.lo"); +*/ +/* ../obj/iupluacontrols3/matrix_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105, +120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, + 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7, + 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12, + 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19, + 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, + 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2, + 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, + 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36, + 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41, + 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13, + 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49, + 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26, + 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2, + 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0, + 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66, + 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15, + 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11, + 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15, + 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18, + 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26, + 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13, + 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0, + 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, + 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116, +101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, + 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42, + 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108, + 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8, +103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97, +116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13, + 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, + 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97, +108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, + 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15, + 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73, + 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117, +112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95, +109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101, +100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0, + 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100, +114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97, +116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, + 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69, + 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97, +116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10, +108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69, + 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, + 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99, +108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98, + 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0, + 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105, +117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, + 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65, + 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, +118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2, + 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, + 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114, +111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69, + 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100, +114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99, +111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95, + 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111, +108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99, + 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99, + 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0, + 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, + 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98, + 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95, + 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, + 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97, +116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101, + 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0, + 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79, + 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102, +111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, + 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13, +101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101, + 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99, +107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, + 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99, +104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114, + 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0, + 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix_be32.lo"); +} diff --git a/iup/srclua3/loh/matrix_be64.loh b/iup/srclua3/loh/matrix_be64.loh new file mode 100755 index 0000000..87c64b7 --- /dev/null +++ b/iup/srclua3/loh/matrix_be64.loh @@ -0,0 +1,120 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/matrix_be64.lo"); +*/ +/* ../obj/iupluacontrols3/matrix_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105, +120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, + 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7, + 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12, + 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19, + 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, + 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2, + 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, + 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36, + 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41, + 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13, + 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49, + 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26, + 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2, + 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0, + 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66, + 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15, + 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11, + 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15, + 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18, + 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26, + 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13, + 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0, + 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, + 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116, +101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, + 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42, + 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108, + 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8, +103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97, +116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13, + 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, + 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97, +108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, + 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15, + 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73, + 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117, +112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95, +109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101, +100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0, + 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100, +114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97, +116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, + 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69, + 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97, +116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10, +108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69, + 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, + 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99, +108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98, + 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0, + 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105, +117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, + 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65, + 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, +118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2, + 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, + 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114, +111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69, + 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100, +114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99, +111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95, + 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111, +108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99, + 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99, + 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0, + 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, + 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98, + 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95, + 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, + 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97, +116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101, + 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0, + 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79, + 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102, +111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, + 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13, +101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101, + 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99, +107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, + 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99, +104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114, + 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0, + 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix_be64.lo"); +} diff --git a/iup/srclua3/loh/matrix_le64.loh b/iup/srclua3/loh/matrix_le64.loh new file mode 100755 index 0000000..208d715 --- /dev/null +++ b/iup/srclua3/loh/matrix_le64.loh @@ -0,0 +1,120 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/matrix_le64.lo"); +*/ +/* ../obj/iupluacontrols3/matrix_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109, 97,116,114,105, +120, 46,108,117, 97, 0, 0, 0, 1,162, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, + 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, 0, 11, 7, + 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, 14, 11, 12, + 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, 2, 11, 19, + 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, + 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, 27, 22, 2, + 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, + 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 13, 11, 36, + 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, 40, 15, 41, + 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 13, + 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, 2, 11, 49, + 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, 0, 2, 26, + 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, 57, 22, 2, + 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, 62, 29, 0, + 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, 13, 11, 66, + 22, 2, 11, 67, 15, 68, 29, 0, 2, 26, 15, 13, 11, 69, 15, 13, 18, 18, 26, 15, + 13, 11, 70, 15, 13, 18, 21, 26, 15, 13, 11, 71, 15, 13, 18, 24, 26, 15, 13, 11, + 72, 15, 13, 18, 27, 26, 15, 13, 11, 73, 15, 13, 18, 30, 26, 15, 13, 11, 74, 15, + 13, 18, 33, 26, 15, 13, 11, 75, 15, 13, 18, 36, 26, 15, 13, 11, 76, 15, 13, 18, + 39, 26, 15, 13, 11, 77, 15, 13, 18, 42, 26, 15, 13, 11, 78, 15, 13, 18, 45, 26, + 15, 13, 11, 79, 15, 13, 18, 48, 26, 15, 13, 11, 80, 15, 13, 18, 51, 26, 15, 13, + 11, 81, 15, 13, 18, 54, 26, 0, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 0, + 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, + 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, + 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 16,105,117,112, 67,114,101, 97,116, +101, 77, 97,116,114,105,120, 0, 2, 0, 0, 0, 8,115,101,116, 99,101,108,108, + 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, + 97, 0, 0, 0, 0, 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42, + 13, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108, + 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8, +103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 12, 64,109, 97, +116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13, + 1, 11, 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, + 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97, +108, 0, 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, + 2, 0, 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15, + 0, 0, 0, 12, 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73, + 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, + 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105,117, +112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, + 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, 95, +109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,101, +100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, 0, + 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11,100, +114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, 97, +116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, + 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, 69, + 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97, +116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 10, +108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, 69, + 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, + 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, 99, +108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, 98, + 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, 0, + 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21,105, +117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, + 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, 65, + 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, +118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, 2, + 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, + 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,114, +111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, 69, + 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95,100, +114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, 99, +111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, 95, + 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99,111, +108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, 99, + 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, 0, + 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, 99, + 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, 0, + 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, 0, + 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98, + 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, 95, + 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, + 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97, +116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115,101, + 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, 0, + 2, 0, 0, 0, 8,102,111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 8, 70, 79, + 78, 84, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, 97,116, 95,102, +111,110,116, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, + 14,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13, +101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101, + 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99, +107, 95, 99, 98, 0, 2, 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, + 99, 98, 0, 2, 0, 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, + 0, 8,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99, +104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114, + 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0, + 2, 0, 0, 0, 14,118, 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/matrix_le64.lo"); +} diff --git a/iup/srclua3/loh/matrix_le64w.loh b/iup/srclua3/loh/matrix_le64w.loh new file mode 100755 index 0000000..ed95bb7 --- /dev/null +++ b/iup/srclua3/loh/matrix_le64w.loh @@ -0,0 +1,118 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luamatrix_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luamatrix_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64,108,117, 97,109, 97, +116,114,105,120, 46,108,117, 97, 0, 0, 0, 1,148, 5, 0, 22, 1, 11, 1, 15, + 2, 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 15, 0, 11, 5, 11, 6, 26, 15, + 0, 11, 7, 11, 8, 26, 11, 10, 25, 9, 15, 11, 11, 12, 15, 9, 26, 15, 13, 18, + 14, 11, 12, 15, 15, 26, 15, 13, 18, 16, 11, 12, 15, 17, 26, 15, 13, 11, 18, 22, + 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 13, 11, 21, 22, 2, 11, 22, 15, 23, 29, + 0, 2, 26, 15, 13, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 13, 11, + 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 13, 11, 30, 22, 2, 11, 31, 15, + 32, 29, 0, 2, 26, 15, 13, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, + 13, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 13, 11, 39, 22, 2, 11, + 40, 15, 41, 29, 0, 2, 26, 15, 13, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, + 26, 15, 13, 11, 45, 22, 2, 11, 46, 15, 47, 29, 0, 2, 26, 15, 13, 11, 48, 22, + 2, 11, 49, 15, 50, 29, 0, 2, 26, 15, 13, 11, 51, 22, 2, 11, 52, 15, 53, 29, + 0, 2, 26, 15, 13, 11, 54, 22, 2, 11, 55, 15, 56, 29, 0, 2, 26, 15, 13, 11, + 57, 22, 2, 11, 58, 15, 59, 29, 0, 2, 26, 15, 13, 11, 60, 22, 2, 11, 61, 15, + 62, 29, 0, 2, 26, 15, 13, 11, 63, 22, 2, 11, 64, 15, 65, 29, 0, 2, 26, 15, + 13, 11, 66, 15, 13, 18, 18, 26, 15, 13, 11, 67, 15, 13, 18, 21, 26, 15, 13, 11, + 68, 15, 13, 18, 24, 26, 15, 13, 11, 69, 15, 13, 18, 27, 26, 15, 13, 11, 70, 15, + 13, 18, 30, 26, 15, 13, 11, 71, 15, 13, 18, 33, 26, 15, 13, 11, 72, 15, 13, 18, + 36, 26, 15, 13, 11, 73, 15, 13, 18, 39, 26, 15, 13, 11, 74, 15, 13, 18, 42, 26, + 15, 13, 11, 75, 15, 13, 18, 45, 26, 15, 13, 11, 76, 15, 13, 18, 48, 26, 15, 13, + 11, 77, 15, 13, 18, 51, 26, 15, 13, 11, 78, 15, 13, 18, 54, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, 73, 88, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 15, 64,108,117, 97,109, + 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, + 0, 0, 0, 16,105,117,112, 67,114,101, 97,116,101, 77, 97,116,114,105,120, 0, + 2, 0, 0, 0, 8,115,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 7, 0, 0, + 0, 15, 64,108,117, 97,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, + 20, 8, 4, 15, 3, 13, 0, 13, 1, 11, 5, 42, 13, 2, 42, 13, 3, 2, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, + 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, 0, 16, 73,117,112, + 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 5,115,101, +108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, 0, 0, 8,103,101,116, 99,101, +108,108, 0, 4, 0, 0, 0, 11, 0, 0, 0, 15, 64,108,117, 97,109, 97,116,114, +105,120, 46,108,117, 97, 0, 0, 0, 0, 18, 8, 4, 15, 3, 13, 0, 13, 1, 11, + 5, 42, 13, 2, 42, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, + 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 4,118, 97,108, 0, + 2, 0, 0, 0, 16, 73,117,112, 71,101,116, 65,116,116,114,105, 98,117,116,101, + 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 58, 0, 2, 0, + 0, 0, 10,105,117,112,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 15, 0, 0, + 0, 15, 64,108,117, 97,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 10, 73, 85, 80, 77, 65, 84, 82, + 73, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 7,109, 97,116,114,105,120, + 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, + 2, 0, 0, 0, 9, 97, 99,116,105,111,110, 99, 98, 0, 2, 0, 0, 0, 18,105, +117,112, 95,109, 97,116, 95, 97, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, + 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 21,105,117,112, + 95,109, 97,116, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, + 0, 0, 8,101,100,105,116,105,111,110, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, + 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95, +101,100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114,111,112, + 0, 2, 0, 0, 0, 8, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 16,105, +117,112, 95,109, 97,116, 95,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 11, +100,114,111,112,115,101,108,101, 99,116, 0, 2, 0, 0, 0, 14, 68, 82, 79, 80, + 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,109, + 97,116, 95,100,114,111,112,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, + 0, 10,101,110,116,101,114,105,116,101,109, 0, 2, 0, 0, 0, 13, 69, 78, 84, + 69, 82, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, + 97,116, 95,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, + 10,108,101, 97,118,101,105,116,101,109, 0, 2, 0, 0, 0, 13, 76, 69, 65, 86, + 69, 73, 84, 69, 77, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97, +116, 95,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 6, + 99,108,105, 99,107, 0, 2, 0, 0, 0, 9, 67, 76, 73, 67, 75, 95, 67, 66, 0, + 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95, 99,108,105, 99,107, 95, 99, + 98, 0, 2, 0, 0, 0, 10,115, 99,114,111,108,108,116,111,112, 0, 2, 0, 0, + 0, 13, 83, 67, 82, 79, 76, 76, 84, 79, 80, 95, 67, 66, 0, 2, 0, 0, 0, 21, +105,117,112, 95,109, 97,116, 95,115, 99,114,111,108,108,116,111,112, 95, 99, 98, + 0, 2, 0, 0, 0, 8,118, 97,108,117,101, 99, 98, 0, 2, 0, 0, 0, 9, 86, + 65, 76, 85, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,109, 97,116, + 95,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 5,100,114, 97,119, 0, + 2, 0, 0, 0, 8, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117, +112, 95,109, 97,116, 95,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 10,100, +114,111,112, 99,104,101, 99,107, 0, 2, 0, 0, 0, 13, 68, 82, 79, 80, 67, 72, + 69, 67, 75, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,109, 97,116, 95, +100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 10,102,103, + 99,111,108,111,114, 99, 98, 0, 2, 0, 0, 0, 11, 70, 71, 67, 79, 76, 79, 82, + 95, 67, 66, 0, 2, 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95,102,103, 99, +111,108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 10, 98,103, 99,111,108,111,114, + 99, 98, 0, 2, 0, 0, 0, 11, 66, 71, 67, 79, 76, 79, 82, 95, 67, 66, 0, 2, + 0, 0, 0, 19,105,117,112, 95,109, 97,116, 95, 98,103, 99,111,108,111,114, 95, + 99, 98, 0, 2, 0, 0, 0, 11,118, 97,108,117,101, 95,101,100,105,116, 0, 2, + 0, 0, 0, 14, 86, 65, 76, 85, 69, 95, 69, 68, 73, 84, 95, 67, 66, 0, 2, 0, + 0, 0, 22,105,117,112, 95,109, 97,116, 95,118, 97,108,117,101, 95,101,100,105, +116, 95, 99, 98, 0, 2, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, + 98, 0, 2, 0, 0, 0, 12, 77, 65, 82, 75, 69, 68, 73, 84, 95, 67, 66, 0, 2, + 0, 0, 0, 20,105,117,112, 95,109, 97,116, 95,109, 97,114,107,101,100,105,116, + 95, 99, 98, 0, 2, 0, 0, 0, 8,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, + 0, 8, 77, 65, 82, 75, 95, 67, 66, 0, 2, 0, 0, 0, 16,105,117,112, 95,109, + 97,116, 95,109, 97,114,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,109,111,117,115, +101, 95, 99, 98, 0, 2, 0, 0, 0, 9, 77, 79, 85, 83, 69, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,109, 97,116, 95,109,111,117,115,101, 95, 99, 98, + 0, 2, 0, 0, 0, 11,101,100,105,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, + 0, 8,100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 14,100,114,111,112,115, +101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,101,110,116,101,114,105, +116,101,109, 95, 99, 98, 0, 2, 0, 0, 0, 13,108,101, 97,118,101,105,116,101, +109, 95, 99, 98, 0, 2, 0, 0, 0, 9, 99,108,105, 99,107, 95, 99, 98, 0, 2, + 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, 2, 0, 0, + 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 2, 0, 0, 0, 8,100,114, 97,119, + 95, 99, 98, 0, 2, 0, 0, 0, 13,100,114,111,112, 99,104,101, 99,107, 95, 99, + 98, 0, 2, 0, 0, 0, 11,102,103, 99,111,108,111,114, 95, 99, 98, 0, 2, 0, + 0, 0, 11, 98,103, 99,111,108,111,114, 95, 99, 98, 0, 2, 0, 0, 0, 14,118, + 97,108,117,101, 95,101,100,105,116, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luamatrix_le64w.lo"); +} diff --git a/iup/srclua3/loh/pplot.loh b/iup/srclua3/loh/pplot.loh new file mode 100755 index 0000000..1a7aff0 --- /dev/null +++ b/iup/srclua3/loh/pplot.loh @@ -0,0 +1,68 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua_pplot3/pplot.lo"); +*/ +/* ../obj/iuplua_pplot3/pplot.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116, + 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0, + 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18, + 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23, + 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9, + 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31, + 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, + 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2, + 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0, + 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, + 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, + 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80, + 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111, +116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, + 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105, +117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, + 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13, + 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98, + 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112, +108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115, +101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83, + 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105, +117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110, + 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99, + 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0, + 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99, +116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95, + 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101, +108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101, +108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69, + 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112, +108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82, + 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112, +108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, +112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83, + 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112, +108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot.lo"); +} diff --git a/iup/srclua3/loh/pplot_be32.loh b/iup/srclua3/loh/pplot_be32.loh new file mode 100755 index 0000000..37f3b47 --- /dev/null +++ b/iup/srclua3/loh/pplot_be32.loh @@ -0,0 +1,68 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua_pplot3/pplot_be32.lo"); +*/ +/* ../obj/iuplua_pplot3/pplot_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116, + 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0, + 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18, + 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23, + 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9, + 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31, + 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, + 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2, + 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0, + 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, + 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, + 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80, + 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111, +116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, + 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105, +117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, + 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13, + 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98, + 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112, +108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115, +101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83, + 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105, +117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110, + 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99, + 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0, + 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99, +116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95, + 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101, +108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101, +108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69, + 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112, +108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82, + 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112, +108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, +112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83, + 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112, +108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot_be32.lo"); +} diff --git a/iup/srclua3/loh/pplot_be64.loh b/iup/srclua3/loh/pplot_be64.loh new file mode 100755 index 0000000..893c368 --- /dev/null +++ b/iup/srclua3/loh/pplot_be64.loh @@ -0,0 +1,68 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua_pplot3/pplot_be64.lo"); +*/ +/* ../obj/iuplua_pplot3/pplot_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116, + 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0, + 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18, + 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23, + 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9, + 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31, + 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, + 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2, + 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0, + 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, + 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, + 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80, + 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111, +116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, + 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105, +117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, + 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13, + 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98, + 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112, +108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115, +101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83, + 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105, +117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110, + 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99, + 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0, + 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99, +116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95, + 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101, +108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101, +108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69, + 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112, +108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82, + 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112, +108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, +112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83, + 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112, +108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot_be64.lo"); +} diff --git a/iup/srclua3/loh/pplot_le64.loh b/iup/srclua3/loh/pplot_le64.loh new file mode 100755 index 0000000..05a718d --- /dev/null +++ b/iup/srclua3/loh/pplot_le64.loh @@ -0,0 +1,68 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua_pplot3/pplot_le64.lo"); +*/ +/* ../obj/iuplua_pplot3/pplot_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64,112,112,108,111,116, + 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, + 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, + 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, 14, 29, 0, + 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 9, 11, 18, + 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, 22, 15, 23, + 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 9, + 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, 2, 11, 31, + 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, + 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, 39, 22, 2, + 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2, 0, 0, + 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, + 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, 67,114,101, 97,116,101, + 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112,112,112,108,111,116, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 11, 64,112,112,108,111,116, 46,108,117, 97, 0, + 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 9, 73, 85, 80, 80, + 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 6,112,112,108,111, +116, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, + 0, 2, 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, 0, 18,105, +117,112, 95,112,112,108,111,116, 95,101,100,105,116, 95, 99, 98, 0, 2, 0, 0, + 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13, + 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116, 98,101,103,105,110, 95, 99, 98, + 0, 2, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117, +112, 95,112,112,108,111,116, 95,101,100,105,116,101,110,100, 95, 99, 98, 0, 2, + 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 10, 83, + 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112, +108,111,116, 95,115,101,108,101, 99,116, 95, 99, 98, 0, 2, 0, 0, 0, 15,115, +101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 83, + 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105, +117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 98,101,103,105,110, + 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99, + 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 69, 78, 68, 95, 67, 66, 0, + 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99, +116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, 69, 84, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101, 95, + 99, 98, 0, 2, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95, + 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, 69, 84, 69, 66, 69, 71, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,100,101, +108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,100,101, +108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 68, 69, 76, 69, + 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112, +108,111,116, 95,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 11, 80, 82, + 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112, +108,111,116, 95,112,114,101,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, +112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 2, 0, 0, 0, 12, 80, 79, 83, + 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,112,112, +108,111,116, 95,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/pplot_le64.lo"); +} diff --git a/iup/srclua3/loh/pplot_le64w.loh b/iup/srclua3/loh/pplot_le64w.loh new file mode 100755 index 0000000..fc37ccc --- /dev/null +++ b/iup/srclua3/loh/pplot_le64w.loh @@ -0,0 +1,69 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua_pplot3/luapplot_le64w.lo"); +*/ +/* ../obj/iuplua_pplot3/luapplot_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,108,117, 97,112,112, +108,111,116, 46,108,117, 97, 0, 0, 0, 0,180, 5, 0, 22, 1, 11, 1, 15, 2, + 30, 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, + 5, 26, 15, 9, 18, 10, 11, 8, 15, 11, 26, 15, 9, 11, 12, 22, 2, 11, 13, 15, + 14, 29, 0, 2, 26, 15, 9, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, + 9, 11, 18, 22, 2, 11, 19, 15, 20, 29, 0, 2, 26, 15, 9, 11, 21, 22, 2, 11, + 22, 15, 23, 29, 0, 2, 26, 15, 9, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, + 26, 15, 9, 11, 27, 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 9, 11, 30, 22, + 2, 11, 31, 15, 32, 29, 0, 2, 26, 15, 9, 11, 33, 22, 2, 11, 34, 15, 35, 29, + 0, 2, 26, 15, 9, 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 9, 11, + 39, 22, 2, 11, 40, 15, 41, 29, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 42, + 2, 0, 0, 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, + 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, + 4, 0, 0, 0, 3, 0, 0, 0, 14, 64,108,117, 97,112,112,108,111,116, 46,108, +117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 15,105,117,112, + 67,114,101, 97,116,101, 80, 80,108,111,116, 0, 2, 0, 0, 0, 9,105,117,112, +112,112,108,111,116, 0, 4, 0, 0, 0, 7, 0, 0, 0, 14, 64,108,117, 97,112, +112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, + 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, + 2, 0, 0, 0, 9, 73, 85, 80, 80, 80, 76, 79, 84, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, + 2, 0, 0, 0, 6,112,112,108,111,116, 0, 2, 0, 0, 0, 14,105,117,112, 95, + 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 8,101,100,105,116, 95, + 99, 98, 0, 2, 0, 0, 0, 18,105,117,112, 95,112,112,108,111,116, 95,101,100, +105,116, 95, 99, 98, 0, 2, 0, 0, 0, 13,101,100,105,116, 98,101,103,105,110, + 95, 99, 98, 0, 2, 0, 0, 0, 13, 69, 68, 73, 84, 66, 69, 71, 73, 78, 95, 67, + 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,101,100,105, +116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 11,101,100,105,116,101, +110,100, 95, 99, 98, 0, 2, 0, 0, 0, 11, 69, 68, 73, 84, 69, 78, 68, 95, 67, + 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,112,112,108,111,116, 95,101,100,105, +116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 10,115,101,108,101, 99,116, 95, + 99, 98, 0, 2, 0, 0, 0, 10, 83, 69, 76, 69, 67, 84, 95, 67, 66, 0, 2, 0, + 0, 0, 20,105,117,112, 95,112,112,108,111,116, 95,115,101,108,101, 99,116, 95, + 99, 98, 0, 2, 0, 0, 0, 15,115,101,108,101, 99,116, 98,101,103,105,110, 95, + 99, 98, 0, 2, 0, 0, 0, 15, 83, 69, 76, 69, 67, 84, 66, 69, 71, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, 95,112,112,108,111,116, 95,115,101, +108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101, +108,101, 99,116,101,110,100, 95, 99, 98, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, + 67, 84, 69, 78, 68, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,112,112, +108,111,116, 95,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 2, 0, 0, + 0, 10,100,101,108,101,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 10, 68, 69, 76, + 69, 84, 69, 95, 67, 66, 0, 2, 0, 0, 0, 20,105,117,112, 95,112,112,108,111, +116, 95,100,101,108,101,116,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,100,101,108, +101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 68, 69, 76, + 69, 84, 69, 66, 69, 71, 73, 78, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117,112, + 95,112,112,108,111,116, 95,100,101,108,101,116,101, 98,101,103,105,110, 95, 99, + 98, 0, 2, 0, 0, 0, 13,100,101,108,101,116,101,101,110,100, 95, 99, 98, 0, + 2, 0, 0, 0, 13, 68, 69, 76, 69, 84, 69, 69, 78, 68, 95, 67, 66, 0, 2, 0, + 0, 0, 23,105,117,112, 95,112,112,108,111,116, 95,100,101,108,101,116,101,101, +110,100, 95, 99, 98, 0, 2, 0, 0, 0, 11,112,114,101,100,114, 97,119, 95, 99, + 98, 0, 2, 0, 0, 0, 11, 80, 82, 69, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, + 0, 0, 21,105,117,112, 95,112,112,108,111,116, 95,112,114,101,100,114, 97,119, + 95, 99, 98, 0, 2, 0, 0, 0, 12,112,111,115,116,100,114, 97,119, 95, 99, 98, + 0, 2, 0, 0, 0, 12, 80, 79, 83, 84, 68, 82, 65, 87, 95, 67, 66, 0, 2, 0, + 0, 0, 22,105,117,112, 95,112,112,108,111,116, 95,112,111,115,116,100,114, 97, +119, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua_pplot3/luapplot_le64w.lo"); +} diff --git a/iup/srclua3/loh/sbox.loh b/iup/srclua3/loh/sbox.loh new file mode 100755 index 0000000..4a5af85 --- /dev/null +++ b/iup/srclua3/loh/sbox.loh @@ -0,0 +1,27 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/sbox.lo"); +*/ +/* ../obj/iuplua3/sbox.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46, +108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120, + 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, + 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0, + 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, + 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, + 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, + 2, 0, 0, 0, 5,115, 98,111,120, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox.lo"); +} diff --git a/iup/srclua3/loh/sbox_be32.loh b/iup/srclua3/loh/sbox_be32.loh new file mode 100755 index 0000000..5b50619 --- /dev/null +++ b/iup/srclua3/loh/sbox_be32.loh @@ -0,0 +1,27 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/sbox_be32.lo"); +*/ +/* ../obj/iuplua3/sbox_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46, +108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120, + 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, + 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0, + 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, + 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, + 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, + 2, 0, 0, 0, 5,115, 98,111,120, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox_be32.lo"); +} diff --git a/iup/srclua3/loh/sbox_be64.loh b/iup/srclua3/loh/sbox_be64.loh new file mode 100755 index 0000000..eddb0ff --- /dev/null +++ b/iup/srclua3/loh/sbox_be64.loh @@ -0,0 +1,27 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/sbox_be64.lo"); +*/ +/* ../obj/iuplua3/sbox_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46, +108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120, + 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, + 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0, + 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, + 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, + 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, + 2, 0, 0, 0, 5,115, 98,111,120, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox_be64.lo"); +} diff --git a/iup/srclua3/loh/sbox_le64.loh b/iup/srclua3/loh/sbox_le64.loh new file mode 100755 index 0000000..089ccc2 --- /dev/null +++ b/iup/srclua3/loh/sbox_le64.loh @@ -0,0 +1,27 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/sbox_le64.lo"); +*/ +/* ../obj/iuplua3/sbox_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115, 98,111,120, 46, +108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, + 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,115, 98,111,120, + 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, + 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, 98,111,120, 0, 2, 0, + 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, + 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, + 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, + 2, 0, 0, 0, 5,115, 98,111,120, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/sbox_le64.lo"); +} diff --git a/iup/srclua3/loh/sbox_le64w.loh b/iup/srclua3/loh/sbox_le64w.loh new file mode 100755 index 0000000..cc44ebb --- /dev/null +++ b/iup/srclua3/loh/sbox_le64w.loh @@ -0,0 +1,27 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luasbox_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luasbox_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,115, 98, +111,120, 46,108,117, 97, 0, 0, 0, 0, 31, 3, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, + 79, 88, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 13, 64,108, +117, 97,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, + 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, + 98,111,120, 0, 2, 0, 0, 0, 8,105,117,112,115, 98,111,120, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 13, 64,108,117, 97,115, 98,111,120, 46,108,117, 97, 0, 0, + 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 66, + 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, + 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115, 98,111,120, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luasbox_le64w.lo"); +} diff --git a/iup/srclua3/loh/spin.loh b/iup/srclua3/loh/spin.loh new file mode 100755 index 0000000..cd4cc02 --- /dev/null +++ b/iup/srclua3/loh/spin.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/spin.lo"); +*/ +/* ../obj/iuplua3/spin.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46, +108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1, + 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15, + 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, + 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0, + 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8, + 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0, + 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, + 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98, +111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2, + 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, + 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0, + 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin.lo"); +} diff --git a/iup/srclua3/loh/spin_be32.loh b/iup/srclua3/loh/spin_be32.loh new file mode 100755 index 0000000..9e1f9e4 --- /dev/null +++ b/iup/srclua3/loh/spin_be32.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/spin_be32.lo"); +*/ +/* ../obj/iuplua3/spin_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46, +108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1, + 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15, + 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, + 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0, + 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8, + 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0, + 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, + 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98, +111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2, + 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, + 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0, + 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin_be32.lo"); +} diff --git a/iup/srclua3/loh/spin_be64.loh b/iup/srclua3/loh/spin_be64.loh new file mode 100755 index 0000000..12af7ac --- /dev/null +++ b/iup/srclua3/loh/spin_be64.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/spin_be64.lo"); +*/ +/* ../obj/iuplua3/spin_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46, +108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1, + 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15, + 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, + 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0, + 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8, + 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0, + 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, + 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98, +111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2, + 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, + 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0, + 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin_be64.lo"); +} diff --git a/iup/srclua3/loh/spin_le64.loh b/iup/srclua3/loh/spin_le64.loh new file mode 100755 index 0000000..1e7aea7 --- /dev/null +++ b/iup/srclua3/loh/spin_le64.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/spin_le64.lo"); +*/ +/* ../obj/iuplua3/spin_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,115,112,105,110, 46, +108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 22, 1, + 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, 25, 11, 15, + 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, + 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0, + 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, 97,114,101, +110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, + 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 3, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 8, + 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112,105,110, 0, 4, 0, 0, + 0, 7, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,115,112,105,110, 0, 2, 0, 0, 0, + 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, 0, 4, 0, 0, 0, 14, 0, 0, 0, + 10, 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, + 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 4,111, 98,106, 0, 2, 0, 0, 0, 17,105,117,112, 67,114,101, 97,116,101, 83, +112,105,110, 98,111,120, 0, 2, 0, 0, 0, 11,105,117,112,115,112,105,110, 98, +111,120, 0, 4, 0, 0, 0, 18, 0, 0, 0, 10, 64,115,112,105,110, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, + 80, 83, 80, 73, 78, 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2, + 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, + 0, 0, 7,115,112,105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0, + 2, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/spin_le64.lo"); +} diff --git a/iup/srclua3/loh/spin_le64w.loh b/iup/srclua3/loh/spin_le64w.loh new file mode 100755 index 0000000..de49021 --- /dev/null +++ b/iup/srclua3/loh/spin_le64w.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luaspin_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luaspin_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,115,112, +105,110, 46,108,117, 97, 0, 0, 0, 0, 82, 5, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, + 26, 22, 1, 11, 1, 15, 2, 30, 0, 25, 9, 15, 9, 11, 3, 11, 10, 26, 11, 12, + 25, 11, 15, 7, 11, 13, 15, 11, 26, 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, + 0, 2, 26, 15, 14, 11, 18, 15, 14, 18, 15, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 2, 0, 0, 0, 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, + 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110,116, 0, + 4, 0, 0, 0, 3, 0, 0, 0, 13, 64,108,117, 97,115,112,105,110, 46,108,117, + 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67, +114,101, 97,116,101, 83,112,105,110, 0, 2, 0, 0, 0, 8,105,117,112,115,112, +105,110, 0, 4, 0, 0, 0, 7, 0, 0, 0, 13, 64,108,117, 97,115,112,105,110, + 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, + 8, 73, 85, 80, 83, 80, 73, 78, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114, +117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5, +115,112,105,110, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 80, 73, 78, 66, 79, 88, + 0, 4, 0, 0, 0, 14, 0, 0, 0, 13, 64,108,117, 97,115,112,105,110, 46,108, +117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, + 0, 17,105,117,112, 67,114,101, 97,116,101, 83,112,105,110, 98,111,120, 0, 2, + 0, 0, 0, 11,105,117,112,115,112,105,110, 98,111,120, 0, 4, 0, 0, 0, 18, + 0, 0, 0, 13, 64,108,117, 97,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, + 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 11, 73, 85, 80, 83, 80, 73, 78, + 66, 79, 88, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, + 0, 2, 0, 0, 0, 8,115,112,105,110, 98,111,120, 0, 2, 0, 0, 0, 14,105, +117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 7,115,112, +105,110, 99, 98, 0, 2, 0, 0, 0, 8, 83, 80, 73, 78, 95, 67, 66, 0, 2, 0, + 0, 0, 12,105,117,112, 95,115,112,105,110, 95, 99, 98, 0, 2, 0, 0, 0, 8, +115,112,105,110, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luaspin_le64w.lo"); +} diff --git a/iup/srclua3/loh/tabs.loh b/iup/srclua3/loh/tabs.loh new file mode 100755 index 0000000..86c4ab0 --- /dev/null +++ b/iup/srclua3/loh/tabs.loh @@ -0,0 +1,33 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/tabs.lo"); +*/ +/* ../obj/iuplua3/tabs.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46, +108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, + 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65, + 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116, + 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2, + 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, + 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8, +105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97, + 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, + 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, + 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101, + 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, + 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs.lo"); +} diff --git a/iup/srclua3/loh/tabs_be32.loh b/iup/srclua3/loh/tabs_be32.loh new file mode 100755 index 0000000..4eb4b83 --- /dev/null +++ b/iup/srclua3/loh/tabs_be32.loh @@ -0,0 +1,33 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/tabs_be32.lo"); +*/ +/* ../obj/iuplua3/tabs_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46, +108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, + 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65, + 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116, + 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2, + 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, + 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8, +105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97, + 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, + 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, + 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101, + 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, + 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs_be32.lo"); +} diff --git a/iup/srclua3/loh/tabs_be64.loh b/iup/srclua3/loh/tabs_be64.loh new file mode 100755 index 0000000..c4ada05 --- /dev/null +++ b/iup/srclua3/loh/tabs_be64.loh @@ -0,0 +1,33 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/tabs_be64.lo"); +*/ +/* ../obj/iuplua3/tabs_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46, +108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, + 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65, + 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116, + 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2, + 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, + 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8, +105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97, + 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, + 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, + 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101, + 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, + 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs_be64.lo"); +} diff --git a/iup/srclua3/loh/tabs_le64.loh b/iup/srclua3/loh/tabs_le64.loh new file mode 100755 index 0000000..7a4c6b1 --- /dev/null +++ b/iup/srclua3/loh/tabs_le64.loh @@ -0,0 +1,33 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/tabs_le64.lo"); +*/ +/* ../obj/iuplua3/tabs_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116, 97, 98,115, 46, +108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, + 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, 9, 18, 10, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65, + 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, + 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, + 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 10, 64,116, + 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, 15, 1, 13, 1, 15, 2, + 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, + 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114,101, 97,116,101, + 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 8, +105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 64,116, 97, + 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, + 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 12, 67,111,110,115, +116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, + 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, + 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,116, 97, 98, 99,104, 97,110,103,101, + 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, 65, 78, 71, 69, 95, 67, 66, 0, 2, + 0, 0, 0, 17,105,117,112, 95,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, + 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/tabs_le64.lo"); +} diff --git a/iup/srclua3/loh/tabs_le64w.loh b/iup/srclua3/loh/tabs_le64w.loh new file mode 100755 index 0000000..24a87dc --- /dev/null +++ b/iup/srclua3/loh/tabs_le64w.loh @@ -0,0 +1,34 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luatabs_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luatabs_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,116, 97, + 98,115, 46,108,117, 97, 0, 0, 0, 0, 54, 5, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, + 26, 15, 9, 11, 10, 22, 2, 11, 11, 15, 12, 29, 0, 2, 26, 15, 9, 11, 13, 15, + 9, 18, 10, 26, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8, 73, 85, + 80, 84, 65, 66, 83, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116, +101, 73, 85, 80,101,108,101,109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, + 13, 64,108,117, 97,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 17, 6, 2, + 15, 1, 13, 1, 15, 2, 13, 1, 2, 1, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, + 67,114,101, 97,116,101, 84, 97, 98,115, 0, 2, 0, 0, 0, 5,103,101,116,110, + 0, 2, 0, 0, 0, 8,105,117,112,116, 97, 98,115, 0, 4, 0, 0, 0, 7, 0, + 0, 0, 13, 64,108,117, 97,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 12, + 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 65, 66, 83, 0, + 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, + 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116, 97, 98,115, 0, 2, 0, 0, 0, + 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10, +116, 97, 98, 99,104, 97,110,103,101, 0, 2, 0, 0, 0, 13, 84, 65, 66, 67, 72, + 65, 78, 71, 69, 95, 67, 66, 0, 2, 0, 0, 0, 17,105,117,112, 95,116, 97, 98, + 99,104, 97,110,103,101, 95, 99, 98, 0, 2, 0, 0, 0, 13,116, 97, 98, 99,104, + 97,110,103,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luatabs_le64w.lo"); +} diff --git a/iup/srclua3/loh/tree.loh b/iup/srclua3/loh/tree.loh new file mode 100755 index 0000000..f3af92c --- /dev/null +++ b/iup/srclua3/loh/tree.loh @@ -0,0 +1,115 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/tree.lo"); +*/ +/* ../obj/iupluacontrols3/tree.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46, +108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15, + 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11, + 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15, + 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15, + 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11, + 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2, + 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22, + 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29, + 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11, + 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15, + 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18, + 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26, + 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14, + 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0, + 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, + 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85, + 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114, +101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101, +101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101, + 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, + 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1, + 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66, + 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2, + 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13, + 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1, + 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13, + 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7, + 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97, +110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0, + 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, + 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10, + 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1, + 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13, + 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0, + 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0, + 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, + 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115, + 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116, + 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109, +101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105, +117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101, +108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95, +115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117, +108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85, + 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99, +116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111, +112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97, +110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110, + 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67, + 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101, +101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, + 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69, + 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95, + 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2, + 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111, +100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0, + 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21, +105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98, + 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2, + 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97, +109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103, +104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103, +100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67, + 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103, +100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101, + 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104, +111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99, +108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101, +108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110, +111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99, + 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98, + 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0, + 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree.lo"); +} diff --git a/iup/srclua3/loh/tree_be32.loh b/iup/srclua3/loh/tree_be32.loh new file mode 100755 index 0000000..c7a5992 --- /dev/null +++ b/iup/srclua3/loh/tree_be32.loh @@ -0,0 +1,115 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/tree_be32.lo"); +*/ +/* ../obj/iupluacontrols3/tree_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46, +108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15, + 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11, + 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15, + 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15, + 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11, + 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2, + 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22, + 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29, + 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11, + 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15, + 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18, + 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26, + 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14, + 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0, + 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, + 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85, + 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114, +101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101, +101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101, + 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, + 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1, + 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66, + 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2, + 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13, + 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1, + 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13, + 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7, + 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97, +110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0, + 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, + 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10, + 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1, + 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13, + 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0, + 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0, + 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, + 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115, + 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116, + 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109, +101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105, +117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101, +108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95, +115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117, +108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85, + 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99, +116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111, +112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97, +110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110, + 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67, + 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101, +101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, + 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69, + 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95, + 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2, + 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111, +100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0, + 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21, +105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98, + 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2, + 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97, +109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103, +104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103, +100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67, + 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103, +100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101, + 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104, +111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99, +108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101, +108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110, +111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99, + 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98, + 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0, + 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree_be32.lo"); +} diff --git a/iup/srclua3/loh/tree_be64.loh b/iup/srclua3/loh/tree_be64.loh new file mode 100755 index 0000000..d46105b --- /dev/null +++ b/iup/srclua3/loh/tree_be64.loh @@ -0,0 +1,115 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/tree_be64.lo"); +*/ +/* ../obj/iupluacontrols3/tree_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46, +108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15, + 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11, + 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15, + 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15, + 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11, + 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2, + 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22, + 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29, + 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11, + 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15, + 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18, + 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26, + 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14, + 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0, + 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, + 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85, + 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114, +101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101, +101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101, + 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, + 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1, + 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66, + 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2, + 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13, + 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1, + 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13, + 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7, + 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97, +110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0, + 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, + 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10, + 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1, + 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13, + 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0, + 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0, + 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, + 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115, + 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116, + 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109, +101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105, +117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101, +108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95, +115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117, +108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85, + 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99, +116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111, +112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97, +110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110, + 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67, + 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101, +101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, + 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69, + 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95, + 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2, + 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111, +100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0, + 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21, +105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98, + 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2, + 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97, +109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103, +104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103, +100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67, + 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103, +100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101, + 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104, +111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99, +108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101, +108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110, +111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99, + 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98, + 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0, + 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree_be64.lo"); +} diff --git a/iup/srclua3/loh/tree_le64.loh b/iup/srclua3/loh/tree_le64.loh new file mode 100755 index 0000000..e308539 --- /dev/null +++ b/iup/srclua3/loh/tree_le64.loh @@ -0,0 +1,115 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/tree_le64.lo"); +*/ +/* ../obj/iupluacontrols3/tree_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,116,114,101,101, 46, +108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, + 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, 11, 9, 15, + 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, 15, 14, 11, + 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, 11, 19, 15, + 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, 2, 26, 15, + 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, 22, 2, 11, + 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, 29, 0, 2, + 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, 11, 36, 22, + 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, 15, 41, 29, + 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, 15, 14, 11, + 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, 11, 47, 15, + 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, 15, 14, 18, + 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, 18, 33, 26, + 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, 26, 15, 14, + 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, 0, 0, 0, + 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, + 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, 22, 73, 85, + 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, 76, 69, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 14,105,117,112, 67,114, +101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8,105,117,112,116,114,101, +101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8, 73, 85, 80, + 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 5,116,114,101,101, + 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, + 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 10, 64,116,114,101,101, 46,108,117, 97, + 0, 0, 0, 0,140, 9, 3, 13, 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1, + 2, 1, 1, 50,112, 15, 5, 13, 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66, + 13, 1, 13, 3, 16, 18, 7, 4, 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2, + 42, 13, 1, 13, 3, 16, 18, 7, 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13, + 2, 42, 11, 10, 2, 0, 3, 15, 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1, + 37, 2, 0, 3, 50, 24, 13, 1, 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13, + 2, 42, 13, 1, 13, 3, 16, 2, 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7, + 0, 36, 54,119, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97, +110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0, + 2, 0, 0, 0, 5, 99,111,110,116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, + 2, 0, 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 10, + 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1, + 2, 1, 1, 11, 3, 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13, + 1, 18, 7, 4, 0, 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0, + 3, 15, 10, 13, 0, 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, + 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, + 0, 2, 0, 0, 0, 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0, + 0, 14, 84,114,101,101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, + 45, 73,110, 99,111,114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115, + 32,116,111, 32,102,117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116, + 86, 97,108,117,101, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109, +101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 2, 0, 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114, +101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105, +117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101, +108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73, + 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95, +115,101,108,101, 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117, +108,116,105,115,101,108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85, + 76, 84, 73, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, + 27,105,117,112, 95,116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99, +116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111, +112,101,110, 0, 2, 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97, +110, 99,104,111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110, + 99,104, 99,108,111,115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67, + 76, 79, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101, +101, 95, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, + 0, 12,101,120,101, 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69, + 88, 69, 67, 85, 84, 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,116,114,101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95, + 99, 98, 0, 2, 0, 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2, + 0, 0, 0, 14, 82, 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111, +100,101, 95, 99, 98, 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0, + 2, 0, 0, 0, 10, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21, +105,117,112, 95,116,114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98, + 0, 2, 0, 0, 0, 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2, + 0, 0, 0, 14, 83, 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, + 0, 0, 25,105,117,112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97, +109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108, +105, 99,107, 0, 2, 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95, + 67, 66, 0, 2, 0, 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103, +104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103, +100,114,111,112, 0, 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67, + 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103, +100,114,111,112, 95, 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105, +111,110, 95, 99, 98, 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101, + 99,116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104, +111,112,101,110, 95, 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99, +108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101, +108,101, 97,102, 95, 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110, +111,100,101, 95, 99, 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99, + 98, 0, 2, 0, 0, 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98, + 0, 2, 0, 0, 0, 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0, + 2, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/tree_le64.lo"); +} diff --git a/iup/srclua3/loh/tree_le64w.loh b/iup/srclua3/loh/tree_le64w.loh new file mode 100755 index 0000000..4db63e3 --- /dev/null +++ b/iup/srclua3/loh/tree_le64w.loh @@ -0,0 +1,116 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luatree_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luatree_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,108,117, 97,116,114, +101,101, 46,108,117, 97, 0, 0, 0, 1, 24, 5, 0, 22, 1, 11, 1, 15, 2, 30, + 0, 25, 0, 22, 0, 25, 3, 15, 0, 11, 4, 11, 5, 26, 11, 7, 25, 6, 15, 8, + 11, 9, 15, 6, 26, 11, 11, 25, 10, 11, 13, 25, 12, 15, 8, 11, 12, 15, 12, 26, + 15, 14, 11, 15, 22, 2, 11, 16, 15, 17, 29, 0, 2, 26, 15, 14, 11, 18, 22, 2, + 11, 19, 15, 20, 29, 0, 2, 26, 15, 14, 11, 21, 22, 2, 11, 22, 15, 23, 29, 0, + 2, 26, 15, 14, 11, 24, 22, 2, 11, 25, 15, 26, 29, 0, 2, 26, 15, 14, 11, 27, + 22, 2, 11, 28, 15, 29, 29, 0, 2, 26, 15, 14, 11, 30, 22, 2, 11, 31, 15, 32, + 29, 0, 2, 26, 15, 14, 11, 33, 22, 2, 11, 34, 15, 35, 29, 0, 2, 26, 15, 14, + 11, 36, 22, 2, 11, 37, 15, 38, 29, 0, 2, 26, 15, 14, 11, 39, 22, 2, 11, 40, + 15, 41, 29, 0, 2, 26, 15, 14, 11, 42, 22, 2, 11, 43, 15, 44, 29, 0, 2, 26, + 15, 14, 11, 45, 15, 14, 18, 15, 26, 15, 14, 11, 46, 15, 14, 18, 18, 26, 15, 14, + 11, 47, 15, 14, 18, 21, 26, 15, 14, 11, 48, 15, 14, 18, 24, 26, 15, 14, 11, 49, + 15, 14, 18, 27, 26, 15, 14, 11, 50, 15, 14, 18, 30, 26, 15, 14, 11, 51, 15, 14, + 18, 33, 26, 15, 14, 11, 52, 15, 14, 18, 36, 26, 15, 14, 11, 53, 15, 14, 18, 39, + 26, 15, 14, 11, 54, 15, 14, 18, 42, 26, 0, 0, 0, 0, 0, 0, 0, 0, 55, 2, + 0, 0, 0, 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 2, 0, 0, 0, + 22, 73, 85, 80, 84, 82, 69, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 84, 65, 66, + 76, 69, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101, +109,101,110,116, 0, 4, 0, 0, 0, 4, 0, 0, 0, 13, 64,108,117, 97,116,114, +101,101, 46,108,117, 97, 0, 0, 0, 0, 8, 3, 2, 15, 1, 3, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, + 14,105,117,112, 67,114,101, 97,116,101, 84,114,101,101, 0, 2, 0, 0, 0, 8, +105,117,112,116,114,101,101, 0, 4, 0, 0, 0, 8, 0, 0, 0, 13, 64,108,117, + 97,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, + 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, + 0, 2, 0, 0, 0, 8, 73, 85, 80, 84, 82, 69, 69, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, + 2, 0, 0, 0, 5,116,114,101,101, 0, 2, 0, 0, 0, 16, 84,114,101,101, 83, +101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, + 64,108,117, 97,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0,140, 9, 3, 13, + 1, 4, 0, 32, 52, 2, 1, 3, 15, 4, 13, 1, 2, 1, 1, 50,112, 15, 5, 13, + 1, 13, 3, 16, 2, 1, 1, 11, 6, 32, 52, 66, 13, 1, 13, 3, 16, 18, 7, 4, + 0, 31, 52, 21, 15, 8, 13, 0, 11, 9, 13, 2, 42, 13, 1, 13, 3, 16, 18, 7, + 2, 0, 3, 50, 14, 15, 8, 13, 0, 11, 9, 13, 2, 42, 11, 10, 2, 0, 3, 15, + 11, 13, 0, 13, 1, 13, 3, 16, 13, 2, 7, 1, 37, 2, 0, 3, 50, 24, 13, 1, + 13, 3, 16, 52, 17, 15, 8, 13, 0, 11, 12, 13, 2, 42, 13, 1, 13, 3, 16, 2, + 0, 3, 13, 3, 7, 1, 38, 23, 3, 13, 3, 7, 0, 36, 54,119, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 2, 0, 0, + 0, 2,116, 0, 2, 0, 0, 0, 3,105,100, 0, 2, 0, 0, 0, 5, 99,111,110, +116, 0, 2, 0, 0, 0, 5,103,101,116,110, 0, 2, 0, 0, 0, 5,116,121,112, +101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, 11, 98,114, + 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0, 0, 16, 73,117,112, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 2, 0, 0, 0, 10, 65, 68, 68, 66, 82, + 65, 78, 67, 72, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 16, 84,114,101,101, + 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 8, 65, 68, 68, + 76, 69, 65, 70, 0, 2, 0, 0, 0, 13, 84,114,101,101, 83,101,116, 86, 97,108, +117,101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 13, 64,108,117, 97,116,114,101,101, + 46,108,117, 97, 0, 0, 0, 0, 59, 6, 2, 15, 2, 13, 1, 2, 1, 1, 11, 3, + 31, 52, 11, 15, 4, 11, 5, 11, 6, 2, 0, 2, 1, 2, 13, 1, 18, 7, 4, 0, + 31, 52, 13, 15, 8, 13, 0, 11, 9, 13, 1, 18, 7, 2, 0, 3, 15, 10, 13, 0, + 13, 1, 7, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 5, +116,121,112,101, 0, 2, 0, 0, 0, 6,116, 97, 98,108,101, 0, 2, 0, 0, 0, + 11, 73,117,112, 77,101,115,115, 97,103,101, 0, 2, 0, 0, 0, 14, 84,114,101, +101, 76,117, 97, 32, 69,114,114,111,114, 0, 2, 0, 0, 0, 45, 73,110, 99,111, +114,114,101, 99,116, 32, 97,114,103,117,109,101,110,116,115, 32,116,111, 32,102, +117,110, 99,116,105,111,110, 32, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 2, 0, 0, + 0, 16, 73,117,112, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 2, 0, + 0, 0, 5, 78, 65, 77, 69, 0, 2, 0, 0, 0, 16, 84,114,101,101, 83,101,116, + 86, 97,108,117,101, 82,101, 99, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97, +108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,115,101,108,101, 99,116,105, +111,110, 0, 2, 0, 0, 0, 13, 83, 69, 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, + 0, 2, 0, 0, 0, 22,105,117,112, 95,116,114,101,101, 95,115,101,108,101, 99, +116,105,111,110, 95, 99, 98, 0, 2, 0, 0, 0, 15,109,117,108,116,105,115,101, +108,101, 99,116,105,111,110, 0, 2, 0, 0, 0, 18, 77, 85, 76, 84, 73, 83, 69, + 76, 69, 67, 84, 73, 79, 78, 95, 67, 66, 0, 2, 0, 0, 0, 27,105,117,112, 95, +116,114,101,101, 95,109,117,108,116,105,115,101,108,101, 99,116,105,111,110, 95, + 99, 98, 0, 2, 0, 0, 0, 11, 98,114, 97,110, 99,104,111,112,101,110, 0, 2, + 0, 0, 0, 14, 66, 82, 65, 78, 67, 72, 79, 80, 69, 78, 95, 67, 66, 0, 2, 0, + 0, 0, 23,105,117,112, 95,116,114,101,101, 95, 98,114, 97,110, 99,104,111,112, +101,110, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,114, 97,110, 99,104, 99,108,111, +115,101, 0, 2, 0, 0, 0, 15, 66, 82, 65, 78, 67, 72, 67, 76, 79, 83, 69, 95, + 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114,101,101, 95, 98,114, 97, +110, 99,104, 99,108,111,115,101, 95, 99, 98, 0, 2, 0, 0, 0, 12,101,120,101, + 99,117,116,101,108,101, 97,102, 0, 2, 0, 0, 0, 15, 69, 88, 69, 67, 85, 84, + 69, 76, 69, 65, 70, 95, 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,116,114, +101,101, 95,101,120,101, 99,117,116,101,108,101, 97,102, 95, 99, 98, 0, 2, 0, + 0, 0, 11,114,101,110, 97,109,101,110,111,100,101, 0, 2, 0, 0, 0, 14, 82, + 69, 78, 65, 77, 69, 78, 79, 68, 69, 95, 67, 66, 0, 2, 0, 0, 0, 23,105,117, +112, 95,116,114,101,101, 95,114,101,110, 97,109,101,110,111,100,101, 95, 99, 98, + 0, 2, 0, 0, 0, 9,114,101,110, 97,109,101, 99, 98, 0, 2, 0, 0, 0, 10, + 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 21,105,117,112, 95,116, +114,101,101, 95,114,101,110, 97,109,101, 99, 98, 95, 99, 98, 0, 2, 0, 0, 0, + 13,115,104,111,119,114,101,110, 97,109,101, 99, 98, 0, 2, 0, 0, 0, 14, 83, + 72, 79, 87, 82, 69, 78, 65, 77, 69, 95, 67, 66, 0, 2, 0, 0, 0, 25,105,117, +112, 95,116,114,101,101, 95,115,104,111,119,114,101,110, 97,109,101, 99, 98, 95, + 99, 98, 0, 2, 0, 0, 0, 11,114,105,103,104,116, 99,108,105, 99,107, 0, 2, + 0, 0, 0, 14, 82, 73, 71, 72, 84, 67, 76, 73, 67, 75, 95, 67, 66, 0, 2, 0, + 0, 0, 23,105,117,112, 95,116,114,101,101, 95,114,105,103,104,116, 99,108,105, + 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 9,100,114, 97,103,100,114,111,112, 0, + 2, 0, 0, 0, 12, 68, 82, 65, 71, 68, 82, 79, 80, 95, 67, 66, 0, 2, 0, 0, + 0, 21,105,117,112, 95,116,114,101,101, 95,100,114, 97,103,100,114,111,112, 95, + 99, 98, 0, 2, 0, 0, 0, 13,115,101,108,101, 99,116,105,111,110, 95, 99, 98, + 0, 2, 0, 0, 0, 18,109,117,108,116,105,115,101,108,101, 99,116,105,111,110, + 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,114, 97,110, 99,104,111,112,101,110, 95, + 99, 98, 0, 2, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, + 99, 98, 0, 2, 0, 0, 0, 15,101,120,101, 99,117,116,101,108,101, 97,102, 95, + 99, 98, 0, 2, 0, 0, 0, 14,114,101,110, 97,109,101,110,111,100,101, 95, 99, + 98, 0, 2, 0, 0, 0, 10,114,101,110, 97,109,101, 95, 99, 98, 0, 2, 0, 0, + 0, 14,115,104,111,119,114,101,110, 97,109,101, 95, 99, 98, 0, 2, 0, 0, 0, + 14,114,105,103,104,116, 99,108,105, 99,107, 95, 99, 98, 0, 2, 0, 0, 0, 12, +100,114, 97,103,100,114,111,112, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luatree_le64w.lo"); +} diff --git a/iup/srclua3/loh/val.loh b/iup/srclua3/loh/val.loh new file mode 100755 index 0000000..19d0a55 --- /dev/null +++ b/iup/srclua3/loh/val.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/val.lo"); +*/ +/* ../obj/iuplua3/val.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108, +117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15, + 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11, + 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26, + 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29, + 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11, + 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0, + 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105, +117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112, +118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85, + 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77, + 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117, +115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, + 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85, + 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, + 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115, +101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83, + 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117, +116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0, + 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, + 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, + +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val.lo"); +} diff --git a/iup/srclua3/loh/val_be32.loh b/iup/srclua3/loh/val_be32.loh new file mode 100755 index 0000000..58971c8 --- /dev/null +++ b/iup/srclua3/loh/val_be32.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/val_be32.lo"); +*/ +/* ../obj/iuplua3/val_be32.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108, +117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15, + 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11, + 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26, + 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29, + 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11, + 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0, + 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105, +117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112, +118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85, + 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77, + 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117, +115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, + 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85, + 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, + 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115, +101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83, + 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117, +116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0, + 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, + 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, + +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val_be32.lo"); +} diff --git a/iup/srclua3/loh/val_be64.loh b/iup/srclua3/loh/val_be64.loh new file mode 100755 index 0000000..d65e14b --- /dev/null +++ b/iup/srclua3/loh/val_be64.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/val_be64.lo"); +*/ +/* ../obj/iuplua3/val_be64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108, +117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15, + 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11, + 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26, + 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29, + 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11, + 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0, + 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105, +117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112, +118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85, + 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77, + 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117, +115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, + 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85, + 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, + 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115, +101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83, + 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117, +116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0, + 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, + 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, + +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val_be64.lo"); +} diff --git a/iup/srclua3/loh/val_le64.loh b/iup/srclua3/loh/val_le64.loh new file mode 100755 index 0000000..179e80a --- /dev/null +++ b/iup/srclua3/loh/val_le64.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iuplua3/val_le64.lo"); +*/ +/* ../obj/iuplua3/val_le64.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 9, 64,118, 97,108, 46,108, +117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, 25, 0, 15, + 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, 15, 9, 11, + 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, 18, 10, 26, + 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, 15, 16, 29, + 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, 15, 9, 11, + 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0, + 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, + 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, 97, 0, + 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, 2, 0, 0, 0, 13,105, +117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, 0, 0, 7,105,117,112, +118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 9, 64,118, 97,108, 46,108,117, + 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, 2, 13, 0, 3, 1, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 7, 73, 85, + 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67,111,110,115,116,114,117, 99,116,111, +114, 0, 2, 0, 0, 0, 4,105,117,112, 0, 2, 0, 0, 0, 4,118, 97,108, 0, + 2, 0, 0, 0, 14,105,117,112, 95, 99, 97,108,108, 98, 97, 99,107,115, 0, 2, + 0, 0, 0, 10,109,111,117,115,101,109,111,118,101, 0, 2, 0, 0, 0, 13, 77, + 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, 0, 2, 0, 0, 0, 13,109,111,117, +115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, 21,105,117,112, 95,118, + 97,108, 95,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, 0, 0, 0, + 12, 98,117,116,116,111,110,112,114,101,115,115, 0, 2, 0, 0, 0, 16, 66, 85, + 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, 67, 66, 0, 2, 0, 0, 0, 24,105, +117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, + 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116,116,111,110,114,101,108,101, 97,115, +101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, 79, 78, 95, 82, 69, 76, 69, 65, 83, + 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105,117,112, 95,118, 97,108, 95, 98,117, +116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 2, 0, 0, 0, + 16, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, + 0, 18, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, + +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iuplua3/val_le64.lo"); +} diff --git a/iup/srclua3/loh/val_le64w.loh b/iup/srclua3/loh/val_le64w.loh new file mode 100755 index 0000000..65ce1be --- /dev/null +++ b/iup/srclua3/loh/val_le64w.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + lua_dofile("../obj/iupluacontrols3/luaval_le64w.lo"); +*/ +/* ../obj/iupluacontrols3/luaval_le64w.lo */ +static unsigned char B1[]={ + 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,108,117, 97,118, 97, +108, 46,108,117, 97, 0, 0, 0, 0,109, 5, 0, 22, 1, 11, 1, 15, 2, 30, 0, + 25, 0, 15, 0, 11, 3, 11, 4, 26, 11, 6, 25, 5, 15, 7, 11, 8, 15, 5, 26, + 15, 9, 11, 10, 22, 2, 11, 11, 4, 0, 29, 0, 2, 26, 15, 9, 11, 12, 15, 9, + 18, 10, 26, 15, 9, 18, 10, 11, 8, 15, 13, 26, 15, 9, 11, 14, 22, 2, 11, 15, + 15, 16, 29, 0, 2, 26, 15, 9, 11, 17, 22, 2, 11, 18, 15, 19, 29, 0, 2, 26, + 15, 9, 11, 20, 15, 9, 18, 14, 26, 15, 9, 11, 21, 15, 9, 18, 17, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, + 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 87, 73, 68, 71, + 69, 84, 0, 2, 0, 0, 0, 17, 67,114,101, 97,116,101, 73, 85, 80,101,108,101, +109,101,110,116, 0, 4, 0, 0, 0, 3, 0, 0, 0, 12, 64,108,117, 97,118, 97, +108, 46,108,117, 97, 0, 0, 0, 0, 13, 5, 2, 15, 1, 13, 1, 7, 1, 16, 3, + 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 4,111, 98,106, 0, + 2, 0, 0, 0, 13,105,117,112, 67,114,101, 97,116,101, 86, 97,108, 0, 2, 0, + 0, 0, 7,105,117,112,118, 97,108, 0, 4, 0, 0, 0, 7, 0, 0, 0, 12, 64, +108,117, 97,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 12, 4, 1, 15, 1, 20, + 2, 13, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2, +111, 0, 2, 0, 0, 0, 7, 73, 85, 80, 86, 65, 76, 0, 2, 0, 0, 0, 12, 67, +111,110,115,116,114,117, 99,116,111,114, 0, 2, 0, 0, 0, 4,105,117,112, 0, + 2, 0, 0, 0, 4,118, 97,108, 0, 2, 0, 0, 0, 14,105,117,112, 95, 99, 97, +108,108, 98, 97, 99,107,115, 0, 2, 0, 0, 0, 10,109,111,117,115,101,109,111, +118,101, 0, 2, 0, 0, 0, 13, 77, 79, 85, 83, 69, 77, 79, 86, 69, 95, 67, 66, + 0, 2, 0, 0, 0, 13,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 2, + 0, 0, 0, 21,105,117,112, 95,118, 97,108, 95,109,111,117,115,101,109,111,118, +101, 95, 99, 98, 0, 2, 0, 0, 0, 12, 98,117,116,116,111,110,112,114,101,115, +115, 0, 2, 0, 0, 0, 16, 66, 85, 84, 84, 79, 78, 95, 80, 82, 69, 83, 83, 95, + 67, 66, 0, 2, 0, 0, 0, 24,105,117,112, 95,118, 97,108, 95, 98,117,116,116, +111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 2, 0, 0, 0, 14, 98,117,116, +116,111,110,114,101,108,101, 97,115,101, 0, 2, 0, 0, 0, 18, 66, 85, 84, 84, + 79, 78, 95, 82, 69, 76, 69, 65, 83, 69, 95, 67, 66, 0, 2, 0, 0, 0, 26,105, +117,112, 95,118, 97,108, 95, 98,117,116,116,111,110, 95,114,101,108,101, 97,115, +101, 95, 99, 98, 0, 2, 0, 0, 0, 16, 98,117,116,116,111,110, 95,112,114,101, +115,115, 95, 99, 98, 0, 2, 0, 0, 0, 18, 98,117,116,116,111,110, 95,114,101, +108,101, 97,115,101, 95, 99, 98, 0, +}; + + lua_dobuffer((char*)B1,sizeof(B1),"../obj/iupluacontrols3/luaval_le64w.lo"); +} diff --git a/iup/srclua3/make_uname b/iup/srclua3/make_uname new file mode 100755 index 0000000..f87a836 --- /dev/null +++ b/iup/srclua3/make_uname @@ -0,0 +1,8 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupcd $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupcontrols $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iup_pplot $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupgl $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupim $2 $3 $4 $5 $6 $7 $8 diff --git a/iup/srclua3/make_uname.bat b/iup/srclua3/make_uname.bat new file mode 100755 index 0000000..0cb97de --- /dev/null +++ b/iup/srclua3/make_uname.bat @@ -0,0 +1,10 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupcd" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupcontrols" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iup_pplot" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupgl" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupim" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupole" %2 %3 %4 %5 %6 %7 %8 diff --git a/iup/srclua3/matrix.lua b/iup/srclua3/matrix.lua new file mode 100755 index 0000000..26ca723 --- /dev/null +++ b/iup/srclua3/matrix.lua @@ -0,0 +1,54 @@ +IUPMATRIX = {parent = WIDGET} + +function IUPMATRIX:CreateIUPelement (obj) + return iupCreateMatrix () +end + +function IUPMATRIX:setcell(l,c,val) + IupSetAttribute(self,l..":"..c,val) +end + +function IUPMATRIX:getcell(l,c,val) + return IupGetAttribute(self,l..":"..c) +end + +function iupmatrix (o) + return IUPMATRIX:Constructor (o) +end +iup.matrix = iupmatrix + + +iup_callbacks.actioncb.matrix = iup_mat_action_cb +iup_callbacks.mousemove.matrix = iup_mat_mousemove_cb + +iup_callbacks.edition = {"EDITION_CB", iup_mat_edition_cb} +iup_callbacks.drop = {"DROP_CB", iup_mat_drop_cb} +iup_callbacks.dropselect = {"DROPSELECT_CB", iup_mat_dropselect_cb} +iup_callbacks.enteritem = {"ENTERITEM_CB", iup_mat_enteritem_cb} +iup_callbacks.leaveitem = {"LEAVEITEM_CB", iup_mat_leaveitem_cb} +iup_callbacks.click = {"CLICK_CB", iup_mat_click_cb} +iup_callbacks.scrolltop = {"SCROLLTOP_CB", iup_mat_scrolltop_cb} +iup_callbacks.valuecb = {"VALUE_CB", iup_mat_value_cb} +iup_callbacks.draw = {"DRAW_CB", iup_mat_draw_cb} +iup_callbacks.dropcheck = {"DROPCHECK_CB", iup_mat_dropcheck_cb} +iup_callbacks.fgcolorcb = {"FGCOLOR_CB", iup_mat_fgcolor_cb} +iup_callbacks.bgcolorcb = {"BGCOLOR_CB", iup_mat_bgcolor_cb} +iup_callbacks.value_edit = {"VALUE_EDIT_CB", iup_mat_value_edit_cb} +iup_callbacks.markedit_cb = {"MARKEDIT_CB", iup_mat_markedit_cb} +iup_callbacks.mark_cb = {"MARK_CB", iup_mat_mark_cb} +iup_callbacks.mouse_cb = {"MOUSE_CB", iup_mat_mouse_cb} +iup_callbacks.font_cb = {"FONT_CB", iup_mat_font_cb} + +iup_callbacks.edition_cb = iup_callbacks.edition +iup_callbacks.drop_cb = iup_callbacks.drop +iup_callbacks.dropselect_cb = iup_callbacks.dropselect +iup_callbacks.enteritem_cb = iup_callbacks.enteritem +iup_callbacks.leaveitem_cb = iup_callbacks.leaveitem +iup_callbacks.click_cb = iup_callbacks.click +iup_callbacks.scrolltop_cb = iup_callbacks.scrolltop +iup_callbacks.value_cb = iup_callbacks.valuecb +iup_callbacks.draw_cb = iup_callbacks.draw +iup_callbacks.dropcheck_cb = iup_callbacks.dropcheck +iup_callbacks.fgcolor_cb = iup_callbacks.fgcolorcb +iup_callbacks.bgcolor_cb = iup_callbacks.bgcolorcb +iup_callbacks.value_edit_cb = iup_callbacks.value_edit diff --git a/iup/srclua3/pplot.lua b/iup/srclua3/pplot.lua new file mode 100755 index 0000000..ba51893 --- /dev/null +++ b/iup/srclua3/pplot.lua @@ -0,0 +1,23 @@ +IUPPPLOT = {parent = WIDGET} + +function IUPPPLOT:CreateIUPelement (obj) + return iupCreatePPlot () +end + +function iuppplot (o) + return IUPPPLOT:Constructor (o) +end +iup.pplot = iuppplot + +iup_callbacks.edit_cb.pplot = iup_pplot_edit_cb + +iup_callbacks.editbegin_cb = {"EDITBEGIN_CB", iup_pplot_editbegin_cb} +iup_callbacks.editend_cb = {"EDITEND_CB", iup_pplot_editend_cb} +iup_callbacks.select_cb = {"SELECT_CB", iup_pplot_select_cb} +iup_callbacks.selectbegin_cb = {"SELECTBEGIN_CB", iup_pplot_selectbegin_cb} +iup_callbacks.selectend_cb = {"SELECTEND_CB", iup_pplot_selectend_cb} +iup_callbacks.delete_cb = {"DELETE_CB", iup_pplot_delete_cb} +iup_callbacks.deletebegin_cb = {"DELETEBEGIN_CB", iup_pplot_deletebegin_cb} +iup_callbacks.deleteend_cb = {"DELETEEND_CB", iup_pplot_deleteend_cb} +iup_callbacks.predraw_cb = {"PREDRAW_CB", iup_pplot_predraw_cb} +iup_callbacks.postdraw_cb = {"POSTDRAW_CB", iup_pplot_postdraw_cb} diff --git a/iup/srclua3/sbox.lua b/iup/srclua3/sbox.lua new file mode 100755 index 0000000..d687e0a --- /dev/null +++ b/iup/srclua3/sbox.lua @@ -0,0 +1,10 @@ +IUPSBOX = {parent = WIDGET} + +function IUPSBOX:CreateIUPelement (obj) + return iupCreateSbox(obj[1]) +end + +function iupsbox (o) + return IUPSBOX:Constructor (o) +end +iup.sbox = iupsbox diff --git a/iup/srclua3/spin.lua b/iup/srclua3/spin.lua new file mode 100755 index 0000000..b0b23fc --- /dev/null +++ b/iup/srclua3/spin.lua @@ -0,0 +1,24 @@ +IUPSPIN = {parent = WIDGET} + +function IUPSPIN:CreateIUPelement (obj) + return iupCreateSpin () +end + +function iupspin (o) + return IUPSPIN:Constructor (o) +end +iup.spin = iupspin + +IUPSPINBOX = {parent = WIDGET} + +function IUPSPINBOX:CreateIUPelement (obj) + return iupCreateSpinbox (obj[1]) +end + +function iupspinbox (o) + return IUPSPINBOX:Constructor (o) +end +iup.spinbox = iupspinbox + +iup_callbacks.spincb = {"SPIN_CB", iup_spin_cb} +iup_callbacks.spin_cb = iup_callbacks.spincb diff --git a/iup/srclua3/tabs.lua b/iup/srclua3/tabs.lua new file mode 100755 index 0000000..845e04b --- /dev/null +++ b/iup/srclua3/tabs.lua @@ -0,0 +1,13 @@ +IUPTABS = {parent = WIDGET} + +function IUPTABS:CreateIUPelement (obj) + return iupCreateTabs (obj, getn(obj)) +end + +function iuptabs (o) + return IUPTABS:Constructor (o) +end +iup.tabs = iuptabs + +iup_callbacks.tabchange = {"TABCHANGE_CB", iup_tabchange_cb} +iup_callbacks.tabchange_cb = iup_callbacks.tabchange \ No newline at end of file diff --git a/iup/srclua3/tree.lua b/iup/srclua3/tree.lua new file mode 100755 index 0000000..659afdb --- /dev/null +++ b/iup/srclua3/tree.lua @@ -0,0 +1,68 @@ +IUPTREE = {parent = WIDGET} +IUPTREEREFERENCETABLE = {} -- Used in C, see luatree.c + +function IUPTREE:CreateIUPelement (obj) + return iupCreateTree () +end + +function iuptree (o) + return IUPTREE:Constructor (o) +end +iup.tree = iuptree + +function TreeSetValueRec(handle, t, id) + + if t == nil then return end + + local cont = getn(t) + + while cont >= 0 do + if type (t[cont]) == "table" then + if t[cont].branchname ~= nil then + IupSetAttribute(handle, "ADDBRANCH"..id, t[cont].branchname) + else + IupSetAttribute(handle, "ADDBRANCH"..id, "") + end + TreeSetValueRec(handle, t[cont], id+1) + else + if t[cont] then + IupSetAttribute(handle, "ADDLEAF"..id, t[cont]) + end + end + cont = cont - 1 + end +end + +function TreeSetValue(handle, t) + if type(t) ~= "table" then + IupMessage("TreeLua Error", "Incorrect arguments to function TreeSetValue") + return + end + if t.branchname ~= nil then + IupSetAttribute(handle, "NAME", t.branchname) + end + TreeSetValueRec(handle, t, 0) +end +iup.TreeSetValue = TreeSetValue + +iup_callbacks.selection = {"SELECTION_CB", iup_tree_selection_cb} +iup_callbacks.multiselection = {"MULTISELECTION_CB", iup_tree_multiselection_cb} +iup_callbacks.branchopen = {"BRANCHOPEN_CB", iup_tree_branchopen_cb} +iup_callbacks.branchclose = {"BRANCHCLOSE_CB", iup_tree_branchclose_cb} +iup_callbacks.executeleaf = {"EXECUTELEAF_CB", iup_tree_executeleaf_cb} +iup_callbacks.renamenode = {"RENAMENODE_CB", iup_tree_renamenode_cb} +iup_callbacks.renamecb = {"RENAME_CB", iup_tree_renamecb_cb} +iup_callbacks.showrenamecb = {"SHOWRENAME_CB", iup_tree_showrenamecb_cb} +iup_callbacks.rightclick = {"RIGHTCLICK_CB", iup_tree_rightclick_cb} +iup_callbacks.dragdrop = {"DRAGDROP_CB", iup_tree_dragdrop_cb} + +iup_callbacks.selection_cb = iup_callbacks.selection +iup_callbacks.multiselection_cb = iup_callbacks.multiselection +iup_callbacks.branchopen_cb = iup_callbacks.branchopen +iup_callbacks.branchclose_cb = iup_callbacks.branchclose +iup_callbacks.executeleaf_cb = iup_callbacks.executeleaf +iup_callbacks.renamenode_cb = iup_callbacks.renamenode +iup_callbacks.rename_cb = iup_callbacks.renamecb +iup_callbacks.showrename_cb = iup_callbacks.showrenamecb +iup_callbacks.rightclick_cb = iup_callbacks.rightclick +iup_callbacks.dragdrop_cb = iup_callbacks.dragdrop diff --git a/iup/srclua3/val.lua b/iup/srclua3/val.lua new file mode 100755 index 0000000..e614421 --- /dev/null +++ b/iup/srclua3/val.lua @@ -0,0 +1,22 @@ +IUPVAL = {parent = WIDGET} + +function IUPVAL:CreateIUPelement (obj) + return iupCreateVal (obj[1]) +end + +function iupval (o) + return IUPVAL:Constructor (o) +end +iup.val = iupval + + +-- must set here because it is also used elsewhere with a different signature +iup_callbacks.mousemove = {"MOUSEMOVE_CB", nil} +iup_callbacks.mousemove_cb = iup_callbacks.mousemove +iup_callbacks.mousemove.val = iup_val_mousemove_cb + +iup_callbacks.buttonpress = {"BUTTON_PRESS_CB", iup_val_button_press_cb} +iup_callbacks.buttonrelease = {"BUTTON_RELEASE_CB", iup_val_button_release_cb} + +iup_callbacks.button_press_cb = iup_callbacks.buttonpress +iup_callbacks.button_release_cb = iup_callbacks.buttonrelease diff --git a/iup/srclua5/Makefile b/iup/srclua5/Makefile new file mode 100755 index 0000000..3942e79 --- /dev/null +++ b/iup/srclua5/Makefile @@ -0,0 +1,24 @@ + +.PHONY: do_all iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim iupluaimglib +do_all: iuplua iupluacd iupluacontrols iuplua_pplot iupluagl iupluaim iupluaimglib + +iuplua: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak + +iupluacd: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcd + +iupluacontrols: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupcontrols + +iuplua_pplot: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iup_pplot + +iupluagl: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupgl + +iupluaim: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupim + +iupluaimglib: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak MF=iupimglib diff --git a/iup/srclua5/button.lua b/iup/srclua5/button.lua new file mode 100755 index 0000000..946a05e --- /dev/null +++ b/iup/srclua5/button.lua @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------ +-- Button class +------------------------------------------------------------------------------ +local ctrl = { + nick = "button", + parent = WIDGET, + creation = "S-", + callback = { + action = "", + } +} + +function ctrl.createElement(class, arg) + return Button(arg.title) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/canvas.lua b/iup/srclua5/canvas.lua new file mode 100755 index 0000000..562d671 --- /dev/null +++ b/iup/srclua5/canvas.lua @@ -0,0 +1,29 @@ +------------------------------------------------------------------------------ +-- Canvas class +------------------------------------------------------------------------------ +local ctrl = { + nick = "canvas", + parent = WIDGET, + creation = "-", + callback = { + action = "ff", + button_cb = "nnnns", + enterwindow_cb = "", + leavewindow_cb = "", + motion_cb = "nns", + resize_cb = "nn", + scroll_cb = "nff", + keypress_cb = "nn", + wom_cb = "n", + wheel_cb = "fnns", + mdiactivate_cb = "", + focus_cb = "n", + } +} + +function ctrl.createElement(class, arg) + return Canvas() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/cbox.lua b/iup/srclua5/cbox.lua new file mode 100755 index 0000000..3533970 --- /dev/null +++ b/iup/srclua5/cbox.lua @@ -0,0 +1,28 @@ +------------------------------------------------------------------------------ +-- Cbox class +------------------------------------------------------------------------------ +local ctrl = { + nick = "cbox", + parent = WIDGET, + creation = "v", + callback = {}, + funcname = "Cboxv", + createfunc = [[ +static int Cboxv(lua_State *L) +{ + Ihandle **hlist = iuplua_checkihandle_array(L, 1); + Ihandle *h = IupCboxv(hlist); + iuplua_plugstate(L, h); + iuplua_pushihandle_raw(L, h); + free(hlist); + return 1; +} + ]], +} + +function ctrl.createElement(class, arg) + return Cboxv(arg) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/cells.lua b/iup/srclua5/cells.lua new file mode 100755 index 0000000..9c914f2 --- /dev/null +++ b/iup/srclua5/cells.lua @@ -0,0 +1,32 @@ +------------------------------------------------------------------------------ +-- Cells class +------------------------------------------------------------------------------ +local ctrl = { + nick = "cells", + parent = WIDGET, + creation = "", + callback = { + mouseclick_cb = "nnnnnns", + mousemotion_cb = "nnnns", + scrolling_cb = "nn", +-- draw_cb = "nnnnnnn", -- already registered by the matrix + width_cb = "n", + height_cb = "n", + nlines_cb = "", + ncols_cb = "", + hspan_cb = "nn", + vspan_cb = "nn", + }, + include = "iupcontrols.h", +} + +function ctrl.redraw(handle) + handle.repaint = "YES" +end + +function ctrl.createElement(class, arg) + return Cells() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/clipboard.lua b/iup/srclua5/clipboard.lua new file mode 100755 index 0000000..e60b8bd --- /dev/null +++ b/iup/srclua5/clipboard.lua @@ -0,0 +1,17 @@ +------------------------------------------------------------------------------ +-- Clipboard class +------------------------------------------------------------------------------ +local ctrl = { + nick = "clipboard", + parent = WIDGET, + creation = "", + callback = { + }, +} + +function ctrl.createElement(class, arg) + return Clipboard() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/colorbar.lua b/iup/srclua5/colorbar.lua new file mode 100755 index 0000000..524d5f3 --- /dev/null +++ b/iup/srclua5/colorbar.lua @@ -0,0 +1,26 @@ +------------------------------------------------------------------------------ +-- Colorbar class +------------------------------------------------------------------------------ +local ctrl = { + nick = "colorbar", + parent = WIDGET, + creation = "", + callback = { + select_cb = "nn", + cell_cb = {"n", ret = "s"}, + switch_cb = "nn", + extended_cb = "n", + }, + funcname = "Colorbar", + include = "iupcontrols.h", +} + +PRIMARY = -1 +SECONDARY = -2 + +function ctrl.createElement(class, arg) + return Colorbar(arg.action) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/colorbrowser.lua b/iup/srclua5/colorbrowser.lua new file mode 100755 index 0000000..16ac58f --- /dev/null +++ b/iup/srclua5/colorbrowser.lua @@ -0,0 +1,21 @@ +------------------------------------------------------------------------------ +-- ColorBrowser class +------------------------------------------------------------------------------ +local ctrl = { + nick = "colorbrowser", + parent = WIDGET, + creation = "", + callback = { + drag_cb = "ccc", + change_cb = "ccc", + }, + funcname = "ColorBrowser", + include = "iupcontrols.h", +} + +function ctrl.createElement(class, arg) + return ColorBrowser(arg.action) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/colordlg.lua b/iup/srclua5/colordlg.lua new file mode 100755 index 0000000..6eea53b --- /dev/null +++ b/iup/srclua5/colordlg.lua @@ -0,0 +1,26 @@ +------------------------------------------------------------------------------ +-- ColorDlg class +------------------------------------------------------------------------------ +local ctrl = { + nick = "colordlg", + parent = WIDGET, + creation = "", + funcname = "ColorDlg", + callback = {} +} + +function ctrl.popup(handle, x, y) + Popup(handle,x,y) +end + +function ctrl.destroy(handle) + return Destroy(handle) +end + +function ctrl.createElement(class, arg) + return ColorDlg() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") + diff --git a/iup/srclua5/config.mak b/iup/srclua5/config.mak new file mode 100755 index 0000000..7979f0e --- /dev/null +++ b/iup/srclua5/config.mak @@ -0,0 +1,31 @@ +PROJNAME = iup +LIBNAME = iuplua51 +OPT = YES +DEF_FILE = iuplua5.def + +DEFINES = IUPLUA_USELOH + +USE_LUA51 = Yes +NO_LUALINK = Yes + +INCLUDES = ../include ../src +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup + +CTRLUA = button.lua canvas.lua dialog.lua colordlg.lua clipboard.lua \ + filedlg.lua fill.lua frame.lua hbox.lua normalizer.lua \ + item.lua image.lua imagergb.lua imagergba.lua label.lua \ + menu.lua multiline.lua list.lua separator.lua user.lua \ + submenu.lua text.lua toggle.lua vbox.lua zbox.lua timer.lua \ + sbox.lua spin.lua spinbox.lua cbox.lua messagedlg.lua \ + radio.lua val.lua tabs.lua fontdlg.lua tree.lua progressbar.lua + +GC := $(addsuffix .c, $(basename $(CTRLUA))) +GC := $(addprefix il_, $(GC)) +SRCLUA = iuplua.lua constants.lua $(CTRLUA) +LOHDIR = loh + +$(GC) : il_%.c : %.lua generator.lua + $(LUABIN) generator.lua $< + +SRC = iuplua.c iuplua_api.c il_tree_aux.c il_scanf.c il_getparam.c il_getcolor.c $(GC) diff --git a/iup/srclua5/constants.lua b/iup/srclua5/constants.lua new file mode 100755 index 0000000..9a72f6a --- /dev/null +++ b/iup/srclua5/constants.lua @@ -0,0 +1,72 @@ +-- This file is executed with the "iup" table already as the globalindex + +---------------------------------------------------------------------------- +-- Common return values +---------------------------------------------------------------------------- +ERROR = 1 +NOERROR = 0 +OPENED = -1 +INVALID = -1 + +---------------------------------------------------------------------------- +-- Callback return values +---------------------------------------------------------------------------- +IGNORE = -1 +DEFAULT = -2 +CLOSE = -3 +CONTINUE = -4 + +---------------------------------------------------------------------------- +-- IupPopup e IupShowXY +---------------------------------------------------------------------------- +CENTER = 65535 +LEFT = 65534 +RIGHT = 65533 +MOUSEPOS = 65532 +CURRENT = 65531 +CENTERPARENT = 65530 +TOP = LEFT +BOTTOM = RIGHT + +---------------------------------------------------------------------------- +-- Scrollbar +---------------------------------------------------------------------------- +SBUP = 0 +SBDN = 1 +SBPGUP = 2 +SBPGDN = 3 +SBPOSV = 4 +SBDRAGV = 5 +SBLEFT = 6 +SBRIGHT = 7 +SBPGLEFT = 8 +SBPGRIGHT = 9 +SBPOSH = 10 +SBDRAGH = 11 + +---------------------------------------------------------------------------- +-- SHOW_CB +---------------------------------------------------------------------------- +SHOW = 0 +RESTORE = 1 +MINIMIZE = 2 +MAXIMIZE = 3 +HIDE = 4 + +---------------------------------------------------------------------------- +-- BUTTON_CB +---------------------------------------------------------------------------- +BUTTON1 = string.byte('1') +BUTTON2 = string.byte('2') +BUTTON3 = string.byte('3') +BUTTON4 = string.byte('4') +BUTTON5 = string.byte('5') + +---------------------------------------------------------------------------- +-- Pre-Defined Masks +---------------------------------------------------------------------------- +MASK_FLOAT = "[+/-]?(/d+/.?/d*|/./d+)" +MASK_UFLOAT = "(/d+/.?/d*|/./d+)" +MASK_EFLOAT = "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?" +MASK_INT = "[+/-]?/d+" +MASK_UINT = "/d+" diff --git a/iup/srclua5/ctrl_template.lua b/iup/srclua5/ctrl_template.lua new file mode 100755 index 0000000..f314ac6 --- /dev/null +++ b/iup/srclua5/ctrl_template.lua @@ -0,0 +1,94 @@ +------------------------------------------------------------------------------ +-- Template to create control classes for IupLua5 +-- The Lua module is used by the "generator.lua" to build a C module, +-- and loaded during iuplua_open to initialize the control. +------------------------------------------------------------------------------ +local ctrl = { + nick = "mycontrol", -- name of the control, used in the control creation: iup.mycontrol{} + -- also used for the generated C module + parent = WIDGET, -- used to define a few methods used fro creation and set attribute + creation = "nn", -- the creation parameters in Lua + -- "n" = int + -- "d" = double + -- "s" = char* + -- "S" = optional char*, can be nil + -- "i" = Ihandle* + -- "-" = NULL, no parameters in Lua, but a NULL parameter in C + -- "a" = char* array in a table + -- "t" = int array in a table + -- "v" = Ihandle* array in a table + + funcname = "myControl", -- [optional] name of the function used in C + -- default is ctrl.nick with first letter uppercase + + callback = { -- partial list of callbacks + -- only the callbacks that are not already defined by other controls needs to be defined + action = "ff", + button_cb = "nnnns", + enterwindow_cb = "", + leavewindow_cb = "", + motion_cb = "nns", + resize_cb = "nn", + scroll_cb = "nff", + keypress_cb = "nn", + wom_cb = "n", + wheel_cb = "fnns", + mdiactivate_cb = "", + focus_cb = "n", + value_cb = {"nn", ret = "s"}, -- ret is return type, default is n ("int") + + -- the following types can be used for callback parameters: + -- n = "int", + -- s = "char *", + -- i = "Ihandle *", + -- c = "unsigned char ", + -- d = "double", + -- f = "float", + -- v = "Ihandle **", + -- + -- Other parameters must be implemented in C using the extrafuncs module + + -- IMPORTANT: callbacks with the same name in different controls + -- are assumed to have the same parameters, that's why they are defined only once + -- When callbacks conflict using the same name, but different parameters + -- generator.lua must be edited to include the callback in the list of conflicting callbacks + -- "action" is a common callback that conflicts + -- In the callback list, just declare the callback with the parameters used in that control. + } + + include = "iupmycontrol.h", -- [optional] header to be included, it is where the creation function is declared. + extrafuncs = 1, -- [optional] additional module in C called by the initialization function + + createfunc = [[ -- [optional] creation function in C, + -- used if creation parameters needs some interpretation in C + -- not to be used together with funcname +#include +static int myControl (lua_State * L) +{ + xxxx; + yyyy; + return 1; +} +]] + + extracode = [[ -- [optional] extra fucntions to be defined in C. +int luaopen_iupluamycontrol51(lua_State* L) +{ + return iupmycontrollua_open(L); +} +]] + +} + +-- must be defined so the WIDGET constructor can call it +function ctrl.createElement(class, arg) + return myControl() +end + +-- here you can add some custom methods to the class +function ctrl.popup(handle, x, y) + Popup(handle,x,y) +end + +iupRegisterWidget(ctrl) -- will make iup.mycontrol available +iupSetClass(ctrl, "iup widget") -- register the class in the registry diff --git a/iup/srclua5/dial.lua b/iup/srclua5/dial.lua new file mode 100755 index 0000000..0384b43 --- /dev/null +++ b/iup/srclua5/dial.lua @@ -0,0 +1,21 @@ +------------------------------------------------------------------------------ +-- Dial class +------------------------------------------------------------------------------ +local ctrl = { + nick = "dial", + parent = WIDGET, + creation = "s", + callback = { + mousemove_cb = "d", -- already registered by the val, but has a name conflict +-- button_press_cb = "d", -- already registered by the val +-- button_release_cb = "d", -- already registered by the val + }, + include = "iupcontrols.h", +} + +function ctrl.createElement(class, arg) + return Dial(arg[1]) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/dialog.lua b/iup/srclua5/dialog.lua new file mode 100755 index 0000000..a996ad7 --- /dev/null +++ b/iup/srclua5/dialog.lua @@ -0,0 +1,36 @@ +------------------------------------------------------------------------------ +-- Dialog class +------------------------------------------------------------------------------ +local ctrl = { + nick = "dialog", + parent = WIDGET, + creation = "I", + callback = { + map_cb = "", + unmap_cb = "", + close_cb = "", + show_cb = "n", + move_cb = "nn", + trayclick_cb = "nnn", + dropfiles_cb = "snnn", + } +} + +function ctrl.createElement(class, arg) + return Dialog(arg[1]) +end + +function ctrl.popup(handle, x, y) + Popup(handle,x,y) +end + +function ctrl.showxy(handle, x, y) + return ShowXY(handle, x, y) +end + +function ctrl.destroy(handle) + return Destroy(handle) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/filedlg.lua b/iup/srclua5/filedlg.lua new file mode 100755 index 0000000..71c4bb4 --- /dev/null +++ b/iup/srclua5/filedlg.lua @@ -0,0 +1,28 @@ +------------------------------------------------------------------------------ +-- FileDlg class +------------------------------------------------------------------------------ +local ctrl = { + nick = "filedlg", + parent = WIDGET, + creation = "", + callback = { + file_cb = "ss", + }, + funcname = "FileDlg" +} + +function ctrl.popup(handle, x, y) + Popup(handle,x,y) +end + +function ctrl.destroy(handle) + return Destroy(handle) +end + +function ctrl.createElement(class, arg) + return FileDlg() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") + diff --git a/iup/srclua5/fill.lua b/iup/srclua5/fill.lua new file mode 100755 index 0000000..4bf7803 --- /dev/null +++ b/iup/srclua5/fill.lua @@ -0,0 +1,16 @@ +------------------------------------------------------------------------------ +-- Fill class +------------------------------------------------------------------------------ +local ctrl = { + nick = "fill", + parent = WIDGET, + creation = "", + callback = {} +} + +function ctrl.createElement(class, arg) + return Fill() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/fontdlg.lua b/iup/srclua5/fontdlg.lua new file mode 100755 index 0000000..2c88d26 --- /dev/null +++ b/iup/srclua5/fontdlg.lua @@ -0,0 +1,26 @@ +------------------------------------------------------------------------------ +-- FontDlg class +------------------------------------------------------------------------------ +local ctrl = { + nick = "fontdlg", + parent = WIDGET, + creation = "", + funcname = "FontDlg", + callback = {} +} + +function ctrl.popup(handle, x, y) + Popup(handle,x,y) +end + +function ctrl.destroy(handle) + return Destroy(handle) +end + +function ctrl.createElement(class, arg) + return FontDlg() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") + diff --git a/iup/srclua5/frame.lua b/iup/srclua5/frame.lua new file mode 100755 index 0000000..7a1c1cc --- /dev/null +++ b/iup/srclua5/frame.lua @@ -0,0 +1,16 @@ +------------------------------------------------------------------------------ +-- Frame class +------------------------------------------------------------------------------ +local ctrl = { + nick = "frame", + parent = WIDGET, + creation = "i", + callback = {} +} + +function ctrl.createElement(class, arg) + return Frame(arg[1]) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/gauge.lua b/iup/srclua5/gauge.lua new file mode 100755 index 0000000..45a72b3 --- /dev/null +++ b/iup/srclua5/gauge.lua @@ -0,0 +1,17 @@ +------------------------------------------------------------------------------ +-- Gauge class +------------------------------------------------------------------------------ +local ctrl = { + nick = "gauge", + parent = WIDGET, + creation = "", + callback = {}, + include = "iupcontrols.h", +} + +function ctrl.createElement(class, arg) + return Gauge(arg.action) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/generator.lua b/iup/srclua5/generator.lua new file mode 100755 index 0000000..24fd325 --- /dev/null +++ b/iup/srclua5/generator.lua @@ -0,0 +1,222 @@ + +function dofile(f) + pcall(loadfile(f)) +end + +-- compatibility functions (with iuplua.lua) +function iupSetClass(ctrl, name) + element = ctrl +end + +-- dummy functions +iupluaNewClass = function() end +iupSetMethod = iupluaNewClass +iupRegisterWidget = iupluaNewClass + +c_types = { + n = "int", + s = "char *", + i = "Ihandle *", + c = "unsigned char ", + d = "double", + f = "float", + v = "Ihandle **", +} + +-- Adjust the callbacks table +function adjustcallbacktable(c) + d = {} + for i,j in pairs(c) do + if type(j) == "string" then + d[i] = { j, "IUP_".. string.upper(i)} + elseif type(j) == "table" then + d[i] = j + else + print("ERROR IN CALLBACK TABLE FORMAT") + end + end + return d +end + + +function header(o,i) + io.write [[ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don t change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +]] + if i then io.write('#include "',i,'"\n') end + io.write('#include "il.h"\n\n\n') +end + +function firstupper(name) + return string.upper(string.sub(name,1,1)) .. string.sub(name,2,-1) +end + +function write_creation(o, t) + local aux = {n = 1} + local u = firstupper(o) + local v = t.creation + local c = t.callback + if t.funcname then + u = t.funcname + end + io.write ("static int ",u,"(lua_State *L)\n") + io.write ("{\n") + if t.rettype == nil then io.write(" Ihandle *ih = Iup",u,"(") + elseif t.rettype == "n" then io.write(" int n = (Iup",u,"(") + elseif t.rettype == "s" then io.write(" char *s = (Iup",u,"(") + end + local max = string.len(v) + string.gsub(v, "(.)", function(p) + if p == "n" then io.write("luaL_checkint(L, ",aux.n,")") + elseif p == "d" then io.write("luaL_number(L, ",aux.n,")") + elseif p == "s" then io.write("(char *) luaL_checkstring(L, ",aux.n,")") + elseif p == "S" then io.write("(char *) luaL_optstring(L, ",aux.n,', NULL)') + elseif p == "i" then io.write("iuplua_checkihandle(L, ",aux.n,")") + elseif p == "I" then io.write("iuplua_checkihandleornil(L, ",aux.n,")") + elseif p == "-" then io.write("NULL") + elseif p == "a" then io.write("iuplua_checkstring_array(L, ",aux.n,")") + elseif p == "t" then io.write("iuplua_checkint_array(L, ",aux.n,")") + elseif p == "v" then io.write("iuplua_checkihandle_array(L, ",aux.n,")") + else io.write("FORMAT '", p, "' NOT SUPPORTED\n") + end + if aux.n < max then io.write(", ") end + aux.n = aux.n + 1 + end) + io.write(");\n") + + io.write(" iuplua_plugstate(L, ih);\n") + io.write(" iuplua_pushihandle_raw(L, ih);\n") + io.write(" return 1;\n") + io.write("}\n\n") +end + +function write_callbacks(o, c) + local aux = { } + for i,v in pairs(c) do + local s = v[1] + local max = string.len(s) + aux.n = 0 + io.write("static ") + if v.ret then + if v.ret == "s" then + io.write("char * ") + end + else + io.write("int ") + end + io.write(o, "_", i, "(Ihandle *self") + if max > 0 then io.write(", ") end + string.gsub(s, "(.)", function(p) + io.write(c_types[p], " p", aux.n) + aux.n = aux.n + 1 + if aux.n < max then io.write(", ") end + end) + io.write(")\n{\n") + io.write(' lua_State *L = iuplua_call_start(self, "', i, '");') + aux.n = 0 + string.gsub(s, "(.)", function(p) + if p == "n" or p == "f" or p == "d" or p == "c" then + io.write("\n lua_pushnumber(L, p"..aux.n..");") + elseif p == "s" then + io.write("\n lua_pushstring(L, p"..aux.n..");") + elseif p == "i" then + io.write("\n iuplua_pushihandle(L, p"..aux.n..");") + else + io.write("\n ERROR !! ") + end + aux.n = aux.n + 1 + end) + if v.ret and v.ret == "s" then + io.write("\n return iuplua_call_rs(L, " .. max .. ");") + else + io.write("\n return iuplua_call(L, " .. max .. ");") + end + io.write("\n}\n\n") + end +end + +function write_initialization(o,t) + local aux= {n=1} + local c = t.callback + local u = firstupper(o) + if t.extrafuncs then + io.write('void iuplua_', o,'funcs_open(lua_State *L);\n\n') + end + if t.openfuncname then + io.write("void ", t.openfuncname, "(lua_State * L)\n") + else + io.write("int iup", o,"lua_open(lua_State * L)\n") + end + io.write("{\n") + io.write(" iuplua_register(L, ") + if t.funcname then + u = t.funcname + end + io.write(u, ', "', u,'");\n\n') + + for i,v in pairs(c) do + local type = "NULL" + if i == "action" or + i == "action_cb" or + i == "edit_cb" or + i == "mousemove_cb" then + type = '"'..string.lower(o)..'"' + end + io.write(' iuplua_register_cb(L, "',string.upper(i),'", (lua_CFunction)',o,'_',i,', ',type,');\n') + first = 0 + end + io.write('\n') + + if t.extrafuncs then + io.write(' iuplua_', o,'funcs_open(L);\n\n') + end + io.write('#ifdef IUPLUA_USELOH\n') + io.write('#ifdef TEC_BIGENDIAN\n') + io.write('#ifdef TEC_64\n') + io.write('#include "loh/', o,'_be64.loh"\n') + io.write('#else\n') + io.write('#include "loh/', o,'_be32.loh"\n') + io.write('#endif\n') + io.write('#else\n') + io.write('#ifdef TEC_64\n') + io.write('#ifdef WIN64\n') + io.write('#include "loh/', o,'_le64w.loh"\n') + io.write('#else\n') + io.write('#include "loh/', o,'_le64.loh"\n') + io.write('#endif\n') + io.write('#else\n') + io.write('#include "loh/', o,'.loh"\n') + io.write('#endif\n') + io.write('#endif\n') + io.write('#else\n') + io.write(' iuplua_dofile(L, "', o,'.lua");\n') + io.write('#endif\n\n') + io.write(' return 0;\n') + io.write("}\n\n") +end + +dofile(arg[1]) +element.callback = adjustcallbacktable(element.callback) + +io.output("il_"..element.nick..".c") +header(element.nick, element.include) +write_callbacks(element.nick, element.callback) +if element.createfunc == nil then + write_creation(element.nick, element) +else + io.write(element.createfunc) +end +write_initialization(element.nick, element) +if element.extracode then + io.write(element.extracode) +end diff --git a/iup/srclua5/glcanvas.lua b/iup/srclua5/glcanvas.lua new file mode 100755 index 0000000..782e974 --- /dev/null +++ b/iup/srclua5/glcanvas.lua @@ -0,0 +1,46 @@ +------------------------------------------------------------------------------ +-- GLCanvas class +------------------------------------------------------------------------------ +local ctrl = { + nick = "glcanvas", + parent = WIDGET, + creation = "-", + funcname = "GLCanvas", + include = "iupgl.h", + callback = { + action = "nn", + }, + extrafuncs = 1, + extracode = [[ +int iupgllua_open(lua_State * L) +{ + if (iuplua_opencall_internal(L)) + IupGLCanvasOpen(); + + iuplua_changeEnv(L); + iupglcanvaslua_open(L); + iuplua_returnEnv(L); + return 0; +} + +/* obligatory to use require"iupluagl" */ +int luaopen_iupluagl(lua_State* L) +{ + return iupgllua_open(L); +} + +/* obligatory to use require"iupluagl51" */ +int luaopen_iupluagl51(lua_State* L) +{ + return iupgllua_open(L); +} + +]] +} + +function ctrl.createElement(class, arg) + return GLCanvas() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/hbox.lua b/iup/srclua5/hbox.lua new file mode 100755 index 0000000..38213bb --- /dev/null +++ b/iup/srclua5/hbox.lua @@ -0,0 +1,20 @@ +------------------------------------------------------------------------------ +-- HBox class +------------------------------------------------------------------------------ +local ctrl = { + nick = "hbox", + parent = BOX, + creation = "-", + callback = {} +} + +function ctrl.append(handle, elem) + Append(handle, elem) +end + +function ctrl.createElement(class, arg) + return Hbox() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/il.h b/iup/srclua5/il.h new file mode 100755 index 0000000..81a0140 --- /dev/null +++ b/iup/srclua5/il.h @@ -0,0 +1,161 @@ +/** \file + * \brief IUPLua5 internal Functions + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IL_H +#define __IL_H + +#ifdef __cplusplus +extern "C" { +#endif + +int iuplistlua_open (lua_State * L); +int iuplabellua_open (lua_State * L); +int iupitemlua_open (lua_State * L); +int iupimagelua_open (lua_State * L); +int iuphboxlua_open (lua_State * L); +int iupframelua_open (lua_State * L); +int iupfilllua_open (lua_State * L); +int iupfiledlglua_open (lua_State * L); +int iupdialoglua_open (lua_State * L); +int iupcanvaslua_open (lua_State * L); +int iupbuttonlua_open (lua_State * L); +int iupzboxlua_open (lua_State * L); +int iupvboxlua_open (lua_State * L); +int iuptogglelua_open (lua_State * L); +int iuptimerlua_open (lua_State * L); +int iuptextlua_open (lua_State * L); +int iupsubmenulua_open (lua_State * L); +int iupseparatorlua_open (lua_State * L); +int iupradiolua_open (lua_State * L); +int iupmultilinelua_open (lua_State * L); +int iupmenulua_open (lua_State * L); +int iupcboxlua_open (lua_State * L); +int iupspinboxlua_open (lua_State * L); +int iupspinlua_open (lua_State * L); +int iupsboxlua_open (lua_State * L); +int iupgclua_open (lua_State * L); +int iupvallua_open (lua_State * L); +int iuptabslua_open (lua_State * L); +int iupfontdlglua_open(lua_State * L); +int iupmessagedlglua_open(lua_State * L); +int iupcolordlglua_open(lua_State * L); +int iupimagergbalua_open(lua_State * L); +int iupimagergblua_open(lua_State * L); +int iupprogressbarlua_open(lua_State * L); +int iupnormalizerlua_open(lua_State * L); +int iupuserlua_open(lua_State * L); +int iuptreelua_open(lua_State * L); +int iupclipboardlua_open(lua_State * L); + +void iupgetparamlua_open (lua_State * L); + +int iupluaScanf(lua_State *L); +int iupluaapi_open(lua_State * L); + + + /* Registration */ + +/** Sets the global index as the table "iup". + * Used to simplify the registration of functions and constants in the "iup" namespace. + */ +void iuplua_changeEnv(lua_State *L); + +/** Resets the global index. + * Must match a iuplua_changeEnv call. + */ +void iuplua_returnEnv(lua_State *L); + +/** Returns true if IupOpen was called from inside the IupLua initialization function (iuplua_open). + * All the other C intialization functions are called from the respective IupLua initialization functions. + */ +int iuplua_opencall_internal(lua_State *L); + +/** Register a function. + */ +void iuplua_register(lua_State *L, lua_CFunction func, const char* name); + +/** Register a string. + */ +void iuplua_regstring(lua_State *L, const char* str, const char* name); + + + /* Callbacks */ + +/** Stores the Lua State inside the IUP element, + * so it can be retreived from inside a callback. + * Used in the creation of the element. + */ +void iuplua_plugstate(lua_State *L, Ihandle *ih); + +/** Retrieve the Lua State. Used inside a callback. + */ +lua_State* iuplua_getstate(Ihandle *ih); + +/** First function called inside a callback. + * It prepares the stack for the call and returns the Lua state. + */ +lua_State * iuplua_call_start(Ihandle *ih, const char* name); + +/** Called when a callback in Lua should be called. + * nargs is the number of arguments after the first Ihandle*. + * Returns the callback return value. If nil returns IUP_DEFAULT. + * At the end clears the Lua stack. + */ +int iuplua_call(lua_State *L, int nargs); + +/** Same as /ref iuplua_call, but returns a string. + */ +char* iuplua_call_rs(lua_State *L, int nargs); + +/** Same as lua_pcall, but if an error occour then + * _ERRORMESSAGE is called. + */ +int iuplua_call_raw(lua_State* L, int nargs, int nresults); + +/** Register the callback in the iup.callbaks table. + * If type is not NULL, register in a sub table with the controls class name. + */ +void iuplua_register_cb(lua_State *L, const char* name, lua_CFunction func, const char* type); + + + /* Functions */ + +/** Pushes a raw Ihandle into the stack (an userdata). + * Used by the control creation functions. + */ +void iuplua_pushihandle_raw(lua_State *L, Ihandle *h); + +/** Returns an array of string stored in a Lua table. + */ +char** iuplua_checkstring_array(lua_State *L, int pos); + +/** Returns an array of int stored in a Lua table. + */ +int* iuplua_checkint_array(lua_State *L, int pos); + +/** Returns an array of unsigned char stored in a Lua table. + * Must have count elements. + */ +unsigned char* iuplua_checkuchar_array(lua_State *L, int pos, int count); + +/** Returns an array of ihandle stored in a Lua table. + */ +Ihandle** iuplua_checkihandle_array(lua_State *L, int pos); + +/** Same as iuplua_checkihandle but also accepts nil. + */ +Ihandle *iuplua_checkihandleornil(lua_State *L, int pos); + +/** Removes the references in the Lua registry. + */ +void iuplua_removeihandle(lua_State *L, Ihandle *ih); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srclua5/il_button.c b/iup/srclua5/il_button.c new file mode 100755 index 0000000..bd844a5 --- /dev/null +++ b/iup/srclua5/il_button.c @@ -0,0 +1,59 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int button_action(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "action"); + return iuplua_call(L, 0); +} + +static int Button(lua_State *L) +{ + Ihandle *ih = IupButton((char *) luaL_optstring(L, 1, NULL), NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupbuttonlua_open(lua_State * L) +{ + iuplua_register(L, Button, "Button"); + + iuplua_register_cb(L, "ACTION", (lua_CFunction)button_action, "button"); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/button_be64.loh" +#else +#include "loh/button_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/button_le64w.loh" +#else +#include "loh/button_le64.loh" +#endif +#else +#include "loh/button.loh" +#endif +#endif +#else + iuplua_dofile(L, "button.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_canvas.c b/iup/srclua5/il_canvas.c new file mode 100755 index 0000000..8cff72a --- /dev/null +++ b/iup/srclua5/il_canvas.c @@ -0,0 +1,159 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int canvas_action(Ihandle *self, float p0, float p1) +{ + lua_State *L = iuplua_call_start(self, "action"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int canvas_leavewindow_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "leavewindow_cb"); + return iuplua_call(L, 0); +} + +static int canvas_resize_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "resize_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int canvas_wheel_cb(Ihandle *self, float p0, int p1, int p2, char * p3) +{ + lua_State *L = iuplua_call_start(self, "wheel_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushstring(L, p3); + return iuplua_call(L, 4); +} + +static int canvas_mdiactivate_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "mdiactivate_cb"); + return iuplua_call(L, 0); +} + +static int canvas_enterwindow_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "enterwindow_cb"); + return iuplua_call(L, 0); +} + +static int canvas_focus_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "focus_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int canvas_button_cb(Ihandle *self, int p0, int p1, int p2, int p3, char * p4) +{ + lua_State *L = iuplua_call_start(self, "button_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushstring(L, p4); + return iuplua_call(L, 5); +} + +static int canvas_keypress_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "keypress_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int canvas_motion_cb(Ihandle *self, int p0, int p1, char * p2) +{ + lua_State *L = iuplua_call_start(self, "motion_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushstring(L, p2); + return iuplua_call(L, 3); +} + +static int canvas_wom_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "wom_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int canvas_scroll_cb(Ihandle *self, int p0, float p1, float p2) +{ + lua_State *L = iuplua_call_start(self, "scroll_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int Canvas(lua_State *L) +{ + Ihandle *ih = IupCanvas(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupcanvaslua_open(lua_State * L) +{ + iuplua_register(L, Canvas, "Canvas"); + + iuplua_register_cb(L, "ACTION", (lua_CFunction)canvas_action, "canvas"); + iuplua_register_cb(L, "LEAVEWINDOW_CB", (lua_CFunction)canvas_leavewindow_cb, NULL); + iuplua_register_cb(L, "RESIZE_CB", (lua_CFunction)canvas_resize_cb, NULL); + iuplua_register_cb(L, "WHEEL_CB", (lua_CFunction)canvas_wheel_cb, NULL); + iuplua_register_cb(L, "MDIACTIVATE_CB", (lua_CFunction)canvas_mdiactivate_cb, NULL); + iuplua_register_cb(L, "ENTERWINDOW_CB", (lua_CFunction)canvas_enterwindow_cb, NULL); + iuplua_register_cb(L, "FOCUS_CB", (lua_CFunction)canvas_focus_cb, NULL); + iuplua_register_cb(L, "BUTTON_CB", (lua_CFunction)canvas_button_cb, NULL); + iuplua_register_cb(L, "KEYPRESS_CB", (lua_CFunction)canvas_keypress_cb, NULL); + iuplua_register_cb(L, "MOTION_CB", (lua_CFunction)canvas_motion_cb, NULL); + iuplua_register_cb(L, "WOM_CB", (lua_CFunction)canvas_wom_cb, NULL); + iuplua_register_cb(L, "SCROLL_CB", (lua_CFunction)canvas_scroll_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/canvas_be64.loh" +#else +#include "loh/canvas_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/canvas_le64w.loh" +#else +#include "loh/canvas_le64.loh" +#endif +#else +#include "loh/canvas.loh" +#endif +#endif +#else + iuplua_dofile(L, "canvas.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_cbox.c b/iup/srclua5/il_cbox.c new file mode 100755 index 0000000..66fdb4c --- /dev/null +++ b/iup/srclua5/il_cbox.c @@ -0,0 +1,53 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Cboxv(lua_State *L) +{ + Ihandle **hlist = iuplua_checkihandle_array(L, 1); + Ihandle *h = IupCboxv(hlist); + iuplua_plugstate(L, h); + iuplua_pushihandle_raw(L, h); + free(hlist); + return 1; +} + int iupcboxlua_open(lua_State * L) +{ + iuplua_register(L, Cboxv, "Cboxv"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/cbox_be64.loh" +#else +#include "loh/cbox_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/cbox_le64w.loh" +#else +#include "loh/cbox_le64.loh" +#endif +#else +#include "loh/cbox.loh" +#endif +#endif +#else + iuplua_dofile(L, "cbox.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_cells.c b/iup/srclua5/il_cells.c new file mode 100755 index 0000000..e0fbc0e --- /dev/null +++ b/iup/srclua5/il_cells.c @@ -0,0 +1,136 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupcontrols.h" +#include "il.h" + + +static int cells_width_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "width_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int cells_mousemotion_cb(Ihandle *self, int p0, int p1, int p2, int p3, char * p4) +{ + lua_State *L = iuplua_call_start(self, "mousemotion_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushstring(L, p4); + return iuplua_call(L, 5); +} + +static int cells_mouseclick_cb(Ihandle *self, int p0, int p1, int p2, int p3, int p4, int p5, char * p6) +{ + lua_State *L = iuplua_call_start(self, "mouseclick_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushnumber(L, p4); + lua_pushnumber(L, p5); + lua_pushstring(L, p6); + return iuplua_call(L, 7); +} + +static int cells_ncols_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "ncols_cb"); + return iuplua_call(L, 0); +} + +static int cells_nlines_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "nlines_cb"); + return iuplua_call(L, 0); +} + +static int cells_scrolling_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "scrolling_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int cells_height_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "height_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int cells_hspan_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "hspan_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int cells_vspan_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "vspan_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int Cells(lua_State *L) +{ + Ihandle *ih = IupCells(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupcellslua_open(lua_State * L) +{ + iuplua_register(L, Cells, "Cells"); + + iuplua_register_cb(L, "WIDTH_CB", (lua_CFunction)cells_width_cb, NULL); + iuplua_register_cb(L, "MOUSEMOTION_CB", (lua_CFunction)cells_mousemotion_cb, NULL); + iuplua_register_cb(L, "MOUSECLICK_CB", (lua_CFunction)cells_mouseclick_cb, NULL); + iuplua_register_cb(L, "NCOLS_CB", (lua_CFunction)cells_ncols_cb, NULL); + iuplua_register_cb(L, "NLINES_CB", (lua_CFunction)cells_nlines_cb, NULL); + iuplua_register_cb(L, "SCROLLING_CB", (lua_CFunction)cells_scrolling_cb, NULL); + iuplua_register_cb(L, "HEIGHT_CB", (lua_CFunction)cells_height_cb, NULL); + iuplua_register_cb(L, "HSPAN_CB", (lua_CFunction)cells_hspan_cb, NULL); + iuplua_register_cb(L, "VSPAN_CB", (lua_CFunction)cells_vspan_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/cells_be64.loh" +#else +#include "loh/cells_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/cells_le64w.loh" +#else +#include "loh/cells_le64.loh" +#endif +#else +#include "loh/cells.loh" +#endif +#endif +#else + iuplua_dofile(L, "cells.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_clipboard.c b/iup/srclua5/il_clipboard.c new file mode 100644 index 0000000..207b1b7 --- /dev/null +++ b/iup/srclua5/il_clipboard.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Clipboard(lua_State *L) +{ + Ihandle *ih = IupClipboard(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupclipboardlua_open(lua_State * L) +{ + iuplua_register(L, Clipboard, "Clipboard"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/clipboard_be64.loh" +#else +#include "loh/clipboard_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/clipboard_le64w.loh" +#else +#include "loh/clipboard_le64.loh" +#endif +#else +#include "loh/clipboard.loh" +#endif +#endif +#else + iuplua_dofile(L, "clipboard.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_colorbar.c b/iup/srclua5/il_colorbar.c new file mode 100755 index 0000000..15dc73e --- /dev/null +++ b/iup/srclua5/il_colorbar.c @@ -0,0 +1,87 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupcontrols.h" +#include "il.h" + + +static int colorbar_switch_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "switch_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int colorbar_select_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "select_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static char * colorbar_cell_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "cell_cb"); + lua_pushnumber(L, p0); + return iuplua_call_rs(L, 1); +} + +static int colorbar_extended_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "extended_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int Colorbar(lua_State *L) +{ + Ihandle *ih = IupColorbar(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupcolorbarlua_open(lua_State * L) +{ + iuplua_register(L, Colorbar, "Colorbar"); + + iuplua_register_cb(L, "SWITCH_CB", (lua_CFunction)colorbar_switch_cb, NULL); + iuplua_register_cb(L, "SELECT_CB", (lua_CFunction)colorbar_select_cb, NULL); + iuplua_register_cb(L, "CELL_CB", (lua_CFunction)colorbar_cell_cb, NULL); + iuplua_register_cb(L, "EXTENDED_CB", (lua_CFunction)colorbar_extended_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/colorbar_be64.loh" +#else +#include "loh/colorbar_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/colorbar_le64w.loh" +#else +#include "loh/colorbar_le64.loh" +#endif +#else +#include "loh/colorbar.loh" +#endif +#endif +#else + iuplua_dofile(L, "colorbar.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_colorbrowser.c b/iup/srclua5/il_colorbrowser.c new file mode 100755 index 0000000..f0316dd --- /dev/null +++ b/iup/srclua5/il_colorbrowser.c @@ -0,0 +1,73 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupcontrols.h" +#include "il.h" + + +static int colorbrowser_drag_cb(Ihandle *self, unsigned char p0, unsigned char p1, unsigned char p2) +{ + lua_State *L = iuplua_call_start(self, "drag_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int colorbrowser_change_cb(Ihandle *self, unsigned char p0, unsigned char p1, unsigned char p2) +{ + lua_State *L = iuplua_call_start(self, "change_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int ColorBrowser(lua_State *L) +{ + Ihandle *ih = IupColorBrowser(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupcolorbrowserlua_open(lua_State * L) +{ + iuplua_register(L, ColorBrowser, "ColorBrowser"); + + iuplua_register_cb(L, "DRAG_CB", (lua_CFunction)colorbrowser_drag_cb, NULL); + iuplua_register_cb(L, "CHANGE_CB", (lua_CFunction)colorbrowser_change_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/colorbrowser_be64.loh" +#else +#include "loh/colorbrowser_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/colorbrowser_le64w.loh" +#else +#include "loh/colorbrowser_le64.loh" +#endif +#else +#include "loh/colorbrowser.loh" +#endif +#endif +#else + iuplua_dofile(L, "colorbrowser.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_colordlg.c b/iup/srclua5/il_colordlg.c new file mode 100755 index 0000000..c474c62 --- /dev/null +++ b/iup/srclua5/il_colordlg.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int ColorDlg(lua_State *L) +{ + Ihandle *ih = IupColorDlg(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupcolordlglua_open(lua_State * L) +{ + iuplua_register(L, ColorDlg, "ColorDlg"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/colordlg_be64.loh" +#else +#include "loh/colordlg_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/colordlg_le64w.loh" +#else +#include "loh/colordlg_le64.loh" +#endif +#else +#include "loh/colordlg.loh" +#endif +#endif +#else + iuplua_dofile(L, "colordlg.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_controls.h b/iup/srclua5/il_controls.h new file mode 100755 index 0000000..ab0aa67 --- /dev/null +++ b/iup/srclua5/il_controls.h @@ -0,0 +1,26 @@ +/** \file + * \brief IUPLua5 Controls internal Functions + * + * See Copyright Notice in "iup.h" + */ + +#ifndef __IL_CONTROLS_H +#define __IL_CONTROLS_H + +#ifdef __cplusplus +extern "C" { +#endif + +void iupmasklua_open (lua_State * L); +int iupgaugelua_open (lua_State * L); +int iupdiallua_open (lua_State * L); +int iupcolorbrowserlua_open (lua_State * L); +int iupcolorbarlua_open (lua_State * L); +int iupcellslua_open (lua_State * L); +int iupmatrixlua_open (lua_State * L); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/iup/srclua5/il_dial.c b/iup/srclua5/il_dial.c new file mode 100755 index 0000000..76a395a --- /dev/null +++ b/iup/srclua5/il_dial.c @@ -0,0 +1,61 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupcontrols.h" +#include "il.h" + + +static int dial_mousemove_cb(Ihandle *self, double p0) +{ + lua_State *L = iuplua_call_start(self, "mousemove_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int Dial(lua_State *L) +{ + Ihandle *ih = IupDial((char *) luaL_checkstring(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupdiallua_open(lua_State * L) +{ + iuplua_register(L, Dial, "Dial"); + + iuplua_register_cb(L, "MOUSEMOVE_CB", (lua_CFunction)dial_mousemove_cb, "dial"); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/dial_be64.loh" +#else +#include "loh/dial_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/dial_le64w.loh" +#else +#include "loh/dial_le64.loh" +#endif +#else +#include "loh/dial.loh" +#endif +#endif +#else + iuplua_dofile(L, "dial.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_dialog.c b/iup/srclua5/il_dialog.c new file mode 100755 index 0000000..fafc5bd --- /dev/null +++ b/iup/srclua5/il_dialog.c @@ -0,0 +1,111 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int dialog_move_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "move_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int dialog_map_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "map_cb"); + return iuplua_call(L, 0); +} + +static int dialog_unmap_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "unmap_cb"); + return iuplua_call(L, 0); +} + +static int dialog_dropfiles_cb(Ihandle *self, char * p0, int p1, int p2, int p3) +{ + lua_State *L = iuplua_call_start(self, "dropfiles_cb"); + lua_pushstring(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + return iuplua_call(L, 4); +} + +static int dialog_show_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "show_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int dialog_trayclick_cb(Ihandle *self, int p0, int p1, int p2) +{ + lua_State *L = iuplua_call_start(self, "trayclick_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int dialog_close_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "close_cb"); + return iuplua_call(L, 0); +} + +static int Dialog(lua_State *L) +{ + Ihandle *ih = IupDialog(iuplua_checkihandleornil(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupdialoglua_open(lua_State * L) +{ + iuplua_register(L, Dialog, "Dialog"); + + iuplua_register_cb(L, "MOVE_CB", (lua_CFunction)dialog_move_cb, NULL); + iuplua_register_cb(L, "MAP_CB", (lua_CFunction)dialog_map_cb, NULL); + iuplua_register_cb(L, "UNMAP_CB", (lua_CFunction)dialog_unmap_cb, NULL); + iuplua_register_cb(L, "DROPFILES_CB", (lua_CFunction)dialog_dropfiles_cb, NULL); + iuplua_register_cb(L, "SHOW_CB", (lua_CFunction)dialog_show_cb, NULL); + iuplua_register_cb(L, "TRAYCLICK_CB", (lua_CFunction)dialog_trayclick_cb, NULL); + iuplua_register_cb(L, "CLOSE_CB", (lua_CFunction)dialog_close_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/dialog_be64.loh" +#else +#include "loh/dialog_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/dialog_le64w.loh" +#else +#include "loh/dialog_le64.loh" +#endif +#else +#include "loh/dialog.loh" +#endif +#endif +#else + iuplua_dofile(L, "dialog.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_filedlg.c b/iup/srclua5/il_filedlg.c new file mode 100755 index 0000000..fc30ca7 --- /dev/null +++ b/iup/srclua5/il_filedlg.c @@ -0,0 +1,61 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int filedlg_file_cb(Ihandle *self, char * p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "file_cb"); + lua_pushstring(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int FileDlg(lua_State *L) +{ + Ihandle *ih = IupFileDlg(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupfiledlglua_open(lua_State * L) +{ + iuplua_register(L, FileDlg, "FileDlg"); + + iuplua_register_cb(L, "FILE_CB", (lua_CFunction)filedlg_file_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/filedlg_be64.loh" +#else +#include "loh/filedlg_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/filedlg_le64w.loh" +#else +#include "loh/filedlg_le64.loh" +#endif +#else +#include "loh/filedlg.loh" +#endif +#endif +#else + iuplua_dofile(L, "filedlg.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_fill.c b/iup/srclua5/il_fill.c new file mode 100755 index 0000000..d3ebd0d --- /dev/null +++ b/iup/srclua5/il_fill.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Fill(lua_State *L) +{ + Ihandle *ih = IupFill(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupfilllua_open(lua_State * L) +{ + iuplua_register(L, Fill, "Fill"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/fill_be64.loh" +#else +#include "loh/fill_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/fill_le64w.loh" +#else +#include "loh/fill_le64.loh" +#endif +#else +#include "loh/fill.loh" +#endif +#endif +#else + iuplua_dofile(L, "fill.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_fontdlg.c b/iup/srclua5/il_fontdlg.c new file mode 100755 index 0000000..2be7c65 --- /dev/null +++ b/iup/srclua5/il_fontdlg.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int FontDlg(lua_State *L) +{ + Ihandle *ih = IupFontDlg(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupfontdlglua_open(lua_State * L) +{ + iuplua_register(L, FontDlg, "FontDlg"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/fontdlg_be64.loh" +#else +#include "loh/fontdlg_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/fontdlg_le64w.loh" +#else +#include "loh/fontdlg_le64.loh" +#endif +#else +#include "loh/fontdlg.loh" +#endif +#endif +#else + iuplua_dofile(L, "fontdlg.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_frame.c b/iup/srclua5/il_frame.c new file mode 100755 index 0000000..9b122ce --- /dev/null +++ b/iup/srclua5/il_frame.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Frame(lua_State *L) +{ + Ihandle *ih = IupFrame(iuplua_checkihandle(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupframelua_open(lua_State * L) +{ + iuplua_register(L, Frame, "Frame"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/frame_be64.loh" +#else +#include "loh/frame_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/frame_le64w.loh" +#else +#include "loh/frame_le64.loh" +#endif +#else +#include "loh/frame.loh" +#endif +#endif +#else + iuplua_dofile(L, "frame.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_gauge.c b/iup/srclua5/il_gauge.c new file mode 100755 index 0000000..402e78a --- /dev/null +++ b/iup/srclua5/il_gauge.c @@ -0,0 +1,53 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupcontrols.h" +#include "il.h" + + +static int Gauge(lua_State *L) +{ + Ihandle *ih = IupGauge(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupgaugelua_open(lua_State * L) +{ + iuplua_register(L, Gauge, "Gauge"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/gauge_be64.loh" +#else +#include "loh/gauge_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/gauge_le64w.loh" +#else +#include "loh/gauge_le64.loh" +#endif +#else +#include "loh/gauge.loh" +#endif +#endif +#else + iuplua_dofile(L, "gauge.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_getcolor.c b/iup/srclua5/il_getcolor.c new file mode 100755 index 0000000..d468d38 --- /dev/null +++ b/iup/srclua5/il_getcolor.c @@ -0,0 +1,46 @@ +/** \file + * \brief IupGetColor bindig to Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include + +#include +#include + +#include "iup.h" + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int GetColor(lua_State *L) +{ + int x = (int)luaL_checknumber(L,1); + int y = (int)luaL_checknumber(L,2); + unsigned char r = (unsigned char) luaL_optnumber(L,3,0); + unsigned char g = (unsigned char) luaL_optnumber(L,4,0); + unsigned char b = (unsigned char) luaL_optnumber(L,5,0); + int ret = IupGetColor(x,y,&r,&g,&b); + if (ret) + { + lua_pushnumber(L, (int) r); + lua_pushnumber(L, (int) g); + lua_pushnumber(L, (int) b); + return 3; + } + else + { + lua_pushnil(L); + return 1; + } +} +int iupgclua_open(lua_State * L) +{ + lua_pushcfunction(L, GetColor); + lua_setglobal(L, "GetColor"); + return 0; +} + diff --git a/iup/srclua5/il_getparam.c b/iup/srclua5/il_getparam.c new file mode 100755 index 0000000..c7f4936 --- /dev/null +++ b/iup/srclua5/il_getparam.c @@ -0,0 +1,177 @@ +/** \file + * \brief IupGetParam bindig to Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include +#include + +#include "iup.h" + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +/* Used only by the Lua binding */ +int iupGetParamCount(const char *format, int *param_extra); +char iupGetParamType(const char* format, int *line_size); + + +typedef struct _getparam_data +{ + lua_State *L; + int has_func; + int func_ref; +}getparam_data; + +static int param_action(Ihandle* dialog, int param_index, void* user_data) +{ + int ret = 1; + getparam_data* gp = (getparam_data*)user_data; + if (gp->has_func) + { + lua_State *L = gp->L; + lua_getref(L, gp->func_ref); + iuplua_pushihandle(L, dialog); + lua_pushnumber(L, param_index); + if (iuplua_call_raw(L, 2, 1) != 0) /* 2 args, 1 return */ + { + ret = (int)lua_tonumber(L,-1); + lua_pop(L, 1); + } + } + return ret; +} + +static int GetParam(lua_State *L) +{ + getparam_data gp; + const char* title = luaL_checkstring(L, 1); + void* user_data = (void*)&gp; + const char* format = luaL_checkstring(L, 3); + int param_count, param_extra, i, size, ret, + line_size = 0, lua_param_start = 4; + const char* f = format; + const char* s; + void* param_data[50]; + char param_type[50]; + + gp.L = L; + gp.has_func = 0; + gp.func_ref = 0; + + memset(param_data, 0, sizeof(void*)*50); + memset(param_type, 0, sizeof(char)*50); + + param_count = iupGetParamCount(format, ¶m_extra); + + for (i = 0; i < param_count; i++) + { + char t = iupGetParamType(f, &line_size); + + if (t == 't') /* if separator */ + { + f += line_size; + i--; /* compensate next increment */ + continue; + } + + switch(t) + { + case 'b': + case 'i': + case 'l': + param_data[i] = malloc(sizeof(int)); + *(int*)(param_data[i]) = (int)luaL_checknumber(L, lua_param_start); lua_param_start++; + break; + case 'a': + case 'r': + param_data[i] = malloc(sizeof(float)); + *(float*)(param_data[i]) = (float)luaL_checknumber(L, lua_param_start); lua_param_start++; + break; + case 's': + case 'm': + s = luaL_checkstring(L, lua_param_start); lua_param_start++; + size = strlen(s); + if (size < 512) + param_data[i] = malloc(512); + else + param_data[i] = malloc(2*size); + memcpy(param_data[i], s, size+1); + break; + } + + param_type[i] = t; + f += line_size; + } + + if (lua_isfunction(L, 2)) + { + lua_pushvalue(L, 2); + gp.func_ref = lua_ref(L, 1); + gp.has_func = 1; + } + + ret = IupGetParamv(title, param_action, user_data, format, param_count, param_extra, param_data); + + lua_pushboolean(L, ret); + + if (ret) + { + for (i = 0; i < param_count; i++) + { + switch(param_type[i]) + { + case 'b': + case 'i': + case 'l': + lua_pushnumber(L, *(int*)(param_data[i])); + break; + case 'a': + case 'r': + lua_pushnumber(L, *(float*)(param_data[i])); + break; + case 's': + case 'm': + lua_pushstring(L, (char*)(param_data[i])); + break; + } + } + } + + for (i = 0; i < param_count; i++) + { + free(param_data[i]); + } + + if (gp.has_func) + lua_unref(L, gp.func_ref); + + if (ret) + return param_count+1; + else + return 1; +} + +static int GetParamParam(lua_State *L) +{ + Ihandle *dialog = iuplua_checkihandle(L, 1); + int param_index = (int)luaL_checknumber(L, 2); + Ihandle* param; + char param_str[50]; + sprintf(param_str, "PARAM%d", param_index); + param = (Ihandle*)IupGetAttribute(dialog, param_str); + iuplua_pushihandle(L, param); + return 1; +} + +void iupgetparamlua_open(lua_State * L) +{ + iuplua_register(L, GetParam, "GetParam"); + iuplua_register(L, GetParamParam, "GetParamParam"); +} diff --git a/iup/srclua5/il_glcanvas.c b/iup/srclua5/il_glcanvas.c new file mode 100755 index 0000000..9f0dfb6 --- /dev/null +++ b/iup/srclua5/il_glcanvas.c @@ -0,0 +1,90 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupgl.h" +#include "il.h" + + +static int glcanvas_action(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "action"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int GLCanvas(lua_State *L) +{ + Ihandle *ih = IupGLCanvas(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +void iuplua_glcanvasfuncs_open(lua_State *L); + +int iupglcanvaslua_open(lua_State * L) +{ + iuplua_register(L, GLCanvas, "GLCanvas"); + + iuplua_register_cb(L, "ACTION", (lua_CFunction)glcanvas_action, "glcanvas"); + + iuplua_glcanvasfuncs_open(L); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/glcanvas_be64.loh" +#else +#include "loh/glcanvas_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/glcanvas_le64w.loh" +#else +#include "loh/glcanvas_le64.loh" +#endif +#else +#include "loh/glcanvas.loh" +#endif +#endif +#else + iuplua_dofile(L, "glcanvas.lua"); +#endif + + return 0; +} + + +int iupgllua_open(lua_State * L) +{ + if (iuplua_opencall_internal(L)) + IupGLCanvasOpen(); + + iuplua_changeEnv(L); + iupglcanvaslua_open(L); + iuplua_returnEnv(L); + return 0; +} + +/* obligatory to use require"iupluagl" */ +int luaopen_iupluagl(lua_State* L) +{ + return iupgllua_open(L); +} + +/* obligatory to use require"iupluagl51" */ +int luaopen_iupluagl51(lua_State* L) +{ + return iupgllua_open(L); +} + diff --git a/iup/srclua5/il_hbox.c b/iup/srclua5/il_hbox.c new file mode 100755 index 0000000..5734540 --- /dev/null +++ b/iup/srclua5/il_hbox.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Hbox(lua_State *L) +{ + Ihandle *ih = IupHbox(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iuphboxlua_open(lua_State * L) +{ + iuplua_register(L, Hbox, "Hbox"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/hbox_be64.loh" +#else +#include "loh/hbox_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/hbox_le64w.loh" +#else +#include "loh/hbox_le64.loh" +#endif +#else +#include "loh/hbox.loh" +#endif +#endif +#else + iuplua_dofile(L, "hbox.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_image.c b/iup/srclua5/il_image.c new file mode 100755 index 0000000..b140855 --- /dev/null +++ b/iup/srclua5/il_image.c @@ -0,0 +1,119 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + + +static int Image (lua_State * L) +{ + int w, h, c, num_colors; + unsigned char *pixels; + Ihandle* ih; + char str[20]; + + if (lua_istable(L, 1)) + { + int i, j; + + /* get the number of lines */ + h = luaL_getn(L, 1); + + /* get the number of columns of the first line */ + lua_pushnumber(L, 1); + lua_gettable(L, 1); + w = luaL_getn(L, -1); + lua_pop(L, 1); + + pixels = (unsigned char *) malloc (h*w); + + for (i=1; i<=h; i++) + { + lua_pushnumber(L, i); + lua_gettable(L, 1); + for (j=1; j<=w; j++) + { + int idx = (i-1)*w+(j-1); + lua_pushnumber(L, j); + lua_gettable(L, -2); + pixels[idx] = (unsigned char)lua_tonumber(L, -1); + lua_pop(L, 1); + } + lua_pop(L, 1); + } + + ih = IupImage(w,h,pixels); + free(pixels); + + num_colors = luaL_getn(L, 2); + num_colors = num_colors>255? 255: num_colors; + for(c=1; c<=num_colors; c++) + { + lua_rawgeti(L, 2, c); + sprintf(str, "%d", c); + IupStoreAttribute(ih, str, lua_tostring(L,-1)); + lua_pop(L, 1); + } + } + else + { + w = luaL_checkint(L, 1); + h = luaL_checkint(L, 2); + pixels = iuplua_checkuchar_array(L, 3, w*h); + ih = IupImage(w, h, pixels); + free(pixels); + + num_colors = luaL_getn(L, 4); + num_colors = num_colors>256? 256: num_colors; + for(c=1; c<=num_colors; c++) + { + lua_rawgeti(L, 4, c); + sprintf(str, "%d", c-1); + IupStoreAttribute(ih, str, lua_tostring(L,-1)); + lua_pop(L, 1); + } + } + + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupimagelua_open(lua_State * L) +{ + iuplua_register(L, Image, "Image"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/image_be64.loh" +#else +#include "loh/image_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/image_le64w.loh" +#else +#include "loh/image_le64.loh" +#endif +#else +#include "loh/image.loh" +#endif +#endif +#else + iuplua_dofile(L, "image.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_imagergb.c b/iup/srclua5/il_imagergb.c new file mode 100755 index 0000000..f9d0318 --- /dev/null +++ b/iup/srclua5/il_imagergb.c @@ -0,0 +1,57 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + + +static int ImageRGB(lua_State *L) +{ + int w = luaL_checkint(L, 1); + int h = luaL_checkint(L, 2); + unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*3); + Ihandle *ih = IupImageRGB(w, h, pixels); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + free(pixels); + return 1; +} + +int iupimagergblua_open(lua_State * L) +{ + iuplua_register(L, ImageRGB, "ImageRGB"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/imagergb_be64.loh" +#else +#include "loh/imagergb_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/imagergb_le64w.loh" +#else +#include "loh/imagergb_le64.loh" +#endif +#else +#include "loh/imagergb.loh" +#endif +#endif +#else + iuplua_dofile(L, "imagergb.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_imagergba.c b/iup/srclua5/il_imagergba.c new file mode 100755 index 0000000..4b67620 --- /dev/null +++ b/iup/srclua5/il_imagergba.c @@ -0,0 +1,57 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + + +static int ImageRGBA(lua_State *L) +{ + int w = luaL_checkint(L, 1); + int h = luaL_checkint(L, 2); + unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*4); + Ihandle *ih = IupImageRGBA(w, h, pixels); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + free(pixels); + return 1; +} + +int iupimagergbalua_open(lua_State * L) +{ + iuplua_register(L, ImageRGBA, "ImageRGBA"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/imagergba_be64.loh" +#else +#include "loh/imagergba_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/imagergba_le64w.loh" +#else +#include "loh/imagergba_le64.loh" +#endif +#else +#include "loh/imagergba.loh" +#endif +#endif +#else + iuplua_dofile(L, "imagergba.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_item.c b/iup/srclua5/il_item.c new file mode 100755 index 0000000..401bf6e --- /dev/null +++ b/iup/srclua5/il_item.c @@ -0,0 +1,66 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int item_action(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "action"); + return iuplua_call(L, 0); +} + +static int item_highlight_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "highlight_cb"); + return iuplua_call(L, 0); +} + +static int Item(lua_State *L) +{ + Ihandle *ih = IupItem((char *) luaL_optstring(L, 1, NULL), NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupitemlua_open(lua_State * L) +{ + iuplua_register(L, Item, "Item"); + + iuplua_register_cb(L, "ACTION", (lua_CFunction)item_action, "item"); + iuplua_register_cb(L, "HIGHLIGHT_CB", (lua_CFunction)item_highlight_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/item_be64.loh" +#else +#include "loh/item_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/item_le64w.loh" +#else +#include "loh/item_le64.loh" +#endif +#else +#include "loh/item.loh" +#endif +#endif +#else + iuplua_dofile(L, "item.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_label.c b/iup/srclua5/il_label.c new file mode 100755 index 0000000..bd4a276 --- /dev/null +++ b/iup/srclua5/il_label.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Label(lua_State *L) +{ + Ihandle *ih = IupLabel((char *) luaL_optstring(L, 1, NULL)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iuplabellua_open(lua_State * L) +{ + iuplua_register(L, Label, "Label"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/label_be64.loh" +#else +#include "loh/label_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/label_le64w.loh" +#else +#include "loh/label_le64.loh" +#endif +#else +#include "loh/label.loh" +#endif +#endif +#else + iuplua_dofile(L, "label.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_list.c b/iup/srclua5/il_list.c new file mode 100755 index 0000000..ac1dc2f --- /dev/null +++ b/iup/srclua5/il_list.c @@ -0,0 +1,96 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int list_dropdown_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "dropdown_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int list_action(Ihandle *self, char * p0, int p1, int p2) +{ + lua_State *L = iuplua_call_start(self, "action"); + lua_pushstring(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int list_dblclick_cb(Ihandle *self, int p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "dblclick_cb"); + lua_pushnumber(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int list_edit_cb(Ihandle *self, int p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "edit_cb"); + lua_pushnumber(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int list_multiselect_cb(Ihandle *self, char * p0) +{ + lua_State *L = iuplua_call_start(self, "multiselect_cb"); + lua_pushstring(L, p0); + return iuplua_call(L, 1); +} + +static int List(lua_State *L) +{ + Ihandle *ih = IupList(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iuplistlua_open(lua_State * L) +{ + iuplua_register(L, List, "List"); + + iuplua_register_cb(L, "DROPDOWN_CB", (lua_CFunction)list_dropdown_cb, NULL); + iuplua_register_cb(L, "ACTION", (lua_CFunction)list_action, "list"); + iuplua_register_cb(L, "DBLCLICK_CB", (lua_CFunction)list_dblclick_cb, NULL); + iuplua_register_cb(L, "EDIT_CB", (lua_CFunction)list_edit_cb, "list"); + iuplua_register_cb(L, "MULTISELECT_CB", (lua_CFunction)list_multiselect_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/list_be64.loh" +#else +#include "loh/list_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/list_le64w.loh" +#else +#include "loh/list_le64.loh" +#endif +#else +#include "loh/list.loh" +#endif +#endif +#else + iuplua_dofile(L, "list.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_mask.c b/iup/srclua5/il_mask.c new file mode 100755 index 0000000..f471242 --- /dev/null +++ b/iup/srclua5/il_mask.c @@ -0,0 +1,132 @@ +/** \file + * \brief iupmask binding for Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupmask.h" + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + + +static int cfMaskRemove (lua_State *L) +{ + iupmaskRemove(iuplua_checkihandle(L,1)); + return 0; +} + +static int cfMaskMatRemove(lua_State *L) +{ + iupmaskMatRemove(iuplua_checkihandle(L,1), + luaL_checkint(L,2), + luaL_checkint(L,3)); + return 0; +} + +static int cfMaskSet (lua_State *L) +{ + iupmaskSet(iuplua_checkihandle(L,1), + (char*)luaL_checkstring(L,2), + luaL_checkint(L,3), + luaL_checkint(L,4)); + return 0; +} + +static int cfMaskMatSet(lua_State *L) +{ + iupmaskMatSet(iuplua_checkihandle(L,1), + (char*)luaL_checkstring(L,2), + luaL_checkint(L,3), + luaL_checkint(L,4), + luaL_checkint(L,5), + luaL_checkint(L,6)); + return 0; +} + +static int cfMaskSetInt(lua_State *L) +{ + iupmaskSetInt(iuplua_checkihandle(L,1), + luaL_checkint(L,2), + luaL_checkint(L,3), + luaL_checkint(L,4)); + return 0; +} + +static int cfMaskSetFloat(lua_State *L) +{ + iupmaskSetFloat(iuplua_checkihandle(L,1), + luaL_checkint(L,2), + (float)luaL_checknumber(L,3), + (float)luaL_checknumber(L,4)); + return 0; +} + +static int cfMaskMatSetInt (lua_State *L) +{ + iupmaskMatSetInt(iuplua_checkihandle(L,1), + luaL_checkint(L,2), + luaL_checkint(L,3), + luaL_checkint(L,4), + luaL_checkint(L,5), + luaL_checkint(L,6)); + return 0; +} + +static int cfMaskMatSetFloat (lua_State *L) +{ + iupmaskMatSetFloat(iuplua_checkihandle(L,1), + luaL_checkint(L,2), + (float)luaL_checknumber(L,3), + (float)luaL_checknumber(L,4), + luaL_checkint(L,5), + luaL_checkint(L,6)); + return 0; +} + +static int cfMaskCheck (lua_State *L) +{ + iupmaskCheck(iuplua_checkihandle(L,1)); + return 0; +} + +static int cfMaskMatCheck (lua_State *L) +{ + iupmaskMatCheck(iuplua_checkihandle(L,1), + luaL_checkint(L,2), + luaL_checkint(L,3)); + return 0; +} + +static int match_cb (Ihandle *handle) +{ + lua_State *L = iuplua_call_start(handle, "match_cb"); + return iuplua_call(L, 0); +} + +void iupmasklua_open(lua_State *L) +{ + iuplua_regstring(L, IUP_MASK_FLOAT, "MASK_FLOAT"); + iuplua_regstring(L, IUP_MASK_UFLOAT, "MASK_UFLOAT"); + iuplua_regstring(L, IUP_MASK_EFLOAT, "MASK_EFLOAT"); + iuplua_regstring(L, IUP_MASK_INT, "MASK_INT"); + iuplua_regstring(L, IUP_MASK_UINT, "MASK_UINT"); + + iuplua_register(L, cfMaskRemove, "maskRemove"); + iuplua_register(L, cfMaskMatRemove, "maskMatRemove"); + iuplua_register(L, cfMaskSet, "maskSet"); + iuplua_register(L, cfMaskMatSet, "maskMatSet"); + iuplua_register(L, cfMaskSetInt, "maskSetInt"); + iuplua_register(L, cfMaskSetFloat, "maskSetFloat"); + iuplua_register(L, cfMaskMatSetInt, "maskMatSetInt"); + iuplua_register(L, cfMaskMatSetFloat, "maskMatSetFloat"); + iuplua_register(L, cfMaskCheck, "maskCheck"); + iuplua_register(L, cfMaskMatCheck, "maskMatCheck"); + + iuplua_register_cb(L, "MATCH_CB", (lua_CFunction)match_cb, NULL); +} diff --git a/iup/srclua5/il_matrix.c b/iup/srclua5/il_matrix.c new file mode 100755 index 0000000..e747536 --- /dev/null +++ b/iup/srclua5/il_matrix.c @@ -0,0 +1,247 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupcontrols.h" +#include "il.h" + + +static char * matrix_font_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "font_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call_rs(L, 2); +} + +static int matrix_draw_cb(Ihandle *self, int p0, int p1, int p2, int p3, int p4, int p5, int p6) +{ + lua_State *L = iuplua_call_start(self, "draw_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushnumber(L, p4); + lua_pushnumber(L, p5); + lua_pushnumber(L, p6); + return iuplua_call(L, 7); +} + +static int matrix_edition_cb(Ihandle *self, int p0, int p1, int p2, int p3) +{ + lua_State *L = iuplua_call_start(self, "edition_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + return iuplua_call(L, 4); +} + +static int matrix_mark_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "mark_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int matrix_markedit_cb(Ihandle *self, int p0, int p1, int p2) +{ + lua_State *L = iuplua_call_start(self, "markedit_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int matrix_bgcolor_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "bgcolor_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static char * matrix_value_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "value_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call_rs(L, 2); +} + +static int matrix_dropselect_cb(Ihandle *self, int p0, int p1, Ihandle * p2, char * p3, int p4, int p5) +{ + lua_State *L = iuplua_call_start(self, "dropselect_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + iuplua_pushihandle(L, p2); + lua_pushstring(L, p3); + lua_pushnumber(L, p4); + lua_pushnumber(L, p5); + return iuplua_call(L, 6); +} + +static int matrix_drop_cb(Ihandle *self, Ihandle * p0, int p1, int p2) +{ + lua_State *L = iuplua_call_start(self, "drop_cb"); + iuplua_pushihandle(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int matrix_dropcheck_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "dropcheck_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int matrix_action_cb(Ihandle *self, int p0, int p1, int p2, int p3, char * p4) +{ + lua_State *L = iuplua_call_start(self, "action_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushstring(L, p4); + return iuplua_call(L, 5); +} + +static int matrix_enteritem_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "enteritem_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int matrix_leaveitem_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "leaveitem_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int matrix_scrolltop_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "scrolltop_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int matrix_fgcolor_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "fgcolor_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int matrix_release_cb(Ihandle *self, int p0, int p1, char * p2) +{ + lua_State *L = iuplua_call_start(self, "release_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushstring(L, p2); + return iuplua_call(L, 3); +} + +static int matrix_mousemove_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "mousemove_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int matrix_value_edit_cb(Ihandle *self, int p0, int p1, char * p2) +{ + lua_State *L = iuplua_call_start(self, "value_edit_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushstring(L, p2); + return iuplua_call(L, 3); +} + +static int matrix_click_cb(Ihandle *self, int p0, int p1, char * p2) +{ + lua_State *L = iuplua_call_start(self, "click_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushstring(L, p2); + return iuplua_call(L, 3); +} + +static int Matrix(lua_State *L) +{ + Ihandle *ih = IupMatrix(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +void iuplua_matrixfuncs_open(lua_State *L); + +int iupmatrixlua_open(lua_State * L) +{ + iuplua_register(L, Matrix, "Matrix"); + + iuplua_register_cb(L, "FONT_CB", (lua_CFunction)matrix_font_cb, NULL); + iuplua_register_cb(L, "DRAW_CB", (lua_CFunction)matrix_draw_cb, NULL); + iuplua_register_cb(L, "EDITION_CB", (lua_CFunction)matrix_edition_cb, NULL); + iuplua_register_cb(L, "MARK_CB", (lua_CFunction)matrix_mark_cb, NULL); + iuplua_register_cb(L, "MARKEDIT_CB", (lua_CFunction)matrix_markedit_cb, NULL); + iuplua_register_cb(L, "BGCOLOR_CB", (lua_CFunction)matrix_bgcolor_cb, NULL); + iuplua_register_cb(L, "VALUE_CB", (lua_CFunction)matrix_value_cb, NULL); + iuplua_register_cb(L, "DROPSELECT_CB", (lua_CFunction)matrix_dropselect_cb, NULL); + iuplua_register_cb(L, "DROP_CB", (lua_CFunction)matrix_drop_cb, NULL); + iuplua_register_cb(L, "DROPCHECK_CB", (lua_CFunction)matrix_dropcheck_cb, NULL); + iuplua_register_cb(L, "ACTION_CB", (lua_CFunction)matrix_action_cb, "matrix"); + iuplua_register_cb(L, "ENTERITEM_CB", (lua_CFunction)matrix_enteritem_cb, NULL); + iuplua_register_cb(L, "LEAVEITEM_CB", (lua_CFunction)matrix_leaveitem_cb, NULL); + iuplua_register_cb(L, "SCROLLTOP_CB", (lua_CFunction)matrix_scrolltop_cb, NULL); + iuplua_register_cb(L, "FGCOLOR_CB", (lua_CFunction)matrix_fgcolor_cb, NULL); + iuplua_register_cb(L, "RELEASE_CB", (lua_CFunction)matrix_release_cb, NULL); + iuplua_register_cb(L, "MOUSEMOVE_CB", (lua_CFunction)matrix_mousemove_cb, "matrix"); + iuplua_register_cb(L, "VALUE_EDIT_CB", (lua_CFunction)matrix_value_edit_cb, NULL); + iuplua_register_cb(L, "CLICK_CB", (lua_CFunction)matrix_click_cb, NULL); + + iuplua_matrixfuncs_open(L); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/matrix_be64.loh" +#else +#include "loh/matrix_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/matrix_le64w.loh" +#else +#include "loh/matrix_le64.loh" +#endif +#else +#include "loh/matrix.loh" +#endif +#endif +#else + iuplua_dofile(L, "matrix.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_matrix_aux.c b/iup/srclua5/il_matrix_aux.c new file mode 100755 index 0000000..240c837 --- /dev/null +++ b/iup/srclua5/il_matrix_aux.c @@ -0,0 +1,85 @@ +/** \file + * \brief matrix binding for Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcontrols.h" +#include +#include + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + +static int matrix_draw_cb(Ihandle *self, int p0, int p1, int p2, int p3, int p4, int p5, cdCanvas* cnv) +{ + lua_State *L = iuplua_call_start(self, "draw_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushnumber(L, p4); + lua_pushnumber(L, p5); + cdlua_pushcanvas(L, cnv); + return iuplua_call(L, 7); +} + +static int matrix_bgcolor_cb(Ihandle *self, int p0, int p1, unsigned int *p2, unsigned int *p3, unsigned int *p4) +{ + int ret; + lua_State *L = iuplua_call_start(self, "bgcolor_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + ret = iuplua_call_raw(L, 2+2, LUA_MULTRET); /* 2 args + 2 args(errormsg, handle), variable number of returns */ + if (ret || lua_isnil(L, -1)) + return IUP_DEFAULT; + ret = (int)lua_tonumber(L,-1); + + if (ret == IUP_IGNORE) + { + lua_pop(L, 1); + return IUP_IGNORE; + } + + *p2 = (unsigned int)lua_tonumber(L, -4); + *p3 = (unsigned int)lua_tonumber(L, -3); + *p4 = (unsigned int)lua_tonumber(L, -2); + lua_pop(L, 1); + return IUP_DEFAULT; +} + +static int matrix_fgcolor_cb(Ihandle *self, int p0, int p1, unsigned int *p2, unsigned int *p3, unsigned int *p4) +{ + int ret; + lua_State *L = iuplua_call_start(self, "fgcolor_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + ret = iuplua_call_raw(L, 2+2, LUA_MULTRET); /* 2 args + 2 args(errormsg, handle), variable number of returns */ + if (ret || lua_isnil(L, -1)) + return IUP_DEFAULT; + ret = (int)lua_tonumber(L,-1); + + if (ret == IUP_IGNORE) + { + lua_pop(L, 1); + return IUP_IGNORE; + } + + *p2 = (unsigned int)lua_tonumber(L, -4); + *p3 = (unsigned int)lua_tonumber(L, -3); + *p4 = (unsigned int)lua_tonumber(L, -2); + lua_pop(L, 1); + return IUP_DEFAULT; +} + +void iuplua_matrixfuncs_open (lua_State *L) +{ + iuplua_register_cb(L, "BGCOLOR_CB", (lua_CFunction)matrix_bgcolor_cb, NULL); + iuplua_register_cb(L, "FGCOLOR_CB", (lua_CFunction)matrix_fgcolor_cb, NULL); + iuplua_register_cb(L, "DRAW_CB", (lua_CFunction)matrix_draw_cb, NULL); +} diff --git a/iup/srclua5/il_menu.c b/iup/srclua5/il_menu.c new file mode 100755 index 0000000..e8eede7 --- /dev/null +++ b/iup/srclua5/il_menu.c @@ -0,0 +1,66 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int menu_open_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "open_cb"); + return iuplua_call(L, 0); +} + +static int menu_menuclose_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "menuclose_cb"); + return iuplua_call(L, 0); +} + +static int Menu(lua_State *L) +{ + Ihandle *ih = IupMenu(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupmenulua_open(lua_State * L) +{ + iuplua_register(L, Menu, "Menu"); + + iuplua_register_cb(L, "OPEN_CB", (lua_CFunction)menu_open_cb, NULL); + iuplua_register_cb(L, "MENUCLOSE_CB", (lua_CFunction)menu_menuclose_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/menu_be64.loh" +#else +#include "loh/menu_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/menu_le64w.loh" +#else +#include "loh/menu_le64.loh" +#endif +#else +#include "loh/menu.loh" +#endif +#endif +#else + iuplua_dofile(L, "menu.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_messagedlg.c b/iup/srclua5/il_messagedlg.c new file mode 100755 index 0000000..fb1047d --- /dev/null +++ b/iup/srclua5/il_messagedlg.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int MessageDlg(lua_State *L) +{ + Ihandle *ih = IupMessageDlg(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupmessagedlglua_open(lua_State * L) +{ + iuplua_register(L, MessageDlg, "MessageDlg"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/messagedlg_be64.loh" +#else +#include "loh/messagedlg_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/messagedlg_le64w.loh" +#else +#include "loh/messagedlg_le64.loh" +#endif +#else +#include "loh/messagedlg.loh" +#endif +#endif +#else + iuplua_dofile(L, "messagedlg.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_multiline.c b/iup/srclua5/il_multiline.c new file mode 100755 index 0000000..9108e3f --- /dev/null +++ b/iup/srclua5/il_multiline.c @@ -0,0 +1,61 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int multiline_action(Ihandle *self, int p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "action"); + lua_pushnumber(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int MultiLine(lua_State *L) +{ + Ihandle *ih = IupMultiLine(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupmultilinelua_open(lua_State * L) +{ + iuplua_register(L, MultiLine, "MultiLine"); + + iuplua_register_cb(L, "ACTION", (lua_CFunction)multiline_action, "multiline"); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/multiline_be64.loh" +#else +#include "loh/multiline_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/multiline_le64w.loh" +#else +#include "loh/multiline_le64.loh" +#endif +#else +#include "loh/multiline.loh" +#endif +#endif +#else + iuplua_dofile(L, "multiline.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_normalizer.c b/iup/srclua5/il_normalizer.c new file mode 100755 index 0000000..42097d8 --- /dev/null +++ b/iup/srclua5/il_normalizer.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Normalizer(lua_State *L) +{ + Ihandle *ih = IupNormalizer(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupnormalizerlua_open(lua_State * L) +{ + iuplua_register(L, Normalizer, "Normalizer"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/normalizer_be64.loh" +#else +#include "loh/normalizer_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/normalizer_le64w.loh" +#else +#include "loh/normalizer_le64.loh" +#endif +#else +#include "loh/normalizer.loh" +#endif +#endif +#else + iuplua_dofile(L, "normalizer.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_olecontrol.c b/iup/srclua5/il_olecontrol.c new file mode 100755 index 0000000..955b5da --- /dev/null +++ b/iup/srclua5/il_olecontrol.c @@ -0,0 +1,77 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupole.h" +#include "il.h" + + +static int OleControl(lua_State *L) +{ + Ihandle *ih = IupOleControl((char *) luaL_checkstring(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupolecontrollua_open(lua_State * L) +{ + iuplua_register(L, OleControl, "OleControl"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/olecontrol_be64.loh" +#else +#include "loh/olecontrol_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/olecontrol_le64w.loh" +#else +#include "loh/olecontrol_le64.loh" +#endif +#else +#include "loh/olecontrol.loh" +#endif +#endif +#else + iuplua_dofile(L, "olecontrol.lua"); +#endif + + return 0; +} + + +int iupolelua_open(lua_State* L) +{ + if (iuplua_opencall_internal(L)) + IupOleControlOpen(); + + iuplua_changeEnv(L); + iupolecontrollua_open(L); + iuplua_returnEnv(L); + return 0; +} + +/* obligatory to use require"iupluaole" */ +int luaopen_iupluaole(lua_State* L) +{ + return iupolelua_open(L); +} + +/* obligatory to use require"iupluaole51" */ +int luaopen_iupluaole51(lua_State* L) +{ + return iupolelua_open(L); +} + diff --git a/iup/srclua5/il_pplot.c b/iup/srclua5/il_pplot.c new file mode 100755 index 0000000..8929d33 --- /dev/null +++ b/iup/srclua5/il_pplot.c @@ -0,0 +1,151 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iup_pplot.h" +#include "il.h" + + +static int pplot_edit_cb(Ihandle *self, int p0, int p1, float p2, float p3, float p4, float p5) +{ + lua_State *L = iuplua_call_start(self, "edit_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushnumber(L, p4); + lua_pushnumber(L, p5); + return iuplua_call(L, 6); +} + +static int pplot_deleteend_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "deleteend_cb"); + return iuplua_call(L, 0); +} + +static int pplot_selectbegin_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "selectbegin_cb"); + return iuplua_call(L, 0); +} + +static int pplot_postdraw_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "postdraw_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int pplot_delete_cb(Ihandle *self, int p0, int p1, float p2, float p3) +{ + lua_State *L = iuplua_call_start(self, "delete_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + return iuplua_call(L, 4); +} + +static int pplot_predraw_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "predraw_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int pplot_selectend_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "selectend_cb"); + return iuplua_call(L, 0); +} + +static int pplot_select_cb(Ihandle *self, int p0, int p1, float p2, float p3, int p4) +{ + lua_State *L = iuplua_call_start(self, "select_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + lua_pushnumber(L, p4); + return iuplua_call(L, 5); +} + +static int pplot_deletebegin_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "deletebegin_cb"); + return iuplua_call(L, 0); +} + +static int pplot_editbegin_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "editbegin_cb"); + return iuplua_call(L, 0); +} + +static int pplot_editend_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "editend_cb"); + return iuplua_call(L, 0); +} + +static int PPlot(lua_State *L) +{ + Ihandle *ih = IupPPlot(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +void iuplua_pplotfuncs_open(lua_State *L); + +int iuppplotlua_open(lua_State * L) +{ + iuplua_register(L, PPlot, "PPlot"); + + iuplua_register_cb(L, "EDIT_CB", (lua_CFunction)pplot_edit_cb, "pplot"); + iuplua_register_cb(L, "DELETEEND_CB", (lua_CFunction)pplot_deleteend_cb, NULL); + iuplua_register_cb(L, "SELECTBEGIN_CB", (lua_CFunction)pplot_selectbegin_cb, NULL); + iuplua_register_cb(L, "POSTDRAW_CB", (lua_CFunction)pplot_postdraw_cb, NULL); + iuplua_register_cb(L, "DELETE_CB", (lua_CFunction)pplot_delete_cb, NULL); + iuplua_register_cb(L, "PREDRAW_CB", (lua_CFunction)pplot_predraw_cb, NULL); + iuplua_register_cb(L, "SELECTEND_CB", (lua_CFunction)pplot_selectend_cb, NULL); + iuplua_register_cb(L, "SELECT_CB", (lua_CFunction)pplot_select_cb, NULL); + iuplua_register_cb(L, "DELETEBEGIN_CB", (lua_CFunction)pplot_deletebegin_cb, NULL); + iuplua_register_cb(L, "EDITBEGIN_CB", (lua_CFunction)pplot_editbegin_cb, NULL); + iuplua_register_cb(L, "EDITEND_CB", (lua_CFunction)pplot_editend_cb, NULL); + + iuplua_pplotfuncs_open(L); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/pplot_be64.loh" +#else +#include "loh/pplot_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/pplot_le64w.loh" +#else +#include "loh/pplot_le64.loh" +#endif +#else +#include "loh/pplot.loh" +#endif +#endif +#else + iuplua_dofile(L, "pplot.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_progressbar.c b/iup/srclua5/il_progressbar.c new file mode 100755 index 0000000..5dc789e --- /dev/null +++ b/iup/srclua5/il_progressbar.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int ProgressBar(lua_State *L) +{ + Ihandle *ih = IupProgressBar(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupprogressbarlua_open(lua_State * L) +{ + iuplua_register(L, ProgressBar, "ProgressBar"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/progressbar_be64.loh" +#else +#include "loh/progressbar_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/progressbar_le64w.loh" +#else +#include "loh/progressbar_le64.loh" +#endif +#else +#include "loh/progressbar.loh" +#endif +#endif +#else + iuplua_dofile(L, "progressbar.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_radio.c b/iup/srclua5/il_radio.c new file mode 100755 index 0000000..ef05eef --- /dev/null +++ b/iup/srclua5/il_radio.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Radio(lua_State *L) +{ + Ihandle *ih = IupRadio(iuplua_checkihandle(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupradiolua_open(lua_State * L) +{ + iuplua_register(L, Radio, "Radio"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/radio_be64.loh" +#else +#include "loh/radio_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/radio_le64w.loh" +#else +#include "loh/radio_le64.loh" +#endif +#else +#include "loh/radio.loh" +#endif +#endif +#else + iuplua_dofile(L, "radio.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_sbox.c b/iup/srclua5/il_sbox.c new file mode 100755 index 0000000..9a2e6d5 --- /dev/null +++ b/iup/srclua5/il_sbox.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Sbox(lua_State *L) +{ + Ihandle *ih = IupSbox(iuplua_checkihandle(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupsboxlua_open(lua_State * L) +{ + iuplua_register(L, Sbox, "Sbox"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/sbox_be64.loh" +#else +#include "loh/sbox_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/sbox_le64w.loh" +#else +#include "loh/sbox_le64.loh" +#endif +#else +#include "loh/sbox.loh" +#endif +#endif +#else + iuplua_dofile(L, "sbox.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_scanf.c b/iup/srclua5/il_scanf.c new file mode 100755 index 0000000..6f035a7 --- /dev/null +++ b/iup/srclua5/il_scanf.c @@ -0,0 +1,197 @@ +/** \file + * \brief IUP binding for Lua 5. + * IupScanf special implementation. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" + +#include "il.h" + +#include "iup_str.h" +#include "iup_predial.h" + +#define ALLOC(n,t) ((t *)calloc((n),sizeof(t))) +#define REQUIRE(b) {if (!(b)) goto cleanup;} + +int iupluaScanf(lua_State *L) +{ + char *format; + int i; + int fields; + int *width = NULL; + int *scroll = NULL; + char **prompt = NULL; + char **text = NULL; + char *title = NULL; + char *s = NULL; + char *s1 = NULL; + char *outf = NULL; + int indParam; /* va_list va; */ + int total = 0; + + format = (char*)luaL_checkstring(L, 1); + fields = iupStrCountChar(format, '\n') - 1; + REQUIRE(fields > 0); + width = ALLOC(fields, int); + REQUIRE(width != NULL); + scroll = ALLOC(fields, int); + REQUIRE(scroll != NULL); + prompt = ALLOC(fields, char *); + REQUIRE(prompt != NULL); + text = ALLOC(fields, char *); + REQUIRE(text != NULL); + + indParam = 2; /* va_start(va,format); */ + REQUIRE((s1 = s = (char *) iupStrDup(format)) != NULL); + title = iupStrCopyUntil(&s, '\n'); + REQUIRE(title != NULL); + for (i = 0; i < fields; ++i) { + int n; + prompt[i] = iupStrCopyUntil(&s, '%'); + REQUIRE(prompt[i] != NULL); + n = sscanf(s, "%d.%d", width + i, scroll + i); + REQUIRE(n == 2); + s = strchr(s, '%'); + REQUIRE(s != NULL); + if (outf) free(outf); + outf = iupStrCopyUntil(&s, '\n'); + text[i] = ALLOC(width[i] + 1, char); + REQUIRE(text[i] != NULL); + + switch (s[-2]) { + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + if (s[-3] == 'l') + sprintf(text[i], outf, luaL_checklong(L, indParam++)); + else if (s[-3] == 'h') + sprintf(text[i], outf, (short) luaL_checkint(L, indParam++)); + else + sprintf(text[i], outf, luaL_checkint(L, indParam++)); + break; + case 'e': + case 'f': + case 'g': + case 'E': + case 'G': + if (s[-3] == 'l') + sprintf(text[i], outf, luaL_checknumber(L, indParam++)); + else + sprintf(text[i], outf, (float)luaL_checknumber(L, indParam++)); + break; + case 's': + sprintf(text[i], outf, (char *)luaL_checkstring(L, indParam++)); + break; + default: + goto cleanup; + } + } + /* va_end(va); */ + + REQUIRE(iupDataEntry(fields, width, scroll, title, prompt, text)>0); + + /* va_start(va,format); */ + s = strchr(format, '\n') + 1; + for (i = 0; i < fields; ++i) { + s = strchr(s, '\n') + 1; + switch (s[-2]) { + case 'd': + case 'u': + if (s[-3] == 'l') { + long l = 0; + sscanf(text[i], "%ld", &l); + lua_pushnumber(L, l); + total++; + } else if (s[-3] == 'h') { + short l = 0; + sscanf(text[i], "%hd", &l); + lua_pushnumber(L, l); + total++; + } else { + int l = 0; + sscanf(text[i], "%d", &l); + lua_pushnumber(L, l); + total++; + } + break; + case 'i': + case 'o': + case 'x': + case 'X': + if (s[-3] == 'l') { + long l = 0; + sscanf(text[i], "%li", &l); + lua_pushnumber(L, l); + total++; + } else if (s[-3] == 'h') { + short l = 0; + sscanf(text[i], "%hi", &l); + lua_pushnumber(L, l); + total++; + } else { + int l = 0; + sscanf(text[i], "%i", &l); + lua_pushnumber(L, l); + total++; + } + break; + case 'e': + case 'f': + case 'g': + case 'E': + case 'G': + if (s[-3] == 'l') { + double l = 0; + sscanf(text[i], "%lg", &l); + lua_pushnumber(L, l); + total++; + } else { + float l = 0; + sscanf(text[i], "%g", &l); + lua_pushnumber(L, l); + total++; + } + break; + case 's': + lua_pushstring(L, text[i]); + total++; + break; + } + } + /* va_end(va); */ + +cleanup: + if (s1) free(s1); + if (title) free(title); + if (width) free(width); + if (scroll) free(scroll); + if (outf) free(outf); + if (prompt) + { + for (i = 0; i < fields; ++i) + if (prompt[i]) free(prompt[i]); + free(prompt); + } + if (text) + { + for (i = 0; i < fields; ++i) + if (text[i]) free(text[i]); + free(text); + } + + return total; +} + diff --git a/iup/srclua5/il_separator.c b/iup/srclua5/il_separator.c new file mode 100755 index 0000000..cfd71b1 --- /dev/null +++ b/iup/srclua5/il_separator.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Separator(lua_State *L) +{ + Ihandle *ih = IupSeparator(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupseparatorlua_open(lua_State * L) +{ + iuplua_register(L, Separator, "Separator"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/separator_be64.loh" +#else +#include "loh/separator_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/separator_le64w.loh" +#else +#include "loh/separator_le64.loh" +#endif +#else +#include "loh/separator.loh" +#endif +#endif +#else + iuplua_dofile(L, "separator.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_spin.c b/iup/srclua5/il_spin.c new file mode 100755 index 0000000..c3e5439 --- /dev/null +++ b/iup/srclua5/il_spin.c @@ -0,0 +1,60 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int spin_spin_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "spin_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int Spin(lua_State *L) +{ + Ihandle *ih = IupSpin(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupspinlua_open(lua_State * L) +{ + iuplua_register(L, Spin, "Spin"); + + iuplua_register_cb(L, "SPIN_CB", (lua_CFunction)spin_spin_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/spin_be64.loh" +#else +#include "loh/spin_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/spin_le64w.loh" +#else +#include "loh/spin_le64.loh" +#endif +#else +#include "loh/spin.loh" +#endif +#endif +#else + iuplua_dofile(L, "spin.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_spinbox.c b/iup/srclua5/il_spinbox.c new file mode 100755 index 0000000..843154e --- /dev/null +++ b/iup/srclua5/il_spinbox.c @@ -0,0 +1,60 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int spinbox_spin_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "spin_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int Spinbox(lua_State *L) +{ + Ihandle *ih = IupSpinbox(iuplua_checkihandle(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupspinboxlua_open(lua_State * L) +{ + iuplua_register(L, Spinbox, "Spinbox"); + + iuplua_register_cb(L, "SPIN_CB", (lua_CFunction)spinbox_spin_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/spinbox_be64.loh" +#else +#include "loh/spinbox_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/spinbox_le64w.loh" +#else +#include "loh/spinbox_le64.loh" +#endif +#else +#include "loh/spinbox.loh" +#endif +#endif +#else + iuplua_dofile(L, "spinbox.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_submenu.c b/iup/srclua5/il_submenu.c new file mode 100755 index 0000000..b82dd4b --- /dev/null +++ b/iup/srclua5/il_submenu.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Submenu(lua_State *L) +{ + Ihandle *ih = IupSubmenu((char *) luaL_optstring(L, 1, NULL), iuplua_checkihandle(L, 2)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupsubmenulua_open(lua_State * L) +{ + iuplua_register(L, Submenu, "Submenu"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/submenu_be64.loh" +#else +#include "loh/submenu_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/submenu_le64w.loh" +#else +#include "loh/submenu_le64.loh" +#endif +#else +#include "loh/submenu.loh" +#endif +#endif +#else + iuplua_dofile(L, "submenu.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_tabs.c b/iup/srclua5/il_tabs.c new file mode 100755 index 0000000..09c68aa --- /dev/null +++ b/iup/srclua5/il_tabs.c @@ -0,0 +1,63 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int tabs_tabchange_cb(Ihandle *self, Ihandle * p0, Ihandle * p1) +{ + lua_State *L = iuplua_call_start(self, "tabchange_cb"); + iuplua_pushihandle(L, p0); + iuplua_pushihandle(L, p1); + return iuplua_call(L, 2); +} + +static int Tabsv(lua_State *L) +{ + Ihandle **hlist = iuplua_checkihandle_array(L, 1); + Ihandle *h = IupTabsv(hlist); + iuplua_plugstate(L, h); + iuplua_pushihandle_raw(L, h); + free(hlist); + return 1; +} + +int iuptabslua_open(lua_State * L) +{ + iuplua_register(L, Tabsv, "Tabsv"); + + iuplua_register_cb(L, "TABCHANGE_CB", (lua_CFunction)tabs_tabchange_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/tabs_be64.loh" +#else +#include "loh/tabs_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/tabs_le64w.loh" +#else +#include "loh/tabs_le64.loh" +#endif +#else +#include "loh/tabs.loh" +#endif +#endif +#else + iuplua_dofile(L, "tabs.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_text.c b/iup/srclua5/il_text.c new file mode 100755 index 0000000..f3751f2 --- /dev/null +++ b/iup/srclua5/il_text.c @@ -0,0 +1,78 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int text_caret_cb(Ihandle *self, int p0, int p1, int p2) +{ + lua_State *L = iuplua_call_start(self, "caret_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + return iuplua_call(L, 3); +} + +static int text_action(Ihandle *self, int p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "action"); + lua_pushnumber(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int text_valuechanged_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "valuechanged_cb"); + return iuplua_call(L, 0); +} + +static int Text(lua_State *L) +{ + Ihandle *ih = IupText(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iuptextlua_open(lua_State * L) +{ + iuplua_register(L, Text, "Text"); + + iuplua_register_cb(L, "CARET_CB", (lua_CFunction)text_caret_cb, NULL); + iuplua_register_cb(L, "ACTION", (lua_CFunction)text_action, "text"); + iuplua_register_cb(L, "VALUECHANGED_CB", (lua_CFunction)text_valuechanged_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/text_be64.loh" +#else +#include "loh/text_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/text_le64w.loh" +#else +#include "loh/text_le64.loh" +#endif +#else +#include "loh/text.loh" +#endif +#endif +#else + iuplua_dofile(L, "text.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_timer.c b/iup/srclua5/il_timer.c new file mode 100755 index 0000000..b4845ee --- /dev/null +++ b/iup/srclua5/il_timer.c @@ -0,0 +1,59 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int timer_action_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "action_cb"); + return iuplua_call(L, 0); +} + +static int Timer(lua_State *L) +{ + Ihandle *ih = IupTimer(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iuptimerlua_open(lua_State * L) +{ + iuplua_register(L, Timer, "Timer"); + + iuplua_register_cb(L, "ACTION_CB", (lua_CFunction)timer_action_cb, "timer"); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/timer_be64.loh" +#else +#include "loh/timer_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/timer_le64w.loh" +#else +#include "loh/timer_le64.loh" +#endif +#else +#include "loh/timer.loh" +#endif +#endif +#else + iuplua_dofile(L, "timer.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_toggle.c b/iup/srclua5/il_toggle.c new file mode 100755 index 0000000..bea7099 --- /dev/null +++ b/iup/srclua5/il_toggle.c @@ -0,0 +1,60 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int toggle_action(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "action"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int Toggle(lua_State *L) +{ + Ihandle *ih = IupToggle((char *) luaL_optstring(L, 1, NULL), NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iuptogglelua_open(lua_State * L) +{ + iuplua_register(L, Toggle, "Toggle"); + + iuplua_register_cb(L, "ACTION", (lua_CFunction)toggle_action, "toggle"); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/toggle_be64.loh" +#else +#include "loh/toggle_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/toggle_le64w.loh" +#else +#include "loh/toggle_le64.loh" +#endif +#else +#include "loh/toggle.loh" +#endif +#endif +#else + iuplua_dofile(L, "toggle.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_tree.c b/iup/srclua5/il_tree.c new file mode 100755 index 0000000..a9eb407 --- /dev/null +++ b/iup/srclua5/il_tree.c @@ -0,0 +1,152 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int tree_branchopen_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "branchopen_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int tree_selection_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "selection_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int tree_dragdrop_cb(Ihandle *self, int p0, int p1, int p2, int p3) +{ + lua_State *L = iuplua_call_start(self, "dragdrop_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + return iuplua_call(L, 4); +} + +static int tree_rename_cb(Ihandle *self, int p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "rename_cb"); + lua_pushnumber(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int tree_renamenode_cb(Ihandle *self, int p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "renamenode_cb"); + lua_pushnumber(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int tree_showrename_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "showrename_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int tree_multiselection_cb(Ihandle *self, int p0, int p1) +{ + lua_State *L = iuplua_call_start(self, "multiselection_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int tree_branchclose_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "branchclose_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int tree_executeleaf_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "executeleaf_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int tree_rightclick_cb(Ihandle *self, int p0) +{ + lua_State *L = iuplua_call_start(self, "rightclick_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int tree_noderemoved_cb(Ihandle *self, int p0, char * p1) +{ + lua_State *L = iuplua_call_start(self, "noderemoved_cb"); + lua_pushnumber(L, p0); + lua_pushstring(L, p1); + return iuplua_call(L, 2); +} + +static int Tree(lua_State *L) +{ + Ihandle *ih = IupTree(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +void iuplua_treefuncs_open(lua_State *L); + +int iuptreelua_open(lua_State * L) +{ + iuplua_register(L, Tree, "Tree"); + + iuplua_register_cb(L, "BRANCHOPEN_CB", (lua_CFunction)tree_branchopen_cb, NULL); + iuplua_register_cb(L, "SELECTION_CB", (lua_CFunction)tree_selection_cb, NULL); + iuplua_register_cb(L, "DRAGDROP_CB", (lua_CFunction)tree_dragdrop_cb, NULL); + iuplua_register_cb(L, "RENAME_CB", (lua_CFunction)tree_rename_cb, NULL); + iuplua_register_cb(L, "RENAMENODE_CB", (lua_CFunction)tree_renamenode_cb, NULL); + iuplua_register_cb(L, "SHOWRENAME_CB", (lua_CFunction)tree_showrename_cb, NULL); + iuplua_register_cb(L, "MULTISELECTION_CB", (lua_CFunction)tree_multiselection_cb, NULL); + iuplua_register_cb(L, "BRANCHCLOSE_CB", (lua_CFunction)tree_branchclose_cb, NULL); + iuplua_register_cb(L, "EXECUTELEAF_CB", (lua_CFunction)tree_executeleaf_cb, NULL); + iuplua_register_cb(L, "RIGHTCLICK_CB", (lua_CFunction)tree_rightclick_cb, NULL); + iuplua_register_cb(L, "NODEREMOVED_CB", (lua_CFunction)tree_noderemoved_cb, NULL); + + iuplua_treefuncs_open(L); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/tree_be64.loh" +#else +#include "loh/tree_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/tree_le64w.loh" +#else +#include "loh/tree_le64.loh" +#endif +#else +#include "loh/tree.loh" +#endif +#endif +#else + iuplua_dofile(L, "tree.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_tree_aux.c b/iup/srclua5/il_tree_aux.c new file mode 100755 index 0000000..99e721b --- /dev/null +++ b/iup/srclua5/il_tree_aux.c @@ -0,0 +1,184 @@ +/** \file + * \brief iuptree binding for Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include "iuplua.h" +#include "il.h" +#include "il_controls.h" + +/* + The REGISTRY is used to store references to the associated Lua objects. + Given an ID, to retreive a Lua object is quite simple. + + But given a user_id to obtain the ID is more complicated. + The IUPTREEREFTABLE is used to do this mapping. + We use the object as the index to this table. +*/ + +/* iup.IUPTREEREFTABLE[object at pos] = ref */ +static void tree_settableref(lua_State *L, int pos, int ref) +{ + lua_getglobal(L, "iup"); + lua_pushstring(L, "IUPTREEREFTABLE"); + lua_gettable(L, -2); + lua_remove(L, -2); + lua_pushvalue(L, pos); + if(ref == LUA_NOREF) + lua_pushnil(L); + else + lua_pushnumber(L, ref); + lua_settable(L, -3); + lua_pop(L, 1); +} + +/* ref = iup.IUPTREEREFTABLE[object at pos] */ +static int tree_gettableref(lua_State *L, int pos) +{ + lua_getglobal(L, "iup"); + lua_pushstring(L, "IUPTREEREFTABLE"); + lua_gettable(L, -2); + lua_remove(L, -2); + lua_pushvalue(L, pos); + lua_gettable(L, -2); + if (lua_isnil(L, -1)) + { + lua_pop(L, 1); + return LUA_NOREF; + } + else + { + int ref = (int) lua_tonumber(L, -1); + lua_pop(L, 1); + return ref; + } +} + +static void tree_push_userid(lua_State *L, void* userid) +{ + int ref = (int)userid; + if (ref == 0) /* userid is actually NULL */ + lua_pushnil(L); + else + { + if (ref > 0) ref--; /* only positive references are shifted */ + lua_getref(L, ref); + } +} + +/***************************************************************************** + * Userdata/Table <-> id functions + ****************************************************************************/ + +static int TreeGetId(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + int ref = tree_gettableref(L, 2); + if (ref == LUA_NOREF) + lua_pushnil(L); + else + { + int id; + if (ref >= 0) ref++; /* only positive references are shifted */ + id = IupTreeGetId(ih, (void*)ref); + if (id == -1) + lua_pushnil(L); + else + lua_pushnumber(L, id); + } + return 1; +} + +static int TreeGetUserId(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + int id = (int)luaL_checknumber(L,2); + tree_push_userid(L, IupTreeGetUserId(ih, id)); + return 1; +} + +static int TreeSetUserId(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + int id = (int)luaL_checknumber(L,2); + int ref = (int)IupTreeGetUserId(ih, id); + if (ref != 0) /* userid is not NULL */ + { + if (ref > 0) ref--; /* only positive references are shifted */ + + /* release the previous object referenced there */ + lua_getref(L, ref); + tree_settableref(L, 4, LUA_NOREF); + lua_unref(L, ref); + lua_pop(L, 1); + } + + if (lua_isnil(L, 3)) + IupTreeSetUserId(ih, id, NULL); + else + { + /* add a new reference */ + lua_pushvalue(L, 3); + ref = lua_ref(L, 1); + tree_settableref(L, 3, ref); + + if (ref >= 0) ref++; /* only positive references are shifted */ + IupTreeSetUserId(ih, id, (char*)ref); + } + + return 0; +} + +static int tree_multiselection_cb(Ihandle *ih, int* ids, int p1) +{ + int i; + lua_State *L = iuplua_call_start(ih, "multiselection_cb"); + lua_newtable(L); + for (i = 0; i < p1; i++) + { + lua_pushnumber(L,i+1); + lua_pushnumber(L,ids[i]); + lua_settable(L,-3); + } + lua_pushnumber(L, p1); + return iuplua_call(L, 2); +} + +static int tree_noderemoved_cb(Ihandle *ih, int id, void* p1) +{ + lua_State *L = iuplua_call_start(ih, "noderemoved_cb"); + lua_pushnumber(L, id); + tree_push_userid(L, p1); + return iuplua_call(L, 2); +} + +void iuplua_treefuncs_open (lua_State *L) +{ + iuplua_dostring(L, "IUPTREEREFTABLE={}", ""); + + iuplua_register_cb(L, "MULTISELECTION_CB", (lua_CFunction)tree_multiselection_cb, NULL); + iuplua_register_cb(L, "NODEREMOVED_CB", (lua_CFunction)tree_noderemoved_cb, NULL); + +/* In Lua 5: + TreeSetTableId = TreeSetUserId + TreeGetTable = TreeGetUserId + TreeGetTableId = TreeGetId +*/ + + /* Userdata <-> id */ + iuplua_register(L, TreeGetId, "TreeGetId"); + iuplua_register(L, TreeGetUserId, "TreeGetUserId"); + iuplua_register(L, TreeSetUserId, "TreeSetUserId"); + + /* Table <-> id */ + iuplua_register(L, TreeGetId, "TreeGetTableId"); + iuplua_register(L, TreeGetUserId, "TreeGetTable"); + iuplua_register(L, TreeSetUserId, "TreeSetTableId"); +} diff --git a/iup/srclua5/il_user.c b/iup/srclua5/il_user.c new file mode 100755 index 0000000..09475f2 --- /dev/null +++ b/iup/srclua5/il_user.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int User(lua_State *L) +{ + Ihandle *ih = IupUser(); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupuserlua_open(lua_State * L) +{ + iuplua_register(L, User, "User"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/user_be64.loh" +#else +#include "loh/user_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/user_le64w.loh" +#else +#include "loh/user_le64.loh" +#endif +#else +#include "loh/user.loh" +#endif +#endif +#else + iuplua_dofile(L, "user.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_val.c b/iup/srclua5/il_val.c new file mode 100755 index 0000000..e8918d7 --- /dev/null +++ b/iup/srclua5/il_val.c @@ -0,0 +1,76 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int val_button_press_cb(Ihandle *self, double p0) +{ + lua_State *L = iuplua_call_start(self, "button_press_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int val_mousemove_cb(Ihandle *self, double p0) +{ + lua_State *L = iuplua_call_start(self, "mousemove_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int val_button_release_cb(Ihandle *self, double p0) +{ + lua_State *L = iuplua_call_start(self, "button_release_cb"); + lua_pushnumber(L, p0); + return iuplua_call(L, 1); +} + +static int Val(lua_State *L) +{ + Ihandle *ih = IupVal((char *) luaL_checkstring(L, 1)); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupvallua_open(lua_State * L) +{ + iuplua_register(L, Val, "Val"); + + iuplua_register_cb(L, "BUTTON_PRESS_CB", (lua_CFunction)val_button_press_cb, NULL); + iuplua_register_cb(L, "MOUSEMOVE_CB", (lua_CFunction)val_mousemove_cb, "val"); + iuplua_register_cb(L, "BUTTON_RELEASE_CB", (lua_CFunction)val_button_release_cb, NULL); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/val_be64.loh" +#else +#include "loh/val_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/val_le64w.loh" +#else +#include "loh/val_le64.loh" +#endif +#else +#include "loh/val.loh" +#endif +#endif +#else + iuplua_dofile(L, "val.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_vbox.c b/iup/srclua5/il_vbox.c new file mode 100755 index 0000000..ff2c55d --- /dev/null +++ b/iup/srclua5/il_vbox.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Vbox(lua_State *L) +{ + Ihandle *ih = IupVbox(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupvboxlua_open(lua_State * L) +{ + iuplua_register(L, Vbox, "Vbox"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/vbox_be64.loh" +#else +#include "loh/vbox_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/vbox_le64w.loh" +#else +#include "loh/vbox_le64.loh" +#endif +#else +#include "loh/vbox.loh" +#endif +#endif +#else + iuplua_dofile(L, "vbox.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/il_zbox.c b/iup/srclua5/il_zbox.c new file mode 100755 index 0000000..cdc47be --- /dev/null +++ b/iup/srclua5/il_zbox.c @@ -0,0 +1,52 @@ +/****************************************************************************** + * Automatically generated file (iuplua5). Please don't change anything. * + *****************************************************************************/ + +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "il.h" + + +static int Zbox(lua_State *L) +{ + Ihandle *ih = IupZbox(NULL); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +int iupzboxlua_open(lua_State * L) +{ + iuplua_register(L, Zbox, "Zbox"); + + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/zbox_be64.loh" +#else +#include "loh/zbox_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/zbox_le64w.loh" +#else +#include "loh/zbox_le64.loh" +#endif +#else +#include "loh/zbox.loh" +#endif +#endif +#else + iuplua_dofile(L, "zbox.lua"); +#endif + + return 0; +} + diff --git a/iup/srclua5/image.lua b/iup/srclua5/image.lua new file mode 100755 index 0000000..38ef556 --- /dev/null +++ b/iup/srclua5/image.lua @@ -0,0 +1,96 @@ +------------------------------------------------------------------------------ +-- Image class +------------------------------------------------------------------------------ +local ctrl = { + nick = "image", + parent = WIDGET, + creation = "nns", -- fake definition + callback = {}, + createfunc = [[ +static int Image (lua_State * L) +{ + int w, h, c, num_colors; + unsigned char *pixels; + Ihandle* ih; + char str[20]; + + if (lua_istable(L, 1)) + { + int i, j; + + /* get the number of lines */ + h = luaL_getn(L, 1); + + /* get the number of columns of the first line */ + lua_pushnumber(L, 1); + lua_gettable(L, 1); + w = luaL_getn(L, -1); + lua_pop(L, 1); + + pixels = (unsigned char *) malloc (h*w); + + for (i=1; i<=h; i++) + { + lua_pushnumber(L, i); + lua_gettable(L, 1); + for (j=1; j<=w; j++) + { + int idx = (i-1)*w+(j-1); + lua_pushnumber(L, j); + lua_gettable(L, -2); + pixels[idx] = (unsigned char)lua_tonumber(L, -1); + lua_pop(L, 1); + } + lua_pop(L, 1); + } + + ih = IupImage(w,h,pixels); + free(pixels); + + num_colors = luaL_getn(L, 2); + num_colors = num_colors>255? 255: num_colors; + for(c=1; c<=num_colors; c++) + { + lua_rawgeti(L, 2, c); + sprintf(str, "%d", c); + IupStoreAttribute(ih, str, lua_tostring(L,-1)); + lua_pop(L, 1); + } + } + else + { + w = luaL_checkint(L, 1); + h = luaL_checkint(L, 2); + pixels = iuplua_checkuchar_array(L, 3, w*h); + ih = IupImage(w, h, pixels); + free(pixels); + + num_colors = luaL_getn(L, 4); + num_colors = num_colors>256? 256: num_colors; + for(c=1; c<=num_colors; c++) + { + lua_rawgeti(L, 4, c); + sprintf(str, "%d", c-1); + IupStoreAttribute(ih, str, lua_tostring(L,-1)); + lua_pop(L, 1); + } + } + + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + return 1; +} + +]] +} + +function ctrl.createElement(class, arg) + if (arg.width and arg.height and arg.pixels) then + return Image(arg.width, arg.height, arg.pixels, arg.colors) + else + return Image(arg, arg.colors) + end +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/imagergb.lua b/iup/srclua5/imagergb.lua new file mode 100755 index 0000000..caab772 --- /dev/null +++ b/iup/srclua5/imagergb.lua @@ -0,0 +1,31 @@ +------------------------------------------------------------------------------ +-- ImageRGB class +------------------------------------------------------------------------------ +local ctrl = { + nick = "imagergb", + parent = WIDGET, + creation = "nns", -- fake definition + funcname = "ImageRGB", + callback = {}, + createfunc = [[ +static int ImageRGB(lua_State *L) +{ + int w = luaL_checkint(L, 1); + int h = luaL_checkint(L, 2); + unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*3); + Ihandle *ih = IupImageRGB(w, h, pixels); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + free(pixels); + return 1; +} + +]] +} + +function ctrl.createElement(class, arg) + return ImageRGB(arg.width, arg.height, arg.pixels) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/imagergba.lua b/iup/srclua5/imagergba.lua new file mode 100755 index 0000000..87eb967 --- /dev/null +++ b/iup/srclua5/imagergba.lua @@ -0,0 +1,31 @@ +------------------------------------------------------------------------------ +-- ImageRGBA class +------------------------------------------------------------------------------ +local ctrl = { + nick = "imagergba", + parent = WIDGET, + creation = "nns", -- fake definition + funcname = "ImageRGBA", + callback = {}, + createfunc = [[ +static int ImageRGBA(lua_State *L) +{ + int w = luaL_checkint(L, 1); + int h = luaL_checkint(L, 2); + unsigned char *pixels = iuplua_checkuchar_array(L, 3, w*h*4); + Ihandle *ih = IupImageRGBA(w, h, pixels); + iuplua_plugstate(L, ih); + iuplua_pushihandle_raw(L, ih); + free(pixels); + return 1; +} + +]] +} + +function ctrl.createElement(class, arg) + return ImageRGBA(arg.width, arg.height, arg.pixels) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/item.lua b/iup/srclua5/item.lua new file mode 100755 index 0000000..cbd0c1e --- /dev/null +++ b/iup/srclua5/item.lua @@ -0,0 +1,19 @@ +------------------------------------------------------------------------------ +-- Item class +------------------------------------------------------------------------------ +local ctrl = { + nick = "item", + parent = WIDGET, + creation = "S-", + callback = { + action = "", + highlight_cb = "", + } +} + +function ctrl.createElement(class, arg) + return Item(arg.title) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/iup_pplot.mak b/iup/srclua5/iup_pplot.mak new file mode 100755 index 0000000..b353fe7 --- /dev/null +++ b/iup/srclua5/iup_pplot.mak @@ -0,0 +1,26 @@ +PROJNAME = iup +LIBNAME = iuplua_pplot51 +OPT = YES +DEF_FILE = iuplua_pplot5.def + +IUP := .. + +DEFINES = IUPLUA_USELOH + +USE_IUP3 = Yes +USE_IUPLUA = Yes +USE_CDLUA = Yes +LIBS = iup_pplot + +USE_LUA51 = Yes +NO_LUALINK = Yes + +LOHDIR = loh +SRCLUA = pplot.lua +GC := $(addsuffix .c, $(basename $(SRCLUA))) +GC := $(addprefix il_, $(GC)) + +$(GC) : il_%.c : %.lua generator.lua + $(LUABIN) generator.lua $< + +SRC := iuplua_pplot.c $(GC) diff --git a/iup/srclua5/iupcd.mak b/iup/srclua5/iupcd.mak new file mode 100755 index 0000000..26cf9b8 --- /dev/null +++ b/iup/srclua5/iupcd.mak @@ -0,0 +1,21 @@ +PROJNAME = iup +LIBNAME = iupluacd51 +OPT = YES + +DEFINES = CD_NO_OLD_INTERFACE +SRC = iuplua_cd.c +DEF_FILE = iupluacd5.def + +# Can not use USE_IUPLUA because Tecmake will include "iupluacd51" in linker + +INCLUDES = ../include +LIBS = iuplua51 +LDIR = ../lib/$(TEC_UNAME) + +IUP := .. + +USE_CD = YES +USE_IUP3 = YES +USE_LUA51 = Yes +NO_LUALINK = Yes +USE_CDLUA = YES diff --git a/iup/srclua5/iupcontrols.mak b/iup/srclua5/iupcontrols.mak new file mode 100755 index 0000000..ea1e59f --- /dev/null +++ b/iup/srclua5/iupcontrols.mak @@ -0,0 +1,26 @@ +PROJNAME = iup +LIBNAME = iupluacontrols51 +OPT = YES +DEF_FILE = iupluacontrols5.def + +IUP := .. + +DEFINES = IUPLUA_USELOH + +USE_IUP3 = Yes +USE_IUPLUA = Yes +USE_CDLUA = Yes +LIBS = iupcontrols + +USE_LUA51 = Yes +NO_LUALINK = Yes + +LOHDIR = loh +SRCLUA = dial.lua gauge.lua colorbrowser.lua colorbar.lua matrix.lua cells.lua +GC := $(addsuffix .c, $(basename $(SRCLUA))) +GC := $(addprefix il_, $(GC)) + +$(GC) : il_%.c : %.lua generator.lua + $(LUABIN) generator.lua $< + +SRC := iuplua_controls.c il_mask.c il_matrix_aux.c $(GC) diff --git a/iup/srclua5/iupgl.mak b/iup/srclua5/iupgl.mak new file mode 100755 index 0000000..6e9f45d --- /dev/null +++ b/iup/srclua5/iupgl.mak @@ -0,0 +1,27 @@ +PROJNAME = iup +LIBNAME = iupluagl51 +OPT = YES + +DEF_FILE = iupluagl5.def +DEFINES = IUPLUA_USELOH + +IUP := .. + +# Can not use USE_IUPLUA because Tecmake will include "iupluagl51" in linker + +USE_IUP3 = Yes +USE_OPENGL = Yes +LIBS = iuplua51 + +USE_LUA51 = Yes +NO_LUALINK = Yes + +LOHDIR = loh +SRCLUA = glcanvas.lua +GC = $(addsuffix .c, $(basename $(SRCLUA))) +GC := $(addprefix il_, $(GC)) + +$(GC) : il_%.c : %.lua generator.lua + $(LUABIN) generator.lua $< + +SRC = iuplua_glcanvas.c $(GC) diff --git a/iup/srclua5/iupim.mak b/iup/srclua5/iupim.mak new file mode 100755 index 0000000..1355c42 --- /dev/null +++ b/iup/srclua5/iupim.mak @@ -0,0 +1,17 @@ +PROJNAME = iup +LIBNAME = iupluaim51 +OPT = YES + +DEF_FILE = iupluaim5.def +SRC = iuplua_im.c + +INCLUDES = ../src +LIBS = iupim + +IUP := .. + +USE_IUP3 = Yes +USE_IUPLUA = Yes +USE_IM = Yes +USE_LUA51 = Yes +NO_LUALINK = Yes diff --git a/iup/srclua5/iupimglib.mak b/iup/srclua5/iupimglib.mak new file mode 100755 index 0000000..5b74dfb --- /dev/null +++ b/iup/srclua5/iupimglib.mak @@ -0,0 +1,17 @@ +PROJNAME = iup +LIBNAME = iupluaimglib51 +OPT = YES + +SRC = iuplua_imglib.c +DEF_FILE = iupluaimglib5.def + +INCLUDES = ../include +LIBS = iupimglib +LDIR = ../lib/$(TEC_UNAME) + +IUP := .. + +USE_IUP3 = Yes +USE_IUPLUA = Yes +USE_LUA51 = Yes +NO_LUALINK = Yes diff --git a/iup/srclua5/iuplua.c b/iup/srclua5/iuplua.c new file mode 100755 index 0000000..fd001a0 --- /dev/null +++ b/iup/srclua5/iuplua.c @@ -0,0 +1,918 @@ +/** \file +* \brief IUP binding for Lua 5. +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include +#include + +#include "iup.h" +#include "iup_str.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" + + +/***************************************************************************** +* Auxiliary functions * +****************************************************************************/ + + + /*************************************/ + /* iuplua_dostring and iuplua_dofile */ + +static void error_message(lua_State *L, const char *msg, const char* traceback) +{ + lua_getglobal(L, "iup"); + lua_pushstring(L, "_ERRORMESSAGE"); + lua_gettable(L, -2); + lua_remove(L, -2); + + if(lua_isnil(L, -1)) + { + /* Panic mode */ + if (traceback != NULL) + fprintf(stderr, "%s\n%s\n", msg, traceback); + else + fprintf(stderr, "%s\n", msg); + fflush(stderr); + return; + } + lua_pushstring(L, msg); + lua_pushstring(L, traceback); + lua_call(L, 2, 0); +} + +static int report (lua_State *L, int status, int concat_traceback) +{ + if (status && !lua_isnil(L, -1)) + { + const char *msg = lua_tostring(L, -2); + + + + const char *traceback; + if (msg == NULL) { + msg = "(error with no message)"; + traceback = NULL; + } + else if (concat_traceback) { + lua_concat(L, 2); + msg = lua_tostring(L, -1); + traceback = NULL; + } + else { + traceback = lua_tostring(L, -1); + } + error_message(L, msg, traceback); + lua_pop(L, 2); + } + return status; +} + +static int traceback (lua_State *L) { + lua_getfield(L, LUA_GLOBALSINDEX, "debug"); + if (!lua_istable(L, -1)) { + lua_pop(L, 1); + return 1; + } + lua_getfield(L, -1, "traceback"); + if (!lua_isfunction(L, -1)) { + lua_pop(L, 2); + return 1; + } + + lua_remove(L, 2); + lua_pushliteral(L, ""); + lua_pushinteger(L, 2); /* skip this function */ + lua_call(L, 2, 1); /* call debug.traceback */ + lua_getglobal(L, "iup"); /* store traceback in iup._LASTTRACEBACK */ + lua_pushstring(L, "_LASTTRACEBACK"); + lua_pushvalue(L, -3); + lua_settable(L, -3); + lua_pop(L, 2); + return 1; +} + +static int docall (lua_State *L, int narg, int nret) +{ + int status; + int base = lua_gettop(L) - narg; /* function index */ + lua_pushcfunction(L, traceback); /* push traceback function */ + lua_insert(L, base); /* put it under chunk and args */ + status = lua_pcall(L, narg, nret, base); + lua_remove(L, base); /* remove traceback function */ + if (status != 0) { + /* force a complete garbage collection in case of errors */ + lua_gc(L, LUA_GCCOLLECT, 0); + /* put _LASTTRACEBACK at stack position 2 */ + lua_getglobal(L, "iup"); + lua_pushliteral(L, "_LASTTRACEBACK"); + lua_gettable(L, -2); + lua_remove(L, -2); + if (!lua_isstring(L, -1)) { + lua_pop(L, 1); + lua_pushliteral(L, ""); + /* set _LASTTRACEBACK as nil */ + lua_getglobal(L, "iup"); + lua_pushliteral(L, "_LASTTRACEBACK"); + lua_pushnil(L); + lua_settable(L, -3); + lua_pop(L, 1); + } + } + return status; +} + +int iuplua_dofile(lua_State *L, const char *filename) +{ + int status = luaL_loadfile(L, filename); + if (status == 0) + status = docall(L, 0, 0); + return report(L, status, 1); +} + +int iuplua_dostring(lua_State *L, const char *s, const char *name) +{ + int status = luaL_loadbuffer(L, s, strlen(s), name); + if (status == 0) + status = docall(L, 0, 0); + return report(L, status, 1); +} + + /*************************************/ + /* Utilities */ + +Ihandle *iuplua_checkihandleornil(lua_State *L, int pos) +{ + if (lua_isnil(L, pos)) + return NULL; + else + return iuplua_checkihandle(L, pos); +} + +Ihandle *iuplua_checkihandle(lua_State *L, int pos) +{ + lua_getmetatable(L, pos); /* t2 = metatable(stack(pos)) */ + lua_pushstring(L, "iup handle"); + lua_gettable(L, LUA_REGISTRYINDEX); /* t = registry["iup handle"] */ + if (lua_equal(L, -2, -1)) /* check (t2==t)? */ + { + lua_pop (L, 2); + return *(Ihandle**)lua_touserdata(L, pos); + } + else + { + luaL_argerror(L, pos, "iup handle expected"); + return NULL; + } +} + +void iuplua_pushihandle_raw(lua_State *L, Ihandle *ih) +{ + if (ih) + { + Ihandle** new_pointer = (Ihandle**)lua_newuserdata(L, sizeof(Ihandle*)); + *new_pointer = ih; + } + else + lua_pushnil(L); +} + +void iuplua_pushihandle(lua_State *L, Ihandle *ih) +{ + if (ih) + { + /* not created in Lua? */ + char* sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF"); + if (!sref) + { + lua_getglobal(L,"iup"); + lua_pushstring(L,"RegisterHandle"); + lua_gettable(L, -2); /* f = iup.RegisterHandle */ + lua_remove(L, -2); + iuplua_pushihandle_raw(L, ih); /* push ih */ + lua_pushstring(L, IupGetClassName(ih)); /* push type */ + lua_call(L, 2, 1); /* call f(ih, type) */ + } + else + { + iuplua_pushihandle_raw(L, ih); /* push ih */ + lua_pushstring(L, "iup handle"); + lua_gettable(L, LUA_REGISTRYINDEX); /* t = registry["iup handle"] */ + lua_setmetatable(L, -2); /* metatable(ih) = t */ + } + } + else + lua_pushnil(L); +} + +void iuplua_removeihandle(lua_State *L, Ihandle *ih) +{ + char* sref; + + /* called from Destroy. + must also remove references from the children. */ + Ihandle* child = IupGetNextChild(ih, NULL); + while(child) + { + iuplua_removeihandle(L, child); + child = IupGetNextChild(ih, child); + } + + sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF"); + if (sref) + { + int ref = atoi(sref); + + /* removes the ihandle reference in the lua table */ + /* object.handle = nil */ + lua_getref(L, ref); /* push object */ + lua_pushstring(L, "handle"); + lua_pushnil(L); + lua_settable(L, -3); + lua_pop(L,1); + + /* removes the association of the ihandle with the lua table */ + lua_unref(L, ref); /* this is the complement of SetWidget */ + IupSetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF", NULL); + } +} + +char ** iuplua_checkstring_array(lua_State *L, int pos) +{ + int i,n; + char **v; + n = luaL_getn(L,pos); + v = (char **) malloc (n*sizeof(char *)); + for(i=1; i<=n; i++) + { + lua_pushnumber(L,i); + lua_gettable(L,pos); + v[i-1] = (char*)lua_tostring(L, -1); + lua_pop(L,1); + } + return v; +} + +int * iuplua_checkint_array(lua_State *L, int pos) +{ + int i,n; + int *v; + n = luaL_getn(L,pos); + v = (int *) malloc (n*sizeof(int)); + for(i=1; i<=n; i++) + { + lua_pushnumber(L,i); + lua_gettable(L,pos); + v[i-1] = (int)lua_tonumber(L, -1); + lua_pop(L,1); + } + return v; +} + +unsigned char* iuplua_checkuchar_array(lua_State *L, int pos, int count) +{ + int i,n; + unsigned char *v; + n = luaL_getn(L,pos); + if (n != count) + { + lua_pushstring(L, "invalid number of elements in array"); + lua_error(L); + } + v = (unsigned char *) malloc (n*sizeof(unsigned char)); + for(i=1; i<=n; i++) + { + lua_pushnumber(L,i); + lua_gettable(L,pos); + v[i-1] = (unsigned char)lua_tonumber(L, -1); + lua_pop(L,1); + } + return v; +} + +Ihandle ** iuplua_checkihandle_array(lua_State *L, int pos) +{ + Ihandle **v; + int i, n = luaL_getn(L, pos); + v = (Ihandle **) malloc ((n+1)*sizeof(Ihandle *)); + for (i=1; i<=n; i++) + { + lua_pushnumber(L,i); + lua_gettable(L,pos); + v[i-1] = iuplua_checkihandle(L, -1); + lua_pop(L,1); + } + v[i-1] = NULL; + return v; +} + + /*************************************/ + /* used by callbacks */ + +void iuplua_plugstate(lua_State *L, Ihandle *ih) +{ + IupSetAttribute(ih, "_IUPLUA_STATE_CONTEXT",(char *) L); +} + +lua_State* iuplua_getstate(Ihandle *ih) +{ + return (lua_State *) IupGetAttribute(ih, "_IUPLUA_STATE_CONTEXT"); +} + +lua_State* iuplua_call_start(Ihandle *ih, const char* name) +{ + lua_State *L = iuplua_getstate(ih); + + /* prepare to call iupCallMethod(name, handle, ...) */ + lua_getglobal(L,"iup"); + lua_pushstring(L,"iupCallMethod"); + lua_gettable(L, -2); + lua_remove(L, -2); + + lua_pushstring(L, name); + iuplua_pushihandle(L, ih); + return L; +} + +int iuplua_call(lua_State* L, int nargs) +{ + int status = docall(L, nargs+2, 1); + report(L, status, 0); + + if (status) + return IUP_DEFAULT; + else + { + int tmp = (int) lua_isnil(L, -1) ? IUP_DEFAULT : (int)lua_tonumber(L,-1); + lua_pop(L, 1); + return tmp; + } +} + +char* iuplua_call_rs(lua_State *L, int nargs) +{ + int status = docall(L, nargs+2, 1); + report(L, status, 0); + + if (status) + return NULL; + else + { + char* tmp = lua_isnil(L, -1) ? NULL: (char*)lua_tostring(L,-1); + lua_pop(L, 1); + return tmp; + } +} + +int iuplua_call_raw(lua_State* L, int nargs, int nresults) +{ + int status = docall(L, nargs, nresults); + report(L, status, 0); + return status; +} + +void iuplua_register_cb(lua_State *L, const char* name, lua_CFunction func, const char* type) +{ + lua_getglobal(L, "RegisterCallback"); + lua_pushstring(L, name); + lua_pushcfunction(L, func); + lua_pushstring(L, type); + lua_call(L, 3, 0); +} + +/* iupSetCallback(handle, name, func, value) */ +static int SetCallback(lua_State *L) +{ + Icallback func; + + Ihandle* ih = iuplua_checkihandle(L, 1); + const char* name = luaL_checkstring(L, 2); + + if (!lua_iscfunction(L, 3)) + { + lua_pushstring(L, "invalid function when set callback"); + lua_error(L); + } + func = (Icallback)lua_tocfunction(L, 3); + + if (lua_isnil(L, 4)) /* value is only used here to remove the callback */ + IupSetCallback(ih, name, (Icallback)NULL); + else + IupSetCallback(ih, name, func); + + /* value, when not nil, is always the same name of a C callback in lowercase */ + + return 0; +} + + /*************************************/ + /* metatable */ + +/* iupNewClass(class_name) + Calls: + iupNewClass("iup handle") + iupNewClass("iup widget") +*/ +static int NewClass(lua_State *L) +{ + lua_newtable(L); /* push t */ + lua_pushstring(L, "class"); /* push "class" */ + lua_pushvalue(L, 1); /* push again the class_name to the stack, because settable will remove it */ + lua_settable(L, -3); /* t.class = class_name */ + lua_settable(L, LUA_REGISTRYINDEX); /* registry[class_name] = t */ + return 0; +} + +/* iupSetClass(t, class_name) + Calls: + iupSetClass(handle, "iup handle") --Used only in RegisterHandle and WIDGET.constructor + iupSetClass(object, "iup widget") --Used whenever a new control class is created. +*/ +static int SetClass(lua_State *L) +{ + lua_gettable(L, LUA_REGISTRYINDEX); /* t2 = registry[class_name] */ + if (lua_isnil(L, -1)) + { + lua_pushstring(L, "invalid class name"); + lua_error(L); + } + lua_setmetatable(L, -2); /* metatable(t) = t2 */ + return 0; +} + +/* class_name = iupGetClass(t) */ +static int GetClass(lua_State *L) +{ + if (lua_istable(L, 1) || lua_isuserdata(L, 1)) + { + lua_getmetatable(L, 1); /* t2 = metatable(t) */ + if (lua_istable(L, -1)) + { + lua_pushstring(L, "class"); + lua_gettable(L, -2); /* class_name = t2.class */ + return 1; + } + } + lua_pushnil(L); + return 1; +} + +/* iupSetMethod(class_name, method, function) + For ex: + iupSetMethod("iup handle", "__index", ihandle_gettable) +*/ +static int SetMethod(lua_State *L) +{ + lua_pushvalue(L, 1); /* push class_name */ + lua_gettable(L, LUA_REGISTRYINDEX); /* t = registry[class_name] */ + if (lua_isnil(L, -1)) + { + lua_pushstring(L, "invalid class name"); + lua_error(L); + } + lua_pushvalue(L, -3); /* push method */ + lua_pushvalue(L, -3); /* push function */ + lua_settable(L, -3); /* t.method = function */ + return 0; +} + +static int ihandle_tostring (lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L, 1); + if (!ih) + lua_pushstring (L, "(not an IUP handle)"); + else + lua_pushfstring (L, "IUP(%s): %p", IupGetClassName(ih), ih); + return 1; +} + +static int ihandle_compare(lua_State *L) +{ + Ihandle *a = iuplua_checkihandle(L, 1); + Ihandle *b = iuplua_checkihandle(L, 2); + if(a == b) + lua_pushboolean(L, 1); + else + lua_pushboolean(L, 0); + return 1; +} + + /*************************************/ + /* table <-> ihandle */ + +/* local object = iupGetWidget(handle) */ +static int GetWidget(lua_State *L) +{ + /* Pushes a table that is associanted with an ihandle */ + /* Used by the "__index" metamethod of the "iup handle" */ + Ihandle * ih = iuplua_checkihandle(L,1); + char* sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF"); + if (!sref) + lua_pushnil(L); + else + lua_getref(L, atoi(sref)); + return 1; +} + +/* iupSetWidget(handle, object) */ +static int SetWidget(lua_State *L) +{ + /* Saves the object table reference as an attribute, + i.e. associates a table with the ihandle. + Used by the "iup widget" constructor and by RegisterHandle */ + Ihandle * ih = iuplua_checkihandle(L,1); + char* sref = IupGetAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF"); + if (!sref) + { + int ref = lua_ref(L, 1); + IupSetfAttribute(ih, "_IUPLUA_WIDGET_TABLE_REF", "%d", ref); /* this must be a non-inheritable attribute */ + } + return 0; +} + + /*************************************/ + /* registration */ + +void iuplua_changeEnv(lua_State *L) +{ + /* Replaces global environment */ + lua_pushvalue(L, LUA_GLOBALSINDEX); + lua_getglobal(L, "iup"); + lua_replace(L, LUA_GLOBALSINDEX); +} + +void iuplua_returnEnv(lua_State *L) +{ + /* reestablishes global environment */ + lua_replace(L, LUA_GLOBALSINDEX); +} + +int iuplua_opencall_internal(lua_State * L) +{ + int ret = 0; + const char* s; + lua_getglobal(L, "iup"); + lua_pushliteral(L,"_IUPOPEN_CALL"); + lua_gettable(L, -2); + s = lua_tostring(L, -1); + if (s && strcmp(s, "INTERNAL")==0) + ret = 1; + lua_pop(L,2); + return ret; +} + +void iuplua_register(lua_State *L, lua_CFunction func, const char* name) +{ + lua_pushcfunction(L, func); + lua_setglobal(L, name); +} + +void iuplua_regstring(lua_State *L, const char* s, const char* name) +{ + lua_pushstring(L, s); + lua_setglobal(L, name); +} + +/***************************************************************************** +* Common Callbacks * +****************************************************************************/ + +static int help_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "help_cb"); + return iuplua_call(L, 0); +} + +static int getfocus_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "getfocus_cb"); + return iuplua_call(L, 0); +} + +static int k_any(Ihandle *self, int c) +{ + lua_State *L = iuplua_call_start(self, "k_any"); + lua_pushnumber(L, c); + return iuplua_call(L, 1); +} + +static int killfocus_cb(Ihandle *self) +{ + lua_State *L = iuplua_call_start(self, "killfocus_cb"); + return iuplua_call(L, 0); +} + +static int Idlecall(void) +{ + int ret = 0; + lua_State *L = (lua_State *) IupGetGlobal("_IUP_LUA_DEFAULT_STATE"); + lua_getglobal(L, "_IUP_LUA_IDLE_FUNC_"); + lua_call(L, 0, 1); + ret = (int) lua_tonumber(L, -1); + lua_pop(L, 1); + return ret; +} + +static int SetIdle(lua_State *L) +{ + if lua_isnoneornil(L,1) + IupSetFunction("IDLE_ACTION", NULL); + else + { + luaL_checktype(L, 1, LUA_TFUNCTION); + lua_pushvalue(L,1); + lua_setglobal(L, "_IUP_LUA_IDLE_FUNC_"); + IupSetFunction("IDLE_ACTION", (Icallback) Idlecall); + } + return 0; +} + +/***************************************************************************** +* Iuplua bind functions * +****************************************************************************/ + + +static int GetFromC(lua_State *L) +{ + Ihandle *n; + const char *a; + if (!lua_istable(L, -1)) + { + lua_pushstring(L, "IupGetFromC: wrong arguments to function"); + lua_error(L); + return 0; + } + lua_pushnumber(L, 1); + lua_gettable(L, -2); + if (!lua_isstring(L, -1)) + { + lua_pushstring(L, "IupGetFromC: wrong arguments to function"); + lua_error(L); + return 0; + } + a = lua_tostring(L, -1); + n = IupGetHandle((char*)a); + if(n) + iuplua_pushihandle(L, n); + else + lua_pushnil(L); + return 1; +} + + +/***************************************************************************** + * iupkey * + ****************************************************************************/ + + +static void register_key(char *name, int code, void* user_data) +{ + lua_State *L = (lua_State*)user_data; + lua_pushnumber(L, code); lua_setglobal(L, name); +} + +/* from iupkey.c */ +void iupKeyForEach(void (*func)(char *name, int code, void* user_data), void* user_data); + +int iupkey_open(lua_State *L) +{ + (void)L; + /* does nothing, kept for backward compatibility */ + return 0; +} + + +/***************************************************************************** +* iuplua_open * +****************************************************************************/ + + +static int il_open(lua_State * L) +{ + int ret, argc = 0; + char **argv = NULL; + + lua_getglobal(L, "arg"); + if (lua_istable(L, -1)) + { + int i; + argc = luaL_getn(L, -1); + argv = malloc(sizeof(char*)*argc); + for(i=1; i<=argc; i++) + { + lua_pushnumber(L,i); + lua_gettable(L,-2); + argv[i-1] = (char*)lua_tostring(L, -1); + lua_pop(L,1); + } + } + lua_pop(L, 1); + + ret = IupOpen(&argc, &argv); + if (ret == IUP_ERROR) + { + if (argv) free(argv); + lua_pushstring(L, "IupOpen: could not initialize"); + lua_error(L); + return 0; + } + + if (argv) free(argv); + lua_pushinteger(L, ret); + return 1; +} + +int iuplua_close(lua_State * L) +{ + if (iuplua_opencall_internal(L)) + IupClose(); + return 0; /* nothing in stack */ +} + +static void setinfo (lua_State *L) +{ + /* table "iup" is at the stack */ + + lua_pushliteral (L, "_COPYRIGHT"); + lua_pushliteral (L, IUP_COPYRIGHT); + lua_settable (L, -3); + + lua_pushliteral (L, "_DESCRIPTION"); + lua_pushliteral (L, IUP_DESCRIPTION); + lua_settable (L, -3); + + lua_pushliteral (L, "_NAME"); + lua_pushliteral (L, IUP_NAME); + lua_settable (L, -3); + + lua_pushliteral (L, "_VERSION"); + lua_pushstring (L, IupVersion()); + lua_settable (L, -3); + + lua_pushliteral (L, "_VERSION_DATE"); + lua_pushliteral (L, IUP_VERSION_DATE); + lua_settable (L, -3); + + lua_pushliteral (L, "_VERSION_NUMBER"); + lua_pushinteger (L, IupVersionNumber()); + lua_settable (L, -3); +} + +int iuplua_open(lua_State * L) +{ + int ret; + + struct luaL_reg funcs[] = { + {"key_open", iupkey_open}, + {"Open", il_open}, + {"Close", iuplua_close}, + {"SetIdle", SetIdle}, + {"GetFromC", GetFromC}, + {"iupGetWidget", GetWidget}, + {"iupSetWidget", SetWidget}, + {"iupNewClass", NewClass}, + {"iupSetClass", SetClass}, + {"iupGetClass", GetClass}, + {"iupSetMethod", SetMethod}, + {"iupSetCallback", SetCallback}, + {"ihandle_compare", ihandle_compare}, + {"ihandle_tostring", ihandle_tostring}, + {NULL, NULL}, + }; + + if (!il_open(L)) + return 0; + + ret = lua_tointeger(L, -1); /* retrieve IupOpen return value */ + lua_pop(L, -1); + + /* Creating global namespace iup */ + lua_newtable(L); + lua_setglobal(L, "iup"); + + /* Registers functions in iup namespace */ + luaL_openlib(L, "iup", funcs, 0); + iupluaapi_open(L); + + /* set version info */ + setinfo(L); + + /* register if IupOpen was called here or from outside IupLua */ + lua_pushliteral (L, "_IUPOPEN_CALL"); + if (ret == IUP_OPENED) lua_pushliteral (L, "EXTERNAL"); + else lua_pushliteral (L, "INTERNAL"); + lua_settable (L, -3); + + /* used by Idle */ + IupSetGlobal("_IUP_LUA_DEFAULT_STATE", (char *) L); + + /* Creating new environment with metamethod __index + * (so that normal Lua functions will be found while GLOBALSINDEX is the "iup" environment) */ + iuplua_dostring(L, "iup._G = _G\ + setmetatable(iup, {__index = iup._G})", "iuplua_setmetatable_global"); + + /* Changing environment to iup + * (all created variables and functions from now on will be put in "iup" environment) */ + iuplua_changeEnv(L); + +#ifdef IUPLUA_USELOH +#ifdef TEC_BIGENDIAN +#ifdef TEC_64 +#include "loh/iuplua_be64.loh" +#include "loh/constants_be64.loh" +#else +#include "loh/iuplua_be32.loh" +#include "loh/constants_be32.loh" +#endif +#else +#ifdef TEC_64 +#ifdef WIN64 +#include "loh/iuplua_le64w.loh" +#include "loh/constants_le64w.loh" +#else +#include "loh/iuplua_le64.loh" +#include "loh/constants_le64.loh" +#endif +#else +#include "loh/iuplua.loh" +#include "loh/constants.loh" +#endif +#endif +#else + iuplua_dofile(L, "iuplua.lua"); + iuplua_dofile(L, "constants.lua"); +#endif + + /* Register the common callbacks */ + iuplua_register_cb(L, "HELP_CB", (lua_CFunction)help_cb, NULL); + iuplua_register_cb(L, "GETFOCUS_CB", (lua_CFunction)getfocus_cb, NULL); + iuplua_register_cb(L, "K_ANY", (lua_CFunction)k_any, NULL); + iuplua_register_cb(L, "KILLFOCUS_CB", (lua_CFunction)killfocus_cb, NULL); + + /* Register Keys */ + iupKeyForEach(register_key, (void*)L); + + /* Iup Modules initialization */ + iupbuttonlua_open(L); + iupcanvaslua_open(L); + iupdialoglua_open(L); + iupfilllua_open(L); + iupframelua_open(L); + iupfiledlglua_open(L); + iuphboxlua_open(L); + iupitemlua_open(L); + iupimagelua_open(L); + iuplabellua_open(L); + iuplistlua_open(L); + iupmenulua_open(L); + iupmultilinelua_open(L); + iupradiolua_open(L); + iupseparatorlua_open(L); + iupsubmenulua_open(L); + iuptextlua_open(L); + iuptogglelua_open(L); + iupvboxlua_open(L); + iupzboxlua_open(L); + iuptimerlua_open(L); + iupsboxlua_open(L); + iupspinlua_open(L); + iupspinboxlua_open(L); + iupcboxlua_open(L); + iupgclua_open(L); + iupgetparamlua_open(L); + iupvallua_open(L); + iuptabslua_open(L); + iupfontdlglua_open(L); + iupmessagedlglua_open(L); + iupcolordlglua_open(L); + iupimagergbalua_open(L); + iupimagergblua_open(L); + iupprogressbarlua_open(L); + iupnormalizerlua_open(L); + iupuserlua_open(L); + iuptreelua_open(L); + iupclipboardlua_open(L); + + iuplua_returnEnv(L); + + return 0; /* nothing in stack */ +} + +/* obligatory to use require"iuplua" */ +int luaopen_iuplua(lua_State* L) +{ + return iuplua_open(L); +} + +/* obligatory to use require"iuplua51" */ +int luaopen_iuplua51(lua_State* L) +{ + return iuplua_open(L); +} diff --git a/iup/srclua5/iuplua.lua b/iup/srclua5/iuplua.lua new file mode 100755 index 0000000..b0f644a --- /dev/null +++ b/iup/srclua5/iuplua.lua @@ -0,0 +1,285 @@ +-- This file is executed with the "iup" table already as the globalindex + +------------------------------------------------------------------------------ +-- Callback handler +------------------------------------------------------------------------------ + +callbacks = {} + +function iupCallMethod(name, ...) + local handle = arg[1] -- always the handle + local func = handle[name] + if (not func) then + return + end + + if type(func) == "function" then + return func(unpack(arg)) + elseif type(func) == "string" then + local temp = self + self = handle + local result = iup.dostring(func) + self = temp + return result + else + return iup.ERROR + end +end + +function RegisterCallback(name, func, type) + if not callbacks[name] then callbacks[name] = {} end + local cb = callbacks[name] + if type then + cb[type] = func + else + cb[1] = func + end +end + +------------------------------------------------------------------------------ +-- Meta Methods +------------------------------------------------------------------------------ + + +local widget_gettable = function(object, index) + local p = object + local v + while 1 do + v = rawget(p, index) + if v then return v end + p = rawget(p, "parent") + if not p then return nil end + end +end + +iupNewClass("iup widget") +iupSetMethod("iup widget", "__index", widget_gettable) + + +local ihandle_gettable = function(handle, index) + local INDEX = string.upper(index) + if (callbacks[INDEX]) then + local object = iupGetWidget(handle) + if (not object or type(object)~="table") then error("invalid iup handle") end + return object[index] + else + local value = GetAttribute(handle, INDEX) + if (not value) then + local object = iupGetWidget(handle) + if (not object or type(object)~="table") then error("invalid iup handle") end + return object[index] + elseif type(value)== "number" or type(value) == "string" then + local ih = GetHandle(value) + if ih then return ih + else return value end + else + return value + end + end +end + +local ihandle_settable = function(handle, index, value) + local ti = type(index) + local tv = type(value) + local object = iupGetWidget(handle) + if (not object or type(object)~="table") then error("invalid iup handle") end + if ti == "number" or ti == "string" then -- check if a valid C name + local INDEX = string.upper(index) + local cb = callbacks[INDEX] + if (cb) then -- if a callback name + local func = cb[1] + if (not func) then + func = cb[GetClassName(handle)] + end + iupSetCallback(handle, INDEX, func, value) -- register the pre-defined C callback + object[index] = value -- store also in Lua + elseif iupGetClass(value) == "iup handle" then -- if a iup handle + local name = ihandle_setname(value) + SetAttribute(handle, INDEX, name) + object[index] = nil -- if there was something in Lua remove it + elseif tv == "string" or tv == "number" or tv == "nil" then -- if a common value + SetAttribute(handle, INDEX, value) + object[index] = nil -- if there was something in Lua remove it + else + object[index] = value -- store also in Lua + end + else + object[index] = value -- store also in Lua + end +end + +iupNewClass("iup handle") +iupSetMethod("iup handle", "__index", ihandle_gettable) +iupSetMethod("iup handle", "__newindex", ihandle_settable) +iupSetMethod("iup handle", "__tostring", ihandle_tostring) +iupSetMethod("iup handle", "__eq", ihandle_compare) -- implemented in C + + +------------------------------------------------------------------------------ +-- Utilities +------------------------------------------------------------------------------ + +function ihandle_setname(v) -- used also by radio and zbox + local name = GetName(v) + if not name then + local autoname = string.format("_IUPLUA_NAME(%s)", tostring(v)) + SetHandle(autoname, v) + return autoname + end + return name +end + +function iupRegisterWidget(ctrl) -- called by all the controls initialization functions + iup[ctrl.nick] = function(arg) + return ctrl:constructor(arg) + end +end + +function RegisterHandle(handle, typename) + + iupSetClass(handle, "iup handle") + + local object = iupGetWidget(handle) + if not object then + + local class = iup[string.upper(typename)] + if not class then + class = WIDGET + end + + local object = { parent=class, handle=handle } + iupSetClass(object, "iup widget") + iupSetWidget(handle, object) + end + + return handle +end + +------------------------------------------------------------------------------ +-- Widget class (top class) +------------------------------------------------------------------------------ + +WIDGET = { + callback = {} +} + +function WIDGET.show(object) + Show(object.handle) +end + +function WIDGET.hide(object) + Hide(object.handle) +end + +function WIDGET.map(object) + Map(object.handle) +end + +function WIDGET.constructor(class, arg) + local handle = class:createElement(arg) + local object = { + parent = class, + handle = handle + } + iupSetClass(handle, "iup handle") + iupSetClass(object, "iup widget") + iupSetWidget(handle, object) + object:setAttributes(arg) + return handle +end + +function WIDGET.setAttributes(object, arg) + local handle = object.handle + for i,v in pairs(arg) do + if type(i) == "number" and iupGetClass(v) == "iup handle" then + -- We should not set this or other elements (such as iuptext) + -- will erroneosly inherit it + rawset(object, i, v) + else + -- this will call settable metamethod + handle[i] = v + end + end +end + +-- all the objects in the hierarchy must be "iup widget" +-- Must repeat this call for every new widget +iupSetClass(WIDGET, "iup widget") + + +------------------------------------------------------------------------------ +-- Box class (inherits from WIDGET) +------------------------------------------------------------------------------ + +BOX = { + parent = WIDGET +} + +function BOX.setAttributes(object, arg) + local handle = rawget(object, "handle") + local n = #arg + for i = 1, n do + if iupGetClass(arg[i]) == "iup handle" then + Append(handle, arg[i]) + end + end + WIDGET.setAttributes(object, arg) +end + +iupSetClass(BOX, "iup widget") + + +------------------------------------------------------------------------------ +-- Compatibility functions. +------------------------------------------------------------------------------ + +error_message_popup = nil + +function _ERRORMESSAGE(err,traceback) + err = err..(traceback or "") + if (error_message_popup) then + error_message_popup.value = err + else + local bt = button{title="Ok", size="60", action="error_message_popup = nil; return iup.CLOSE"} + local ml = multiline{expand="YES", readonly="YES", value=err, size="300x150"} + local vb = vbox{ml, bt; alignment="ACENTER", margin="10x10", gap="10"} + local dg = dialog{vb; title="Error Message",defaultesc=bt,defaultenter=bt,startfocus=bt} + error_message_popup = ml + dg:popup(CENTER, CENTER) + dg:destroy() + error_message_popup = nil + end +end + +pack = function (...) return arg end + +function protectedcall_(f, err) + if not f then + _ERRORMESSAGE(err) + return + end + local ret = pack(pcall(f)) + if not ret[1] then + _ERRORMESSAGE(ret[2]) + return + else + table.remove(ret, 1) + return unpack(ret) + end +end + +function dostring(s) return protectedcall_(loadstring(s)) end +function dofile(f) return protectedcall_(loadfile(f)) end + +function RGB(r, g, b) + return string.format("%d %d %d", 255*r, 255*g, 255*b) +end + +-- This will allow both names to be used in the same application +-- also will allow static linking to work with require +if _G.package then + _G.package.loaded["iuplua"] = iup + _G.package.loaded["iuplua51"] = iup + iup._M = iup + iup._PACKAGE = "iuplua" +end diff --git a/iup/srclua5/iuplua5.def b/iup/srclua5/iuplua5.def new file mode 100755 index 0000000..78b2a6f --- /dev/null +++ b/iup/srclua5/iuplua5.def @@ -0,0 +1,27 @@ +EXPORTS + iuplua_open + iuplua_close + iuplua_plugstate + iuplua_getstate + iuplua_checkihandle + iuplua_checkihandle_array + iuplua_call + iuplua_call_rs + iuplua_call_raw + iuplua_pushihandle + iuplua_pushihandle_raw + iuplua_dofile + iuplua_dostring + iupkey_open + iuplua_returnEnv + iuplua_changeEnv + iuplua_opencall_internal + luaopen_iuplua + luaopen_iuplua51 + iuplua_register + iuplua_regstring + iuplua_checkstring_array + iuplua_checkint_array + iuplua_call_start + iuplua_register_cb + \ No newline at end of file diff --git a/iup/srclua5/iuplua51.dep b/iup/srclua5/iuplua51.dep new file mode 100644 index 0000000..ed11fe6 --- /dev/null +++ b/iup/srclua5/iuplua51.dep @@ -0,0 +1,177 @@ +$(OBJDIR)/iuplua.o: iuplua.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../src/iup_str.h ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iuplua.h il.h loh/iuplua_le64.loh \ + loh/constants_le64.loh +$(OBJDIR)/iuplua_api.o: iuplua_api.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iuplua.h il.h ../src/iup_attrib.h \ + ../src/iup_globalattrib.h ../src/iup_object.h ../src/iup_class.h \ + ../src/iup_table.h ../src/iup_classbase.h ../src/iup_str.h +$(OBJDIR)/il_tree_aux.o: il_tree_aux.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcontrols.h ../include/iuplua.h il.h \ + il_controls.h +$(OBJDIR)/il_scanf.o: il_scanf.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h ../src/iup_str.h \ + ../src/iup_predial.h +$(OBJDIR)/il_getparam.o: il_getparam.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h il_controls.h +$(OBJDIR)/il_getcolor.o: il_getcolor.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h il_controls.h +$(OBJDIR)/il_button.o: il_button.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/button_le64.loh +$(OBJDIR)/il_canvas.o: il_canvas.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/canvas_le64.loh +$(OBJDIR)/il_dialog.o: il_dialog.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/dialog_le64.loh +$(OBJDIR)/il_colordlg.o: il_colordlg.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/colordlg_le64.loh +$(OBJDIR)/il_clipboard.o: il_clipboard.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/clipboard_le64.loh +$(OBJDIR)/il_filedlg.o: il_filedlg.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/filedlg_le64.loh +$(OBJDIR)/il_fill.o: il_fill.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/fill_le64.loh +$(OBJDIR)/il_frame.o: il_frame.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/frame_le64.loh +$(OBJDIR)/il_hbox.o: il_hbox.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/hbox_le64.loh +$(OBJDIR)/il_normalizer.o: il_normalizer.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/normalizer_le64.loh +$(OBJDIR)/il_item.o: il_item.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/item_le64.loh +$(OBJDIR)/il_image.o: il_image.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/image_le64.loh +$(OBJDIR)/il_imagergb.o: il_imagergb.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/imagergb_le64.loh +$(OBJDIR)/il_imagergba.o: il_imagergba.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/imagergba_le64.loh +$(OBJDIR)/il_label.o: il_label.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/label_le64.loh +$(OBJDIR)/il_menu.o: il_menu.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/menu_le64.loh +$(OBJDIR)/il_multiline.o: il_multiline.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/multiline_le64.loh +$(OBJDIR)/il_list.o: il_list.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/list_le64.loh +$(OBJDIR)/il_separator.o: il_separator.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/separator_le64.loh +$(OBJDIR)/il_user.o: il_user.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/user_le64.loh +$(OBJDIR)/il_submenu.o: il_submenu.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/submenu_le64.loh +$(OBJDIR)/il_text.o: il_text.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/text_le64.loh +$(OBJDIR)/il_toggle.o: il_toggle.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/toggle_le64.loh +$(OBJDIR)/il_vbox.o: il_vbox.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/vbox_le64.loh +$(OBJDIR)/il_zbox.o: il_zbox.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/zbox_le64.loh +$(OBJDIR)/il_timer.o: il_timer.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/timer_le64.loh +$(OBJDIR)/il_sbox.o: il_sbox.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/sbox_le64.loh +$(OBJDIR)/il_spin.o: il_spin.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/spin_le64.loh +$(OBJDIR)/il_spinbox.o: il_spinbox.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/spinbox_le64.loh +$(OBJDIR)/il_cbox.o: il_cbox.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/cbox_le64.loh +$(OBJDIR)/il_messagedlg.o: il_messagedlg.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/messagedlg_le64.loh +$(OBJDIR)/il_radio.o: il_radio.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/radio_le64.loh +$(OBJDIR)/il_val.o: il_val.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/val_le64.loh +$(OBJDIR)/il_tabs.o: il_tabs.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/tabs_le64.loh +$(OBJDIR)/il_fontdlg.o: il_fontdlg.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/fontdlg_le64.loh +$(OBJDIR)/il_tree.o: il_tree.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/tree_le64.loh +$(OBJDIR)/il_progressbar.o: il_progressbar.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h il.h loh/progressbar_le64.loh diff --git a/iup/srclua5/iuplua_api.c b/iup/srclua5/iuplua_api.c new file mode 100755 index 0000000..8673442 --- /dev/null +++ b/iup/srclua5/iuplua_api.c @@ -0,0 +1,874 @@ +/** \file +* \brief IUP binding for Lua 5. +* +* See Copyright Notice in "iup.h" +*/ + +#include +#include +#include + +#include "iup.h" +#include "iupkey.h" + +#include +#include + +#include "iuplua.h" +#include "il.h" + +#include "iup_attrib.h" +#include "iup_globalattrib.h" +#include "iup_object.h" +#include "iup_str.h" + + +static int SaveImageAsText(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L, 1); + const char *file_name = luaL_checkstring(L, 2); + const char *format = luaL_checkstring(L, 3); + const char *name = luaL_optstring(L, 4, NULL); + lua_pushboolean(L, IupSaveImageAsText(ih, file_name, format, name)); + return 1; +} + +static int Reparent(lua_State *L) +{ + lua_pushnumber(L, IupReparent(iuplua_checkihandle(L,1), + iuplua_checkihandle(L,2))); + return 1; +} + +static int Insert(lua_State *L) +{ + iuplua_pushihandle(L, IupInsert(iuplua_checkihandle(L,1), + iuplua_checkihandleornil(L,2), + iuplua_checkihandle(L,3))); + return 1; +} + +static int Append(lua_State *L) +{ + iuplua_pushihandle(L, IupAppend(iuplua_checkihandle(L,1), + iuplua_checkihandle(L,2))); + return 1; +} + +static int Destroy(lua_State *L) +{ + Ihandle* ih = iuplua_checkihandle(L,1); + iuplua_removeihandle(L, ih); + IupDestroy(ih); + return 0; +} + +static int Detach(lua_State *L) +{ + IupDetach(iuplua_checkihandle(L,1)); + return 0; +} + +static int Flush(lua_State *L) +{ + (void)L; /* not used */ + IupFlush(); + return 0; +} + +static int Version(lua_State *L) +{ + lua_pushstring(L, IupVersion()); + return 1; +} + +static int GetAttributeData (lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + const char *name = luaL_checkstring(L,2); + const char *value = IupGetAttribute(ih, name); + if (!value) + lua_pushnil(L); + else + lua_pushlightuserdata(L, (void*)value); + return 1; +} + +static int GetAttribute (lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + const char *name = luaL_checkstring(L,2); + const char *value = IupGetAttribute(ih, name); + if (!value || iupAttribIsInternal(name)) + lua_pushnil(L); + else + { + if (iupAttribIsPointer(ih, name)) + { + if (iupObjectCheck((Ihandle*)value)) + iuplua_pushihandle(L, (Ihandle*)value); + else + lua_pushlightuserdata(L, (void*)value); + } + else + lua_pushstring(L,value); + } + return 1; +} + +static int GetAttributes(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + const char *value = IupGetAttributes(ih); + lua_pushstring(L,value); + return 1; +} + +static int GetAllDialogs(lua_State *L) +{ + int i, max_n = luaL_checkint(L,1); + char **names = (char **) malloc (max_n * sizeof(char *)); + int n = IupGetAllDialogs(names, max_n); + lua_newtable(L); + for (i=0; i +#include + +#include +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" + +#include +#include +#include + + +static void *cdiup_checkdata(lua_State *L, int param) +{ + return iuplua_checkihandle(L, param); +} + +static cdluaContext cdluaiupctx = +{ + 0, + "IUP", + cdContextIup, + cdiup_checkdata, + NULL, + 0 +}; + +int cdluaiup_open (lua_State *L) +{ + cdluaLuaState* cdL = cdlua_getstate(L); + lua_pushstring(L, "cd"); + lua_gettable(L, LUA_GLOBALSINDEX); /* leave "cd" table at the top of the stack */ + cdlua_addcontext(L, cdL, &cdluaiupctx); + return 1; +} + +int luaopen_iupluacd(lua_State* L) +{ + return cdluaiup_open(L); +} + +int luaopen_iupluacd51(lua_State* L) +{ + return cdluaiup_open(L); +} diff --git a/iup/srclua5/iuplua_controls.c b/iup/srclua5/iuplua_controls.c new file mode 100755 index 0000000..bd961bf --- /dev/null +++ b/iup/srclua5/iuplua_controls.c @@ -0,0 +1,55 @@ +/** \file + * \brief Bindig of iupcontrols to Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +#include "iuplua.h" +#include "iupluacontrols.h" +#include "il.h" +#include "il_controls.h" + +int iupcontrolslua_open(lua_State * L) +{ + if (iuplua_opencall_internal(L)) + IupControlsOpen(); + + iuplua_changeEnv(L); + + iupgaugelua_open(L); + iupmatrixlua_open(L); + iupmasklua_open(L); + iupdiallua_open(L); + iupcolorbrowserlua_open(L); + iupcellslua_open(L); + iupcolorbarlua_open(L); + + iuplua_returnEnv(L); + + return 0; +} + +int iupcontrolslua_close(lua_State * L) +{ + if (iuplua_opencall_internal(L)) + IupControlsClose(); + return 0; +} + +/* obligatory to use require"iupluacontrols" */ +int luaopen_iupluacontrols(lua_State* L) +{ + return iupcontrolslua_open(L); +} + +/* obligatory to use require"iupluacontrols51" */ +int luaopen_iupluacontrols51(lua_State* L) +{ + return iupcontrolslua_open(L); +} diff --git a/iup/srclua5/iuplua_glcanvas.c b/iup/srclua5/iuplua_glcanvas.c new file mode 100755 index 0000000..c50ba8f --- /dev/null +++ b/iup/srclua5/iuplua_glcanvas.c @@ -0,0 +1,82 @@ +/** \file + * \brief iupgl binding for Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iupgl.h" + +#include "iuplua.h" +#include "iupluagl.h" +#include "il.h" + +#ifdef _WIN32 +#include +#endif +#include + +static int GLIsCurrent(lua_State *L) +{ + lua_pushboolean(L, IupGLIsCurrent(iuplua_checkihandle(L,1))); + return 1; +} + +static int GLMakeCurrent(lua_State *L) +{ + IupGLMakeCurrent(iuplua_checkihandle(L,1)); + + iuplua_changeEnv(L); + iuplua_regstring(L, (const char*)glGetString(GL_VENDOR), "GL_VENDOR"); + iuplua_regstring(L, (const char*)glGetString(GL_RENDERER), "GL_RENDERER"); + iuplua_regstring(L, (const char*)glGetString(GL_VERSION), "GL_VERSION"); + iuplua_returnEnv(L); + + return 0; +} + +static int GLSwapBuffers(lua_State *L) +{ + IupGLSwapBuffers(iuplua_checkihandle(L,1)); + return 0; +} + +static int GLPalette(lua_State *L) +{ + Ihandle *self = iuplua_checkihandle(L,1); + int index = luaL_checkint(L,2); + float r = (float)luaL_checknumber(L,3); + float g = (float)luaL_checknumber(L,4); + float b = (float)luaL_checknumber(L,5); + IupGLPalette(self, index, r, g, b); + return 0; +} + +static int GLUseFont(lua_State *L) +{ + Ihandle *self = iuplua_checkihandle(L,1); + int first = luaL_checkint(L,2); + int count = luaL_checkint(L,3); + int list_base = luaL_checkint(L,4); + IupGLUseFont(self, first, count, list_base); + return 0; +} + +static int GLWait(lua_State *L) +{ + IupGLWait(luaL_checkint(L,1)); + return 0; +} + +void iuplua_glcanvasfuncs_open (lua_State *L) +{ + iuplua_register(L, GLSwapBuffers, "GLSwapBuffers"); + iuplua_register(L, GLIsCurrent, "GLIsCurrent"); + iuplua_register(L, GLMakeCurrent, "GLMakeCurrent"); + iuplua_register(L, GLPalette, "GLPalette"); + iuplua_register(L, GLUseFont, "GLUseFont"); + iuplua_register(L, GLWait, "GLWait"); +} diff --git a/iup/srclua5/iuplua_im.c b/iup/srclua5/iuplua_im.c new file mode 100755 index 0000000..b700e1a --- /dev/null +++ b/iup/srclua5/iuplua_im.c @@ -0,0 +1,54 @@ +/** \file + * \brief IULUA core - Bindig of iup to Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include "iup.h" +#include "iupim.h" + +#include +#include + +#include "iuplua.h" +#include "iupluaim.h" +#include "il.h" + +static int SaveImage(lua_State *L) +{ + Ihandle *image = iuplua_checkihandle(L,1); + const char *filename = luaL_checkstring(L, 2); + const char *format = luaL_checkstring(L, 3); + lua_pushboolean(L, IupSaveImage(image, filename, format)); + return 1; +} + +static int LoadImage(lua_State *L) +{ + const char *filename = luaL_checkstring(L, 1); + Ihandle* image = IupLoadImage(filename); + iuplua_plugstate(L, image); + iuplua_pushihandle(L, image); + return 1; +} + +int iupimlua_open(lua_State *L) +{ + iuplua_changeEnv(L); + iuplua_register(L, LoadImage, "LoadImage"); + iuplua_register(L, SaveImage, "SaveImage"); + iuplua_returnEnv(L); + return 0; /* nothing in stack */ +} + +/* obligatory to use require"iupluaim" */ +int luaopen_iupluaim(lua_State* L) +{ + return iupimlua_open(L); +} + +/* obligatory to use require"iupluaim51" */ +int luaopen_iupluaim51(lua_State* L) +{ + return iupimlua_open(L); +} diff --git a/iup/srclua5/iuplua_imglib.c b/iup/srclua5/iuplua_imglib.c new file mode 100755 index 0000000..bece6d5 --- /dev/null +++ b/iup/srclua5/iuplua_imglib.c @@ -0,0 +1,44 @@ +/** \file + * \brief Iup Image Library Lua 5 Binding + * + * See Copyright Notice in cd.h + */ + +#include +#include + +#include +#include + +#include "iup.h" +#include "iuplua.h" +#include "iupcontrols.h" +#include "il.h" + + +static int imagelibopen(lua_State *L) +{ + (void)L; + IupImageLibOpen(); + return 0; +} + +static int iupluaimglib_open (lua_State *L) +{ + IupImageLibOpen(); + + iuplua_changeEnv(L); + iuplua_register(L, imagelibopen, "ImageLibOpen"); + iuplua_returnEnv(L); + return 0; /* nothing in stack */ +} + +int luaopen_iupluaimglib(lua_State* L) +{ + return iupluaimglib_open(L); +} + +int luaopen_iupluaimglib51(lua_State* L) +{ + return iupluaimglib_open(L); +} diff --git a/iup/srclua5/iuplua_pplot.c b/iup/srclua5/iuplua_pplot.c new file mode 100755 index 0000000..08b04bd --- /dev/null +++ b/iup/srclua5/iuplua_pplot.c @@ -0,0 +1,159 @@ +/** \file + * \brief pplot binding for Lua 5. + * + * See Copyright Notice in "iup.h" + */ + +#include +#include + +#include "iup.h" +#include "iup_pplot.h" + +#include +#include + +#include "iuplua.h" +#include "iuplua_pplot.h" +#include "il.h" + + +static int pplot_edit_cb(Ihandle *self, int p0, int p1, float p2, float p3, float *p4, float *p5) +{ + int ret; + lua_State *L = iuplua_call_start(self, "edit_cb"); + lua_pushnumber(L, p0); + lua_pushnumber(L, p1); + lua_pushnumber(L, p2); + lua_pushnumber(L, p3); + ret = iuplua_call_raw(L, 4+2, LUA_MULTRET); /* 4 args + 2 args(errormsg, handle), variable number of returns */ + if (ret || lua_isnil(L, -1)) + return IUP_DEFAULT; + ret = (int)lua_tonumber(L,-1); + + if (ret == IUP_IGNORE) + { + lua_pop(L, 1); + return IUP_IGNORE; + } + + *p4 = (float)lua_tonumber(L, -3); + *p5 = (float)lua_tonumber(L, -2); + lua_pop(L, 1); + return IUP_DEFAULT; +} + +static int pplot_postdraw_cb(Ihandle *self, cdCanvas* cnv) +{ + lua_State *L = iuplua_call_start(self, "postdraw_cb"); + cdlua_pushcanvas(L, cnv); + return iuplua_call(L, 1); +} + +static int pplot_predraw_cb(Ihandle *self, cdCanvas* cnv) +{ + lua_State *L = iuplua_call_start(self, "predraw_cb"); + cdlua_pushcanvas(L, cnv); + return iuplua_call(L, 1); +} + +static int PPlotBegin(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + IupPPlotBegin(ih, luaL_checkint(L,2)); + return 0; +} + +static int PPlotAdd(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + IupPPlotAdd(ih, (float)luaL_checknumber(L,2), (float)luaL_checknumber(L,3)); + return 0; +} + +static int PPlotAddStr(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + IupPPlotAddStr(ih, luaL_checkstring(L,2), (float)luaL_checknumber(L,3)); + return 0; +} + +static int PPlotEnd(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + int ret = IupPPlotEnd(ih); + lua_pushnumber(L, ret); + return 1; +} + +static int PPlotInsertStr(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + IupPPlotInsertStr(ih, luaL_checkint(L,2), luaL_checkint(L,3), luaL_checkstring(L,4), (float)luaL_checknumber(L,5)); + return 0; +} + +static int PPlotInsert(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + IupPPlotInsert(ih, luaL_checkint(L,2), luaL_checkint(L,3), (float)luaL_checknumber(L,4), (float)luaL_checknumber(L,5)); + return 0; +} + +static int PPlotTransform(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + int ix, iy; + IupPPlotTransform(ih, (float)luaL_checknumber(L,2), (float)luaL_checknumber(L,3), &ix, &iy); + lua_pushnumber(L, ix); + lua_pushnumber(L, iy); + return 2; +} + +static int PPlotPaintTo(lua_State *L) +{ + Ihandle *ih = iuplua_checkihandle(L,1); + IupPPlotPaintTo(ih, cdlua_checkcanvas(L,2)); + return 0; +} + +void iuplua_pplotfuncs_open (lua_State *L) +{ + iuplua_register_cb(L, "EDIT_CB", (lua_CFunction)pplot_edit_cb, "pplot"); + iuplua_register_cb(L, "PREDRAW_CB", (lua_CFunction)pplot_predraw_cb, NULL); + iuplua_register_cb(L, "POSTDRAW_CB", (lua_CFunction)pplot_postdraw_cb, NULL); + + iuplua_register(L, PPlotBegin ,"PPlotBegin"); + iuplua_register(L, PPlotAdd ,"PPlotAdd"); + iuplua_register(L, PPlotAddStr ,"PPlotAddStr"); + iuplua_register(L, PPlotEnd ,"PPlotEnd"); + iuplua_register(L, PPlotInsertStr ,"PPlotInsertStr"); + iuplua_register(L, PPlotInsert ,"PPlotInsert"); + iuplua_register(L, PPlotTransform ,"PPlotTransform"); + iuplua_register(L, PPlotPaintTo ,"PPlotPaintTo"); +} + +int iuppplotlua_open(lua_State * L); + +int iup_pplotlua_open(lua_State * L) +{ + if (iuplua_opencall_internal(L)) + IupPPlotOpen(); + + iuplua_changeEnv(L); + iuppplotlua_open(L); + iuplua_returnEnv(L); + return 0; +} + +/* obligatory to use require"iuplua_pplot" */ +int luaopen_iuplua_pplot(lua_State* L) +{ + return iup_pplotlua_open(L); +} + +/* obligatory to use require"iuplua_pplot51" */ +int luaopen_iuplua_pplot51(lua_State* L) +{ + return iup_pplotlua_open(L); +} diff --git a/iup/srclua5/iuplua_pplot5.def b/iup/srclua5/iuplua_pplot5.def new file mode 100755 index 0000000..3b2ce41 --- /dev/null +++ b/iup/srclua5/iuplua_pplot5.def @@ -0,0 +1,4 @@ +EXPORTS + iup_pplotlua_open + luaopen_iuplua_pplot + luaopen_iuplua_pplot51 diff --git a/iup/srclua5/iuplua_pplot51.dep b/iup/srclua5/iuplua_pplot51.dep new file mode 100644 index 0000000..ed004dc --- /dev/null +++ b/iup/srclua5/iuplua_pplot51.dep @@ -0,0 +1,11 @@ +$(OBJDIR)/iuplua_pplot.o: iuplua_pplot.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iup_pplot.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdlua.h ../include/iuplua.h \ + ../include/iuplua_pplot.h il.h +$(OBJDIR)/il_pplot.o: il_pplot.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iup_pplot.h il.h \ + loh/pplot_le64.loh diff --git a/iup/srclua5/iupluacd5.def b/iup/srclua5/iupluacd5.def new file mode 100755 index 0000000..c56c231 --- /dev/null +++ b/iup/srclua5/iupluacd5.def @@ -0,0 +1,4 @@ +EXPORTS + cdluaiup_open + luaopen_iupluacd + luaopen_iupluacd51 \ No newline at end of file diff --git a/iup/srclua5/iupluacd51.dep b/iup/srclua5/iupluacd51.dep new file mode 100644 index 0000000..1378e85 --- /dev/null +++ b/iup/srclua5/iupluacd51.dep @@ -0,0 +1,6 @@ +$(OBJDIR)/iuplua_cd.o: iuplua_cd.c ../../cd/include/cd.h ../../cd/include/cdiup.h \ + ../../lua5.1/include/lua.h ../../lua5.1/include/luaconf.h \ + ../../lua5.1/include/lauxlib.h ../../lua5.1/include/lua.h \ + ../include/iup.h ../include/iupkey.h ../include/iupdef.h \ + ../include/iuplua.h ../../cd/include/cdlua.h \ + ../../cd/include/cdluaiup.h ../../cd/include/cdlua5_private.h diff --git a/iup/srclua5/iupluacontrols5.def b/iup/srclua5/iupluacontrols5.def new file mode 100755 index 0000000..0317d30 --- /dev/null +++ b/iup/srclua5/iupluacontrols5.def @@ -0,0 +1,6 @@ +EXPORTS + iupcontrolslua_open + iupcontrolslua_close + luaopen_iupluacontrols + luaopen_iupluacontrols51 + \ No newline at end of file diff --git a/iup/srclua5/iupluacontrols51.dep b/iup/srclua5/iupluacontrols51.dep new file mode 100644 index 0000000..d020fd9 --- /dev/null +++ b/iup/srclua5/iupluacontrols51.dep @@ -0,0 +1,46 @@ +$(OBJDIR)/iuplua_controls.o: iuplua_controls.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lualib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcontrols.h ../include/iuplua.h \ + ../include/iupluacontrols.h il.h il_controls.h +$(OBJDIR)/il_mask.o: il_mask.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupmask.h ../include/iuplua.h il.h \ + il_controls.h +$(OBJDIR)/il_matrix_aux.o: il_matrix_aux.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcontrols.h ../../cd/include/cd.h \ + ../../cd/include/cd_old.h ../../cd/include/cdlua.h ../include/iuplua.h \ + il.h il_controls.h +$(OBJDIR)/il_dial.o: il_dial.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \ + loh/dial_le64.loh +$(OBJDIR)/il_gauge.o: il_gauge.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \ + loh/gauge_le64.loh +$(OBJDIR)/il_colorbrowser.o: il_colorbrowser.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \ + loh/colorbrowser_le64.loh +$(OBJDIR)/il_colorbar.o: il_colorbar.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \ + loh/colorbar_le64.loh +$(OBJDIR)/il_matrix.o: il_matrix.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \ + loh/matrix_le64.loh +$(OBJDIR)/il_cells.o: il_cells.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h \ + loh/cells_le64.loh diff --git a/iup/srclua5/iupluagl5.def b/iup/srclua5/iupluagl5.def new file mode 100755 index 0000000..577d9cf --- /dev/null +++ b/iup/srclua5/iupluagl5.def @@ -0,0 +1,5 @@ +EXPORTS + iupgllua_open + luaopen_iupluagl + luaopen_iupluagl51 + \ No newline at end of file diff --git a/iup/srclua5/iupluagl51.dep b/iup/srclua5/iupluagl51.dep new file mode 100644 index 0000000..592207a --- /dev/null +++ b/iup/srclua5/iupluagl51.dep @@ -0,0 +1,10 @@ +$(OBJDIR)/iuplua_glcanvas.o: iuplua_glcanvas.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupgl.h ../include/iuplua.h \ + ../include/iupluagl.h il.h +$(OBJDIR)/il_glcanvas.o: il_glcanvas.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupgl.h il.h \ + loh/glcanvas_le64.loh diff --git a/iup/srclua5/iupluaim5.def b/iup/srclua5/iupluaim5.def new file mode 100755 index 0000000..063df5a --- /dev/null +++ b/iup/srclua5/iupluaim5.def @@ -0,0 +1,5 @@ +EXPORTS + iupimlua_open + luaopen_iupluaim + luaopen_iupluaim51 + \ No newline at end of file diff --git a/iup/srclua5/iupluaim51.dep b/iup/srclua5/iupluaim51.dep new file mode 100644 index 0000000..488ebfa --- /dev/null +++ b/iup/srclua5/iupluaim51.dep @@ -0,0 +1,5 @@ +$(OBJDIR)/iuplua_im.o: iuplua_im.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupim.h ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iuplua.h ../include/iupluaim.h \ + il.h diff --git a/iup/srclua5/iupluaimglib5.def b/iup/srclua5/iupluaimglib5.def new file mode 100755 index 0000000..134abb7 --- /dev/null +++ b/iup/srclua5/iupluaimglib5.def @@ -0,0 +1,4 @@ +EXPORTS + luaopen_iupluaimglib + luaopen_iupluaimglib51 + \ No newline at end of file diff --git a/iup/srclua5/iupluaimglib51.dep b/iup/srclua5/iupluaimglib51.dep new file mode 100644 index 0000000..cbbc352 --- /dev/null +++ b/iup/srclua5/iupluaimglib51.dep @@ -0,0 +1,4 @@ +$(OBJDIR)/iuplua_imglib.o: iuplua_imglib.c ../../lua5.1/include/lua.h \ + ../../lua5.1/include/luaconf.h ../../lua5.1/include/lauxlib.h \ + ../../lua5.1/include/lua.h ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iuplua.h ../include/iupcontrols.h il.h diff --git a/iup/srclua5/iupluaole5.def b/iup/srclua5/iupluaole5.def new file mode 100755 index 0000000..ab781ed --- /dev/null +++ b/iup/srclua5/iupluaole5.def @@ -0,0 +1,5 @@ +EXPORTS + iupolelua_open + luaopen_iupluaole + luaopen_iupluaole51 + \ No newline at end of file diff --git a/iup/srclua5/iupole.mak b/iup/srclua5/iupole.mak new file mode 100755 index 0000000..6a3f9ec --- /dev/null +++ b/iup/srclua5/iupole.mak @@ -0,0 +1,23 @@ +PROJNAME = iup +LIBNAME = iupluaole51 +OPT = YES +DEF_FILE = iupluaole5.def + +IUP := .. + +DEFINES = IUPLUA_USELOH + +USE_IUPLUA = Yes +LIBS = iupole +USE_LUA51 = Yes +NO_LUALINK = Yes + +LOHDIR = loh +SRCLUA = olecontrol.lua +GC = $(addsuffix .c, $(basename $(SRCLUA))) +GC := $(addprefix il_, $(GC)) + +$(GC) : il_%.c : %.lua generator.lua + $(LUABIN) generator.lua $< + +SRC = $(GC) diff --git a/iup/srclua5/label.lua b/iup/srclua5/label.lua new file mode 100755 index 0000000..11894a6 --- /dev/null +++ b/iup/srclua5/label.lua @@ -0,0 +1,16 @@ +------------------------------------------------------------------------------ +-- Label class +------------------------------------------------------------------------------ +local ctrl = { + nick = "label", + parent = WIDGET, + creation = "S", + callback = {} +} + +function ctrl.createElement(class, arg) + return Label(arg.title) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/list.lua b/iup/srclua5/list.lua new file mode 100755 index 0000000..5c927f2 --- /dev/null +++ b/iup/srclua5/list.lua @@ -0,0 +1,22 @@ +------------------------------------------------------------------------------ +-- List class +------------------------------------------------------------------------------ +local ctrl = { + nick = "list", + parent = WIDGET, + creation = "-", + callback = { + action = "snn", + multiselect_cb = "s", + edit_cb = "ns", + dropdown_cb = "n", + dblclick_cb = "ns", + } +} + +function ctrl.createElement(class, arg) + return List() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/loh/button.loh b/iup/srclua5/loh/button.loh new file mode 100755 index 0000000..9ffb6aa --- /dev/null +++ b/iup/srclua5/loh/button.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/button.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/button.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64, 98,117,116, +116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, + 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0, 0, + 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0, +128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, + 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 98,117,116,116,111, +110, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 3, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 7, 0, 0, 0, 66,117,116,116,111,110, 0, 4, 6, 0, 0, 0, +116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14, 0, + 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/button_be32.loh b/iup/srclua5/loh/button_be32.loh new file mode 100755 index 0000000..d7c1b69 --- /dev/null +++ b/iup/srclua5/loh/button_be32.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/button_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/button_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64, 98,117,116, +116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 0, 0, 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9, +130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9, 0, 0, 0,100, +132,128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, + 0, 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, + 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 7, 98,117,116,116,111, +110, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, + 4, 0, 0, 0, 3, 83, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, + 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 2, 0, 4, 0, 0, 0, 5, 0, + 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, + 0, 0, 2, 4, 0, 0, 0, 7, 66,117,116,116,111,110, 0, 4, 0, 0, 0, 6, +116,105,116,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, + 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, + 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, + 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, + 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/button_be64.loh b/iup/srclua5/loh/button_be64.loh new file mode 100755 index 0000000..50b2ba6 --- /dev/null +++ b/iup/srclua5/loh/button_be64.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/button_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/button_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64, 98,117,116,116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 66,117,116,116,111,110, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/button_le64.loh b/iup/srclua5/loh/button_le64.loh new file mode 100755 index 0000000..8c74526 --- /dev/null +++ b/iup/srclua5/loh/button_le64.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/button_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/button_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64, 98,117,116,116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 66,117,116,116,111,110, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/button_le64w.loh b/iup/srclua5/loh/button_le64w.loh new file mode 100755 index 0000000..21840c9 --- /dev/null +++ b/iup/srclua5/loh/button_le64w.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/button_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/button_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64, 98,117,116,116,111,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 66,117,116,116,111,110, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/button_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/canvas.loh b/iup/srclua5/loh/canvas.loh new file mode 100755 index 0000000..2533ce8 --- /dev/null +++ b/iup/srclua5/loh/canvas.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/canvas.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/canvas.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64, 99, 97,110, +118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, + 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133, + 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, 73, 64, 68,138, + 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1, 30, 0,128, 0, + 31, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 99, + 97,110,118, 97,115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, + 0, 0,102,102, 0, 4, 10, 0, 0, 0, 98,117,116,116,111,110, 95, 99, 98, 0, + 4, 6, 0, 0, 0,110,110,110,110,115, 0, 4, 15, 0, 0, 0,101,110,116,101, +114,119,105,110,100,111,119, 95, 99, 98, 0, 4, 1, 0, 0, 0, 0, 4, 15, 0, + 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0, + 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0, 0,110,110,115, + 0, 4, 10, 0, 0, 0,114,101,115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0, + 0,110,110, 0, 4, 10, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4, + 4, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0,107,101,121,112,114,101,115, +115, 95, 99, 98, 0, 4, 7, 0, 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0, + 0, 0,110, 0, 4, 9, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5, + 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0,109,100,105, 97, 99,116,105, +118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0, 0,102,111, 99,117,115, 95, 99, + 98, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, + 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 7, 0, 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 29, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, + 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, + 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 26, + 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/canvas_be32.loh b/iup/srclua5/loh/canvas_be32.loh new file mode 100755 index 0000000..7950cd4 --- /dev/null +++ b/iup/srclua5/loh/canvas_be32.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/canvas_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/canvas_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64, 99, 97,110, +118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 0, 0, 0, 29, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9, +130, 65, 64, 9, 0, 3, 0, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73, +134,195, 0, 73,135, 67,192, 73,136, 68, 64, 73,137, 68,192, 73,138, 68, 64, 73, +138,197,128, 73,139,198, 0, 73,140,195, 0, 73,141, 69,128, 73,131, 0, 64, 9, + 0, 0, 0,100,141,128, 64, 9, 0, 7, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, + 0, 7, 64, 69, 0, 0, 0,128, 0, 7,128,193, 1,128, 64, 92, 0,128, 0, 30, + 0, 0, 0, 31, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 7, 99, + 97,110,118, 97,115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116, +105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, + 0, 3,102,102, 0, 4, 0, 0, 0, 10, 98,117,116,116,111,110, 95, 99, 98, 0, + 4, 0, 0, 0, 6,110,110,110,110,115, 0, 4, 0, 0, 0, 15,101,110,116,101, +114,119,105,110,100,111,119, 95, 99, 98, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, + 0, 15,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 0, 0, + 0, 10,109,111,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 4,110,110,115, + 0, 4, 0, 0, 0, 10,114,101,115,105,122,101, 95, 99, 98, 0, 4, 0, 0, 0, + 3,110,110, 0, 4, 0, 0, 0, 10,115, 99,114,111,108,108, 95, 99, 98, 0, 4, + 0, 0, 0, 4,110,102,102, 0, 4, 0, 0, 0, 12,107,101,121,112,114,101,115, +115, 95, 99, 98, 0, 4, 0, 0, 0, 7,119,111,109, 95, 99, 98, 0, 4, 0, 0, + 0, 2,110, 0, 4, 0, 0, 0, 9,119,104,101,101,108, 95, 99, 98, 0, 4, 0, + 0, 0, 5,102,110,110,115, 0, 4, 0, 0, 0, 15,109,100,105, 97, 99,116,105, +118, 97,116,101, 95, 99, 98, 0, 4, 0, 0, 0, 9,102,111, 99,117,115, 95, 99, + 98, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 2, 0, 3, 0, 0, 0, + 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, + 1, 4, 0, 0, 0, 7, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, + 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, + 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, + 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, + 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, + 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 19, 0, 0, 0, 28, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/canvas_be64.loh b/iup/srclua5/loh/canvas_be64.loh new file mode 100755 index 0000000..2cdb93c --- /dev/null +++ b/iup/srclua5/loh/canvas_be64.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/canvas_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/canvas_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132, + 73, 0,195,133, 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, + 73, 64, 68,138, 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141, + 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0, + 92, 64, 0, 1, 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1, + 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99, +107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99, 97,110,118, 97,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,102,102, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, + 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, + 15, 0, 0, 0, 0, 0, 0, 0,101,110,116,101,114,119,105,110,100,111,119, 95, + 99, 98, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, + 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0, + 0, 0, 0, 0, 0,110,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101, +115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, + 4, 10, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0, 0, 0, 0, + 0,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,102,111, 99,117,115, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 19, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/canvas_le64.loh b/iup/srclua5/loh/canvas_le64.loh new file mode 100755 index 0000000..ad64990 --- /dev/null +++ b/iup/srclua5/loh/canvas_le64.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/canvas_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/canvas_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132, + 73, 0,195,133, 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, + 73, 64, 68,138, 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141, + 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0, + 92, 64, 0, 1, 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1, + 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99, +107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99, 97,110,118, 97,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,102,102, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, + 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, + 15, 0, 0, 0, 0, 0, 0, 0,101,110,116,101,114,119,105,110,100,111,119, 95, + 99, 98, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, + 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0, + 0, 0, 0, 0, 0,110,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101, +115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, + 4, 10, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0, 0, 0, 0, + 0,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,102,111, 99,117,115, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 19, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/canvas_le64w.loh b/iup/srclua5/loh/canvas_le64w.loh new file mode 100755 index 0000000..8712464 --- /dev/null +++ b/iup/srclua5/loh/canvas_le64w.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/canvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/canvas_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 0, 3, 0, 73, 0,194,131, 73,128,194,132, + 73, 0,195,133, 73, 0,195,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, + 73, 64, 68,138, 73,128,197,138, 73, 0,198,139, 73, 0,195,140, 73,128, 69,141, + 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0, + 92, 64, 0, 1, 69, 64, 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1, + 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99, +107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99, 97,110,118, 97,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,102,102, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, + 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, + 15, 0, 0, 0, 0, 0, 0, 0,101,110,116,101,114,119,105,110,100,111,119, 95, + 99, 98, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, + 0, 0,108,101, 97,118,101,119,105,110,100,111,119, 95, 99, 98, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,109,111,116,105,111,110, 95, 99, 98, 0, 4, 4, 0, 0, + 0, 0, 0, 0, 0,110,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101, +115,105,122,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, + 4, 10, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108, 95, 99, 98, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0,110,102,102, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,107,101,121,112,114,101,115,115, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,119,111,109, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0,119,104,101,101,108, 95, 99, 98, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,102,110,110,115, 0, 4, 15, 0, 0, 0, 0, 0, 0, + 0,109,100,105, 97, 99,116,105,118, 97,116,101, 95, 99, 98, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,102,111, 99,117,115, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 26, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 19, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/canvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/cbox.loh b/iup/srclua5/loh/cbox.loh new file mode 100755 index 0000000..23cd8e5 --- /dev/null +++ b/iup/srclua5/loh/cbox.loh @@ -0,0 +1,50 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/cbox.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/cbox.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64, 99, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, + 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128,194,132,100, 0, + 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, + 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, + 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 99, 98,111, +120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 2, 0, 0, 0,118, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, + 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, + 99, 0, 4,208, 0, 0, 0,115,116, 97,116,105, 99, 32,105,110,116, 32, 67, 98, +111,120,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10, + 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108,105,115,116, 32, 61, 32, +105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104, 97,110,100,108,101, 95, + 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 73,104, 97,110,100, +108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67, 98,111,120,118, 40,104,108,105, +115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, + 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95, +112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,104, + 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115,116, 41, 59, 10, 32, 32, +114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 32, 32, 0, 4, 14, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 0, 0, 25, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,192, 0, +128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, + 0, 0, 0, 67, 98,111,120,118, 0, 0, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 25, + 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/cbox.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/cbox_be32.loh b/iup/srclua5/loh/cbox_be32.loh new file mode 100755 index 0000000..b9bbb51 --- /dev/null +++ b/iup/srclua5/loh/cbox_be32.loh @@ -0,0 +1,52 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/cbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/cbox_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64, 99, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 20, 0, 1,192, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 0, 74,131, 0, 64, 9,131,194, 0, 9,132,194,128, 9,133,195, + 0, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0, + 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128, + 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, + 5, 99, 98,111,120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116, +105,111,110, 0, 4, 0, 0, 0, 2,118, 0, 4, 0, 0, 0, 9, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, + 0, 0, 10,105,117,112, 99, 98,111,120, 46,104, 0, 4, 0, 0, 0, 9,102,117, +110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 6, 67, 98,111,120,118, 0, 4, 0, + 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0, 0,208,115, +116, 97,116,105, 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95, + 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108, +101, 32, 42, 42,104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99, +104,101, 99,107,105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, + 32, 49, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, + 73,117,112, 67, 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105, +117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, + 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110, +100,108,101, 95,114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101, +101, 40,104,108,105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, + 59, 10,125, 10, 32, 32, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, + 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101, +116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 2, + 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,128, 0,192, 1, 0, 0,157, 0, 0, + 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 67, 98,111,120,118, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 21, 0, 0, 0, 26, 0, + 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, + 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 1, 0, + 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, + +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/cbox_be64.loh b/iup/srclua5/loh/cbox_be64.loh new file mode 100755 index 0000000..b75e9c3 --- /dev/null +++ b/iup/srclua5/loh/cbox_be64.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/cbox_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/cbox_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64, 99, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0, 99, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101,102,117,110, 99, 0, 4,208, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, + 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95, 83,116, 97,116, +101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42, +104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107, +105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67, + 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, + 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, + 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95, +114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108, +105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, + 32, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 98,111,120,118, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 25, + 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/cbox_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/cbox_le64.loh b/iup/srclua5/loh/cbox_le64.loh new file mode 100755 index 0000000..d4161cb --- /dev/null +++ b/iup/srclua5/loh/cbox_le64.loh @@ -0,0 +1,56 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/cbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/cbox_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64, 99, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 20, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128, +194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64, +128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 99, 98,111,120, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 10, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 99, 98,111,120, 46,104, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101,102,117,110, 99, 0, 4,208, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, + 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95, 83,116, 97,116, +101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42, +104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107, +105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67, + 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, + 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, + 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95, +114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108, +105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, + 32, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 98,111,120,118, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 21, + 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/cbox_le64w.loh b/iup/srclua5/loh/cbox_le64w.loh new file mode 100755 index 0000000..7320ebe --- /dev/null +++ b/iup/srclua5/loh/cbox_le64w.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/cbox_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/cbox_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64, 99, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0, 99, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 67, 98,111,120,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101,102,117,110, 99, 0, 4,208, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, + 99, 32,105,110,116, 32, 67, 98,111,120,118, 40,108,117, 97, 95, 83,116, 97,116, +101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42, +104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107, +105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 67, + 98,111,120,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, + 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, + 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95, +114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108, +105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, + 32, 32, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 98,111,120,118, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 20, 0, 0, 0, 25, + 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/cbox_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/cells.loh b/iup/srclua5/loh/cells.loh new file mode 100755 index 0000000..f424f00 --- /dev/null +++ b/iup/srclua5/loh/cells.loh @@ -0,0 +1,57 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/cells.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/cells.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64, 99,101,108, +108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 29, + 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133, 73, +128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73, 0, 67,137, 73, + 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9, 64, 0,139,100, + 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, + 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27, + 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 99,101, +108,108,115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 14, 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, + 0, 4, 8, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0,109, +111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6, 0, 0, 0,110, +110,110,110,115, 0, 4, 13, 0, 0, 0,115, 99,114,111,108,108,105,110,103, 95, + 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0,119,105,100,116, +104, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4, 10, 0, 0, 0,104,101,105, +103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0,110,108,105,110,101,115, 95, 99, + 98, 0, 4, 9, 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0, + 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0,118,115,112, 97,110, + 95, 99, 98, 0, 4, 8, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0, + 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 7, 0, 0, + 0,114,101,100,114, 97,119, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101, +116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, + 1, 0, 2, 2, 0, 0, 0, 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4, + 8, 0, 0, 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 89, 69, 83, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, + 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 0, 2, 0, 3, + 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, + 1, 0, 0, 0, 4, 6, 0, 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, + 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, + 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 17, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/cells_be32.loh b/iup/srclua5/loh/cells_be32.loh new file mode 100755 index 0000000..73e7cb0 --- /dev/null +++ b/iup/srclua5/loh/cells_be32.loh @@ -0,0 +1,57 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/cells_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64, 99,101,108, +108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 29, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9, 0, 2, 64, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73,134, +195,128, 73,135,195,128, 73,136, 65, 64, 73,136,193, 64, 73,137, 67, 0, 73,137, +195, 0, 73,131, 0, 64, 9,138, 69, 64, 9, 0, 0, 0,100,139, 0, 64, 9, 0, + 0, 64,100,139,128, 64, 9, 0, 6, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, + 6, 64, 69, 0, 0, 0,128, 0, 6,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, + 0, 0, 27, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6, 99,101, +108,108,115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, + 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111, +110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 14,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, + 0, 4, 0, 0, 0, 8,110,110,110,110,110,110,115, 0, 4, 0, 0, 0, 15,109, +111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 6,110, +110,110,110,115, 0, 4, 0, 0, 0, 13,115, 99,114,111,108,108,105,110,103, 95, + 99, 98, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0, 0, 0, 9,119,105,100,116, +104, 95, 99, 98, 0, 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 10,104,101,105, +103,104,116, 95, 99, 98, 0, 4, 0, 0, 0, 10,110,108,105,110,101,115, 95, 99, + 98, 0, 4, 0, 0, 0, 9,110, 99,111,108,115, 95, 99, 98, 0, 4, 0, 0, 0, + 9,104,115,112, 97,110, 95, 99, 98, 0, 4, 0, 0, 0, 9,118,115,112, 97,110, + 95, 99, 98, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, + 0, 11,105,117,112, 99,101,108,108,115, 46,104, 0, 4, 0, 0, 0, 7,114,101, +100,114, 97,119, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, + 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 1, 0, 2, + 0, 0, 0, 2,128, 64, 64, 9, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, + 8,114,101,112, 97,105,110,116, 0, 4, 0, 0, 0, 4, 89, 69, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, + 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0, 2, 0, 3, 0, 0, 0, + 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, + 1, 4, 0, 0, 0, 6, 67,101,108,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, + 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, + 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, + 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 17, 0, 0, 0, 28, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/cells_be64.loh b/iup/srclua5/loh/cells_be64.loh new file mode 100755 index 0000000..ff5fc7d --- /dev/null +++ b/iup/srclua5/loh/cells_be64.loh @@ -0,0 +1,64 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/cells_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 29, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73, + 0,195,133, 73,128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73, + 0, 67,137, 73, 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9, + 64, 0,139,100, 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, + 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, + 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108,115, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0, 0, + 0, 0, 0,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,119,105,100,116, +104, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 10, 0, 0, + 0, 0, 0, 0, 0,104,101,105,103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0, + 0, 0, 0, 0,110,108,105,110,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, +115,112, 97,110, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99, +108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,101,108, +108,115, 46,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,100,114, 97,119, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, + 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, + 83, 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 29, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 28, 0, 0, 0, + 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, + 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0, + 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/cells_le64.loh b/iup/srclua5/loh/cells_le64.loh new file mode 100755 index 0000000..0a49dbc --- /dev/null +++ b/iup/srclua5/loh/cells_le64.loh @@ -0,0 +1,64 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/cells_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 29, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73, + 0,195,133, 73,128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73, + 0, 67,137, 73, 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9, + 64, 0,139,100, 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, + 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, + 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108,115, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0, 0, + 0, 0, 0,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,119,105,100,116, +104, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 10, 0, 0, + 0, 0, 0, 0, 0,104,101,105,103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0, + 0, 0, 0, 0,110,108,105,110,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, +115,112, 97,110, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99, +108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,101,108, +108,115, 46,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,100,114, 97,119, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, + 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, + 83, 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 29, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 28, 0, 0, 0, + 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, + 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0, + 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/cells_le64w.loh b/iup/srclua5/loh/cells_le64w.loh new file mode 100755 index 0000000..ed300df --- /dev/null +++ b/iup/srclua5/loh/cells_le64w.loh @@ -0,0 +1,64 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/cells_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/cells_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64, 99,101,108,108,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 29, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 64, 2, 0, 73, 0,194,131, 73,128,194,132, 73, + 0,195,133, 73,128,195,134, 73,128,195,135, 73, 64, 65,136, 73, 64,193,136, 73, + 0, 67,137, 73, 0,195,137, 9, 64, 0,131, 9, 64, 69,138,100, 0, 0, 0, 9, + 64, 0,139,100, 64, 0, 0, 9, 64,128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, + 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, + 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108,115, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0,109,111,117,115,101, 99,108,105, 99,107, 95, 99, 98, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0,110,110,110,110,110,110,115, 0, 4, 15, 0, 0, 0, 0, + 0, 0, 0,109,111,117,115,101,109,111,116,105,111,110, 95, 99, 98, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,115, 99,114,111,108,108,105,110,103, 95, 99, 98, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 0,110,110, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,119,105,100,116, +104, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 10, 0, 0, + 0, 0, 0, 0, 0,104,101,105,103,104,116, 95, 99, 98, 0, 4, 10, 0, 0, 0, + 0, 0, 0, 0,110,108,105,110,101,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,110, 99,111,108,115, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,104,115,112, 97,110, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, +115,112, 97,110, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99, +108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,101,108, +108,115, 46,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,100,114, 97,119, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, + 9, 64, 64,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,114,101,112, 97,105,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, + 83, 0, 0, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 1, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 29, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 67,101,108,108,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 28, 0, 0, 0, + 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, + 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 25, 0, 0, 0, 23, 0, + 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/cells_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/clipboard.loh b/iup/srclua5/loh/clipboard.loh new file mode 100644 index 0000000..0f5d067 --- /dev/null +++ b/iup/srclua5/loh/clipboard.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/clipboard.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/clipboard.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64, 99,108,105, +112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, 0, 0, 99,108,105,112, 98,111, + 97,114,100, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, + 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 10, 0, 0, 0, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/clipboard_be32.loh b/iup/srclua5/loh/clipboard_be32.loh new file mode 100755 index 0000000..96be360 --- /dev/null +++ b/iup/srclua5/loh/clipboard_be32.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/clipboard_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/clipboard_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64, 99,108,105, +112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 0, 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, + 0, 64, 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131, +128, 64, 9, 0, 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, + 0, 0,128, 0, 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, + 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 10, 99,108,105,112, 98,111, + 97,114,100, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, + 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111, +110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 2, 0, 3, 0, 0, 0, + 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, + 1, 4, 0, 0, 0, 10, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, + 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, + 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, + 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/clipboard_be64.loh b/iup/srclua5/loh/clipboard_be64.loh new file mode 100644 index 0000000..b7566e7 --- /dev/null +++ b/iup/srclua5/loh/clipboard_be64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/clipboard_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/clipboard_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64, 99,108,105,112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, + 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, + 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0, 99,108,105,112, 98,111, 97,114,100, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, + 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/clipboard_le64.loh b/iup/srclua5/loh/clipboard_le64.loh new file mode 100755 index 0000000..f4f856b --- /dev/null +++ b/iup/srclua5/loh/clipboard_le64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/clipboard_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/clipboard_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64, 99,108,105,112, 98,111, 97,114,100, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, + 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, + 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0, 99,108,105,112, 98,111, 97,114,100, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 67,108,105,112, 98,111, 97,114,100, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, + 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/clipboard_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colorbar.loh b/iup/srclua5/loh/colorbar.loh new file mode 100755 index 0000000..73e4cc3 --- /dev/null +++ b/iup/srclua5/loh/colorbar.loh @@ -0,0 +1,53 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbar.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64, 99,111,108, +111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 31, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64,128, 0,193,128, + 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0,194,134, 73,128, + 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136, 65, 0, 5, 0, 71,192, + 4, 0, 65,128, 5, 0, 71, 64, 5, 0,100, 0, 0, 0, 9, 64,128,139, 69, 0, + 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 6, 0,128, 0, 0, 0,193,128, + 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 9, 0, 0, 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, + 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4, + 8, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4, + 4, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0,115, 0, 4, 10, 0, 0, 0, +115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0,101,120,116,101,110, +100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, + 0, 4, 9, 0, 0, 0, 67,111,108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0, +105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99,111,110,116, +114,111,108,115, 46,104, 0, 4, 8, 0, 0, 0, 80, 82, 73, 77, 65, 82, 89, 0, + 3, 0, 0, 0, 0, 0, 0,240,191, 4, 10, 0, 0, 0, 83, 69, 67, 79, 78, 68, + 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 14, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 23, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, +157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 9, 0, 0, + 0, 67,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111, +110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, + 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 23, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 17, 0, 0, 0, 30, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colorbar_be32.loh b/iup/srclua5/loh/colorbar_be32.loh new file mode 100755 index 0000000..0d516ae --- /dev/null +++ b/iup/srclua5/loh/colorbar_be32.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbar_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64, 99,111,108, +111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 0, 0, 0, 27, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, + 64, 9,130, 65, 64, 9, 0, 1, 0, 74,131,194, 0, 73, 0,128, 64,138, 0, 2, +128,193,133,195, 0,137, 0,128, 64,162,132,128,128, 73,134,194, 0, 73,135, 66, +128, 73,131, 0, 64, 9,135,196, 0, 9,136,196,128, 9, 0, 0, 0,100,137,128, + 64, 9, 0, 5, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 5, 64, 69, 0, 0, + 0,128, 0, 5,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 23, 4, 0, + 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 9, 99,111,108,111,114, 98, 97, +114, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, + 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, + 4, 0, 0, 0, 10,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 3, +110,110, 0, 4, 0, 0, 0, 8, 99,101,108,108, 95, 99, 98, 0, 4, 0, 0, 0, + 2,110, 0, 4, 0, 0, 0, 4,114,101,116, 0, 4, 0, 0, 0, 2,115, 0, 4, + 0, 0, 0, 10,115,119,105,116, 99,104, 95, 99, 98, 0, 4, 0, 0, 0, 12,101, +120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 0, 0, 0, 9,102,117,110, 99, +110, 97,109,101, 0, 4, 0, 0, 0, 9, 67,111,108,111,114, 98, 97,114, 0, 4, + 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 14,105,117,112, + 99,111,108,111,114, 98, 97,114, 46,104, 0, 4, 0, 0, 0, 14, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117, +112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119, +105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 20, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0, + 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 9, 67, +111,108,111,114, 98, 97,114, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, + 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, + 0, 15, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, + 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, + 0, 23, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 17, 0, + 0, 0, 26, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/colorbar_be64.loh b/iup/srclua5/loh/colorbar_be64.loh new file mode 100755 index 0000000..e16bce6 --- /dev/null +++ b/iup/srclua5/loh/colorbar_be64.loh @@ -0,0 +1,59 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbar_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 31, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64, +128, 0,193,128, 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0, +194,134, 73,128, 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136, 65, 0, + 5, 0, 71,192, 4, 0, 65,128, 5, 0, 71, 64, 5, 0,100, 0, 0, 0, 9, 64, +128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 6, 0,128, 0, + 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,115,101,108, +101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, +115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,101, +120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111, +108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108, +117,100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,108,111, +114, 98, 97,114, 46,104, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 80, 82, 73, 77, + 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 83, 69, 67, 79, 78, 68, 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0, 0, +192, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 98, 97, +114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, + 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 26, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, + 0, 17, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colorbar_le64.loh b/iup/srclua5/loh/colorbar_le64.loh new file mode 100755 index 0000000..83d07b1 --- /dev/null +++ b/iup/srclua5/loh/colorbar_le64.loh @@ -0,0 +1,55 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbar_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 27, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64, +128, 0,193,128, 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0, +194,134, 73,128, 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136,100, 0, + 0, 0, 9, 64,128,137, 69, 0, 5, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, + 5, 0,128, 0, 0, 0,193,128, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 23, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, +110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, +114,101,116, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 10, 0, 0, 0, + 0, 0, 0, 0,115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,101,120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 67,111,108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 99,111,108,111,114, 98, 97,114, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, + 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101, +116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, + 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, + 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 67,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, + 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 20, 0, + 0, 0, 18, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, + 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 17, 0, 0, 0, 26, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/colorbar_le64w.loh b/iup/srclua5/loh/colorbar_le64w.loh new file mode 100755 index 0000000..c599965 --- /dev/null +++ b/iup/srclua5/loh/colorbar_le64w.loh @@ -0,0 +1,59 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbar_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbar_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 31, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 1, 0, 73, 0,194,131,138, 64, +128, 0,193,128, 2, 0,137, 0,195,133,162, 64,128, 0, 73,128,128,132, 73, 0, +194,134, 73,128, 66,135, 9, 64, 0,131, 9, 0,196,135, 9,128,196,136, 65, 0, + 5, 0, 71,192, 4, 0, 65,128, 5, 0, 71, 64, 5, 0,100, 0, 0, 0, 9, 64, +128,139, 69, 0, 6, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 6, 0,128, 0, + 0, 0,193,128, 6, 0, 92, 64,128, 1, 30, 0,128, 0, 27, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99,111,108,111,114, 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,115,101,108, +101, 99,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 99,101,108,108, 95, 99, 98, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, +115,119,105,116, 99,104, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,101, +120,116,101,110,100,101,100, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111, +108,111,114, 98, 97,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108, +117,100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,108,111, +114, 98, 97,114, 46,104, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 80, 82, 73, 77, + 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 83, 69, 67, 79, 78, 68, 65, 82, 89, 0, 3, 0, 0, 0, 0, 0, 0, 0, +192, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 98, 97, +114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, + 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 14, 0, 0, 0, 15, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 26, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, + 0, 17, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbar_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colorbrowser.loh b/iup/srclua5/loh/colorbrowser.loh new file mode 100755 index 0000000..9dd12d5 --- /dev/null +++ b/iup/srclua5/loh/colorbrowser.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbrowser.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 18, 0, 0, 0, 64, 99,111,108, +111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0, +194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0, 0, 0, 9, 64, + 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0, + 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, + 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0, 0, 99,111,108,111,114, 98,114, +111,119,115,101,114, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 8, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0, + 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 99,104, 97,110,103,101, 95, 99, 98, + 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 13, 0, 0, 0, + 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 4, 8, 0, 0, 0,105,110, + 99,108,117,100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99,111,110,116,114,111, +108,115, 46,104, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, + 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, + 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, + 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 67,111,108,111,114, 66,114, +111,119,115,101,114, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, + 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 99,116,114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colorbrowser_be32.loh b/iup/srclua5/loh/colorbrowser_be32.loh new file mode 100755 index 0000000..fff8f43 --- /dev/null +++ b/iup/srclua5/loh/colorbrowser_be32.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbrowser_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 18, 64, 99,111,108, +111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 0, 0, 0, 21, 0, 1,128, 10,128, 64, 64, 9, 0, 0, +192, 69,129, 0, 64, 9,130, 65, 64, 9, 0, 0,128, 74,131,194, 0, 73,132,194, + 0, 73,131, 0, 64, 9,133, 66,192, 9,134, 67, 64, 9, 0, 0, 0,100,135, 0, + 64, 9, 0, 3,192, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 4, 0, 69, 0, 0, + 0,128, 0, 4, 64,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 18, 4, 0, + 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 13, 99,111,108,111,114, 98,114, +111,119,115,101,114, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116, +105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 0, 0, 0, 8,100,114, 97,103, 95, 99, 98, 0, 4, 0, 0, + 0, 4, 99, 99, 99, 0, 4, 0, 0, 0, 10, 99,104, 97,110,103,101, 95, 99, 98, + 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 13, + 67,111,108,111,114, 66,114,111,119,115,101,114, 0, 4, 0, 0, 0, 8,105,110, + 99,108,117,100,101, 0, 4, 0, 0, 0, 8,105,117,112, 99, 98, 46,104, 0, 4, + 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, + 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, + 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, + 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, + 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, + 0, 2, 4, 0, 0, 0, 13, 67,111,108,111,114, 66,114,111,119,115,101,114, 0, + 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, + 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, + 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 99,116, +114,108, 0, 0, 0, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/colorbrowser_be64.loh b/iup/srclua5/loh/colorbrowser_be64.loh new file mode 100755 index 0000000..0f25250 --- /dev/null +++ b/iup/srclua5/loh/colorbrowser_be64.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbrowser_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64, + 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0, +194,131, 73, 0,194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0, + 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, + 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, + 0, 0, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,104, 97,110,103, +101, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97, +109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111, +119,115,101,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100, +101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99, 98, 46,104, 0, 4, + 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110, +116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, + 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, + 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,119, +115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colorbrowser_le64.loh b/iup/srclua5/loh/colorbrowser_le64.loh new file mode 100755 index 0000000..5ea6381 --- /dev/null +++ b/iup/srclua5/loh/colorbrowser_le64.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbrowser_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64, + 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0, +194,131, 73, 0,194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0, + 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, + 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, + 0, 0, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,104, 97,110,103, +101, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97, +109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111, +119,115,101,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100, +101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99, 98, 46,104, 0, 4, + 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110, +116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, + 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, + 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,119, +115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/colorbrowser_le64w.loh b/iup/srclua5/loh/colorbrowser_le64w.loh new file mode 100755 index 0000000..f4625d8 --- /dev/null +++ b/iup/srclua5/loh/colorbrowser_le64w.loh @@ -0,0 +1,49 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/colorbrowser_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/colorbrowser_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114, 98,114,111,119,115,101,114, 46,108,117, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21, 0, 0, 0, 10,128, 1, 0, 9, 64, + 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0, +194,131, 73, 0,194,132, 9, 64, 0,131, 9,192, 66,133, 9, 64, 67,134,100, 0, + 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, + 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0, 99,111,108,111,114, 98,114,111,119,115,101,114, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, + 0, 0, 0, 0, 0,100,114, 97,103, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0, 99, 99, 99, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99,104, 97,110,103, +101, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97, +109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111, +119,115,101,114, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100, +101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99, 98, 46,104, 0, 4, + 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110, +116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, + 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, + 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114, 66,114,111,119, +115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/colorbrowser_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/colordlg.loh b/iup/srclua5/loh/colordlg.loh new file mode 100755 index 0000000..4bff37b --- /dev/null +++ b/iup/srclua5/loh/colordlg.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/colordlg.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/colordlg.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64, 99,111,108, +111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132,100, 0, + 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, 0, 9, 64, +128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, + 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, + 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0, 99,111,108,111,114,100,108, +103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, + 4, 9, 0, 0, 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, + 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, + 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, + 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, + 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, + 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, + 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, + 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, + 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 67,111,108,111,114, 68, +108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, + 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, + 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, + 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colordlg_be32.loh b/iup/srclua5/loh/colordlg_be32.loh new file mode 100755 index 0000000..166799a --- /dev/null +++ b/iup/srclua5/loh/colordlg_be32.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/colordlg_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/colordlg_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64, 99,111,108, +111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 0, 0, 0, 22, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, + 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9, 0, 0, + 0,100,132,128, 64, 9, 0, 0, 64,100,133, 0, 64, 9, 0, 0,128,100,133,128, + 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, 64, 69, 0, 0, + 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 15, 4, 0, + 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 9, 99,111,108,111,114,100,108, +103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, + 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, + 4, 0, 0, 0, 9, 67,111,108,111,114, 68,108,103, 0, 4, 0, 0, 0, 9, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4, + 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 14, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32, +119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0, + 0, 0, 14, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0, 1, 0, 0, +128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0, 0, 1, 4, + 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 14, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 1, 0, 3, 0, 0, 0, 5, 0, 0, 0, + 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0, + 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, + 0, 18, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 22, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0, +158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 9, 67,111,108,111,114, 68, +108,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, + 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, + 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, + 0, 21, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colordlg_be64.loh b/iup/srclua5/loh/colordlg_be64.loh new file mode 100755 index 0000000..90f29eb --- /dev/null +++ b/iup/srclua5/loh/colordlg_be64.loh @@ -0,0 +1,60 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/colordlg_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/colordlg_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, + 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, + 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, + 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,111,108,111,114,100,108,103, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112, +117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, + 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, + 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117, +112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, + 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, + 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101, +115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111, +108,111,114, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, + 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, + 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, + 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colordlg_le64.loh b/iup/srclua5/loh/colordlg_le64.loh new file mode 100755 index 0000000..834a8bd --- /dev/null +++ b/iup/srclua5/loh/colordlg_le64.loh @@ -0,0 +1,60 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/colordlg_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/colordlg_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, + 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, + 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, + 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,111,108,111,114,100,108,103, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112, +117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, + 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, + 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117, +112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, + 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, + 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101, +115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111, +108,111,114, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, + 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, + 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, + 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/colordlg_le64w.loh b/iup/srclua5/loh/colordlg_le64w.loh new file mode 100755 index 0000000..6a612da --- /dev/null +++ b/iup/srclua5/loh/colordlg_le64w.loh @@ -0,0 +1,60 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/colordlg_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/colordlg_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,108,111,114,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, + 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, + 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, + 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,111,108,111,114,100,108,103, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 67,111,108,111,114, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112, +117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, + 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, + 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117, +112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, + 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, + 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101, +115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67,111, +108,111,114, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, + 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, + 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, + 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/colordlg_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/constants.loh b/iup/srclua5/loh/constants.loh new file mode 100755 index 0000000..a84103c --- /dev/null +++ b/iup/srclua5/loh/constants.loh @@ -0,0 +1,102 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/constants.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/constants.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64, 99,111,110, +115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2,102, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1,192, 0, 0, 7, +128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1, 64, 1, 0, 7,128, 1, 0, 1, + 64, 1, 0, 7,192, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1,192, 2, 0, 7, +128, 2, 0, 1, 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7,128, 3, 0, 1, + 64, 4, 0, 7, 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 1, 64, 5, 0, 7, + 0, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7, 0, 6, 0, 5, + 0, 4, 0, 7,128, 6, 0, 5,128, 4, 0, 7,192, 6, 0, 1,192, 0, 0, 7, + 0, 7, 0, 1, 64, 0, 0, 7, 64, 7, 0, 1,192, 7, 0, 7,128, 7, 0, 1, + 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7,128, 8, 0, 1, 64, 9, 0, 7, + 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1, 64, 10, 0, 7, 0, 10, 0, 1, +192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7, 0, 11, 0, 1,192, 11, 0, 7, +128, 11, 0, 1, 64, 12, 0, 7, 0, 12, 0, 1,192, 0, 0, 7,128, 12, 0, 1, + 64, 0, 0, 7,192, 12, 0, 1,192, 7, 0, 7, 0, 13, 0, 1, 64, 8, 0, 7, + 64, 13, 0, 1,192, 8, 0, 7,128, 13, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65, +128, 14, 0, 28,128, 0, 1, 7,192, 13, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65, + 0, 15, 0, 28,128, 0, 1, 7,192, 14, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65, +128, 15, 0, 28,128, 0, 1, 7, 64, 15, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65, + 0, 16, 0, 28,128, 0, 1, 7,192, 15, 0, 5, 0, 14, 0, 6, 64, 78, 0, 65, +128, 16, 0, 28,128, 0, 1, 7, 64, 16, 0, 1, 0, 17, 0, 7,192, 16, 0, 1, +128, 17, 0, 7, 64, 17, 0, 1, 0, 18, 0, 7,192, 17, 0, 1,128, 18, 0, 7, + 64, 18, 0, 1, 0, 19, 0, 7,192, 18, 0, 30, 0,128, 0, 77, 0, 0, 0, 4, + 6, 0, 0, 0, 69, 82, 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, + 8, 0, 0, 0, 78, 79, 69, 82, 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 7, 0, 0, 0, 79, 80, 69, 78, 69, 68, 0, 3, 0, 0, 0, 0, 0, 0, +240,191, 4, 8, 0, 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 4, 7, 0, 0, 0, + 73, 71, 78, 79, 82, 69, 0, 4, 8, 0, 0, 0, 68, 69, 70, 65, 85, 76, 84, 0, + 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0, 0, 0, 67, 76, 79, 83, 69, 0, + 3, 0, 0, 0, 0, 0, 0, 8,192, 4, 9, 0, 0, 0, 67, 79, 78, 84, 73, 78, + 85, 69, 0, 3, 0, 0, 0, 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 67, 69, 78, + 84, 69, 82, 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 76, 69, + 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0, 0, 82, 73, 71, + 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64, 4, 9, 0, 0, 0, 77, 79, 85, + 83, 69, 80, 79, 83, 0, 3, 0, 0, 0, 0,128,255,239, 64, 4, 8, 0, 0, 0, + 67, 85, 82, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0, + 0, 0, 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0, + 64,255,239, 64, 4, 4, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0, 0, 0, 66, 79, + 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 83, 66, 85, 80, 0, 4, 5, 0, 0, 0, + 83, 66, 68, 78, 0, 4, 7, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 64, 4, 7, 0, 0, 0, 83, 66, 80, 71, 68, 78, 0, 3, 0, + 0, 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 83, 66, 80, 79, 83, 86, 0, 3, + 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0, 0, 83, 66, 68, 82, 65, 71, 86, + 0, 3, 0, 0, 0, 0, 0, 0, 20, 64, 4, 7, 0, 0, 0, 83, 66, 76, 69, 70, + 84, 0, 3, 0, 0, 0, 0, 0, 0, 24, 64, 4, 8, 0, 0, 0, 83, 66, 82, 73, + 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 83, 66, + 80, 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64, 4, 10, 0, 0, + 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 34, 64, + 4, 7, 0, 0, 0, 83, 66, 80, 79, 83, 72, 0, 3, 0, 0, 0, 0, 0, 0, 36, + 64, 4, 8, 0, 0, 0, 83, 66, 68, 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0, + 0, 38, 64, 4, 5, 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 82, 69, + 83, 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 77, 73, 78, 73, 77, 73, 90, 69, 0, + 4, 9, 0, 0, 0, 77, 65, 88, 73, 77, 73, 90, 69, 0, 4, 5, 0, 0, 0, 72, + 73, 68, 69, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0, + 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 98,121,116,101, 0, 4, + 2, 0, 0, 0, 49, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4, + 2, 0, 0, 0, 50, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 51, 0, 4, + 2, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 52, 0, 4, + 2, 0, 0, 0, 52, 0, 4, 8, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4, + 2, 0, 0, 0, 53, 0, 4, 11, 0, 0, 0, 77, 65, 83, 75, 95, 70, 76, 79, 65, + 84, 0, 4, 24, 0, 0, 0, 91, 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, + 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 77, 65, 83, 75, + 95, 85, 70, 76, 79, 65, 84, 0, 4, 18, 0, 0, 0, 40, 47,100, 43, 47, 46, 63, + 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 77, 65, 83, 75, + 95, 69, 70, 76, 79, 65, 84, 0, 4, 40, 0, 0, 0, 91, 43, 47, 45, 93, 63, 40, + 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, 43, 41, 40, 91,101, 69, + 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, 0, 4, 9, 0, 0, 0, 77, 65, + 83, 75, 95, 73, 78, 84, 0, 4, 10, 0, 0, 0, 91, 43, 47, 45, 93, 63, 47,100, + 43, 0, 4, 10, 0, 0, 0, 77, 65, 83, 75, 95, 85, 73, 78, 84, 0, 4, 4, 0, + 0, 0, 47,100, 43, 0, 0, 0, 0, 0,102, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 22, 0, + 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, + 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 29, 0, + 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, + 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 41, 0, + 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, + 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 50, 0, + 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, + 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 59, 0, + 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 60, 0, + 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, + 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0, + 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, + 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 68, 0, + 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, + 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/constants_be32.loh b/iup/srclua5/loh/constants_be32.loh new file mode 100755 index 0000000..eff05cc --- /dev/null +++ b/iup/srclua5/loh/constants_be32.loh @@ -0,0 +1,88 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/constants_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/constants_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64, 99,111,110, +115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 0, 0, 0, 92, 0, 0, 64, 1, 0, 0, 0, 7, 0, 0,192, 1, 0, + 0,128, 7, 0, 1, 64, 1, 0, 1, 0, 7, 0, 1,192, 1, 0, 1,128, 7, 0, + 2, 64, 1, 0, 2, 0, 7, 0, 2,192, 1, 0, 2,128, 7, 0, 3, 64, 1, 0, + 3, 0, 7, 0, 3,192, 1, 0, 3,128, 7, 0, 4, 64, 1, 0, 4, 0, 7, 0, + 4,192, 1, 0, 4,128, 7, 0, 2,128, 5, 0, 5, 0, 7, 0, 3, 0, 5, 0, + 5, 64, 7, 0, 5,192, 1, 0, 5,128, 7, 0, 6, 64, 1, 0, 6, 0, 7, 0, + 6,192, 1, 0, 6,128, 7, 0, 7, 64, 1, 0, 7, 0, 7, 0, 7,192, 1, 0, + 7,128, 7, 0, 8, 64, 1, 0, 8, 0, 7, 0, 8,192, 1, 0, 8,128, 7, 0, + 9, 64, 1, 0, 9, 0, 7, 0, 9,192, 1, 0, 9,128, 7, 0, 10, 64, 1, 0, + 10, 0, 7, 0, 10,192, 1, 0, 10,128, 7, 0, 11, 64, 1, 0, 11, 0, 7, 0, + 5,192, 1, 0, 11,128, 7, 0, 6, 64, 1, 0, 11,192, 7, 0, 6,192, 1, 0, + 12, 0, 7, 0, 7, 64, 1, 0, 12, 64, 7, 0, 7,192, 1, 0, 12,128, 7, 0, + 13, 0, 5, 0, 77, 64, 6, 0, 13,128, 65, 1, 0,128, 28, 0, 12,192, 7, 0, + 13, 0, 5, 0, 77, 64, 6, 0, 14, 0, 65, 1, 0,128, 28, 0, 13,192, 7, 0, + 13, 0, 5, 0, 77, 64, 6, 0, 14,128, 65, 1, 0,128, 28, 0, 14, 64, 7, 0, + 13, 0, 5, 0, 77, 64, 6, 0, 15, 0, 65, 1, 0,128, 28, 0, 14,192, 7, 0, + 13, 0, 5, 0, 77, 64, 6, 0, 15,128, 65, 1, 0,128, 28, 0, 15, 64, 7, 0, + 6, 64, 1, 0, 15,192, 7, 0, 5,192, 1, 0, 16, 0, 7, 0, 0, 64, 1, 0, + 16, 64, 7, 0, 0, 64, 1, 0, 16,128, 7, 0,128, 0, 30, 0, 0, 0, 67, 4, + 0, 0, 0, 7, 73, 71, 78, 79, 82, 69, 0, 3,191,240, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 8, 68, 69, 70, 65, 85, 76, 84, 0, 3,192, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 6, 67, 76, 79, 83, 69, 0, 3,192, 8, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 9, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3,192, 16, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 3, 64,239, +255,224, 0, 0, 0, 0, 4, 0, 0, 0, 5, 76, 69, 70, 84, 0, 3, 64,239,255, +192, 0, 0, 0, 0, 4, 0, 0, 0, 6, 82, 73, 71, 72, 84, 0, 3, 64,239,255, +160, 0, 0, 0, 0, 4, 0, 0, 0, 9, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3, + 64,239,255,128, 0, 0, 0, 0, 4, 0, 0, 0, 8, 67, 85, 82, 82, 69, 78, 84, + 0, 3, 64,239,255, 96, 0, 0, 0, 0, 4, 0, 0, 0, 13, 67, 69, 78, 84, 69, + 82, 80, 65, 82, 69, 78, 84, 0, 3, 64,239,255, 64, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 84, 79, 80, 0, 4, 0, 0, 0, 7, 66, 79, 84, 84, 79, 77, 0, 4, 0, + 0, 0, 5, 83, 66, 85, 80, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 5, 83, 66, 68, 78, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 7, 83, 66, 80, 71, 85, 80, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 7, 83, 66, 80, 71, 68, 78, 0, 3, 64, 8, 0, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 7, 83, 66, 80, 79, 83, 86, 0, 3, 64, 16, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 8, 83, 66, 68, 82, 65, 71, 86, 0, 3, 64, 20, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 7, 83, 66, 76, 69, 70, 84, 0, 3, 64, 24, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 8, 83, 66, 82, 73, 71, 72, 84, 0, 3, 64, 28, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 9, 83, 66, 80, 71, 76, 69, 70, 84, 0, 3, 64, + 32, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 10, 83, 66, 80, 71, 82, 73, 71, 72, + 84, 0, 3, 64, 34, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 7, 83, 66, 80, 79, + 83, 72, 0, 3, 64, 36, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 8, 83, 66, 68, + 82, 65, 71, 72, 0, 3, 64, 38, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 83, + 72, 79, 87, 0, 4, 0, 0, 0, 8, 82, 69, 83, 84, 79, 82, 69, 0, 4, 0, 0, + 0, 9, 77, 73, 78, 73, 77, 73, 90, 69, 0, 4, 0, 0, 0, 9, 77, 65, 88, 73, + 77, 73, 90, 69, 0, 4, 0, 0, 0, 5, 72, 73, 68, 69, 0, 4, 0, 0, 0, 8, + 66, 85, 84, 84, 79, 78, 49, 0, 4, 0, 0, 0, 7,115,116,114,105,110,103, 0, + 4, 0, 0, 0, 5, 98,121,116,101, 0, 4, 0, 0, 0, 2, 49, 0, 4, 0, 0, + 0, 8, 66, 85, 84, 84, 79, 78, 50, 0, 4, 0, 0, 0, 2, 50, 0, 4, 0, 0, + 0, 8, 66, 85, 84, 84, 79, 78, 51, 0, 4, 0, 0, 0, 2, 51, 0, 4, 0, 0, + 0, 8, 66, 85, 84, 84, 79, 78, 52, 0, 4, 0, 0, 0, 2, 52, 0, 4, 0, 0, + 0, 8, 66, 85, 84, 84, 79, 78, 53, 0, 4, 0, 0, 0, 2, 53, 0, 4, 0, 0, + 0, 6, 69, 82, 82, 79, 82, 0, 4, 0, 0, 0, 8, 78, 79, 69, 82, 82, 79, 82, + 0, 4, 0, 0, 0, 7, 79, 80, 69, 78, 69, 68, 0, 4, 0, 0, 0, 8, 73, 78, + 86, 65, 76, 73, 68, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, + 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, + 0, 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, + 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, + 0, 37, 0, 0, 0, 37, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, + 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, + 0, 46, 0, 0, 0, 46, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, + 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, + 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, + 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 55, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, + 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/constants_be64.loh b/iup/srclua5/loh/constants_be64.loh new file mode 100755 index 0000000..4f434b6 --- /dev/null +++ b/iup/srclua5/loh/constants_be64.loh @@ -0,0 +1,113 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/constants_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/constants_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,110,115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2,102, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1, +192, 0, 0, 7,128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1, 64, 1, 0, 7, +128, 1, 0, 1, 64, 1, 0, 7,192, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1, +192, 2, 0, 7,128, 2, 0, 1, 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7, +128, 3, 0, 1, 64, 4, 0, 7, 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 1, + 64, 5, 0, 7, 0, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7, + 0, 6, 0, 5, 0, 4, 0, 7,128, 6, 0, 5,128, 4, 0, 7,192, 6, 0, 1, +192, 0, 0, 7, 0, 7, 0, 1, 64, 0, 0, 7, 64, 7, 0, 1,192, 7, 0, 7, +128, 7, 0, 1, 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7,128, 8, 0, 1, + 64, 9, 0, 7, 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1, 64, 10, 0, 7, + 0, 10, 0, 1,192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7, 0, 11, 0, 1, +192, 11, 0, 7,128, 11, 0, 1, 64, 12, 0, 7, 0, 12, 0, 1,192, 0, 0, 7, +128, 12, 0, 1, 64, 0, 0, 7,192, 12, 0, 1,192, 7, 0, 7, 0, 13, 0, 1, + 64, 8, 0, 7, 64, 13, 0, 1,192, 8, 0, 7,128, 13, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65,128, 14, 0, 28,128, 0, 1, 7,192, 13, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65, 0, 15, 0, 28,128, 0, 1, 7,192, 14, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65,128, 15, 0, 28,128, 0, 1, 7, 64, 15, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65, 0, 16, 0, 28,128, 0, 1, 7,192, 15, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65,128, 16, 0, 28,128, 0, 1, 7, 64, 16, 0, 1, 0, 17, 0, 7, +192, 16, 0, 1,128, 17, 0, 7, 64, 17, 0, 1, 0, 18, 0, 7,192, 17, 0, 1, +128, 18, 0, 7, 64, 18, 0, 1, 0, 19, 0, 7,192, 18, 0, 30, 0,128, 0, 77, + 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 4, 8, 0, 0, 0, 0, 0, 0, 0, 78, 79, 69, 82, + 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 79, 80, 69, 78, 69, 68, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 8, + 0, 0, 0, 0, 0, 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0, 73, 71, 78, 79, 82, 69, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, + 68, 69, 70, 65, 85, 76, 84, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 67, 76, 79, 83, 69, 0, 3, 0, 0, 0, 0, 0, 0, 8, +192, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3, + 0, 0, 0, 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, + 84, 69, 82, 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0, + 0, 0, 0, 0, 0, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3, 0, + 0, 0, 0,128,255,239, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 67, 85, 82, 82, + 69, 78, 84, 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0, 0, 0, 0, 0, + 0, 0, 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0, + 64,255,239, 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 66, 79, 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 83, 66, 85, 80, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 66, 68, 78, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 68, + 78, 0, 3, 0, 0, 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, + 83, 66, 80, 79, 83, 86, 0, 3, 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0, + 0, 0, 0, 0, 0, 83, 66, 68, 82, 65, 71, 86, 0, 3, 0, 0, 0, 0, 0, 0, + 20, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 76, 69, 70, 84, 0, 3, 0, + 0, 0, 0, 0, 0, 24, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 82, 73, + 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 83, 66, 80, 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64, + 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3, + 0, 0, 0, 0, 0, 0, 34, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, + 79, 83, 72, 0, 3, 0, 0, 0, 0, 0, 0, 36, 64, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 83, 66, 68, 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0, 0, 38, 64, 4, + 5, 0, 0, 0, 0, 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 82, 69, 83, 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, + 73, 78, 73, 77, 73, 90, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 88, + 73, 77, 73, 90, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 73, 68, 69, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 98,121,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 8, + 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, + 78, 51, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0, 66, 85, 84, 84, 79, 78, 52, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, + 52, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4, + 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 77, + 65, 83, 75, 95, 70, 76, 79, 65, 84, 0, 4, 24, 0, 0, 0, 0, 0, 0, 0, 91, + 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, + 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 70, 76, + 79, 65, 84, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 40, 47,100, 43, 47, 46, 63, + 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 4, 40, 0, 0, 0, 0, 0, 0, + 0, 91, 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, + 47,100, 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 73, 78, 84, 0, 4, + 10, 0, 0, 0, 0, 0, 0, 0, 91, 43, 47, 45, 93, 63, 47,100, 43, 0, 4, 10, + 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 73, 78, 84, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 47,100, 43, 0, 0, 0, 0, 0,102, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, + 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0, + 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 40, 0, + 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, + 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, + 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, + 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, + 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, + 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, + 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, + 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, + 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, + 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/constants_le64.loh b/iup/srclua5/loh/constants_le64.loh new file mode 100755 index 0000000..9771f6f --- /dev/null +++ b/iup/srclua5/loh/constants_le64.loh @@ -0,0 +1,97 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/constants_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/constants_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,110,115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 92, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1, +192, 0, 0, 7,128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1,192, 1, 0, 7, +128, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1,192, 2, 0, 7,128, 2, 0, 1, + 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7,128, 3, 0, 1, 64, 4, 0, 7, + 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 5,128, 2, 0, 7, 0, 5, 0, 5, + 0, 3, 0, 7, 64, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7, + 0, 6, 0, 1,192, 6, 0, 7,128, 6, 0, 1, 64, 7, 0, 7, 0, 7, 0, 1, +192, 7, 0, 7,128, 7, 0, 1, 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7, +128, 8, 0, 1, 64, 9, 0, 7, 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1, + 64, 10, 0, 7, 0, 10, 0, 1,192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7, + 0, 11, 0, 1,192, 5, 0, 7,128, 11, 0, 1, 64, 6, 0, 7,192, 11, 0, 1, +192, 6, 0, 7, 0, 12, 0, 1, 64, 7, 0, 7, 64, 12, 0, 1,192, 7, 0, 7, +128, 12, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65,128, 13, 0, 28,128, 0, 1, 7, +192, 12, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65, 0, 14, 0, 28,128, 0, 1, 7, +192, 13, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65,128, 14, 0, 28,128, 0, 1, 7, + 64, 14, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65, 0, 15, 0, 28,128, 0, 1, 7, +192, 14, 0, 5, 0, 13, 0, 6, 64, 77, 0, 65,128, 15, 0, 28,128, 0, 1, 7, + 64, 15, 0, 1, 64, 6, 0, 7,192, 15, 0, 1,192, 5, 0, 7, 0, 16, 0, 1, + 64, 0, 0, 7, 64, 16, 0, 1, 64, 0, 0, 7,128, 16, 0, 30, 0,128, 0, 67, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 73, 71, 78, 79, 82, 69, 0, 3, + 0, 0, 0, 0, 0, 0,240,191, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68, 69, 70, + 65, 85, 76, 84, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0, 0, 0, 0, + 0, 0, 0, 67, 76, 79, 83, 69, 0, 3, 0, 0, 0, 0, 0, 0, 8,192, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3, 0, 0, 0, + 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, + 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76, + 69, 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3, 0, 0, 0, 0, +128,255,239, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 67, 85, 82, 82, 69, 78, 84, + 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67, + 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0, 64,255,239, + 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 66, 79, 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, + 66, 85, 80, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 83, 66, 68, 78, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 68, 78, 0, 3, 0, 0, + 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 79, 83, + 86, 0, 3, 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, + 83, 66, 68, 82, 65, 71, 86, 0, 3, 0, 0, 0, 0, 0, 0, 20, 64, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 83, 66, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, + 24, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 82, 73, 71, 72, 84, 0, 3, + 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, + 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64, 4, 10, 0, 0, 0, + 0, 0, 0, 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, + 0, 34, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 79, 83, 72, 0, 3, + 0, 0, 0, 0, 0, 0, 36, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 68, + 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0, 0, 38, 64, 4, 5, 0, 0, 0, 0, + 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 82, 69, 83, + 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 73, 78, 73, 77, 73, + 90, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 88, 73, 77, 73, 90, 69, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 73, 68, 69, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 98,121,116, +101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 51, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, + 84, 84, 79, 78, 52, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 52, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0, 53, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0, 78, 79, 69, 82, 82, 79, 82, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 79, 80, 69, 78, 69, 68, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 0, 0, 0, 0, 92, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, + 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 34, 0, + 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, + 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, + 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, + 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, + 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, + 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0, + 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, + 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, + 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, + 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/constants_le64w.loh b/iup/srclua5/loh/constants_le64w.loh new file mode 100755 index 0000000..b2eb2a8 --- /dev/null +++ b/iup/srclua5/loh/constants_le64w.loh @@ -0,0 +1,113 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/constants_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/constants_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64, 99,111,110,115,116, 97,110,116,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2,102, 0, 0, 0, 1, 64, 0, 0, 7, 0, 0, 0, 1, +192, 0, 0, 7,128, 0, 0, 1, 64, 1, 0, 7, 0, 1, 0, 1, 64, 1, 0, 7, +128, 1, 0, 1, 64, 1, 0, 7,192, 1, 0, 1, 64, 2, 0, 7, 0, 2, 0, 1, +192, 2, 0, 7,128, 2, 0, 1, 64, 3, 0, 7, 0, 3, 0, 1,192, 3, 0, 7, +128, 3, 0, 1, 64, 4, 0, 7, 0, 4, 0, 1,192, 4, 0, 7,128, 4, 0, 1, + 64, 5, 0, 7, 0, 5, 0, 1,192, 5, 0, 7,128, 5, 0, 1, 64, 6, 0, 7, + 0, 6, 0, 5, 0, 4, 0, 7,128, 6, 0, 5,128, 4, 0, 7,192, 6, 0, 1, +192, 0, 0, 7, 0, 7, 0, 1, 64, 0, 0, 7, 64, 7, 0, 1,192, 7, 0, 7, +128, 7, 0, 1, 64, 8, 0, 7, 0, 8, 0, 1,192, 8, 0, 7,128, 8, 0, 1, + 64, 9, 0, 7, 0, 9, 0, 1,192, 9, 0, 7,128, 9, 0, 1, 64, 10, 0, 7, + 0, 10, 0, 1,192, 10, 0, 7,128, 10, 0, 1, 64, 11, 0, 7, 0, 11, 0, 1, +192, 11, 0, 7,128, 11, 0, 1, 64, 12, 0, 7, 0, 12, 0, 1,192, 0, 0, 7, +128, 12, 0, 1, 64, 0, 0, 7,192, 12, 0, 1,192, 7, 0, 7, 0, 13, 0, 1, + 64, 8, 0, 7, 64, 13, 0, 1,192, 8, 0, 7,128, 13, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65,128, 14, 0, 28,128, 0, 1, 7,192, 13, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65, 0, 15, 0, 28,128, 0, 1, 7,192, 14, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65,128, 15, 0, 28,128, 0, 1, 7, 64, 15, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65, 0, 16, 0, 28,128, 0, 1, 7,192, 15, 0, 5, 0, 14, 0, 6, + 64, 78, 0, 65,128, 16, 0, 28,128, 0, 1, 7, 64, 16, 0, 1, 0, 17, 0, 7, +192, 16, 0, 1,128, 17, 0, 7, 64, 17, 0, 1, 0, 18, 0, 7,192, 17, 0, 1, +128, 18, 0, 7, 64, 18, 0, 1, 0, 19, 0, 7,192, 18, 0, 30, 0,128, 0, 77, + 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 4, 8, 0, 0, 0, 0, 0, 0, 0, 78, 79, 69, 82, + 82, 79, 82, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 79, 80, 69, 78, 69, 68, 0, 3, 0, 0, 0, 0, 0, 0,240,191, 4, 8, + 0, 0, 0, 0, 0, 0, 0, 73, 78, 86, 65, 76, 73, 68, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0, 73, 71, 78, 79, 82, 69, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, + 68, 69, 70, 65, 85, 76, 84, 0, 3, 0, 0, 0, 0, 0, 0, 0,192, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 67, 76, 79, 83, 69, 0, 3, 0, 0, 0, 0, 0, 0, 8, +192, 4, 9, 0, 0, 0, 0, 0, 0, 0, 67, 79, 78, 84, 73, 78, 85, 69, 0, 3, + 0, 0, 0, 0, 0, 0, 16,192, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, + 84, 69, 82, 0, 3, 0, 0, 0, 0,224,255,239, 64, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0,192,255,239, 64, 4, 6, 0, 0, + 0, 0, 0, 0, 0, 82, 73, 71, 72, 84, 0, 3, 0, 0, 0, 0,160,255,239, 64, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 79, 85, 83, 69, 80, 79, 83, 0, 3, 0, + 0, 0, 0,128,255,239, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 67, 85, 82, 82, + 69, 78, 84, 0, 3, 0, 0, 0, 0, 96,255,239, 64, 4, 13, 0, 0, 0, 0, 0, + 0, 0, 67, 69, 78, 84, 69, 82, 80, 65, 82, 69, 78, 84, 0, 3, 0, 0, 0, 0, + 64,255,239, 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 84, 79, 80, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 66, 79, 84, 84, 79, 77, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 83, 66, 85, 80, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 66, 68, 78, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 85, 80, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 68, + 78, 0, 3, 0, 0, 0, 0, 0, 0, 8, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, + 83, 66, 80, 79, 83, 86, 0, 3, 0, 0, 0, 0, 0, 0, 16, 64, 4, 8, 0, 0, + 0, 0, 0, 0, 0, 83, 66, 68, 82, 65, 71, 86, 0, 3, 0, 0, 0, 0, 0, 0, + 20, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 76, 69, 70, 84, 0, 3, 0, + 0, 0, 0, 0, 0, 24, 64, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83, 66, 82, 73, + 71, 72, 84, 0, 3, 0, 0, 0, 0, 0, 0, 28, 64, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 83, 66, 80, 71, 76, 69, 70, 84, 0, 3, 0, 0, 0, 0, 0, 0, 32, 64, + 4, 10, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, 71, 82, 73, 71, 72, 84, 0, 3, + 0, 0, 0, 0, 0, 0, 34, 64, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, 66, 80, + 79, 83, 72, 0, 3, 0, 0, 0, 0, 0, 0, 36, 64, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 83, 66, 68, 82, 65, 71, 72, 0, 3, 0, 0, 0, 0, 0, 0, 38, 64, 4, + 5, 0, 0, 0, 0, 0, 0, 0, 83, 72, 79, 87, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 82, 69, 83, 84, 79, 82, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, + 73, 78, 73, 77, 73, 90, 69, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 88, + 73, 77, 73, 90, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 73, 68, 69, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 49, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 98,121,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 49, 0, 4, 8, + 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 50, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, + 78, 51, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 51, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0, 66, 85, 84, 84, 79, 78, 52, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, + 52, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 53, 0, 4, + 2, 0, 0, 0, 0, 0, 0, 0, 53, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 77, + 65, 83, 75, 95, 70, 76, 79, 65, 84, 0, 4, 24, 0, 0, 0, 0, 0, 0, 0, 91, + 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, 47,100, + 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 70, 76, + 79, 65, 84, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, 40, 47,100, 43, 47, 46, 63, + 47,100, 42,124, 47, 46, 47,100, 43, 41, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 83, 75, 95, 69, 70, 76, 79, 65, 84, 0, 4, 40, 0, 0, 0, 0, 0, 0, + 0, 91, 43, 47, 45, 93, 63, 40, 47,100, 43, 47, 46, 63, 47,100, 42,124, 47, 46, + 47,100, 43, 41, 40, 91,101, 69, 93, 91, 43, 47, 45, 93, 63, 47,100, 43, 41, 63, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 73, 78, 84, 0, 4, + 10, 0, 0, 0, 0, 0, 0, 0, 91, 43, 47, 45, 93, 63, 47,100, 43, 0, 4, 10, + 0, 0, 0, 0, 0, 0, 0, 77, 65, 83, 75, 95, 85, 73, 78, 84, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 47,100, 43, 0, 0, 0, 0, 0,102, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, + 0, 0, 29, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0, + 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 40, 0, + 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, + 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, + 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, + 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, + 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 59, 0, + 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, + 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, + 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, + 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, + 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/constants_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dial.loh b/iup/srclua5/loh/dial.loh new file mode 100755 index 0000000..ff16026 --- /dev/null +++ b/iup/srclua5/loh/dial.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/dial.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/dial.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,100,105, 97, +108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, + 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,194,132,100, 0, + 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, + 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, + 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,100,105, 97, +108, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 2, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 13, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, + 2, 0, 0, 0,100, 0, 4, 8, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, + 14, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 14, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, + 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, + 0, 4, 5, 0, 0, 0, 68,105, 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116, +114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dial_be32.loh b/iup/srclua5/loh/dial_be32.loh new file mode 100755 index 0000000..e883239 --- /dev/null +++ b/iup/srclua5/loh/dial_be32.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/dial_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,100,105, 97, +108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 19, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128, 9, 0, 0, + 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, + 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, + 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,100,105, 97, +108, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, + 4, 0, 0, 0, 2,115, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 0, 0, 0, 13,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, + 0, 0, 0, 2,100, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, + 0, 0, 0, 14,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 0, + 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, + 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0, +133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, + 2, 4, 0, 0, 0, 5, 68,105, 97,108, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, + 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 99,116, +114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dial_be64.loh b/iup/srclua5/loh/dial_be64.loh new file mode 100755 index 0000000..86901b2 --- /dev/null +++ b/iup/srclua5/loh/dial_be64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/dial_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117, +100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,110,116,114, +111,108,115, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, + 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, + 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 68,105, + 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dial_le64.loh b/iup/srclua5/loh/dial_le64.loh new file mode 100755 index 0000000..44ab7a5 --- /dev/null +++ b/iup/srclua5/loh/dial_le64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/dial_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117, +100,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 99,111,110,116,114, +111,108,115, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, + 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, + 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 68,105, + 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dial_le64w.loh b/iup/srclua5/loh/dial_le64w.loh new file mode 100755 index 0000000..38c2cc0 --- /dev/null +++ b/iup/srclua5/loh/dial_le64w.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/dial_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/dial_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,100,105, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117, +100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,100,105, 97,108, 46, +104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, + 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, + 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 68,105, 97,108, 0, 3, + 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/dial_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/dialog.loh b/iup/srclua5/loh/dialog.loh new file mode 100755 index 0000000..c4c8760 --- /dev/null +++ b/iup/srclua5/loh/dialog.loh @@ -0,0 +1,72 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/dialog.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/dialog.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,100,105, 97, +108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 30, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, + 9, 64, 65,130, 74,192, 1, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66,133, + 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 73,128,196,136, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,137,100, 64, 0, 0, 9, 64, 0,138,100,128, 0, 0, + 9, 64,128,138,100,192, 0, 0, 9, 64, 0,139, 69,192, 5, 0,128, 0, 0, 0, + 92, 64, 0, 1, 69, 0, 6, 0,128, 0, 0, 0,193, 64, 6, 0, 92, 64,128, 1, + 30, 0,128, 0, 26, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0,100,105, 97,108,111,103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 73, 0, 4, 9, 0, 0, 0, + 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0,109, 97,112, 95, 99, 98, + 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0,117,110,109, 97,112, 95, 99, 98, + 0, 4, 9, 0, 0, 0, 99,108,111,115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0, +115,104,111,119, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, +109,111,118,101, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 13, 0, 0, + 0,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0,110, +110,110, 0, 4, 13, 0, 0, 0,100,114,111,112,102,105,108,101,115, 95, 99, 98, + 0, 4, 5, 0, 0, 0,115,110,110,110, 0, 4, 14, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 6, 0, 0, 0,112,111,112,117,112, + 0, 4, 7, 0, 0, 0,115,104,111,119,120,121, 0, 4, 8, 0, 0, 0,100,101, +115,116,114,111,121, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, + 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101, +116, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0, 0, 68,105, 97,108,111, +103, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, + 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, + 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, + 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 0, + 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, + 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 7, 0, 0, 0, 83,104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108, +101, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0, 0, 0, 0, 1, 0, 3, 5, 0, + 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108, +101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, + 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, 0, 19, 0, + 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 33, 0, + 0, 0, 31, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 14, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dialog_be32.loh b/iup/srclua5/loh/dialog_be32.loh new file mode 100755 index 0000000..5f280fd --- /dev/null +++ b/iup/srclua5/loh/dialog_be32.loh @@ -0,0 +1,72 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/dialog_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/dialog_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,100,105, 97, +108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 0, 0, 0, 30, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9, +130, 65, 64, 9, 0, 1,192, 74,131,194, 0, 73,132,194, 0, 73,133, 66, 0, 73, +133,195, 0, 73,134,195,128, 73,135,196, 0, 73,136,196,128, 73,131, 0, 64, 9, + 0, 0, 0,100,137,128, 64, 9, 0, 0, 64,100,138, 0, 64, 9, 0, 0,128,100, +138,128, 64, 9, 0, 0,192,100,139, 0, 64, 9, 0, 5,192, 69, 0, 0, 0,128, + 1, 0, 64, 92, 0, 6, 0, 69, 0, 0, 0,128, 0, 6, 64,193, 1,128, 64, 92, + 0,128, 0, 30, 0, 0, 0, 26, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, + 0, 0, 7,100,105, 97,108,111,103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110, +116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99, +114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 73, 0, 4, 0, 0, 0, 9, + 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7,109, 97,112, 95, 99, 98, + 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9,117,110,109, 97,112, 95, 99, 98, + 0, 4, 0, 0, 0, 9, 99,108,111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 8, +115,104,111,119, 95, 99, 98, 0, 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 8, +109,111,118,101, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0, 0, 0, + 13,116,114, 97,121, 99,108,105, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 4,110, +110,110, 0, 4, 0, 0, 0, 13,100,114,111,112,102,105,108,101,115, 95, 99, 98, + 0, 4, 0, 0, 0, 5,115,110,110,110, 0, 4, 0, 0, 0, 14, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 6,112,111,112,117,112, + 0, 4, 0, 0, 0, 7,115,104,111,119,120,121, 0, 4, 0, 0, 0, 8,100,101, +115,116,114,111,121, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, + 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101, +116, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 21, 0, 2, + 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, + 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 7, 68,105, 97,108,111, +103, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, + 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 3, 0, 7, 0, 0, 0, + 6, 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64, +220, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, + 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 3, 0, 0, 0, 7, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 29, 0, + 3, 0, 7, 0, 0, 0, 7, 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1, + 0, 1,128, 2, 0, 0,221, 0, 0, 0,222, 0,128, 0, 30, 0, 0, 0, 1, 4, + 0, 0, 0, 7, 83,104,111,119, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, + 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108, +101, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0, 1, 0, 3, 0, 0, + 0, 5, 0, 0, 0, 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, + 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108, +101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, + 0, 19, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, + 0, 33, 0, 0, 0, 31, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, + 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 14, 0, 0, 0, 29, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dialog_be64.loh b/iup/srclua5/loh/dialog_be64.loh new file mode 100755 index 0000000..94b0b30 --- /dev/null +++ b/iup/srclua5/loh/dialog_be64.loh @@ -0,0 +1,81 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/dialog_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/dialog_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,100,105, 97,108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 30, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74,192, 1, 0, 73, 0,194,131, 73, 0,194,132, + 73, 0, 66,133, 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 73,128,196,136, + 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,137,100, 64, 0, 0, 9, 64, 0,138, +100,128, 0, 0, 9, 64,128,138,100,192, 0, 0, 9, 64, 0,139, 69,192, 5, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 6, 0,128, 0, 0, 0,193, 64, 6, 0, + 92, 64,128, 1, 30, 0,128, 0, 26, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111, +103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, + 0, 73, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 95, 99, 98, 0, 4, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,110,109, 97, +112, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 95, + 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,104,111,119, 95, 99, 98, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +109,111,118,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,116,114, 97,121, 99,108,105, 99,107, 95, 99, + 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 13, 0, 0, 0, + 0, 0, 0, 0,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0,115,110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104, +111,119,120,121, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111, +121, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, + 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, + 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 68,105, 97,108,111,103, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, + 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, + 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, + 25, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 29, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0, 0, + 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0, 30, + 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,104,111,119, + 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 3, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0, + 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, + 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 1, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 25, 0, + 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 33, 0, 0, 0, 31, 0, + 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 14, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dialog_le64.loh b/iup/srclua5/loh/dialog_le64.loh new file mode 100755 index 0000000..b3f4995 --- /dev/null +++ b/iup/srclua5/loh/dialog_le64.loh @@ -0,0 +1,81 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/dialog_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/dialog_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,100,105, 97,108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 30, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74,192, 1, 0, 73, 0,194,131, 73, 0,194,132, + 73, 0, 66,133, 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 73,128,196,136, + 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,137,100, 64, 0, 0, 9, 64, 0,138, +100,128, 0, 0, 9, 64,128,138,100,192, 0, 0, 9, 64, 0,139, 69,192, 5, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 6, 0,128, 0, 0, 0,193, 64, 6, 0, + 92, 64,128, 1, 30, 0,128, 0, 26, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111, +103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, + 0, 73, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 95, 99, 98, 0, 4, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,110,109, 97, +112, 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 95, + 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,104,111,119, 95, 99, 98, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +109,111,118,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,116,114, 97,121, 99,108,105, 99,107, 95, 99, + 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 13, 0, 0, 0, + 0, 0, 0, 0,100,114,111,112,102,105,108,101,115, 95, 99, 98, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0,115,110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104, +111,119,120,121, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111, +121, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, + 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, + 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 68,105, 97,108,111,103, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, + 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, + 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, + 25, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 29, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0, 0, + 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0, 30, + 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,104,111,119, + 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 3, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 33, 0, + 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, + 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 1, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 25, 0, + 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 33, 0, 0, 0, 31, 0, + 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 14, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/dialog_le64w.loh b/iup/srclua5/loh/dialog_le64w.loh new file mode 100755 index 0000000..ef19de9 --- /dev/null +++ b/iup/srclua5/loh/dialog_le64w.loh @@ -0,0 +1,79 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/dialog_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/dialog_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,100,105, 97,108,111,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 29, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74,128, 1, 0, 73, 0,194,131, 73, 0,194,132, + 73, 0, 66,133, 73, 0,195,133, 73,128,195,134, 73, 0,196,135, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,136,100, 64, 0, 0, 9, 64, 0,137,100,128, 0, 0, + 9, 64,128,137,100,192, 0, 0, 9, 64, 0,138, 69, 64, 5, 0,128, 0, 0, 0, + 92, 64, 0, 1, 69,128, 5, 0,128, 0, 0, 0,193,192, 5, 0, 92, 64,128, 1, + 30, 0,128, 0, 24, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99, +107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,109, 97,112, 95, 99, 98, 0, 4, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,110,109, 97,112, 95, 99, 98, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,108,111,115,101, 95, 99, 98, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,115,104,111,119, 95, 99, 98, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,110, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,116,114, 97,121, + 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110, +110, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,102,105,108,101,115, + 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115,110,110,110, 0, 4, 14, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,115,104,111,119,120,121, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,100,101,115,116,114,111,121, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, + 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, + 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 68,105, + 97,108,111,103, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 24, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, + 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, + 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, + 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 3, 0, 7, 7, 0, + 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, + 0, 2,222, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 83,104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97, +110,100,108,101, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 0,120, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 32, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, + 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97, +110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0, + 0, 24, 0, 0, 0, 22, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 32, 0, 0, + 0, 30, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 13, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/dialog_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/filedlg.loh b/iup/srclua5/loh/filedlg.loh new file mode 100755 index 0000000..01ac3e4 --- /dev/null +++ b/iup/srclua5/loh/filedlg.loh @@ -0,0 +1,55 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/filedlg.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/filedlg.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,102,105,108, +101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0, +129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,194, +132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0,134,100,128, 0, + 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 3, + 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 17, 0, 0, + 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,102,105,108,101, +100,108,103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 8, 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, +115,115, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0, + 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6, 0, 0, 0,112,111,112,117,112, + 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117, +112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, + 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, + 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, + 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 24, + 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, + 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 70,105,108,101, + 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, + 23, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, + 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/filedlg_be32.loh b/iup/srclua5/loh/filedlg_be32.loh new file mode 100755 index 0000000..13c492c --- /dev/null +++ b/iup/srclua5/loh/filedlg_be32.loh @@ -0,0 +1,55 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/filedlg_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/filedlg_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,102,105,108, +101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 0, 23, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, + 9,130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128, + 9, 0, 0, 0,100,133,128, 64, 9, 0, 0, 64,100,134, 0, 64, 9, 0, 0,128, +100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3,192, + 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, + 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8,102,105,108,101, +100,108,103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, + 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111, +110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 8,102,105,108,101, 95, 99, 98, 0, 4, 0, 0, 0, 3, +115,115, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, + 0, 8, 70,105,108,101, 68,108,103, 0, 4, 0, 0, 0, 6,112,111,112,117,112, + 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 14, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, + 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117, +112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 16, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0, 1, + 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0, 0, + 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 1, 0, 3, 0, 0, 0, 5, 0, + 0, 0, 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, + 0, 0, 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 24, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, + 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 70,105,108,101, + 68,108,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 23, + 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, + 0, 20, 0, 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, + 0, 26, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, + 0, 27, 0, 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, + 0, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/filedlg_be64.loh b/iup/srclua5/loh/filedlg_be64.loh new file mode 100755 index 0000000..1495118 --- /dev/null +++ b/iup/srclua5/loh/filedlg_be64.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/filedlg_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/filedlg_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,102,105,108,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0, +131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0, +134,100,128, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0, + 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128, + 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, +115,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, + 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, + 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, + 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, + 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, + 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/filedlg_le64.loh b/iup/srclua5/loh/filedlg_le64.loh new file mode 100755 index 0000000..5bffda4 --- /dev/null +++ b/iup/srclua5/loh/filedlg_le64.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/filedlg_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/filedlg_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,102,105,108,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0, +131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0, +134,100,128, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0, + 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128, + 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, +115,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, + 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, + 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, + 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, + 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, + 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/filedlg_le64w.loh b/iup/srclua5/loh/filedlg_le64w.loh new file mode 100755 index 0000000..14ed985 --- /dev/null +++ b/iup/srclua5/loh/filedlg_le64w.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/filedlg_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/filedlg_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,102,105,108,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 23, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0, +131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133,100, 64, 0, 0, 9, 64, 0, +134,100,128, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0, + 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0,128, + 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,102,105,108,101,100,108,103, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0,102,105,108,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, +115,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, + 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, + 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, + 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, + 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 70,105,108,101, 68,108,103, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, + 0, 0, 18, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 9, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/filedlg_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/fill.loh b/iup/srclua5/loh/fill.loh new file mode 100755 index 0000000..a3d0a19 --- /dev/null +++ b/iup/srclua5/loh/fill.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fill.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/fill.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,102,105,108, +108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, 0, + 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,128, + 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0,102,105,108,108, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, + 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, + 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 70,105,108,108, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, + 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/fill_be32.loh b/iup/srclua5/loh/fill_be32.loh new file mode 100755 index 0000000..0a07884 --- /dev/null +++ b/iup/srclua5/loh/fill_be32.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fill_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/fill_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,102,105,108, +108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 2, + 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, 2, +128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,110, +105, 99,107, 0, 4, 0, 0, 0, 5,102,105,108,108, 0, 4, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, + 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32, +119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, + 0, 0, 13, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, + 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 70,105,108,108, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, + 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/fill_be64.loh b/iup/srclua5/loh/fill_be64.loh new file mode 100755 index 0000000..a1b3504 --- /dev/null +++ b/iup/srclua5/loh/fill_be64.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fill_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/fill_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,102,105,108,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,102,105,108,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, + 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 70,105,108,108, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, + 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/fill_le64.loh b/iup/srclua5/loh/fill_le64.loh new file mode 100755 index 0000000..837ca1b --- /dev/null +++ b/iup/srclua5/loh/fill_le64.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fill_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/fill_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,102,105,108,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,102,105,108,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, + 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 70,105,108,108, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, + 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/fill_le64w.loh b/iup/srclua5/loh/fill_le64w.loh new file mode 100755 index 0000000..a0edb97 --- /dev/null +++ b/iup/srclua5/loh/fill_le64w.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fill_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/fill_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,102,105,108,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,102,105,108,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, + 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 70,105,108,108, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, + 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fill_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/fontdlg.loh b/iup/srclua5/loh/fontdlg.loh new file mode 100755 index 0000000..9ddd288 --- /dev/null +++ b/iup/srclua5/loh/fontdlg.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fontdlg.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/fontdlg.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,102,111,110, +116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0, +129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132,100, 0, 0, + 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, 0, 9, 64,128, +133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, + 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, + 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,102,111,110,116,100,108,103, 0, + 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, + 0, 0, 0, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, + 0, 0, 0, 70,111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, + 0,100,101,115,116,114,111,121, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, + 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83, +101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100, +103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, + 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0, +128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, + 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, + 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, + 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, +121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, + 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, + 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, + 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2, + 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 70,111,110,116, 68,108,103, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, + 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, + 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, + 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/fontdlg_be32.loh b/iup/srclua5/loh/fontdlg_be32.loh new file mode 100755 index 0000000..70d46ff --- /dev/null +++ b/iup/srclua5/loh/fontdlg_be32.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/fontdlg_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,102,111,110, +116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 0, 22, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, + 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9, 0, 0, 0, +100,132,128, 64, 9, 0, 0, 64,100,133, 0, 64, 9, 0, 0,128,100,133,128, 64, + 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, 64, 69, 0, 0, 0, +128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 15, 4, 0, 0, + 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8,102,111,110,116,100,108,103, 0, + 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, + 0, 0, 1, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, + 0, 0, 8, 70,111,110,116, 68,108,103, 0, 4, 0, 0, 0, 9, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0, 0, 0, + 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, + 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83, +101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100, +103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, + 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0, 1, 0, 0,128, 1, 64, + 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, + 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, + 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, + 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, +121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 18, 0, 1, 0, 3, 0, 0, 0, 5, 0, 0, 0, 69, 0, 0, + 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, + 0, 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 0, 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 2, + 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, + 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 70,111,110,116, 68,108,103, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, + 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, + 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 21, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/fontdlg_be64.loh b/iup/srclua5/loh/fontdlg_be64.loh new file mode 100755 index 0000000..0d6acdd --- /dev/null +++ b/iup/srclua5/loh/fontdlg_be64.loh @@ -0,0 +1,59 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/fontdlg_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,102,111,110,116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0, +132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, + 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, + 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,102,111,110,116,100,108,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70, +111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, + 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83, +101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, + 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, + 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, + 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0, + 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114, +111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2, + 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,111,110,116, 68, +108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, + 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, + 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/fontdlg_le64.loh b/iup/srclua5/loh/fontdlg_le64.loh new file mode 100755 index 0000000..d7acd56 --- /dev/null +++ b/iup/srclua5/loh/fontdlg_le64.loh @@ -0,0 +1,59 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/fontdlg_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,102,111,110,116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0, +132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, + 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, + 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,102,111,110,116,100,108,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70, +111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, + 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83, +101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, + 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, + 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, + 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0, + 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114, +111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2, + 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,111,110,116, 68, +108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, + 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, + 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/fontdlg_le64w.loh b/iup/srclua5/loh/fontdlg_le64w.loh new file mode 100755 index 0000000..1d3b92e --- /dev/null +++ b/iup/srclua5/loh/fontdlg_le64w.loh @@ -0,0 +1,59 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/fontdlg_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/fontdlg_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,102,111,110,116,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0, +132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, + 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, + 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,102,111,110,116,100,108,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,102,117,110, 99,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70, +111,110,116, 68,108,103, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, 0, + 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83, +101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, + 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, + 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, + 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, 0, + 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 68,101,115,116,114, +111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 0, 2, + 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0, +128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 70,111,110,116, 68, +108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, + 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, + 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 99,116,114,108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/fontdlg_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/frame.loh b/iup/srclua5/loh/frame.loh new file mode 100755 index 0000000..c243823 --- /dev/null +++ b/iup/srclua5/loh/frame.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/frame.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/frame.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,102,114, 97, +109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, + 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, + 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193, +128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0, +110,105, 99,107, 0, 4, 6, 0, 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0,105, + 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, + 0, 0, 13, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64, +192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, + 0, 0, 0, 70,114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, + 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, + 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/frame_be32.loh b/iup/srclua5/loh/frame_be32.loh new file mode 100755 index 0000000..afbd184 --- /dev/null +++ b/iup/srclua5/loh/frame_be32.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/frame_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/frame_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,102,114, 97, +109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, + 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, + 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5, +110,105, 99,107, 0, 4, 0, 0, 0, 6,102,114, 97,109,101, 0, 4, 0, 0, 0, + 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, + 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105, + 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, + 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105, +117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 13, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, + 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, + 0, 0, 6, 70,114, 97,109,101, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, + 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, + 16, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/frame_be64.loh b/iup/srclua5/loh/frame_be64.loh new file mode 100755 index 0000000..b15a60f --- /dev/null +++ b/iup/srclua5/loh/frame_be64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/frame_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/frame_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,102,114, 97,109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 70, +114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, + 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, + 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/frame_le64.loh b/iup/srclua5/loh/frame_le64.loh new file mode 100755 index 0000000..f95d1bf --- /dev/null +++ b/iup/srclua5/loh/frame_le64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/frame_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/frame_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,102,114, 97,109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 70, +114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, + 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, + 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/frame_le64w.loh b/iup/srclua5/loh/frame_le64w.loh new file mode 100755 index 0000000..6f2d88e --- /dev/null +++ b/iup/srclua5/loh/frame_le64w.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/frame_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/frame_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,102,114, 97,109,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,102,114, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 70, +114, 97,109,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, + 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, + 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/frame_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/gauge.loh b/iup/srclua5/loh/gauge.loh new file mode 100755 index 0000000..0c990ee --- /dev/null +++ b/iup/srclua5/loh/gauge.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/gauge.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,103, 97,117, +103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, + 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, 0, 0, 0, 9, + 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, + 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, + 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0,103, 97,117,103,101, 0, + 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, + 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99, +111,110,116,114,111,108,115, 46,104, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, + 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, + 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, + 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 71, 97, +117,103,101, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/gauge_be32.loh b/iup/srclua5/loh/gauge_be32.loh new file mode 100755 index 0000000..ede646b --- /dev/null +++ b/iup/srclua5/loh/gauge_be32.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/gauge_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,103, 97,117, +103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 18, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9,131,194, 0, 9, 0, 0, 0,100,132, +128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0, + 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4, + 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6,103, 97,117,103,101, 0, + 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, + 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, + 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 11,105,117,112,103, + 97,117,103,101, 46,104, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, + 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101, +116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 2, + 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, + 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 6, 71, 97,117,103,101, + 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 14, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/gauge_be64.loh b/iup/srclua5/loh/gauge_be64.loh new file mode 100755 index 0000000..75fbf2d --- /dev/null +++ b/iup/srclua5/loh/gauge_be64.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/gauge_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, + 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,103, 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105, +110, 99,108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,103, + 97,117,103,101, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 71, + 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/gauge_le64.loh b/iup/srclua5/loh/gauge_le64.loh new file mode 100755 index 0000000..afd4adf --- /dev/null +++ b/iup/srclua5/loh/gauge_le64.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/gauge_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, + 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,103, 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105, +110, 99,108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,103, + 97,117,103,101, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 71, + 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/gauge_le64w.loh b/iup/srclua5/loh/gauge_le64w.loh new file mode 100755 index 0000000..74d6621 --- /dev/null +++ b/iup/srclua5/loh/gauge_le64w.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/gauge_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/gauge_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,103, 97,117,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, + 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,103, 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105, +110, 99,108,117,100,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112,103, + 97,117,103,101, 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 71, + 97,117,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/gauge_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/glcanvas.loh b/iup/srclua5/loh/glcanvas.loh new file mode 100755 index 0000000..7411f43 --- /dev/null +++ b/iup/srclua5/loh/glcanvas.loh @@ -0,0 +1,65 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluagl51/glcanvas.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64,103,108, 99, + 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64, 0, 0, 73, 0, +195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0, 0, 0, 9, 64, +128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 4, 0,128, 0, + 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0, 0, 0, 4, 5, + 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, 0,103,108, 99, 97,110,118, 97, +115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, + 0, 4, 9, 0, 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0, +105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0,105,117,112,103,108, 46,104, + 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, + 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0, +101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 4, 10, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4,150, 1, 0, 0, + 32, 10,105,110,116, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40, +108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, 32,105, +102, 32, 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108, 95,105, +110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117,112, 71, + 76, 67, 97,110,118, 97,115, 79,112,101,110, 40, 41, 59, 10, 10, 32, 32,105,117, +112,108,117, 97, 95, 99,104, 97,110,103,101, 69,110,118, 40, 76, 41, 59, 10, 32, + 32,105,117,112,103,108, 99, 97,110,118, 97,115,108,117, 97, 95,111,112,101,110, + 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,114,101,116,117,114,110, + 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 48, 59, 10, +125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32, +117,115,101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, + 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112, +108,117, 97,103,108, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10, +123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97, 95, +111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, + 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, + 34,105,117,112,108,117, 97,103,108, 53, 49, 34, 32, 42, 47, 10,105,110,116, 32, +108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,103,108, 53, 49, 40,108, +117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116, +117,114,110, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, + 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101, +114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 0, 2, 0, + 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, + 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, + 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0, + 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, + 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/glcanvas_be32.loh b/iup/srclua5/loh/glcanvas_be32.loh new file mode 100755 index 0000000..c6c7ee9 --- /dev/null +++ b/iup/srclua5/loh/glcanvas_be32.loh @@ -0,0 +1,65 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluagl51/glcanvas_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64,103,108, 99, + 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 0, 0, 0, 22, 0, 2, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, + 64, 9,130, 65, 64, 9,131, 65,192, 9,132, 66, 64, 9, 0, 0, 64, 74,133,195, + 0, 73,133, 0, 64, 9,134,195,128, 9,135,196, 0, 9, 0, 0, 0,100,136,128, + 64, 9, 0, 4,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 4,192, 69, 0, 0, + 0,128, 0, 5, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 21, 4, 0, + 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 9,103,108, 99, 97,110,118, 97, +115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, + 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, + 0, 4, 0, 0, 0, 9, 71, 76, 67, 97,110,118, 97,115, 0, 4, 0, 0, 0, 8, +105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 8,105,117,112,103,108, 46,104, + 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7, + 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0, 0, 0, 11, +101,120,116,114, 97,102,117,110, 99,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 10,101,120,116,114, 97, 99,111,100,101, 0, 4, 0, 0, 1,150, + 32, 10,105,110,116, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40, +108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, 32,105, +102, 32, 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108, 95,105, +110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117,112, 71, + 76, 67, 97,110,118, 97,115, 79,112,101,110, 40, 41, 59, 10, 10, 32, 32,105,117, +112,108,117, 97, 95, 99,104, 97,110,103,101, 69,110,118, 40, 76, 41, 59, 10, 32, + 32,105,117,112,103,108, 99, 97,110,118, 97,115,108,117, 97, 95,111,112,101,110, + 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,114,101,116,117,114,110, + 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 48, 59, 10, +125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32, +117,115,101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, + 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112, +108,117, 97,103,108, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10, +123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97, 95, +111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, + 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, + 34,105,117,112,108,117, 97,103,108, 53, 49, 34, 32, 42, 47, 10,105,110,116, 32, +108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,103,108, 53, 49, 40,108, +117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116, +117,114,110, 32,105,117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, + 59, 10,125, 10, 10, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101, +114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 2, 0, + 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, + 30, 0, 0, 0, 1, 4, 0, 0, 0, 9, 71, 76, 67, 97,110,118, 97,115, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, + 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, + 43, 0, 0, 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, + 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, + 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/glcanvas_be64.loh b/iup/srclua5/loh/glcanvas_be64.loh new file mode 100755 index 0000000..ad012a5 --- /dev/null +++ b/iup/srclua5/loh/glcanvas_be64.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluagl51/glcanvas_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64,103,108, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64, + 0, 0, 73, 0,195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0, + 0, 0, 9, 64,128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, + 4, 0,128, 0, 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,103,108, 99, 97,110,118, 97,115, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, +103,108, 46,104, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4, +150, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,103,108,108, +117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, + 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112, +101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, + 32, 32, 32, 32, 73,117,112, 71, 76, 67, 97,110,118, 97,115, 79,112,101,110, 40, + 41, 59, 10, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69, +110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,103,108, 99, 97,110,118, 97,115, +108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, + 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101, +116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97, +116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34, +105,117,112,108,117, 97,103,108, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97, +111,112,101,110, 95,105,117,112,108,117, 97,103,108, 40,108,117, 97, 95, 83,116, + 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105, +117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, + 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,101, + 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, 53, 49, 34, + 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108, +117, 97,103,108, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, + 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97, + 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, + 0, 43, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42, + 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0, + 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, + 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/glcanvas_le64.loh b/iup/srclua5/loh/glcanvas_le64.loh new file mode 100755 index 0000000..64b6ef4 --- /dev/null +++ b/iup/srclua5/loh/glcanvas_le64.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluagl51/glcanvas_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64,103,108, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64, + 0, 0, 73, 0,195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0, + 0, 0, 9, 64,128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, + 4, 0,128, 0, 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,103,108, 99, 97,110,118, 97,115, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, +103,108, 46,104, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4, +150, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,103,108,108, +117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, + 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112, +101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, + 32, 32, 32, 32, 73,117,112, 71, 76, 67, 97,110,118, 97,115, 79,112,101,110, 40, + 41, 59, 10, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69, +110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,103,108, 99, 97,110,118, 97,115, +108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, + 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101, +116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97, +116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34, +105,117,112,108,117, 97,103,108, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97, +111,112,101,110, 95,105,117,112,108,117, 97,103,108, 40,108,117, 97, 95, 83,116, + 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105, +117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, + 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,101, + 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, 53, 49, 34, + 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108, +117, 97,103,108, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, + 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97, + 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, + 0, 43, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42, + 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0, + 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, + 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/glcanvas_le64w.loh b/iup/srclua5/loh/glcanvas_le64w.loh new file mode 100755 index 0000000..607c204 --- /dev/null +++ b/iup/srclua5/loh/glcanvas_le64w.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluagl51/glcanvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluagl51/glcanvas_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64,103,108, 99, 97,110,118, 97,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 0, 2, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 9, 64, 66,132, 74, 64, + 0, 0, 73, 0,195,133, 9, 64, 0,133, 9,128,195,134, 9, 0,196,135,100, 0, + 0, 0, 9, 64,128,136, 69,128, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, + 4, 0,128, 0, 0, 0,193, 0, 5, 0, 92, 64,128, 1, 30, 0,128, 0, 21, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,103,108, 99, 97,110,118, 97,115, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, +105,110, 99,108,117,100,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,117,112, +103,108, 46,104, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4, +150, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,103,108,108, +117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, + 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112, +101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, + 32, 32, 32, 32, 73,117,112, 71, 76, 67, 97,110,118, 97,115, 79,112,101,110, 40, + 41, 59, 10, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69, +110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,103,108, 99, 97,110,118, 97,115, +108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, + 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101, +116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97, +116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34, +105,117,112,108,117, 97,103,108, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97, +111,112,101,110, 95,105,117,112,108,117, 97,103,108, 40,108,117, 97, 95, 83,116, + 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105, +117,112,103,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, + 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115,101, + 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,103,108, 53, 49, 34, + 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108, +117, 97,103,108, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, + 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,103,108,108,117, 97, + 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, + 0, 43, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 71, 76, 67, 97,110,118, 97,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 42, + 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 2, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 38, 0, 0, 0, 43, 0, 0, + 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, + 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluagl51/glcanvas_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/hbox.loh b/iup/srclua5/loh/hbox.loh new file mode 100755 index 0000000..2ab8faa --- /dev/null +++ b/iup/srclua5/loh/hbox.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/hbox.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/hbox.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,104, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131,100, 64, + 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, + 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, + 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,104, 98,111, +120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, + 0, 0, 0, 97,112,112,101,110,100, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, + 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, + 0, 0, 2, 0, 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, + 0,156, 64,128, 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, +101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, + 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, + 0, 0, 72, 98,111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, + 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/hbox_be32.loh b/iup/srclua5/loh/hbox_be32.loh new file mode 100755 index 0000000..dda429c --- /dev/null +++ b/iup/srclua5/loh/hbox_be32.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/hbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/hbox_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,104, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 0, + 64,100,132, 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, +128, 69, 0, 0, 0,128, 0, 2,192,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, + 0, 12, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,104, 98,111, +120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66, + 79, 88, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, + 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, + 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, + 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105, +100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 13, 0, 2, 0, 5, 0, 0, 0, 5, 0, 0, 0,133, 0, 0, 0,192, 0,128, 1, + 0, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 7, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, +101,108,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0, +133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, + 0, 5, 72, 98,111,120, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0, + 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, + 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/hbox_be64.loh b/iup/srclua5/loh/hbox_be64.loh new file mode 100755 index 0000000..cfb75a5 --- /dev/null +++ b/iup/srclua5/loh/hbox_be64.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/hbox_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/hbox_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,104, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0, +128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, +112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, + 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, + 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 98, +111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, + 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/hbox_le64.loh b/iup/srclua5/loh/hbox_le64.loh new file mode 100755 index 0000000..fe0e07e --- /dev/null +++ b/iup/srclua5/loh/hbox_le64.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/hbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/hbox_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,104, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0, +128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, +112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, + 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, + 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 98, +111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, + 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/hbox_le64w.loh b/iup/srclua5/loh/hbox_le64w.loh new file mode 100755 index 0000000..b56d7f4 --- /dev/null +++ b/iup/srclua5/loh/hbox_le64w.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/hbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/hbox_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,104, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0, +128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,104, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, +112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, + 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, + 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72, 98, +111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, + 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/hbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/image.loh b/iup/srclua5/loh/image.loh new file mode 100755 index 0000000..7dc84a1 --- /dev/null +++ b/iup/srclua5/loh/image.loh @@ -0,0 +1,127 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/image.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/image.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,105,109, 97, +103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, + 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, 0, 0, 0, 9, + 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, + 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, + 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0,105,109, 97,103,101, 0, + 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, + 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 59, 6, + 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, + 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, + 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111, +108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97, +114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101, + 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93, + 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101, + 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32, +105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104, +101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, + 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32, +116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110, +115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32, + 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101, +114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116, +116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61, + 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32, + 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, + 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117, +110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108, +111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40, +105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32, +123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98, +101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32, + 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43, + 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, +110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104, +110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32, + 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50, + 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100, +120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41, +108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59, + 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117, + 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, + 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103, +101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32, + 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32, +110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101, +116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111, +108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, + 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, + 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, + 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, + 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, + 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, + 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, + 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40, +105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110, +103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, + 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32, +108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105, +110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115, + 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, + 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32, + 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32, +104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101, + 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99, +111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, + 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32, + 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53, + 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102, +111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114, +115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, +108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41, + 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44, + 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73, +117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44, + 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76, + 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, + 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32, + 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, + 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105, +104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, + 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 14, 0, + 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, + 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, + 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 0, 93, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,134, 0,192, 0, +154, 0, 0, 0, 22, 64, 3,128,134, 64,192, 0,154, 0, 0, 0, 22,128, 2,128, +134,128,192, 0,154, 0, 0, 0, 22,192, 1,128,133,192, 0, 0,198, 0,192, 0, + 6, 65,192, 0, 70,129,192, 0,134, 1,193, 0,157, 0,128, 2,158, 0, 0, 0, + 22, 0, 1,128,133,192, 0, 0,192, 0,128, 0, 6, 1,193, 0,157, 0,128, 1, +158, 0, 0, 0, 30, 0,128, 0, 5, 0, 0, 0, 4, 6, 0, 0, 0,119,105,100, +116,104, 0, 4, 7, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, +112,105,120,101,108,115, 0, 4, 6, 0, 0, 0, 73,109, 97,103,101, 0, 4, 7, + 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 88, 0, + 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, + 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, + 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, + 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, + 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0, 87, 0, 0, 0, 95, 0, 0, 0, + 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, + 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, + 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/image_be32.loh b/iup/srclua5/loh/image_be32.loh new file mode 100755 index 0000000..87231d9 --- /dev/null +++ b/iup/srclua5/loh/image_be32.loh @@ -0,0 +1,127 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/image_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/image_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,105,109, 97, +103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 18, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9,131,194, 0, 9, 0, 0, 0,100,132, +128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0, + 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4, + 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6,105,109, 97,103,101, 0, + 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, + 0, 0, 4,110,110,115, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 0, 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0, + 6, 59, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, + 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, + 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111, +108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97, +114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101, + 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93, + 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101, + 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32, +105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104, +101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, + 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32, +116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110, +115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32, + 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101, +114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116, +116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61, + 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32, + 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, + 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117, +110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108, +111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40, +105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32, +123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98, +101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32, + 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43, + 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, +110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104, +110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32, + 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50, + 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100, +120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41, +108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59, + 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117, + 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, + 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103, +101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32, + 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32, +110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101, +116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111, +108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, + 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, + 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, + 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, + 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, + 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, + 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, + 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40, +105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110, +103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, + 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32, +108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105, +110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115, + 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, + 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32, + 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32, +104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101, + 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99, +111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, + 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32, + 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53, + 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102, +111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114, +115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, +108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41, + 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44, + 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73, +117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44, + 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76, + 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, + 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32, + 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, + 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105, +104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, + 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 0, 0, + 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, + 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, + 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, + 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 87, 0, 0, 0, 93, 0, 2, 0, 7, 0, 0, 0, 23, 0,192, 0,134, + 0, 0, 0,154,128, 3, 64, 22, 0,192, 64,134, 0, 0, 0,154,128, 2,128, 22, + 0,192,128,134, 0, 0, 0,154,128, 1,192, 22, 0, 0,192,133, 0,192, 0,198, + 0,192, 65, 6, 0,192,129, 70, 0,193, 1,134, 2,128, 0,157, 0, 0, 0,158, +128, 1, 0, 22, 0, 0,192,133, 0,128, 0,192, 0,193, 1, 6, 1,128, 0,157, + 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 5, 4, 0, 0, 0, 6,119,105,100, +116,104, 0, 4, 0, 0, 0, 7,104,101,105,103,104,116, 0, 4, 0, 0, 0, 7, +112,105,120,101,108,115, 0, 4, 0, 0, 0, 6, 73,109, 97,103,101, 0, 4, 0, + 0, 0, 7, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, + 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, + 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, + 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, + 0, 89, 0, 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, + 0, 91, 0, 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 97,114,103, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0, 87, 0, 0, 0, 95, + 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, + 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, + 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/image_be64.loh b/iup/srclua5/loh/image_be64.loh new file mode 100755 index 0000000..d82ee9b --- /dev/null +++ b/iup/srclua5/loh/image_be64.loh @@ -0,0 +1,132 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/image_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/image_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, + 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 59, 6, 0, 0, 0, 0, + 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, + 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, + 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111, +108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97, +114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101, + 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93, + 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101, + 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32, +105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104, +101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, + 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32, +116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110, +115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32, + 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101, +114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116, +116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61, + 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32, + 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, + 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117, +110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108, +111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40, +105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32, +123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98, +101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32, + 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43, + 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, +110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104, +110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32, + 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50, + 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100, +120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41, +108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59, + 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117, + 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, + 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103, +101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32, + 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32, +110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101, +116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111, +108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, + 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, + 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, + 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, + 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, + 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, + 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, + 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40, +105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110, +103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, + 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32, +108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105, +110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115, + 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, + 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32, + 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32, +104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101, + 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99, +111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, + 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32, + 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53, + 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102, +111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114, +115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, +108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41, + 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44, + 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73, +117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44, + 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76, + 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, + 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32, + 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, + 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105, +104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, + 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 14, 0, + 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83, +101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 0, 93, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,134, 0,192, 0, +154, 0, 0, 0, 22, 64, 3,128,134, 64,192, 0,154, 0, 0, 0, 22,128, 2,128, +134,128,192, 0,154, 0, 0, 0, 22,192, 1,128,133,192, 0, 0,198, 0,192, 0, + 6, 65,192, 0, 70,129,192, 0,134, 1,193, 0,157, 0,128, 2,158, 0, 0, 0, + 22, 0, 1,128,133,192, 0, 0,192, 0,128, 0, 6, 1,193, 0,157, 0,128, 1, +158, 0, 0, 0, 30, 0,128, 0, 5, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104,101,105,103, +104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120,101,108,115, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 88, 0, + 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, + 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, + 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, + 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, + 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0, + 87, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, + 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/image_le64.loh b/iup/srclua5/loh/image_le64.loh new file mode 100755 index 0000000..64ea753 --- /dev/null +++ b/iup/srclua5/loh/image_le64.loh @@ -0,0 +1,132 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/image_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/image_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, + 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 59, 6, 0, 0, 0, 0, + 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, + 32, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, + 32,105,110,116, 32,119, 44, 32,104, 44, 32, 99, 44, 32,110,117,109, 95, 99,111, +108,111,114,115, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97, +114, 32, 42,112,105,120,101,108,115, 59, 10, 32, 32, 73,104, 97,110,100,108,101, + 42, 32,105,104, 59, 10, 32, 32, 99,104, 97,114, 32,115,116,114, 91, 50, 48, 93, + 59, 10, 10, 32, 32,105,102, 32, 40,108,117, 97, 95,105,115,116, 97, 98,108,101, + 40, 76, 44, 32, 49, 41, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,105,110,116, 32, +105, 44, 32,106, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32,116,104, +101, 32,110,117,109, 98,101,114, 32,111,102, 32,108,105,110,101,115, 32, 42, 47, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, + 44, 32, 49, 41, 59, 32, 32, 10, 10, 32, 32, 32, 32, 47, 42, 32,103,101,116, 32, +116,104,101, 32,110,117,109, 98,101,114, 32,111,102, 32, 99,111,108,117,109,110, +115, 32,111,102, 32,116,104,101, 32,102,105,114,115,116, 32,108,105,110,101, 32, + 42, 47, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101, +114, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116, +116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,119, 32, 61, + 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 32, 32, + 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, + 32, 32, 32, 32, 10, 32, 32, 32, 32,112,105,120,101,108,115, 32, 61, 32, 40,117, +110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97,108,108, +111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32, 32, 32,102,111,114, 32, 40, +105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32, 32, 32, +123, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98, +101,114, 40, 76, 44, 32,105, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32, + 32, 32,102,111,114, 32, 40,106, 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43, + 43, 41, 10, 32, 32, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, +110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, 49, 41, 42,119, 43, 40,106, 45, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104, +110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, 32, 32, 32, 32, 32, 32, + 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 45, 50, + 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,105,120,101,108,115, 91,105,100, +120, 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41, +108,117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59, + 10, 32, 32, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, + 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 32, 32,108,117, + 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, + 32, 32, 32, 10, 32, 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103, +101, 40,119, 44,104, 44,112,105,120,101,108,115, 41, 59, 32, 32, 10, 32, 32, 32, + 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32, +110,117,109, 95, 99,111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101, +116,110, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111, +108,111,114,115, 32, 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, + 53, 63, 32, 50, 53, 53, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, + 32, 32, 32, 32,102,111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, + 99,111,108,111,114,115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, + 32, 32, 32, 32, 32,108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, + 50, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, + 40,115,116,114, 44, 32, 34, 37,100, 34, 44, 32, 99, 41, 59, 10, 32, 32, 32, 32, + 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40, +105,104, 44, 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110, +103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95, +112,111,112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, + 10, 32, 32,101,108,115,101, 10, 32, 32,123, 10, 32, 32, 32, 32,119, 32, 61, 32, +108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 32, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105, +110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32, 32, 32,112,105,120,101,108,115, + 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, + 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 41, 59, 10, 32, + 32, 32, 32,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44, 32, +104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32, 32, 32,102,114,101,101, + 40,112,105,120,101,108,115, 41, 59, 10, 10, 32, 32, 32, 32,110,117,109, 95, 99, +111,108,111,114,115, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, + 32, 52, 41, 59, 10, 32, 32, 32, 32,110,117,109, 95, 99,111,108,111,114,115, 32, + 61, 32,110,117,109, 95, 99,111,108,111,114,115, 62, 50, 53, 54, 63, 32, 50, 53, + 54, 58, 32,110,117,109, 95, 99,111,108,111,114,115, 59, 10, 32, 32, 32, 32,102, +111,114, 40, 99, 61, 49, 59, 32, 99, 60, 61,110,117,109, 95, 99,111,108,111,114, +115, 59, 32, 99, 43, 43, 41, 10, 32, 32, 32, 32,123, 10, 32, 32, 32, 32, 32, 32, +108,117, 97, 95,114, 97,119,103,101,116,105, 40, 76, 44, 32, 52, 44, 32, 99, 41, + 59, 10, 32, 32, 32, 32, 32, 32,115,112,114,105,110,116,102, 40,115,116,114, 44, + 32, 34, 37,100, 34, 44, 32, 99, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 73, +117,112, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 40,105,104, 44, + 32,115,116,114, 44, 32,108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76, + 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, + 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32,125, 10, 10, 32, + 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, + 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105, +104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, + 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, 4, 14, 0, + 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83, +101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 0, 93, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0,134, 0,192, 0, +154, 0, 0, 0, 22, 64, 3,128,134, 64,192, 0,154, 0, 0, 0, 22,128, 2,128, +134,128,192, 0,154, 0, 0, 0, 22,192, 1,128,133,192, 0, 0,198, 0,192, 0, + 6, 65,192, 0, 70,129,192, 0,134, 1,193, 0,157, 0,128, 2,158, 0, 0, 0, + 22, 0, 1,128,133,192, 0, 0,192, 0,128, 0, 6, 1,193, 0,157, 0,128, 1, +158, 0, 0, 0, 30, 0,128, 0, 5, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104,101,105,103, +104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120,101,108,115, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 88, 0, + 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, + 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, + 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 89, 0, + 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, + 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 84, 0, 0, 0, 93, 0, 0, 0, + 87, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, + 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/image_le64w.loh b/iup/srclua5/loh/image_le64w.loh new file mode 100755 index 0000000..c732956 --- /dev/null +++ b/iup/srclua5/loh/image_le64w.loh @@ -0,0 +1,90 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/image_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/image_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, 9, 0,194,131,100, + 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4,170, 3, 0, 0, 0, 0, + 0, 0, 32, 10, 35,105,110, 99,108,117,100,101, 60,115,116,100,108,105, 98, 46, +104, 62, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, 32, + 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 32, 76, 41, 10,123, 10, 32, 32, +105,110,116, 32,119, 44, 32,104, 44, 32,105, 44, 32,106, 59, 10, 32, 32,117,110, +115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42,105,109,103, 59, 10, 32, 32, + 73,104, 97,110,100,108,101, 32, 42,105,109, 97,103,101, 59, 10, 32, 32, 10, 32, + 32,104, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 49, 41, + 59, 10, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,114, 40, 76, + 44, 32, 49, 41, 59, 10, 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, + 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,119, 32, 61, 32,108,117, 97, 76, 95,103, +101,116,110, 40, 76, 44, 32, 45, 49, 41, 59, 10, 32, 32,108,117, 97, 95,112,111, +112, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 10, 32, 32,105,109,103, 32, 61, 32, + 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42, 41, 32,109, 97, +108,108,111, 99, 32, 40,104, 42,119, 41, 59, 10, 10, 32, 32,102,111,114, 32, 40, +105, 61, 49, 59, 32,105, 60, 61,104, 59, 32,105, 43, 43, 41, 10, 32, 32,123, 10, + 32, 32, 32, 32,108,117, 97, 95,112,117,115,104,110,117,109, 98,101,114, 40, 76, + 44, 32,105, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,103,101,116,116, 97, 98, +108,101, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32, 32, 32,102,111,114, 32, 40,106, + 61, 49, 59, 32,106, 60, 61,119, 59, 32,106, 43, 43, 41, 10, 32, 32, 32, 32,123, + 10, 32, 32, 32, 32, 32, 32,105,110,116, 32,105,100,120, 32, 61, 32, 40,105, 45, + 49, 41, 42,119, 43, 40,106, 45, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32,108,117, + 97, 95,112,117,115,104,110,117,109, 98,101,114, 40, 76, 44, 32,106, 41, 59, 10, + 32, 32, 32, 32, 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, + 44, 32, 45, 50, 41, 59, 10, 32, 32, 32, 32, 32, 32,105,109,103, 91,105,100,120, + 93, 32, 61, 32, 40,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 41,108, +117, 97, 95,116,111,110,117,109, 98,101,114, 40, 76, 44, 32, 45, 49, 41, 59, 10, + 32, 32, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,108,117, 97, 95,112,111,112, 40, 76, + 44, 32, 49, 41, 59, 10, 32, 32,125, 10, 32, 32, 10, 32, 32,105,109, 97,103,101, + 32, 61, 32, 73,117,112, 73,109, 97,103,101, 40,119, 44,104, 44,105,109,103, 41, + 59, 32, 32, 10, 32, 32,102,114,101,101, 40,105,109,103, 41, 59, 10, 10, 32, 32, +119, 32, 61, 32,108,117, 97, 76, 95,103,101,116,110, 40, 76, 44, 32, 50, 41, 59, + 10, 10, 32, 32,102,111,114, 40,105, 61, 49, 59, 32,105, 60, 61,119, 59, 32,105, + 43, 43, 41, 10, 32, 32,123, 10, 32, 32, 32, 32,108,117, 97, 95,112,117,115,104, +110,117,109, 98,101,114, 40, 76, 44,105, 41, 59, 10, 32, 32, 32, 32,108,117, 97, + 95,112,117,115,104,110,117,109, 98,101,114, 40, 76, 44,105, 41, 59, 10, 32, 32, + 32, 32,108,117, 97, 95,103,101,116,116, 97, 98,108,101, 40, 76, 44, 32, 50, 41, + 59, 10, 32, 32, 32, 32, 73,117,112, 83,116,111,114,101, 65,116,116,114,105, 98, +117,116,101, 40,105,109, 97,103,101, 44, 32, 40, 99,104, 97,114, 32, 42, 41, 32, +108,117, 97, 95,116,111,115,116,114,105,110,103, 40, 76, 44, 45, 50, 41, 44, 32, + 40, 99,104, 97,114, 32, 42, 41, 32,108,117, 97, 95,116,111,115,116,114,105,110, +103, 40, 76, 44, 45, 49, 41, 41, 59, 10, 32, 32, 32, 32,108,117, 97, 95,112,111, +112, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,125, 10, 32, 32, 10, 32, 32,105,117, +112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,109, + 97,103,101, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105, +104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,109, 97,103,101, 41, + 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 32, 10, 32, 10, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 0, 64, 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, + 0, 0, 0,192, 0,128, 0, 6, 65,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, + 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103, +101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 99,111,108,111,114,115, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 59, 0, 0, 0, 64, 0, 0, 0, + 62, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/image_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergb.loh b/iup/srclua5/loh/imagergb.loh new file mode 100755 index 0000000..dd73833 --- /dev/null +++ b/iup/srclua5/loh/imagergb.loh @@ -0,0 +1,58 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergb.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergb.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 14, 0, 0, 0, 64,105,109, 97, +103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 9, 0, 0, + 0,105,109, 97,103,101,114,103, 98, 0, 4, 7, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0,110,110,115, 0, 4, 9, 0, + 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 9, 0, 0, 0, 73,109, 97,103, +101, 82, 71, 66, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 44, 1, 0, 0, + 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, 82, 71, + 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, +105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110, +116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108, +117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, + 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42,112,105,120, +101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99, +104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, + 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, + 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40,119, 44, 32,104, 44, 32,112,105, +120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,108,117,103, +115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108, +117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, + 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112,105,120,101,108,115, + 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, + 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158, + 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 9, 0, 0, 0, 73,109, 97,103, +101, 82, 71, 66, 0, 4, 6, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0, + 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0,112,105,120,101,108,115, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, + 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, + 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergb_be32.loh b/iup/srclua5/loh/imagergb_be32.loh new file mode 100755 index 0000000..5825d4d --- /dev/null +++ b/iup/srclua5/loh/imagergb_be32.loh @@ -0,0 +1,58 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergb_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergb_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 14, 64,105,109, 97, +103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 0, 0, 0, 19, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, + 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9,132,194, +128, 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, + 64, 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, + 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, + 9,105,109, 97,103,101,114,103, 98, 0, 4, 0, 0, 0, 7,112, 97,114,101,110, +116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99, +114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 4,110,110,115, 0, 4, 0, 0, + 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 9, 73,109, 97,103, +101, 82, 71, 66, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 0, 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0, 1, 44, + 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103,101, 82, 71, + 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, +105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110, +116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108, +117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, + 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 42,112,105,120, +101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,117, 99, +104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, + 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, + 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40,119, 44, 32,104, 44, 32,112,105, +120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,108,117,103, +115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108, +117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, + 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112,105,120,101,108,115, + 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, + 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 6, 0, 0, 0, 7, 0, + 0, 0,133, 0,192, 64,198, 0,192,129, 6, 0,192,193, 70, 2, 0, 0,157, 0, + 0, 0,158, 0,128, 0, 30, 0, 0, 0, 4, 4, 0, 0, 0, 9, 73,109, 97,103, +101, 82, 71, 66, 0, 4, 0, 0, 0, 6,119,105,100,116,104, 0, 4, 0, 0, 0, + 7,104,101,105,103,104,116, 0, 4, 0, 0, 0, 7,112,105,120,101,108,115, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, + 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, + 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, + 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, + 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergb_be64.loh b/iup/srclua5/loh/imagergb_be64.loh new file mode 100755 index 0000000..b0d488f --- /dev/null +++ b/iup/srclua5/loh/imagergb_be64.loh @@ -0,0 +1,62 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergb_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergb_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, + 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64, +128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,103, + 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97, +109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, + 44, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, + 32, 73,109, 97,103,101, 82, 71, 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32, + 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, + 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105, +110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, + 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99, +104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97, + 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, + 32, 51, 44, 32,119, 42,104, 42, 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108, +101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40, +119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112, +108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, + 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100, +108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101, +101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, + 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, + 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70, +193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120, +101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, + 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergb_le64.loh b/iup/srclua5/loh/imagergb_le64.loh new file mode 100755 index 0000000..c73e537 --- /dev/null +++ b/iup/srclua5/loh/imagergb_le64.loh @@ -0,0 +1,62 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergb_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergb_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, + 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64, +128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,103, + 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97, +109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, + 44, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, + 32, 73,109, 97,103,101, 82, 71, 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32, + 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, + 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105, +110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, + 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99, +104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97, + 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, + 32, 51, 44, 32,119, 42,104, 42, 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108, +101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40, +119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112, +108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, + 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100, +108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101, +101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, + 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, + 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70, +193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120, +101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, + 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergb_le64w.loh b/iup/srclua5/loh/imagergb_le64w.loh new file mode 100755 index 0000000..f5ce332 --- /dev/null +++ b/iup/srclua5/loh/imagergb_le64w.loh @@ -0,0 +1,62 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergb_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergb_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101,114,103, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, + 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, + 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64, +128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114,103, + 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97, +109,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, + 44, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, + 32, 73,109, 97,103,101, 82, 71, 66, 40,108,117, 97, 95, 83,116, 97,116,101, 32, + 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, + 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105, +110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, + 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99, +104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97, + 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, + 32, 51, 44, 32,119, 42,104, 42, 51, 41, 59, 10, 32, 32, 73,104, 97,110,100,108, +101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 40, +119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112, +108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, + 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100, +108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101, +101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, + 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, + 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70, +193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, 66, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112,105,120, +101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, + 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergb_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergba.loh b/iup/srclua5/loh/imagergba.loh new file mode 100755 index 0000000..777450b --- /dev/null +++ b/iup/srclua5/loh/imagergba.loh @@ -0,0 +1,58 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergba.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergba.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64,105,109, 97, +103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132, 9, +128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, + 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, + 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, + 0, 0,105,109, 97,103,101,114,103, 98, 97, 0, 4, 7, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0,110,110,115, 0, 4, + 9, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 73,109, + 97,103,101, 82, 71, 66, 65, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 11, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 46, + 1, 0, 0, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103, +101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10, +123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, + 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104, + 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, + 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, + 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, + 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32, +119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105, +104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 65, 40,119, 44, 32, +104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97, + 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32, + 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95, +114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112, +105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10, +125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, + 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 6, + 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6,129,192, 0, 70,193,192, 0, +157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 10, 0, 0, + 0, 73,109, 97,103,101, 82, 71, 66, 65, 0, 4, 6, 0, 0, 0,119,105,100,116, +104, 0, 4, 7, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0,112, +105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, + 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, + 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergba_be32.loh b/iup/srclua5/loh/imagergba_be32.loh new file mode 100755 index 0000000..78ae5a6 --- /dev/null +++ b/iup/srclua5/loh/imagergba_be32.loh @@ -0,0 +1,58 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergba_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergba_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64,105,109, 97, +103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 0, 0, 0, 19, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, + 0, 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9,132, +194,128, 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, + 0, 64, 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0, +128, 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, + 0, 10,105,109, 97,103,101,114,103, 98, 97, 0, 4, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, + 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 4,110,110,115, 0, 4, + 0, 0, 0, 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 10, 73,109, + 97,103,101, 82, 71, 66, 65, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, + 0, 1, 46, 32, 10,115,116, 97,116,105, 99, 32,105,110,116, 32, 73,109, 97,103, +101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116, 97,116,101, 32, 42, 76, 41, 10, +123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, + 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, 10, 32, 32,105,110,116, 32,104, + 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, + 50, 41, 59, 10, 32, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, + 42,112,105,120,101,108,115, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, + 99,107,117, 99,104, 97,114, 95, 97,114,114, 97,121, 40, 76, 44, 32, 51, 44, 32, +119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,105, +104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, 82, 71, 66, 65, 40,119, 44, 32, +104, 44, 32,112,105,120,101,108,115, 41, 59, 10, 32, 32,105,117,112,108,117, 97, + 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,105,104, 41, 59, 10, 32, + 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95, +114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, 32, 32,102,114,101,101, 40,112, +105,120,101,108,115, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10, +125, 10, 32, 10, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, + 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, + 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 6, + 0, 0, 0, 7, 0, 0, 0,133, 0,192, 64,198, 0,192,129, 6, 0,192,193, 70, + 2, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 4, 4, 0, 0, 0, + 10, 73,109, 97,103,101, 82, 71, 66, 65, 0, 4, 0, 0, 0, 6,119,105,100,116, +104, 0, 4, 0, 0, 0, 7,104,101,105,103,104,116, 0, 4, 0, 0, 0, 7,112, +105,120,101,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, + 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, + 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, + 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, + 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, + 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, + 9, 0, 0, 0, 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergba_be64.loh b/iup/srclua5/loh/imagergba_be64.loh new file mode 100755 index 0000000..4a1db93 --- /dev/null +++ b/iup/srclua5/loh/imagergba_be64.loh @@ -0,0 +1,63 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergba_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergba_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, + 64, 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, + 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114, +103, 98, 97, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, + 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, +110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, + 71, 66, 65, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, + 99, 0, 4, 46, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32, +105,110,116, 32, 73,109, 97,103,101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116, + 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32, +108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99, +107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110, +101,100, 32, 99,104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117, +112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97, +121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104, + 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, + 82, 71, 66, 65, 40,119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, + 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, + 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104, +105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, + 32, 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101, +116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, + 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, + 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100, +103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, + 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, + 4, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, + 66, 65, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112,105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, + 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergba_le64.loh b/iup/srclua5/loh/imagergba_le64.loh new file mode 100755 index 0000000..66b8966 --- /dev/null +++ b/iup/srclua5/loh/imagergba_le64.loh @@ -0,0 +1,63 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergba_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergba_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, + 64, 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, + 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114, +103, 98, 97, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, + 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, +110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, + 71, 66, 65, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, + 99, 0, 4, 46, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32, +105,110,116, 32, 73,109, 97,103,101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116, + 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32, +108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99, +107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110, +101,100, 32, 99,104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117, +112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97, +121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104, + 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, + 82, 71, 66, 65, 40,119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, + 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, + 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104, +105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, + 32, 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101, +116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, + 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, + 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100, +103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, + 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, + 4, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, + 66, 65, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112,105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, + 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/imagergba_le64w.loh b/iup/srclua5/loh/imagergba_le64w.loh new file mode 100755 index 0000000..eedbfad --- /dev/null +++ b/iup/srclua5/loh/imagergba_le64w.loh @@ -0,0 +1,63 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/imagergba_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/imagergba_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,105,109, 97,103,101,114,103, 98, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, + 64, 0,132, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, + 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101,114, +103, 98, 97, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, + 0, 0, 0,110,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, +110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, + 71, 66, 65, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102,117,110, + 99, 0, 4, 46, 1, 0, 0, 0, 0, 0, 0, 32, 10,115,116, 97,116,105, 99, 32, +105,110,116, 32, 73,109, 97,103,101, 82, 71, 66, 65, 40,108,117, 97, 95, 83,116, + 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32,105,110,116, 32,119, 32, 61, 32, +108,117, 97, 76, 95, 99,104,101, 99,107,105,110,116, 40, 76, 44, 32, 49, 41, 59, + 10, 32, 32,105,110,116, 32,104, 32, 61, 32,108,117, 97, 76, 95, 99,104,101, 99, +107,105,110,116, 40, 76, 44, 32, 50, 41, 59, 10, 32, 32,117,110,115,105,103,110, +101,100, 32, 99,104, 97,114, 32, 42,112,105,120,101,108,115, 32, 61, 32,105,117, +112,108,117, 97, 95, 99,104,101, 99,107,117, 99,104, 97,114, 95, 97,114,114, 97, +121, 40, 76, 44, 32, 51, 44, 32,119, 42,104, 42, 52, 41, 59, 10, 32, 32, 73,104, + 97,110,100,108,101, 32, 42,105,104, 32, 61, 32, 73,117,112, 73,109, 97,103,101, + 82, 71, 66, 65, 40,119, 44, 32,104, 44, 32,112,105,120,101,108,115, 41, 59, 10, + 32, 32,105,117,112,108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, + 44, 32,105,104, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104, +105,104, 97,110,100,108,101, 95,114, 97,119, 40, 76, 44, 32,105,104, 41, 59, 10, + 32, 32,102,114,101,101, 40,112,105,120,101,108,115, 41, 59, 10, 32, 32,114,101, +116,117,114,110, 32, 49, 59, 10,125, 10, 32, 10, 0, 4, 14, 0, 0, 0, 0, 0, + 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, + 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100, +103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 28, 0, 0, 0, 0, 2, 0, 6, 7, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, + 6,129,192, 0, 70,193,192, 0,157, 0, 0, 2,158, 0, 0, 0, 30, 0,128, 0, + 4, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 82, 71, + 66, 65, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,119,105,100,116,104, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,104,101,105,103,104,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112,105,120,101,108,115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, + 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/imagergba_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/item.loh b/iup/srclua5/loh/item.loh new file mode 100755 index 0000000..b17b36b --- /dev/null +++ b/iup/srclua5/loh/item.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/item.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/item.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,105,116,101, +109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, 0,131,100, 0, + 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, + 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 14, 0, + 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,105,116,101, +109, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 3, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 4, 13, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99, 98, 0, 4, 14, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, + 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, + 0, 4, 5, 0, 0, 0, 73,116,101,109, 0, 4, 6, 0, 0, 0,116,105,116,108, +101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/item_be32.loh b/iup/srclua5/loh/item_be32.loh new file mode 100755 index 0000000..f707f78 --- /dev/null +++ b/iup/srclua5/loh/item_be32.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/item_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/item_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,105,116,101, +109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0,128, 74,131,194, 0, 73,132,194, 0, 73,131, 0, 64, 9, 0, 0, + 0,100,133, 0, 64, 9, 0, 2,192, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, + 0, 69, 0, 0, 0,128, 0, 3, 64,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, + 0, 14, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,105,116,101, +109, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, + 4, 0, 0, 0, 3, 83, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, + 4, 0, 0, 0, 13,104,105,103,104,108,105,103,104,116, 95, 99, 98, 0, 4, 0, + 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, + 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0, +133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, + 2, 4, 0, 0, 0, 5, 73,116,101,109, 0, 4, 0, 0, 0, 6,116,105,116,108, +101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, + 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/item_be64.loh b/iup/srclua5/loh/item_be64.loh new file mode 100755 index 0000000..45ac562 --- /dev/null +++ b/iup/srclua5/loh/item_be64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/item_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/item_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,105,116,101,109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, + 0,131,100, 0, 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 0, 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 14, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99, + 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, + 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, + 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/item_le64.loh b/iup/srclua5/loh/item_le64.loh new file mode 100755 index 0000000..6f43478 --- /dev/null +++ b/iup/srclua5/loh/item_le64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/item_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/item_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,105,116,101,109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, + 0,131,100, 0, 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 0, 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 14, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99, + 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, + 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, + 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/item_le64w.loh b/iup/srclua5/loh/item_le64w.loh new file mode 100755 index 0000000..4c635a0 --- /dev/null +++ b/iup/srclua5/loh/item_le64w.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/item_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/item_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,105,116,101,109, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, + 0,131,100, 0, 0, 0, 9, 64, 0,133, 69,192, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 0, 3, 0,128, 0, 0, 0,193, 64, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 14, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,104,105,103,104,108,105,103,104,116, 95, 99, + 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, + 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, + 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/item_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/iuplua.loh b/iup/srclua5/loh/iuplua.loh new file mode 100755 index 0000000..8f7ee10 --- /dev/null +++ b/iup/srclua5/loh/iuplua.loh @@ -0,0 +1,487 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/iuplua.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/iuplua.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,105,117,112, +108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, +114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0, 7, 64, 0, 0, + 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0,129, 0, 1, 0, + 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0, 0, 1, 0, 0, + 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0, 1,193, 1, 0, +220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0,128, 1,128, 0, +220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0,128, 1, 0, 1, +220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0,133,129, 2, 0, +220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0,133, 1, 3, 0, +220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0,199,128, 3, 0, +228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0,201, 0,129,136, +199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137,197, 0, 4, 0, + 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0,201, 0, 1,138, +197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0, 36, 1, 3, 0, +201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0,220, 64,128, 1, +202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0,197, 0, 6, 0, + 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0, 65, 1, 1, 0, +220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0,199,192, 6, 0, +228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0,228, 64, 4, 0, +199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0,199, 0, 8, 0, +197, 64, 8, 0,198,128,200, 1,218, 0, 0, 0, 22,128, 3,128,197, 64, 8, 0, +198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,146,197, 64, 8, 0, +198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,147,197, 64, 9, 0, + 5, 65, 9, 0,201, 0,129,147,197, 64, 9, 0,201, 0, 73,148, 30, 0,128, 0, + 41, 0, 0, 0, 4, 10, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 4, + 14, 0, 0, 0,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 17, + 0, 0, 0, 82,101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0, + 4, 12, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0,105,117, +112, 83,101,116, 77,101,116,104,111,100, 0, 4, 8, 0, 0, 0, 95, 95,105,110, +100,101,120, 0, 4, 11, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, + 4, 11, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 11, 0, 0, + 0, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 17, 0, 0, 0,105,104, 97, +110,100,108,101, 95,116,111,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 95, + 95,101,113, 0, 4, 16, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109, +112, 97,114,101, 0, 4, 16, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101, +116,110, 97,109,101, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 15, 0, 0, 0, 82,101,103,105,115,116, +101,114, 72, 97,110,100,108,101, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, + 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0, +115,104,111,119, 0, 4, 5, 0, 0, 0,104,105,100,101, 0, 4, 4, 0, 0, 0, +109, 97,112, 0, 4, 12, 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, + 0, 4, 14, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, + 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 4, 0, + 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 20, + 0, 0, 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112, +117,112, 0, 4, 14, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, + 69, 0, 4, 5, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0, 0,112,114,111, +116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0,100,111,115, +116,114,105,110,103, 0, 4, 7, 0, 0, 0,100,111,102,105,108,101, 0, 4, 4, + 0, 0, 0, 82, 71, 66, 0, 4, 3, 0, 0, 0, 95, 71, 0, 4, 8, 0, 0, 0, +112, 97, 99,107, 97,103,101, 0, 4, 7, 0, 0, 0,108,111, 97,100,101,100, 0, + 4, 7, 0, 0, 0,105,117,112,108,117, 97, 0, 4, 4, 0, 0, 0,105,117,112, + 0, 4, 9, 0, 0, 0,105,117,112,108,117, 97, 53, 49, 0, 4, 3, 0, 0, 0, + 95, 77, 0, 4, 9, 0, 0, 0, 95, 80, 65, 67, 75, 65, 71, 69, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0, + 0,134, 0,192, 0,198, 0, 0, 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128, + 0, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1, +128, 0, 1,128, 1, 69,193, 0, 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0, + 0, 30, 1, 0, 0, 22, 0, 4,128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, + 1, 23, 0, 65, 2, 22, 0, 2,128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1, + 0, 70,193,193, 2,128, 1,128, 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0, + 1, 22,128, 0,128, 5,129, 1, 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128, + 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0,116, +121,112,101, 0, 4, 9, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 7, + 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0, 0,115,116,114,105,110, +103, 0, 4, 5, 0, 0, 0,115,101,108,102, 0, 4, 4, 0, 0, 0,105,117,112, + 0, 4, 9, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, + 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 25, 0, + 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0, 0, 0, 5, 0, + 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 34, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108, +101, 0, 1, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0,102,117,110, 99, 0, 2, + 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0,116,101,109,112, 0, 23, 0, 0, 0, + 30, 0, 0, 0, 7, 0, 0, 0,114,101,115,117,108,116, 0, 28, 0, 0, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0, + 3, 0, 5, 15, 0, 0, 0,197, 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22, +128, 0,128,197, 0, 0, 0, 10, 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198, + 0,128, 1,154, 0, 0, 0, 22, 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201, + 64,128,128, 30, 0,128, 0, 2, 0, 0, 0, 4, 10, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15, + 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, + 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 5, 0, 0, 0,102,117,110, 99, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 5, 0, 0, 0,116,121,112,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 3, 0, + 0, 0, 99, 98, 0, 9, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 44, 0, 0, 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0, + 0,195, 0,128, 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128, + 1,192, 0, 0, 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0, + 0, 64, 1, 0, 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0, + 0, 22, 0,252,127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128, + 0, 2, 0, 0, 0, 4, 7, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0, + 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21, 0, 0, 0, 45, 0, 0, + 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, + 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, + 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, + 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 53, 0, 0, + 0, 4, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 6, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0, + 0, 0, 2, 0, 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, +118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, + 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0,133, 0, 0, 0,134, 64, + 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0,198,128,128, 1,218, 0, + 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0,220,128, 0, 1,218, 0, + 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, + 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0, 28, 65, 0, 1, 6, 65, +128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0, 0, 1, 0, 0, 64, 1, + 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128, 5,193, 0, 0, 64, 1, + 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128, 69, 1, 1, 0,128, 1, + 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128, 69,129, 1, 0,129,193, + 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1, 22,192, 4,128, 5, 1, + 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2, 22, 0, 1,128, 5, 1, + 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2, 22, 0, 2,128, 5,129, + 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0, 22, 64, 0,128, 30, 1, + 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128,222, 0, 0, 1, 30, 0, +128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, + 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107,115, 0, 4, 13, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101, +116, 0, 4, 5, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,116, 97, 98, +108,101, 0, 4, 6, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0,105, +110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, + 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0, + 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 71,101,116, 72, 97,110,100, +108,101, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, + 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, + 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, + 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, + 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, + 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, + 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, + 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, + 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, + 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76, 0, 0, 0, 79, 0, 0, 0, 7, + 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0, + 0, 0, 6, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0, + 6, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0, 7, 0, + 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23, 0, 0, 0, 6, 0, 0, + 0,118, 97,108,117,101, 0, 28, 0, 0, 0, 66, 0, 0, 0, 7, 0, 0, 0,111, + 98,106,101, 99,116, 0, 33, 0, 0, 0, 45, 0, 0, 0, 3, 0, 0, 0,105,104, + 0, 59, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0, 1,128, + 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69, 65, 0, + 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133, 1, 0, + 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133,193, 0, + 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23,128,193, + 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156,129, 0, + 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6, 66,194, + 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92,130, 0, + 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0, 3, 0, + 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5, 2, 3, + 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5,130, 3, + 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192, 2, 0, + 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87,128, 65, + 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22,128, 1, +128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28, 66, 0, + 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73,129,128, + 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0,116,121,112,101, 0, 4, + 13, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,116, 0, 4, 6, 0, + 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0,101,114,114,111,114, 0, 4, + 19, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100, +108,101, 0, 4, 7, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7, 0, 0, 0, +115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,117,112,112,101,114, 0, 4, 10, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0, +240, 63, 4, 13, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, + 4, 15, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, + 4, 12, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0,105,104, + 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13, 0, 0, 0, 83, +101,116, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0, 0, 0,110,105, +108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 82, 0, + 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 84, 0, + 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, + 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, + 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, 0, + 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 88, 0, + 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 91, 0, + 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 92, 0, + 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, + 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 96, 0, + 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 97, 0, + 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, + 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, 0, 0, 0,100, 0, + 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,101, 0, + 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,102, 0, + 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0,107, 0, 0, 0,109, 0, + 0, 0, 10, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 6, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77, + 0, 0, 0, 6, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0, + 0, 3, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0, 3, 0, 0, 0, +116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99, +116, 0, 9, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, 0, 73, 78, 68, 69, 88, 0, + 27, 0, 0, 0, 75, 0, 0, 0, 3, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75, + 0, 0, 0, 5, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0, 45, 0, 0, 0, + 5, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,122, 0, 0, 0,130, 0, 0, 0, 0, 1, 0, 6, 19, 0, 0, + 0, 69, 0, 0, 0,128, 0, 0, 0, 92,128, 0, 1, 90, 64, 0, 0, 22,192, 2, +128,133, 64, 0, 0,134,128, 64, 1,193,192, 0, 0, 5, 1, 1, 0, 64, 1, 0, + 0, 28, 1, 0, 1,156,128, 0, 0,197, 64, 1, 0, 0, 1, 0, 1, 64, 1, 0, + 0,220, 64,128, 1,158, 0, 0, 1, 94, 0, 0, 1, 30, 0,128, 0, 6, 0, 0, + 0, 4, 8, 0, 0, 0, 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0,115, +116,114,105,110,103, 0, 4, 7, 0, 0, 0,102,111,114,109, 97,116, 0, 4, 17, + 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, 69, 40, 37,115, 41, 0, + 4, 9, 0, 0, 0,116,111,115,116,114,105,110,103, 0, 4, 10, 0, 0, 0, 83, +101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0, + 0,123, 0, 0, 0,123, 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, + 0,127, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, + 0,118, 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0,110, 97,109,101, 0, + 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 97,117,116,111,110, 97,109,101, + 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, + 0,136, 0, 0, 0, 0, 1, 0, 4, 6, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, + 0,228, 0, 0, 0, 0, 0, 0, 0, 73,192, 0, 1, 30, 0,128, 0, 2, 0, 0, + 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, + 1, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0, 1, 1, 0, 4, + 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0, 93, 0,128, 1, + 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0, 0, 99,111,110, +115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 6, 0, 0, 0,134, 0, 0, + 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,135, 0, 0, + 0, 1, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0, + 0, 0,133, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156, 0, 0, 0, 0, + 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156, + 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154, 64, 0, 0, 22, +192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64, 1,128, 0, 28, +129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197,128, 1, 0, 10, +129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128, 1, 0, 2,193, + 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192, 1, 0, 2, 92, + 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 12, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, + 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0, 0,105,117,112, 71,101,116, 87, +105,100,103,101,116, 0, 4, 4, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0, +115,116,114,105,110,103, 0, 4, 6, 0, 0, 0,117,112,112,101,114, 0, 4, 7, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 7, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0,105,117,112, 83,101, +116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 31, 0, 0, 0,140, 0, 0, 0, +140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0, 0, 0,142, 0, 0, 0, +142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0, +145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,146, 0, 0, 0, +146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0,150, 0, 0, 0, +151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,152, 0, 0, 0, +152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0, 0, 0,156, 0, 0, 0, + 5, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 30, + 0, 0, 0, 9, 0, 0, 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30, + 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0, 0, 29, 0, 0, + 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 21, 0, 0, 0, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0, 0, 1, 0, 3, + 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, + 2, 0, 0, 0, 4, 5, 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0,104, + 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0, + 0, 0,167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,111, 98, +106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, + 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, + 0, 0, 72,105,100,101, 0, 4, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 4, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172, + 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0,176, 0, + 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, + 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 77, 97,112, 0, 4, + 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,175, + 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 7, + 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0, + 0, 0,139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0, +128,128,201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65, +128, 1, 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129, + 1, 0, 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1, +128, 0, 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 7, 0, + 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0,104, 97,110,100,108,101, + 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0,105,117,112, 83,101, +116, 87,105,100,103,101,116, 0, 4, 14, 0, 0, 0,115,101,116, 65,116,116,114, +105, 98,117,116,101,115, 0, 0, 0, 0, 0, 23, 0, 0, 0,179, 0, 0, 0,179, + 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0,182, 0, 0, 0,184, + 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,185, 0, 0, 0,185, + 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, + 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0,188, + 0, 0, 0,189, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0, + 22, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 6, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0, 0, + 2, 0, 12, 25, 0, 0, 0,134, 0, 64, 0,197, 64, 0, 0, 0, 1,128, 0,220, + 0, 1, 1, 22, 0, 4,128, 5,130, 0, 0, 64, 2, 0, 3, 28,130, 0, 1, 23, +192, 64, 4, 22,128, 2,128, 5, 2, 1, 0, 64, 2,128, 3, 28,130, 0, 1, 23, + 64, 65, 4, 22, 64, 1,128, 5,130, 1, 0, 64, 2, 0, 0,128, 2, 0, 3,192, + 2,128, 3, 28, 66, 0, 2, 22, 0, 0,128,137,192, 1, 3,225,128, 0, 0, 22, + 0,251,127, 30, 0,128, 0, 7, 0, 0, 0, 4, 7, 0, 0, 0,104, 97,110,100, +108,101, 0, 4, 6, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0,116, +121,112,101, 0, 4, 7, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 12, 0, 0, + 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117, +112, 32,104, 97,110,100,108,101, 0, 4, 7, 0, 0, 0,114, 97,119,115,101,116, + 0, 0, 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0, + 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, + 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, + 0,194, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, + 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0, + 0,201, 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0,111, 98,106, +101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 1, + 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 40,102,111,114, 32,103,101,110,101, +114, 97,116,111,114, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 40, +102,111,114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14, + 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 4, 0, 0, + 0, 24, 0, 0, 0, 2, 0, 0, 0,105, 0, 5, 0, 0, 0, 22, 0, 0, 0, 2, + 0, 0, 0,118, 0, 5, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,218, 0, 0, 0,227, 0, 0, 0, 0, 2, 0, 11, 25, 0, 0, 0,133, 0, 0, + 0,192, 0, 0, 0, 1, 65, 0, 0,156,128,128, 1,212, 0,128, 0, 1,129, 0, + 0, 64, 1,128, 1,129,129, 0, 0, 32, 1, 2,128, 5,194, 0, 0, 70,194,129, + 0, 28,130, 0, 1, 23, 0, 65, 4, 22,192, 0,128, 5, 66, 1, 0, 64, 2, 0, + 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253,127, 5,129, 1, 0, 6,193, 65, + 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 8, 0, 0, + 0, 4, 7, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0, 0, 0,104, 97, +110,100,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 12, 0, 0, 0,105, +117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32, +104, 97,110,100,108,101, 0, 4, 7, 0, 0, 0, 65,112,112,101,110,100, 0, 4, + 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0,115,101,116, 65, +116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 25, 0, 0, 0,219, 0, + 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0, 0,221, 0, + 0, 0,221, 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0, + 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0, + 0, 0,223, 0, 0, 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0, + 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0, + 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, + 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, +110, 0, 5, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 40,102,111,114, 32,105, +110,100,101,120, 41, 0, 8, 0, 0, 0, 19, 0, 0, 0, 12, 0, 0, 0, 40,102, +111,114, 32,108,105,109,105,116, 41, 0, 8, 0, 0, 0, 19, 0, 0, 0, 11, 0, + 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 19, 0, 0, + 0, 2, 0, 0, 0,105, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,238, 0, 0, 0,252, 0, 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128, + 0, 0, 0,219, 64,128, 0, 22, 0, 0,128,193, 0, 0, 0, 21,192, 0, 1,133, + 64, 0, 0,154, 0, 0, 0, 22,128, 0,128,133, 64, 0, 0,137, 0, 0,129, 22, +192, 9,128,133,192, 0, 0,202,192, 0, 0,201, 64, 65,130,201,192, 65,131,201, + 64, 66,132,156,128, 0, 1,197,128, 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9, + 1,195,134, 9, 1, 0,129, 9,129, 67,131,220,128, 0, 1, 5,193, 3, 0, 74, +193, 0, 1,128, 1,128, 1,192, 1, 0, 1, 73, 65, 68,136, 73,193, 68,137, 73, + 65, 69,138, 98, 65, 0, 1, 28,129, 0, 1, 69,129, 5, 0,138, 1,129, 0,192, + 1, 0, 2,137,193, 69,130,137,129, 0,140,137,129,128,140,137,129, 0,141,162, + 65,128, 0, 92,129, 0, 1,199, 64, 0, 0,139,193,198, 2, 5, 2, 7, 0, 69, + 2, 7, 0,156, 65, 0, 2,139, 65,199, 2,156, 65, 0, 1,131, 1, 0, 3,135, + 65, 0, 0, 30, 0,128, 0, 30, 0, 0, 0, 4, 1, 0, 0, 0, 0, 4, 20, 0, + 0, 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117, +112, 0, 4, 6, 0, 0, 0,118, 97,108,117,101, 0, 4, 7, 0, 0, 0, 98,117, +116,116,111,110, 0, 4, 6, 0, 0, 0,116,105,116,108,101, 0, 4, 3, 0, 0, + 0, 79,107, 0, 4, 5, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0, 54, + 48, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 44, 0, 0, 0,101, +114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 32, 61, + 32,110,105,108, 59, 32,114,101,116,117,114,110, 32,105,117,112, 46, 67, 76, 79, + 83, 69, 0, 4, 10, 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, + 0, 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 89, 69, 83, 0, 4, + 9, 0, 0, 0,114,101, 97,100,111,110,108,121, 0, 4, 8, 0, 0, 0, 51, 48, + 48,120, 49, 53, 48, 0, 4, 5, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0, + 0, 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 65, 67, 69, 78, + 84, 69, 82, 0, 4, 7, 0, 0, 0,109, 97,114,103,105,110, 0, 4, 6, 0, 0, + 0, 49, 48,120, 49, 48, 0, 4, 4, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, + 0, 49, 48, 0, 4, 7, 0, 0, 0,100,105, 97,108,111,103, 0, 4, 14, 0, 0, + 0, 69,114,114,111,114, 32, 77,101,115,115, 97,103,101, 0, 4, 11, 0, 0, 0, +100,101,102, 97,117,108,116,101,115, 99, 0, 4, 13, 0, 0, 0,100,101,102, 97, +117,108,116,101,110,116,101,114, 0, 4, 11, 0, 0, 0,115,116, 97,114,116,102, +111, 99,117,115, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 7, 0, 0, + 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, + 0, 0, 0, 0, 0, 52, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, + 0,239, 0, 0, 0,239, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,240, 0, 0, + 0,241, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0,243, 0, 0, 0,243, 0, 0, + 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,244, 0, 0, + 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, + 0,244, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, + 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, + 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, + 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,247, 0, 0, + 0,248, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,249, 0, 0, + 0,249, 0, 0, 0,250, 0, 0, 0,250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0, + 0, 4, 0, 0, 0,101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, + 0,116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0, 3, + 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0,109,108, + 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0,118, 98, 0, 33, 0, 0, 0, + 51, 0, 0, 0, 3, 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2, 2, + 0, 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6, 29, 0, 0, 0, 26, 64, 0, 0, 22, +192, 0,128,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1, 30, 0,128, 0,133, + 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0,220, 0, 0, 1,156,128, 0, 0,198, +192, 64, 1,218, 64, 0, 0, 22, 0, 1,128,197, 0, 0, 0, 6, 1, 65, 1,220, + 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128,197, 64, 1, 0,198,128,193, 1, 0, + 1, 0, 1, 65,193, 0, 0,220, 64,128, 1,197,192, 1, 0, 0, 1, 0, 1,221, + 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, 0, 0, 0, + 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69, 0, 4, 5, 0, 0, 0,112, + 97, 99,107, 0, 4, 6, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0, 0, + 0, 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0,116, 97, + 98,108,101, 0, 4, 7, 0, 0, 0,114,101,109,111,118,101, 0, 4, 7, 0, 0, + 0,117,110,112, 97, 99,107, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0, + 1, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0, + 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, + 6, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, + 7, 1, 0, 0, 8, 1, 0, 0, 8, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, + 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, + 11, 1, 0, 0, 11, 1, 0, 0, 13, 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, +102, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0,101,114,114, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 4, 0, 0, 0,114,101,116, 0, 11, 0, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 0, 1, + 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0, 0,192, 0, 0, 0,156, 0, + 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 15, + 0, 0, 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 11, + 0, 0, 0,108,111, 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, + 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,115, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, + 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0, 0, +192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 15, 0, 0, 0,112,114,111,116,101, 99,116,101,100, 99, 97, +108,108, 95, 0, 4, 9, 0, 0, 0,108,111, 97,100,102,105,108,101, 0, 0, 0, + 0, 0, 7, 0, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, + 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0, + 0, 0,102, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0, +198, 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128,129, +221, 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0, 0, + 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0,102,111,114,109, 97,116, 0, + 4, 9, 0, 0, 0, 37,100, 32, 37,100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0, +224,111, 64, 0, 0, 0, 0, 9, 0, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, + 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, + 1, 0, 0, 20, 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,114, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 2, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, + 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, + 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 37, 0, 0, + 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, + 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0,111, 0, 0, + 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, + 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, + 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, + 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, + 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0, 0, 0,156, 0, 0, + 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0,164, 0, 0, + 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0,172, 0, 0, + 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0, 0, 0,178, 0, 0, + 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0,191, 0, 0, + 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,214, 0, 0, + 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0, 0, 0,227, 0, 0, + 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0, + 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0, 0, 0,254, 0, 0, + 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, + 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1, 0, 0, 24, 1, 0, + 0, 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, + 0, 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, + 0, 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 27, 1, 0, 0, 27, 1, 0, + 0, 27, 1, 0, 0, 28, 1, 0, 0, 28, 1, 0, 0, 29, 1, 0, 0, 3, 0, 0, + 0, 16, 0, 0, 0,119,105,100,103,101,116, 95,103,101,116,116, 97, 98,108,101, + 0, 7, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0,105,104, 97,110,100,108,101, + 95,103,101,116,116, 97, 98,108,101, 0, 16, 0, 0, 0,113, 0, 0, 0, 17, 0, + 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0, 17, + 0, 0, 0,113, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/iuplua_be32.loh b/iup/srclua5/loh/iuplua_be32.loh new file mode 100755 index 0000000..07dc238 --- /dev/null +++ b/iup/srclua5/loh/iuplua_be32.loh @@ -0,0 +1,489 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/iuplua_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/iuplua_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,105,117,112, +108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, + 0, 0, 0,114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 64, 7, + 0, 0, 64, 36, 0, 0,128, 7, 0, 0,128, 36, 0, 0,192, 69, 0, 1, 0,129, + 1, 0, 64, 92, 0, 1, 64, 69, 0, 1, 0,129, 0, 1,128,193, 0, 0, 1, 0, + 2, 0, 64, 92, 0, 0,192,100, 0, 1, 0,164, 0, 0,192,197, 0, 1,193, 1, + 1, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 1,129, 65, 0,128, 1,128, + 2, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 2, 1, 65, 1, 0, 1,128, + 2, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 2, 65, 65, 0, 2,129,133, + 2, 0, 64,220, 0, 1, 64,197, 0, 1,193, 1, 0, 2,193, 65, 0, 3, 1,133, + 2, 0, 64,220, 0, 1, 64,228, 0, 3, 64,199, 0, 1,128,228, 0, 3,128,199, + 0, 1,192,228, 0, 3,192,199, 0, 0, 64,202, 0, 0, 1, 10,136,129, 0,201, + 0, 4, 0,199, 0, 4, 0,197, 0, 2, 1, 36,137, 1, 0,201, 0, 4, 0,197, + 0, 2, 65, 36,137,129, 0,201, 0, 4, 0,197, 0, 2,129, 36,138, 1, 0,201, + 0, 4, 0,197, 0, 2,193, 36,138,129, 0,201, 0, 4, 0,197, 0, 3, 1, 36, +139, 1, 0,201, 0, 5,192,197, 0, 4, 1, 5, 0, 1, 1, 65, 1,128, 64,220, + 0, 0, 64,202, 0, 4, 1, 5,140,129, 0,201, 0, 6, 0,199, 0, 6, 0,197, + 0, 3, 65, 36,139, 1, 0,201, 0, 5,192,197, 0, 6, 1, 5, 0, 1, 1, 65, + 1,128, 64,220, 1,128, 0,195, 0, 6,128,199, 0, 3,128,228, 0, 6,192,199, + 0, 3,192,228, 0, 7, 0,199, 0, 4, 0,228, 0, 7, 64,199, 0, 4, 64,228, + 0, 7,128,199, 0, 4,128,228, 0, 7,192,199, 0, 4,192,228, 0, 8, 0,199, + 0, 8, 64,197, 1,200,128,198, 0, 0, 0,218,128, 3,128, 22, 0, 8, 64,197, + 1,200,128,198, 1,200,192,198, 0, 9, 65, 5,146, 1, 0,201, 0, 8, 64,197, + 1,200,128,198, 1,200,192,198, 0, 9, 65, 5,147, 1, 0,201, 0, 9, 64,197, + 0, 9, 65, 5,147,129, 0,201, 0, 9, 64,197,148, 73, 0,201, 0,128, 0, 30, + 0, 0, 0, 41, 4, 0, 0, 0, 10, 99, 97,108,108, 98, 97, 99,107,115, 0, 4, + 0, 0, 0, 14,105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 0, + 0, 0, 17, 82,101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0, + 4, 0, 0, 0, 12,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 0, 0, + 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 13,105,117, +112, 83,101,116, 77,101,116,104,111,100, 0, 4, 0, 0, 0, 8, 95, 95,105,110, +100,101,120, 0, 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, + 4, 0, 0, 0, 11, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 0, 0, 0, + 11, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 17,105,104, 97, +110,100,108,101, 95,116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 5, 95, + 95,101,113, 0, 4, 0, 0, 0, 16,105,104, 97,110,100,108,101, 95, 99,111,109, +112, 97,114,101, 0, 4, 0, 0, 0, 16,105,104, 97,110,100,108,101, 95,115,101, +116,110, 97,109,101, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 15, 82,101,103,105,115,116, +101,114, 72, 97,110,100,108,101, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, + 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 5, +115,104,111,119, 0, 4, 0, 0, 0, 5,104,105,100,101, 0, 4, 0, 0, 0, 4, +109, 97,112, 0, 4, 0, 0, 0, 12, 99,111,110,115,116,114,117, 99,116,111,114, + 0, 4, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, + 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, + 0, 4, 66, 79, 88, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 20,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112, +117,112, 0, 4, 0, 0, 0, 14, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, + 69, 0, 4, 0, 0, 0, 5,112, 97, 99,107, 0, 4, 0, 0, 0, 15,112,114,111, +116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 0, 0, 0, 9,100,111,115, +116,114,105,110,103, 0, 4, 0, 0, 0, 7,100,111,102,105,108,101, 0, 4, 0, + 0, 0, 4, 82, 71, 66, 0, 4, 0, 0, 0, 3, 95, 71, 0, 4, 0, 0, 0, 8, +112, 97, 99,107, 97,103,101, 0, 4, 0, 0, 0, 7,108,111, 97,100,101,100, 0, + 4, 0, 0, 0, 7,105,117,112,108,117, 97, 0, 4, 0, 0, 0, 4,105,117,112, + 0, 4, 0, 0, 0, 9,105,117,112,108,117, 97, 53, 49, 0, 4, 0, 0, 0, 3, + 95, 77, 0, 4, 0, 0, 0, 9, 95, 80, 65, 67, 75, 65, 71, 69, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 27, 0, 1, 7, 7, 0, 0, 0, + 35, 0,192, 0,134, 1, 0, 0,198, 0, 0, 64,218,128, 0, 0, 22, 0,128, 0, + 30, 0, 0, 65, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 64,128, 23,128, 1,128, + 22, 1,128, 1, 0, 0, 0,193, 69, 0,128, 1,128, 1, 0, 1, 92, 0, 0, 1, + 29, 0, 0, 1, 30,128, 4, 0, 22, 0, 0, 65, 5, 1,128, 1, 64, 1, 0,129, + 28, 2, 65, 0, 23,128, 2, 0, 22, 0, 1, 65, 5, 0, 1, 64,135, 0, 1,129, + 69, 2,193,193, 70, 1,128, 1,128, 1, 0,129, 92, 0, 1, 65, 7, 1, 0, 1, + 94,128, 0,128, 22, 0, 1,129, 5, 2, 66, 1, 6, 1, 0, 1, 30, 0,128, 0, + 30, 0, 0, 0, 9, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,116, +121,112,101, 0, 4, 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 4, 0, + 0, 0, 7,117,110,112, 97, 99,107, 0, 4, 0, 0, 0, 7,115,116,114,105,110, +103, 0, 4, 0, 0, 0, 5,115,101,108,102, 0, 4, 0, 0, 0, 4,105,117,112, + 0, 4, 0, 0, 0, 9,100,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, 6, + 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, + 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0, 0, + 0, 5,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 4, 97, +114,103, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 7,104, 97,110,100,108, +101, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 5,102,117,110, 99, 0, 0, + 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 5,116,101,109,112, 0, 0, 0, 0, 23, + 0, 0, 0, 30, 0, 0, 0, 7,114,101,115,117,108,116, 0, 0, 0, 0, 28, 0, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, + 3, 0, 5, 0, 0, 0, 15, 0, 0, 0,197, 1,128, 0,198, 0, 0, 64,218,128, + 0,128, 22, 0, 0, 0,197, 0, 0, 1, 10, 0, 1, 0,201, 0, 0, 0,197, 1, +128, 0,198, 0, 0, 0,154,128, 0, 64, 22, 1, 0, 64,201,128, 0, 0, 22,128, +128, 64,201, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 10, 99, 97,108,108, + 98, 97, 99,107,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, + 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, + 0, 0, 37, 0, 0, 0, 4, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 5,102,117,110, 99, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 5,116,121,112,101, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 3, 99, 98, 0, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 44, 0, 0, 0, 53, 0, 2, 0, 7, 0, 0, 0, 21, 0, 0, 0, +128, 1,128, 0,195, 0, 0, 1, 5, 1, 0, 1, 64, 0,128, 1,128, 1,128,129, + 28, 2, 0, 0,192, 0, 0, 0,218,128, 0, 0, 22, 1, 0, 0,222, 0, 0, 1, + 5, 1, 0, 1, 64, 0, 0, 65,129, 1,128,129, 28, 2, 0, 0,128, 0, 0, 64, +154,127,252, 0, 22, 2, 0, 1, 3, 1, 0, 1, 30,127,251, 64, 22, 0,128, 0, + 30, 0, 0, 0, 2, 4, 0, 0, 0, 7,114, 97,119,103,101,116, 0, 4, 0, 0, + 0, 7,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, + 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, + 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, + 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, + 53, 0, 0, 0, 4, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 6,105,110,100,101,120, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 0, 0, 2,112, 0, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, +118, 0, 0, 0, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 59, 0, 0, 0, 79, 0, 2, 0, 7, 0, 0, 0, 67, 0, 0, 0,133, 1, 64, + 64,134, 0,128, 0,192, 1, 0,128,156, 0, 0,128,197, 1,128,128,198, 0, 0, + 0,218,128, 3,192, 22, 0, 0,192,197, 0, 0, 1, 0, 1, 0,128,220, 0, 0, + 0,218,128, 1, 0, 22, 0, 1, 1, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 65, + 64, 87,128, 0,128, 22, 0, 1,129, 5, 0, 1,193, 65, 1, 0, 65, 28, 1,128, + 65, 6, 1, 0, 1, 30,128, 10, 64, 22, 0, 2, 0,197, 0, 0, 1, 0, 1, 0, + 1, 64, 1,128,128,220, 0, 0, 64,218,128, 3,192, 22, 0, 0,193, 5, 0, 0, + 1, 64, 1, 0,129, 28, 0, 0, 1, 26,128, 1, 0, 22, 0, 1, 1, 69, 2, 0, + 1,128, 1, 0,129, 92, 2,193, 64, 87,128, 0,128, 22, 0, 1,129, 69, 0, 1, +193,129, 1, 0, 65, 92, 2, 0, 65, 70, 1, 0, 1, 94,128, 4,192, 22, 0, 1, + 1, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 66, 64, 87,128, 1, 0, 22, 0, 1, + 1, 5, 1,128, 1, 64, 1, 0,129, 28, 2, 64, 0, 23,128, 2, 0, 22, 0, 2, +129, 5, 1,128, 1, 64, 1, 0,129, 28, 0, 0, 1, 26,128, 0, 64, 22, 1, 0, + 1, 30,128, 0,128, 22, 1, 0, 0,222,128, 0, 0, 22, 1, 0, 0,222, 0,128, + 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 7,115,116,114,105,110,103, 0, 4, 0, + 0, 0, 6,117,112,112,101,114, 0, 4, 0, 0, 0, 10, 99, 97,108,108, 98, 97, + 99,107,115, 0, 4, 0, 0, 0, 13,105,117,112, 71,101,116, 87,105,100,103,101, +116, 0, 4, 0, 0, 0, 5,116,121,112,101, 0, 4, 0, 0, 0, 6,116, 97, 98, +108,101, 0, 4, 0, 0, 0, 6,101,114,114,111,114, 0, 4, 0, 0, 0, 19,105, +110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, + 0, 0, 13, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, + 7,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 10, 71,101,116, 72, 97,110,100, +108,101, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60, 0, 0, 0, 60, 0, + 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, + 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, + 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 64, 0, + 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, + 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 68, 0, + 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, + 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, + 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 71, 0, + 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, + 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, + 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76, 0, 0, 0, 79, 0, + 0, 0, 7, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, + 0, 66, 0, 0, 0, 6,105,110,100,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 66, + 0, 0, 0, 6, 73, 78, 68, 69, 88, 0, 0, 0, 0, 4, 0, 0, 0, 66, 0, 0, + 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, + 6,118, 97,108,117,101, 0, 0, 0, 0, 28, 0, 0, 0, 66, 0, 0, 0, 7,111, + 98,106,101, 99,116, 0, 0, 0, 0, 33, 0, 0, 0, 45, 0, 0, 0, 3,105,104, + 0, 0, 0, 0, 59, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 0, 0, 0,109, 0, 3, 0, 14, 0, 0, 0, 78, 0, 0, 0,197, 0,128, 1, + 0, 1, 0,128,220, 0, 0, 1, 5, 1, 0, 1, 64, 1, 0,129, 28, 0, 0, 65, + 69, 0, 0, 1,128, 1, 0,129, 92, 0, 0, 1, 90,128, 1, 0, 22, 0, 0, 1, +133, 2,128, 1,192, 1, 0,129,156, 3, 64,128, 87,128, 0,128, 22, 0, 0,193, +133, 0, 1, 1,193, 1, 0, 65,156, 1,193, 64, 87,128, 0, 64, 22, 1,193,128, + 23,128, 13, 0, 22, 0, 1,129,133, 3, 65,193,134, 0,128, 1,192, 1, 0,129, +156, 0, 2, 1,197, 3,129,129,198, 0, 0, 1,218,128, 3,128, 22, 3,194, 66, + 6, 0, 0, 66, 26,128, 0,192, 22, 0, 2,130, 69, 0, 0, 2,128, 1, 0,130, + 92, 3,130, 66, 6, 0, 2,194, 69, 0, 0, 2,128, 3, 0, 2,192, 4, 0, 3, + 0, 1, 0, 3, 64, 2,128, 66, 92, 0,128,129, 73,128, 7,128, 22, 0, 3, 2, + 5, 1, 0, 2, 64, 1, 0,130, 28, 4, 67, 64, 23,128, 2, 64, 22, 0, 3,130, + 5, 1, 0, 2, 64, 1, 0,130, 28, 0, 3,194, 69, 0, 0, 2,128, 3, 0, 2, +192, 4, 0, 3, 0, 2, 0, 66, 92, 0,196, 1, 73,128, 3,192, 22, 2, 65,128, + 87,128, 0,192, 22, 2, 65, 64, 87,128, 0, 64, 22, 2, 68, 64, 23,128, 1,128, + 22, 0, 3,194, 5, 0, 0, 2, 64, 3, 0, 2,128, 1, 0, 2,192, 2, 0, 66, + 28, 0,196, 1, 73,128, 0,128, 22, 0,128,129, 73,128, 0, 0, 22, 0,128,129, + 73, 0,128, 0, 30, 0, 0, 0, 18, 4, 0, 0, 0, 5,116,121,112,101, 0, 4, + 0, 0, 0, 13,105,117,112, 71,101,116, 87,105,100,103,101,116, 0, 4, 0, 0, + 0, 6,116, 97, 98,108,101, 0, 4, 0, 0, 0, 6,101,114,114,111,114, 0, 4, + 0, 0, 0, 19,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100, +108,101, 0, 4, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 4, 0, 0, 0, 7, +115,116,114,105,110,103, 0, 4, 0, 0, 0, 6,117,112,112,101,114, 0, 4, 0, + 0, 0, 10, 99, 97,108,108, 98, 97, 99,107,115, 0, 3, 63,240, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 13, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, + 4, 0, 0, 0, 15,105,117,112, 83,101,116, 67, 97,108,108, 98, 97, 99,107, 0, + 4, 0, 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 0, 0, + 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 16,105,104, + 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 0, 0, 0, 15, 83, +116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 0, 0, 0, 4, +110,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0, 82, + 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 84, + 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, + 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, + 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 86, + 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, + 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, 90, + 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 92, + 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, + 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, 96, + 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 97, + 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, + 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0,100, + 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, + 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, + 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0,107, + 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6,105,110,100,101,120, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 0, 0, 0, 6,118, 97,108,117,101, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 3,116,105, 0, 0, 0, 0, 3, 0, 0, 0, 77, 0, 0, + 0, 3,116,118, 0, 0, 0, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7,111, 98,106, +101, 99,116, 0, 0, 0, 0, 9, 0, 0, 0, 77, 0, 0, 0, 6, 73, 78, 68, 69, + 88, 0, 0, 0, 0, 27, 0, 0, 0, 75, 0, 0, 0, 3, 99, 98, 0, 0, 0, 0, + 29, 0, 0, 0, 75, 0, 0, 0, 5,102,117,110, 99, 0, 0, 0, 0, 32, 0, 0, + 0, 45, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0, 54, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, 0,130, 0, 1, 0, 6, 0, + 0, 0, 19, 0, 0, 0, 69, 0, 0, 0,128, 1, 0,128, 92, 0, 0, 64, 90,128, + 2,192, 22, 0, 0, 64,133, 1, 64,128,134, 0, 0,192,193, 0, 1, 1, 5, 0, + 0, 1, 64, 1, 0, 1, 28, 0, 0,128,156, 0, 1, 64,197, 1, 0, 1, 0, 0, + 0, 1, 64, 1,128, 64,220, 1, 0, 0,158, 1, 0, 0, 94, 0,128, 0, 30, 0, + 0, 0, 6, 4, 0, 0, 0, 8, 71,101,116, 78, 97,109,101, 0, 4, 0, 0, 0, + 7,115,116,114,105,110,103, 0, 4, 0, 0, 0, 7,102,111,114,109, 97,116, 0, + 4, 0, 0, 0, 17, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, 69, 40, 37,115, + 41, 0, 4, 0, 0, 0, 9,116,111,115,116,114,105,110,103, 0, 4, 0, 0, 0, + 10, 83,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, + 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,124, 0, 0, 0,124, 0, + 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, + 0, 0,125, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, + 0, 0,126, 0, 0, 0,127, 0, 0, 0,129, 0, 0, 0,130, 0, 0, 0, 3, 0, + 0, 0, 2,118, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 5,110, 97,109, +101, 0, 0, 0, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 97,117,116,111,110, 97, +109,101, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,132, 0, 0, 0,136, 0, 1, 0, 4, 0, 0, 0, 6, 0, 0, 0, 69, 0, + 64, 64,134, 0, 0, 0,228, 0, 0, 0, 0, 1, 0,192, 73, 0,128, 0, 30, 0, + 0, 0, 2, 4, 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, 0, 5,110,105, 99, +107, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 1, 1, + 0, 4, 0, 0, 0, 6, 0, 0, 0, 68, 0,192, 0, 75, 0, 0, 0,192, 1,128, + 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 12, 99, +111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, + 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 6, + 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,135, + 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0, +156, 0, 2, 0, 8, 0, 0, 0, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 65, + 1, 1,128, 64,156, 0, 0,128,133, 0, 0, 0,192, 1, 0,128,156, 0, 0, 64, +154,128, 4,192, 22, 0, 0,192,197, 0, 1, 1, 5, 2, 65, 65, 6, 0,128, 1, + 64, 1, 0,129, 28, 1,129, 0,198, 0, 0, 64,218,128, 0, 0, 22, 0, 1,128, +197, 0, 0,129, 10,131,128,193, 9,132, 0, 1, 9, 0, 0, 1, 69, 2, 0, 1, +128, 0, 2, 65,193, 1,128, 65, 92, 0, 2,129, 69, 0, 0, 1,128, 2, 0, 1, +192, 1,128, 65, 92, 1, 0, 0, 30, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, + 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105, +117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 13,105,117,112, 71,101, +116, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 4,105,117,112, 0, 4, 0, 0, + 0, 7,115,116,114,105,110,103, 0, 4, 0, 0, 0, 6,117,112,112,101,114, 0, + 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 4, 0, 0, 0, + 11,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 13,105,117,112, + 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0, 0, + 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, 0, + 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, + 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0, 0, + 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, + 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0, 0, + 0,156, 0, 0, 0, 5, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 9,116,121,112,101,110, 97,109,101, 0, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, + 7, 0, 0, 0, 30, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 15, 0, + 0, 0, 29, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 21, 0, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0,168, 0, 1, + 0, 3, 0, 0, 0, 4, 0, 0, 0, 69, 0, 64, 64,134, 1, 0, 64, 92, 0,128, + 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 5, 83,104,111,119, 0, 4, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, + 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, +111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 1, 0, 3, 0, 0, 0, 4, 0, + 0, 0, 69, 0, 64, 64,134, 1, 0, 64, 92, 0,128, 0, 30, 0, 0, 0, 2, 4, + 0, 0, 0, 5, 72,105,100,101, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0, +171, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, + 0, 0, 0,176, 0, 1, 0, 3, 0, 0, 0, 4, 0, 0, 0, 69, 0, 64, 64,134, + 1, 0, 64, 92, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 4, 77, 97,112, + 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,176, 0, 0, 0, + 1, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,178, 0, 0, 0,189, 0, 2, 0, 7, + 0, 0, 0, 23, 0, 64, 0,139, 0,128, 1, 0, 1,128,128,156, 0, 0,128,202, +128,128, 0,201,129, 0,128,201, 0, 0,193, 5, 1, 0, 1, 64, 0, 1, 1,129, + 1,128, 65, 28, 0, 0,193, 5, 1,128, 1, 64, 0, 1, 65,129, 1,128, 65, 28, + 0, 1,129, 5, 1, 0, 1, 64, 1,128, 1,128, 1,128, 65, 28, 1,193,193, 11, + 0,128, 1,128, 1,128, 65, 28, 1, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 8, + 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7,104, 97,110,100, +108,101, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, + 11,105,117,112, 32,119,105,100,103,101,116, 0, 4, 0, 0, 0, 13,105,117,112, + 83,101,116, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 14,115,101,116, 65,116, +116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, +179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 0, 0, +182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0, +185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0, +186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0, +187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4, 0, 0, 0, 6, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 97,114,103, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, + 0, 3, 0, 0, 0, 22, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, + 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 0, 0, 0, +203, 0, 2, 0, 12, 0, 0, 0, 25, 0, 64, 0,134, 0, 0, 64,197, 0,128, 1, + 0, 1, 1, 0,220,128, 4, 0, 22, 0, 0,130, 5, 3, 0, 2, 64, 1, 0,130, + 28, 4, 64,192, 23,128, 2,128, 22, 0, 1, 2, 5, 3,128, 2, 64, 1, 0,130, + 28, 4, 65, 64, 23,128, 1, 64, 22, 0, 1,130, 5, 0, 0, 2, 64, 3, 0, 2, +128, 3,128, 2,192, 2, 0, 66, 28,128, 0, 0, 22, 3, 1,192,137, 0, 0,128, +225,127,251, 0, 22, 0,128, 0, 30, 0, 0, 0, 7, 4, 0, 0, 0, 7,104, 97, +110,100,108,101, 0, 4, 0, 0, 0, 6,112, 97,105,114,115, 0, 4, 0, 0, 0, + 5,116,121,112,101, 0, 4, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 4, 0, + 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11, +105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 7,114, 97,119,115, +101,116, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, + 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, + 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, + 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, + 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, + 0, 0,193, 0, 0, 0,201, 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7,111, + 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 97,114, +103, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7,104, 97,110,100,108,101, + 0, 0, 0, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16, 40,102,111,114, 32,103,101, +110,101,114, 97,116,111,114, 41, 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, + 12, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 0, 0, 0, 4, 0, 0, 0, + 24, 0, 0, 0, 14, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 0, + 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 2,105, 0, 0, 0, 0, 5, 0, 0, 0, + 22, 0, 0, 0, 2,118, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,218, 0, 0, 0,227, 0, 2, 0, 11, 0, 0, 0, 28, 0, + 0, 0,133, 0, 0, 0,192, 0, 0, 65, 1, 1,128,128,156, 0, 0,128,197, 1, +192,192,198, 0,128, 1, 0, 1, 0,128,220, 0, 1, 1, 1, 1,128, 1, 64, 0, + 1, 1,129,128, 2, 1, 32, 0, 1, 66, 5, 0,129,194, 70, 1, 0,130, 28, 4, + 65,128, 23,128, 0,192, 22, 0, 1,194, 5, 1, 0, 2, 64, 0,129,194,134, 1, +128, 66, 28,127,253, 65, 31, 0, 2, 1, 5, 2, 66, 65, 6, 0, 0, 1, 64, 0, +128, 1,128, 1,128, 65, 28, 0,128, 0, 30, 0, 0, 0, 10, 4, 0, 0, 0, 7, +114, 97,119,103,101,116, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 4, + 0, 0, 0, 6,116, 97, 98,108,101, 0, 4, 0, 0, 0, 5,103,101,116,110, 0, + 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12,105,117,112, 71,101,116, + 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108, +101, 0, 4, 0, 0, 0, 7, 65,112,112,101,110,100, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98, +117,116,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,219, 0, 0, 0, +219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0, +220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0, +221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0, +222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0, +221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0, +226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 4, 0, + 0, 0, 27, 0, 0, 0, 2,110, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, + 12, 40,102,111,114, 32,105,110,100,101,120, 41, 0, 0, 0, 0, 11, 0, 0, 0, + 22, 0, 0, 0, 12, 40,102,111,114, 32,108,105,109,105,116, 41, 0, 0, 0, 0, + 11, 0, 0, 0, 22, 0, 0, 0, 11, 40,102,111,114, 32,115,116,101,112, 41, 0, + 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 2,105, 0, 0, 0, 0, 12, 0, 0, + 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0,252, 0, 2, + 0, 10, 0, 0, 0, 52, 0, 0, 0,128, 0,128, 64,219,128, 0, 0, 22, 0, 0, + 0,193, 1, 0,192, 21, 0, 0, 64,133, 0, 0, 0,154,128, 0,128, 22, 0, 0, + 64,133,129, 0, 0,137,128, 9,192, 22, 0, 0,192,133, 0, 0,192,202,130, 65, + 64,201,131, 65,192,201,132, 66, 64,201, 1, 0,128,156, 0, 2,128,197, 0, 1, + 1, 10,133,195, 1, 9,134,195, 1, 9,129, 0, 1, 9,131, 67,129, 9, 1, 0, +128,220, 0, 3,193, 5, 1, 0,193, 74, 1,128, 1,128, 1, 0, 1,192,136, 68, + 65, 73,137, 68,193, 73,138, 69, 65, 73, 1, 0, 65, 98, 1, 0,129, 28, 0, 5, +129, 69, 0,129, 1,138, 2, 0, 1,192,130, 69,193,137,140, 0,129,137,140,128, +129,137,141, 0,129,137, 0,128, 65,162, 1, 0,129, 92, 0, 0, 64,199, 2,198, +193,139, 0, 7, 2, 5, 0, 7, 2, 69, 2, 0, 65,156, 2,199, 65,139, 1, 0, + 65,156, 3, 0, 1,131, 0, 0, 65,135, 0,128, 0, 30, 0, 0, 0, 30, 4, 0, + 0, 0, 1, 0, 4, 0, 0, 0, 20,101,114,114,111,114, 95,109,101,115,115, 97, +103,101, 95,112,111,112,117,112, 0, 4, 0, 0, 0, 6,118, 97,108,117,101, 0, + 4, 0, 0, 0, 7, 98,117,116,116,111,110, 0, 4, 0, 0, 0, 6,116,105,116, +108,101, 0, 4, 0, 0, 0, 3, 79,107, 0, 4, 0, 0, 0, 5,115,105,122,101, + 0, 4, 0, 0, 0, 3, 54, 48, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, + 0, 4, 0, 0, 0, 44,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95, +112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114,101,116,117,114,110, 32, +105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 0, 0, 0, 10,109,117,108,116,105, +108,105,110,101, 0, 4, 0, 0, 0, 7,101,120,112, 97,110,100, 0, 4, 0, 0, + 0, 4, 89, 69, 83, 0, 4, 0, 0, 0, 9,114,101, 97,100,111,110,108,121, 0, + 4, 0, 0, 0, 8, 51, 48, 48,120, 49, 53, 48, 0, 4, 0, 0, 0, 5,118, 98, +111,120, 0, 4, 0, 0, 0, 10, 97,108,105,103,110,109,101,110,116, 0, 4, 0, + 0, 0, 8, 65, 67, 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 7,109, 97,114,103, +105,110, 0, 4, 0, 0, 0, 6, 49, 48,120, 49, 48, 0, 4, 0, 0, 0, 4,103, + 97,112, 0, 4, 0, 0, 0, 3, 49, 48, 0, 4, 0, 0, 0, 7,100,105, 97,108, +111,103, 0, 4, 0, 0, 0, 14, 69,114,114,111,114, 32, 77,101,115,115, 97,103, +101, 0, 4, 0, 0, 0, 11,100,101,102, 97,117,108,116,101,115, 99, 0, 4, 0, + 0, 0, 13,100,101,102, 97,117,108,116,101,110,116,101,114, 0, 4, 0, 0, 0, + 11,115,116, 97,114,116,102,111, 99,117,115, 0, 4, 0, 0, 0, 6,112,111,112, +117,112, 0, 4, 0, 0, 0, 7, 67, 69, 78, 84, 69, 82, 0, 4, 0, 0, 0, 8, +100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,239, + 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,240, + 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0,241, + 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, + 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, + 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0, 0, 0,245, + 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, + 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, + 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, + 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0,248, + 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0, 0, 0,250, + 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4,101,114,114, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 0, 0, 0, 10,116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 0, 0, 0, 3, 98,116, 0, 0, 0, 0, 17, 0, 0, 0, + 51, 0, 0, 0, 3,109,108, 0, 0, 0, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, +118, 98, 0, 0, 0, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3,100,103, 0, 0, 0, + 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 0, 0, + 0,254, 0, 0, 7, 2, 0, 0, 0, 2, 1, 0, 0, 30, 0,128, 0, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,254, 0, 0, 0,254, 0, 0, + 0, 1, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 2, 0, 6, 0, 0, + 0, 29, 0, 0, 64, 26,128, 0,192, 22, 0, 0, 0,133, 0,128, 0,192, 1, 0, + 64,156, 0,128, 0, 30, 0, 0, 64,133, 0, 0,128,197, 0, 0, 1, 0, 1, 0, + 0,220, 0, 0,128,156, 1, 64,192,198, 0, 0, 64,218,128, 1, 0, 22, 0, 0, + 0,197, 1, 65, 1, 6, 1, 0, 64,220, 0,128, 0, 30,128, 2, 0, 22, 0, 1, + 64,197, 1,193,128,198, 1, 0, 1, 0, 0, 0,193, 65, 1,128, 64,220, 0, 1, +192,197, 1, 0, 1, 0, 1, 0, 0,221, 0, 0, 0,222, 0,128, 0, 30, 0, 0, + 0, 8, 4, 0, 0, 0, 14, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69, + 0, 4, 0, 0, 0, 5,112, 97, 99,107, 0, 4, 0, 0, 0, 6,112, 99, 97,108, +108, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 6,116, 97, 98,108,101, 0, 4, 0, 0, 0, 7,114,101,109,111, +118,101, 0, 4, 0, 0, 0, 7,117,110,112, 97, 99,107, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 2, 0, 0, 1, 2, 0, + 0, 1, 2, 0, 0, 1, 3, 0, 0, 1, 5, 0, 0, 1, 5, 0, 0, 1, 5, 0, + 0, 1, 5, 0, 0, 1, 5, 0, 0, 1, 6, 0, 0, 1, 6, 0, 0, 1, 6, 0, + 0, 1, 7, 0, 0, 1, 7, 0, 0, 1, 7, 0, 0, 1, 8, 0, 0, 1, 8, 0, + 0, 1, 10, 0, 0, 1, 10, 0, 0, 1, 10, 0, 0, 1, 10, 0, 0, 1, 10, 0, + 0, 1, 11, 0, 0, 1, 11, 0, 0, 1, 11, 0, 0, 1, 11, 0, 0, 1, 13, 0, + 0, 0, 3, 0, 0, 0, 2,102, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 4,101,114,114, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4,114,101,116, + 0, 0, 0, 0, 11, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 15, 0, 0, 1, 15, 0, 1, 0, 4, 0, 0, 0, 7, 0, 0, 0, 69, 0, 0, 64, +133, 0, 0, 0,192, 1, 0, 0,156, 0, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, + 30, 0, 0, 0, 2, 4, 0, 0, 0, 15,112,114,111,116,101, 99,116,101,100, 99, + 97,108,108, 95, 0, 4, 0, 0, 0, 11,108,111, 97,100,115,116,114,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1, + 15, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 0, + 1, 0, 0, 0, 2,115, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 16, 0, 0, 1, 16, 0, 1, 0, 4, 0, 0, 0, 7, 0, + 0, 0, 69, 0, 0, 64,133, 0, 0, 0,192, 1, 0, 0,156, 0, 0, 0, 93, 0, + 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 15,112,114,111,116, +101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 0, 0, 0, 9,108,111, 97,100, +102,105,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 16, 0, 0, 1, + 16, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1, + 16, 0, 0, 0, 1, 0, 0, 0, 2,102, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 0, 0, 1, 20, 0, 3, 0, 8, 0, + 0, 0, 9, 0, 0, 0,197, 1,192, 64,198, 0, 0,129, 1,129,128, 1, 78,129, +128, 65,142,129,128,129,206, 2,128, 0,221, 0, 0, 0,222, 0,128, 0, 30, 0, + 0, 0, 4, 4, 0, 0, 0, 7,115,116,114,105,110,103, 0, 4, 0, 0, 0, 7, +102,111,114,109, 97,116, 0, 4, 0, 0, 0, 9, 37,100, 32, 37,100, 32, 37,100, + 0, 3, 64,111,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, + 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0, + 1, 19, 0, 0, 1, 19, 0, 0, 1, 19, 0, 0, 1, 20, 0, 0, 0, 3, 0, 0, + 0, 2,114, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2,103, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 98, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, + 0, 0, 0, 9, 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, + 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, + 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111, + 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, + 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, + 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, + 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, + 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136, + 0, 0, 0,132, 0, 0, 0,156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163, + 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166, + 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176, + 0, 0, 0,174, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191, + 0, 0, 0,203, 0, 0, 0,191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, + 0, 0, 0,207, 0, 0, 0,214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216, + 0, 0, 0,218, 0, 0, 0,227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229, + 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252, + 0, 0, 0,238, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 1, 13, 0, 0, 1, 0, + 0, 0, 1, 15, 0, 0, 1, 15, 0, 0, 1, 16, 0, 0, 1, 16, 0, 0, 1, 20, + 0, 0, 1, 18, 0, 0, 1, 24, 0, 0, 1, 24, 0, 0, 1, 24, 0, 0, 1, 24, + 0, 0, 1, 25, 0, 0, 1, 25, 0, 0, 1, 25, 0, 0, 1, 25, 0, 0, 1, 25, + 0, 0, 1, 26, 0, 0, 1, 26, 0, 0, 1, 26, 0, 0, 1, 26, 0, 0, 1, 26, + 0, 0, 1, 27, 0, 0, 1, 27, 0, 0, 1, 27, 0, 0, 1, 28, 0, 0, 1, 28, + 0, 0, 1, 29, 0, 0, 0, 3, 0, 0, 0, 16,119,105,100,103,101,116, 95,103, +101,116,116, 97, 98,108,101, 0, 0, 0, 0, 7, 0, 0, 0,113, 0, 0, 0, 17, +105,104, 97,110,100,108,101, 95,103,101,116,116, 97, 98,108,101, 0, 0, 0, 0, + 16, 0, 0, 0,113, 0, 0, 0, 17,105,104, 97,110,100,108,101, 95,115,101,116, +116, 97, 98,108,101, 0, 0, 0, 0, 17, 0, 0, 0,113, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/iuplua_be64.loh b/iup/srclua5/loh/iuplua_be64.loh new file mode 100755 index 0000000..94837b6 --- /dev/null +++ b/iup/srclua5/loh/iuplua_be64.loh @@ -0,0 +1,545 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/iuplua_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/iuplua_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 7,114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0, + 7, 64, 0, 0, 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0, +129, 0, 1, 0, 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0, + 0, 1, 0, 0, 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0, + 1,193, 1, 0,220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0, +128, 1,128, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0, +128, 1, 0, 1,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0, +133,129, 2, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0, +133, 1, 3, 0,220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0, +199,128, 3, 0,228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0, +201, 0,129,136,199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137, +197, 0, 4, 0, 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0, +201, 0, 1,138,197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0, + 36, 1, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0, +220, 64,128, 1,202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0, +197, 0, 6, 0, 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0, + 65, 1, 1, 0,220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0, +199,192, 6, 0,228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0, +228, 64, 4, 0,199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0, +199, 0, 8, 0,197, 64, 8, 0,198,128,200, 1,218, 0, 0, 0, 22,128, 3,128, +197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,146, +197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,147, +197, 64, 9, 0, 5, 65, 9, 0,201, 0,129,147,197, 64, 9, 0,201, 0, 73,148, + 30, 0,128, 0, 41, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108, +108, 98, 97, 99,107,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 67, + 97,108,108, 77,101,116,104,111,100, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 82, +101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 77,101,116,104,111,100, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 95, 95,105,110,100,101,120, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 17, 0, 0, + 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,116,111,115,116,114,105,110, +103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 95, 95,101,113, 0, 4, 16, 0, 0, + 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109,112, 97,114,101, + 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101, +116,110, 97,109,101, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 15, 0, 0, 0, 0, 0, + 0, 0, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +115,104,111,119, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,104,105,100,101, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 4, 14, 0, 0, 0, 0, 0, + 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, + 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 0, 4, 14, 0, 0, 0, + 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0, 0, 0, 0, 0, + 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,100,111,102,105,108,101, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 82, + 71, 66, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 95, 71, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,112, 97, 99,107, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,108,111, 97,100,101,100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,105,117,112, +108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0,105,117,112,108,117, 97, 53, 49, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 0, 95, 77, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 95, 80, 65, 67, + 75, 65, 71, 69, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, + 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0, 0,134, 0,192, 0,198, 0, 0, + 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128, 0, 5, 65, 0, 0, 64, 1,128, + 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1,128, 0, 1,128, 1, 69,193, 0, + 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0, 0, 30, 1, 0, 0, 22, 0, 4, +128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 65, 2, 22, 0, 2, +128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1, 0, 70,193,193, 2,128, 1,128, + 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0, 1, 22,128, 0,128, 5,129, 1, + 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128, 0, 9, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115, +101,108,102, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0, + 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, + 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 1, 0, + 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 2, + 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,101,109,112, 0, + 23, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,117, +108,116, 0, 28, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0, 3, 0, 5, 15, 0, 0, 0,197, + 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22,128, 0,128,197, 0, 0, 0, 10, + 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198, 0,128, 1,154, 0, 0, 0, 22, + 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201, 64,128,128, 30, 0,128, 0, 2, + 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, +115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15, 0, 0, 0, 30, + 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, + 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 9, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, + 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0, 0,195, 0,128, + 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128, 1,192, 0, 0, + 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0, 0, 64, 1, 0, + 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0, 0, 22, 0,252, +127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128, 0, 2, 0, 0, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21, 0, 0, + 0, 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, + 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, + 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, + 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, + 0, 53, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106, +101, 99,116, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, +105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 0, 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0,133, 0, + 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0,198,128, +128, 1,218, 0, 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0,220,128, + 0, 1,218, 0, 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, + 0, 1, 87, 64, 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0, 28, 65, + 0, 1, 6, 65,128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0, 0, 1, + 0, 0, 64, 1, 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128, 5,193, + 0, 0, 64, 1, 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128, 69, 1, + 1, 0,128, 1, 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128, 69,129, + 1, 0,129,193, 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1, 22,192, + 4,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2, 22, 0, + 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2, 22, 0, + 2,128, 5,129, 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0, 22, 64, + 0,128, 30, 1, 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128,222, 0, + 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115, +116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,112,101,114, + 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101, +116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +101,114,114,111,114, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,105,110,118, 97,108, +105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0, 0, 0, + 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0, 71,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61, + 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66, + 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, + 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, + 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70, + 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, + 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, + 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73, + 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76, + 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, + 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 28, 0, 0, 0, 66, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 33, 0, + 0, 0, 45, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,104, 0, 59, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0, 1,128, + 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69, 65, 0, + 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133, 1, 0, + 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133,193, 0, + 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23,128,193, + 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156,129, 0, + 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6, 66,194, + 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92,130, 0, + 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0, 3, 0, + 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5, 2, 3, + 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5,130, 3, + 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192, 2, 0, + 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87,128, 65, + 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22,128, 1, +128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28, 66, 0, + 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73,129,128, + 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121, +112,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105, +100,103,101,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0, + 0, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100, +108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 13, + 0, 0, 0, 0, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, + 4, 15, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108,108, 98, + 97, 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97, +110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108, +101, 95,115,101,116,110, 97,109,101, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 83, +116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0, 0, 0, + 0, 0, 0, 0,110,105,108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0, + 82, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, + 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, + 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, + 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, + 86, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, + 87, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, + 90, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, + 92, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, + 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, + 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, + 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, + 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, +100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, +100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0, +101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, +107, 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0,116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 9, 0, 0, 0, 77, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 27, 0, 0, 0, 75, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0, 45, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, 0,130, + 0, 0, 0, 0, 1, 0, 6, 19, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 92, +128, 0, 1, 90, 64, 0, 0, 22,192, 2,128,133, 64, 0, 0,134,128, 64, 1,193, +192, 0, 0, 5, 1, 1, 0, 64, 1, 0, 0, 28, 1, 0, 1,156,128, 0, 0,197, + 64, 1, 0, 0, 1, 0, 1, 64, 1, 0, 0,220, 64,128, 1,158, 0, 0, 1, 94, + 0, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, + 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114, +105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,111,114,109, 97,116, 0, + 4, 17, 0, 0, 0, 0, 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, + 69, 40, 37,115, 41, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,116,111,115,116,114, +105,110,103, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 72, 97,110,100, +108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, + 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, + 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,126, + 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,129, + 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109, +101, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 97,117, +116,111,110, 97,109,101, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0, 0, 1, 0, 4, 6, + 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,228, 0, 0, 0, 0, 0, 0, 0, 73, +192, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0, 1, 1, + 0, 4, 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0, 93, 0, +128, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 6, + 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, + 0, 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0, +135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156, 0, 0, + 0, 0, 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, + 0,156, 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154, 64, 0, + 0, 22,192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64, 1,128, + 0, 28,129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197,128, 1, + 0, 10,129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128, 1, 0, + 2,193, 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192, 1, 0, + 2, 92, 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,116, 0, + 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112, +112,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 31, 0, + 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0, + 0, 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, + 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, + 0, 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0, + 0, 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, + 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0, + 0, 0,156, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97, +110,100,108,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0, 0, 29, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 21, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, + 0, 0,168, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, + 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110, +100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0, +167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0, 3, 4, + 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72,105,100,101, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, + 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0, +176, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, + 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 77, 97,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175, 0, 0, + 0,176, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106, +101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0, +139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0,128,128, +201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65,128, 1, + 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129, 1, 0, + 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1,128, 0, + 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, + 0, 23, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0, + 0,181, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, + 0,184, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, + 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, + 0,187, 0, 0, 0,187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, + 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, + 0, 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,191, 0, 0, 0,203, 0, 0, 0, 0, 2, 0, 12, 25, 0, 0, 0,134, 0, 64, + 0,197, 64, 0, 0, 0, 1,128, 0,220, 0, 1, 1, 22, 0, 4,128, 5,130, 0, + 0, 64, 2, 0, 3, 28,130, 0, 1, 23,192, 64, 4, 22,128, 2,128, 5, 2, 1, + 0, 64, 2,128, 3, 28,130, 0, 1, 23, 64, 65, 4, 22, 64, 1,128, 5,130, 1, + 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2,128, 3, 28, 66, 0, 2, 22, 0, 0, +128,137,192, 1, 3,225,128, 0, 0, 22, 0,251,127, 30, 0,128, 0, 7, 0, 0, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,116,121,112,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101, +114, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100, +108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,115,101,116, 0, 0, + 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, + 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, + 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, + 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, + 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0, 0,201, + 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, + 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0,104, 97,110,100,108,101, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116,111,114, 41, + 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111, +114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 4, + 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0, + 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 5, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 0, 0, 0,227, + 0, 0, 0, 0, 2, 0, 11, 28, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, + 65, 0, 0,156,128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128, 0,220, +128, 0, 1, 1, 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32, 1, 2,128, 5, + 66, 1, 0, 70,194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22,192, 0,128, 5, +194, 1, 0, 64, 2, 0, 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253,127, 5, + 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, + 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103, +101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115, +101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 28, 0, 0, + 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0, + 0,220, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221, 0, 0, + 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, + 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0, + 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, + 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 27, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0, 0, 27, 0, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41, + 0, 11, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111, +114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 11, 0, 0, 0, + 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0,252, 0, + 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128, 0, 0, 0,219, 64,128, 0, 22, 0, + 0,128,193, 0, 0, 0, 21,192, 0, 1,133, 64, 0, 0,154, 0, 0, 0, 22,128, + 0,128,133, 64, 0, 0,137, 0, 0,129, 22,192, 9,128,133,192, 0, 0,202,192, + 0, 0,201, 64, 65,130,201,192, 65,131,201, 64, 66,132,156,128, 0, 1,197,128, + 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9, 1,195,134, 9, 1, 0,129, 9,129, + 67,131,220,128, 0, 1, 5,193, 3, 0, 74,193, 0, 1,128, 1,128, 1,192, 1, + 0, 1, 73, 65, 68,136, 73,193, 68,137, 73, 65, 69,138, 98, 65, 0, 1, 28,129, + 0, 1, 69,129, 5, 0,138, 1,129, 0,192, 1, 0, 2,137,193, 69,130,137,129, + 0,140,137,129,128,140,137,129, 0,141,162, 65,128, 0, 92,129, 0, 1,199, 64, + 0, 0,139,193,198, 2, 5, 2, 7, 0, 69, 2, 7, 0,156, 65, 0, 2,139, 65, +199, 2,156, 65, 0, 1,131, 1, 0, 3,135, 65, 0, 0, 30, 0,128, 0, 30, 0, + 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, + 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0,116,105,116,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 79,107, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0, 54, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, + 0, 4, 44, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 95,109,101,115,115, + 97,103,101, 95,112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114,101,116, +117,114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 10, 0, 0, 0, 0, + 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, + 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,114,101, 97,100,111,110,108,121, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0, 51, 48, 48,120, 49, 53, 48, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, + 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, + 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,103, +105,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 4, + 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, + 49, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103, 0, 4, + 14, 0, 0, 0, 0, 0, 0, 0, 69,114,114,111,114, 32, 77,101,115,115, 97,103, +101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,115, + 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,110, +116,101,114, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,115,116, 97,114,116,102,111, + 99,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 52, 0, 0, 0, +239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0, +240, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0, +241, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0, +243, 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0, +244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0, 0, 0, +245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0, +245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0, +246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0, +246, 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0, +248, 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0, 0, 0, +250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, +101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, +116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0,109,108, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0,118, 98, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2, 2, 0, + 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, + 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6, 29, 0, + 0, 0, 26, 64, 0, 0, 22,192, 0,128,133, 0, 0, 0,192, 0,128, 0,156, 64, + 0, 1, 30, 0,128, 0,133, 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0,220, 0, + 0, 1,156,128, 0, 0,198,192, 64, 1,218, 64, 0, 0, 22, 0, 1,128,197, 0, + 0, 0, 6, 1, 65, 1,220, 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128,197, 64, + 1, 0,198,128,193, 1, 0, 1, 0, 1, 65,193, 0, 0,220, 64,128, 1,197,192, + 1, 0, 0, 1, 0, 1,221, 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0, 8, 0, + 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, + 83, 65, 71, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0, 0, 0, + 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0, 0, 0, + 0,116, 97, 98,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,109,111, +118,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 2, + 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, + 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0, 0, 6, + 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 8, 1, 0, 0, 8, + 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, + 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 13, + 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,101,114,114, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 11, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0, + 0, 15, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0, + 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128, + 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116,101, 99, +116,101,100, 99, 97,108,108, 95, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,108,111, + 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 1, 0, + 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, + 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 1, 0, 0, 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, + 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, + 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116, +101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +108,111, 97,100,102,105,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 1, 0, + 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, + 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0,198, + 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128,129,221, + 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, +102,111,114,109, 97,116, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 37,100, 32, 37, +100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0,224,111, 64, 0, 0, 0, 0, 9, 0, + 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, + 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 20, 1, 0, 0, 3, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, +114, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, + 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, + 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, + 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0, +111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0, +112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0, +113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0, +114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0, +115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0, 0, 0, +156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0, +164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0, +172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0, 0, 0, +178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0, +191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0, +214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0, 0, 0, +227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0, +229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0, 0, 0, +254, 0, 0, 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1, 0, 0, + 15, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1, 0, 0, + 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 25, 1, 0, 0, + 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 26, 1, 0, 0, + 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 27, 1, 0, 0, + 27, 1, 0, 0, 27, 1, 0, 0, 28, 1, 0, 0, 28, 1, 0, 0, 29, 1, 0, 0, + 3, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,119,105,100,103,101,116, 95,103, +101,116,116, 97, 98,108,101, 0, 7, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,103,101,116,116, 97, 98,108,101, + 0, 16, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97, +110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0, 17, 0, 0, 0,113, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/iuplua_le64.loh b/iup/srclua5/loh/iuplua_le64.loh new file mode 100755 index 0000000..fb4a432 --- /dev/null +++ b/iup/srclua5/loh/iuplua_le64.loh @@ -0,0 +1,545 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/iuplua_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/iuplua_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 7,114, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0, + 7, 64, 0, 0, 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0, +129, 0, 1, 0, 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0, + 0, 1, 0, 0, 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0, + 1,193, 1, 0,220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0, +128, 1,128, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0, +128, 1, 0, 1,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0, +133,129, 2, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0, +133, 1, 3, 0,220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0, +199,128, 3, 0,228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0, +201, 0,129,136,199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137, +197, 0, 4, 0, 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0, +201, 0, 1,138,197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0, + 36, 1, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0, +220, 64,128, 1,202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0, +197, 0, 6, 0, 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0, + 65, 1, 1, 0,220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0, +199,192, 6, 0,228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0, +228, 64, 4, 0,199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0, +199, 0, 8, 0,197, 64, 8, 0,198,128,200, 1,218, 0, 0, 0, 22,128, 3,128, +197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,146, +197, 64, 8, 0,198,128,200, 1,198,192,200, 1, 5, 65, 9, 0,201, 0, 1,147, +197, 64, 9, 0, 5, 65, 9, 0,201, 0,129,147,197, 64, 9, 0,201, 0, 73,148, + 30, 0,128, 0, 41, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108, +108, 98, 97, 99,107,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,117,112, 67, + 97,108,108, 77,101,116,104,111,100, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 82, +101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 77,101,116,104,111,100, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 95, 95,105,110,100,101,120, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 95, 95,116,111,115,116,114,105,110,103, 0, 4, 17, 0, 0, + 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,116,111,115,116,114,105,110, +103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 95, 95,101,113, 0, 4, 16, 0, 0, + 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109,112, 97,114,101, + 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101, +116,110, 97,109,101, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 15, 0, 0, 0, 0, 0, + 0, 0, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +115,104,111,119, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,104,105,100,101, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 4, 14, 0, 0, 0, 0, 0, + 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, + 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 0, 4, 14, 0, 0, 0, + 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, 69, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0, 0, 0, 0, 0, + 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,100,111,102,105,108,101, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 82, + 71, 66, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 95, 71, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,112, 97, 99,107, 97,103,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,108,111, 97,100,101,100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,105,117,112, +108,117, 97, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0,105,117,112,108,117, 97, 53, 49, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 0, 95, 77, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 95, 80, 65, 67, + 75, 65, 71, 69, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, + 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0, 0,134, 0,192, 0,198, 0, 0, + 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128, 0, 5, 65, 0, 0, 64, 1,128, + 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1,128, 0, 1,128, 1, 69,193, 0, + 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0, 0, 30, 1, 0, 0, 22, 0, 4, +128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 65, 2, 22, 0, 2, +128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1, 0, 70,193,193, 2,128, 1,128, + 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0, 1, 22,128, 0,128, 5,129, 1, + 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128, 0, 9, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115, +101,108,102, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0, 10, 0, + 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, + 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, 6, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 1, 0, + 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 2, + 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,101,109,112, 0, + 23, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,114,101,115,117, +108,116, 0, 28, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0, 3, 0, 5, 15, 0, 0, 0,197, + 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22,128, 0,128,197, 0, 0, 0, 10, + 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198, 0,128, 1,154, 0, 0, 0, 22, + 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201, 64,128,128, 30, 0,128, 0, 2, + 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, +115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15, 0, 0, 0, 30, + 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, + 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 9, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, + 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0, 0,195, 0,128, + 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128, 1,192, 0, 0, + 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0, 0, 64, 1, 0, + 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0, 0, 22, 0,252, +127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128, 0, 2, 0, 0, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21, 0, 0, + 0, 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, + 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, + 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, + 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, + 0, 53, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106, +101, 99,116, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, +105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 0, 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0,133, 0, + 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0,198,128, +128, 1,218, 0, 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0,220,128, + 0, 1,218, 0, 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, + 0, 1, 87, 64, 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0, 28, 65, + 0, 1, 6, 65,128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0, 0, 1, + 0, 0, 64, 1, 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128, 5,193, + 0, 0, 64, 1, 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128, 69, 1, + 1, 0,128, 1, 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128, 69,129, + 1, 0,129,193, 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1, 22,192, + 4,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2, 22, 0, + 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2, 22, 0, + 2,128, 5,129, 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0, 22, 64, + 0,128, 30, 1, 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128,222, 0, + 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115, +116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,112,101,114, + 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107,115, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101, +116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +101,114,114,111,114, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,105,110,118, 97,108, +105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0, 0, 0, + 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0, 71,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 67, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 61, + 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 62, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, 0, 66, + 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, + 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, + 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 70, + 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, + 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, + 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 73, + 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, 0, 76, + 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, + 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 28, 0, 0, 0, 66, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 33, 0, + 0, 0, 45, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,104, 0, 59, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0, 1,128, + 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69, 65, 0, + 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133, 1, 0, + 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133,193, 0, + 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23,128,193, + 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156,129, 0, + 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6, 66,194, + 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92,130, 0, + 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0, 3, 0, + 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5, 2, 3, + 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5,130, 3, + 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192, 2, 0, + 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87,128, 65, + 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22,128, 1, +128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28, 66, 0, + 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73,129,128, + 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121, +112,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105, +100,103,101,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0, + 0, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97,110,100, +108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 13, + 0, 0, 0, 0, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109,101, 0, + 4, 15, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108,108, 98, + 97, 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97, +110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108, +101, 95,115,101,116,110, 97,109,101, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 83, +116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0, 0, 0, + 0, 0, 0, 0,110,105,108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, 0, 0, + 82, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, + 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, + 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, + 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, + 86, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, + 87, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 0, 0, + 90, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, + 92, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, + 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, 0, 0, + 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, + 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, + 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, 0, 0, +100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, +100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0, +101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, 0, 0, +107, 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0,116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 9, 0, 0, 0, 77, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 27, 0, 0, 0, 75, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0, 45, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, 0,130, + 0, 0, 0, 0, 1, 0, 6, 19, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 92, +128, 0, 1, 90, 64, 0, 0, 22,192, 2,128,133, 64, 0, 0,134,128, 64, 1,193, +192, 0, 0, 5, 1, 1, 0, 64, 1, 0, 0, 28, 1, 0, 1,156,128, 0, 0,197, + 64, 1, 0, 0, 1, 0, 1, 64, 1, 0, 0,220, 64,128, 1,158, 0, 0, 1, 94, + 0, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, + 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114, +105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,111,114,109, 97,116, 0, + 4, 17, 0, 0, 0, 0, 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78, 65, 77, + 69, 40, 37,115, 41, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,116,111,115,116,114, +105,110,103, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 72, 97,110,100, +108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0, 0,123, 0, 0, 0,123, + 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, + 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,126, + 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, 0,129, + 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109, +101, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 97,117, +116,111,110, 97,109,101, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0, 0, 1, 0, 4, 6, + 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,228, 0, 0, 0, 0, 0, 0, 0, 73, +192, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0, 1, 1, + 0, 4, 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0, 93, 0, +128, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0, 0, 6, + 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, + 0, 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0, 0, 0,133, 0, 0, 0, +135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156, 0, 0, + 0, 0, 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, + 0,156, 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154, 64, 0, + 0, 22,192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64, 1,128, + 0, 28,129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197,128, 1, + 0, 10,129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128, 1, 0, + 2,193, 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192, 1, 0, + 2, 92, 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101,116, 0, + 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112, +112,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, 31, 0, + 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,142, 0, + 0, 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0,145, 0, + 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, + 0, 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0,150, 0, + 0, 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, + 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,155, 0, + 0, 0,156, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97, +110,100,108,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0, 0, 29, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 21, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, + 0, 0,168, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, + 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110, +100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0, 0, 0, +167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0, 3, 4, + 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72,105,100,101, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, + 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0, +176, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, + 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 77, 97,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175, 0, 0, + 0,176, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106, +101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0, 0, 0, +139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0,128,128, +201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65,128, 1, + 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129, 1, 0, + 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1,128, 0, + 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, + 0, 23, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, 0, 0, + 0,181, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, 0, 0, + 0,184, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, + 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187, 0, 0, + 0,187, 0, 0, 0,187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, + 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, + 0, 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,191, 0, 0, 0,203, 0, 0, 0, 0, 2, 0, 12, 25, 0, 0, 0,134, 0, 64, + 0,197, 64, 0, 0, 0, 1,128, 0,220, 0, 1, 1, 22, 0, 4,128, 5,130, 0, + 0, 64, 2, 0, 3, 28,130, 0, 1, 23,192, 64, 4, 22,128, 2,128, 5, 2, 1, + 0, 64, 2,128, 3, 28,130, 0, 1, 23, 64, 65, 4, 22, 64, 1,128, 5,130, 1, + 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2,128, 3, 28, 66, 0, 2, 22, 0, 0, +128,137,192, 1, 3,225,128, 0, 0, 22, 0,251,127, 30, 0,128, 0, 7, 0, 0, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,116,121,112,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101, +114, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100, +108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,115,101,116, 0, 0, + 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0, 0,193, + 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, + 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, + 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, + 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0, 0,201, + 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, + 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0,104, 97,110,100,108,101, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116,111,114, 41, + 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111, +114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 4, + 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0, + 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 5, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 0, 0, 0,227, + 0, 0, 0, 0, 2, 0, 11, 28, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, + 65, 0, 0,156,128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128, 0,220, +128, 0, 1, 1, 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32, 1, 2,128, 5, + 66, 1, 0, 70,194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22,192, 0,128, 5, +194, 1, 0, 64, 2, 0, 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253,127, 5, + 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, + 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103, +101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115, +101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 28, 0, 0, + 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, 0, 0, + 0,220, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221, 0, 0, + 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, 0, 0, + 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, 0, 0, + 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, 0, 0, + 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 27, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0, 0, 27, 0, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41, + 0, 11, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111, +114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 11, 0, 0, 0, + 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0,252, 0, + 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128, 0, 0, 0,219, 64,128, 0, 22, 0, + 0,128,193, 0, 0, 0, 21,192, 0, 1,133, 64, 0, 0,154, 0, 0, 0, 22,128, + 0,128,133, 64, 0, 0,137, 0, 0,129, 22,192, 9,128,133,192, 0, 0,202,192, + 0, 0,201, 64, 65,130,201,192, 65,131,201, 64, 66,132,156,128, 0, 1,197,128, + 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9, 1,195,134, 9, 1, 0,129, 9,129, + 67,131,220,128, 0, 1, 5,193, 3, 0, 74,193, 0, 1,128, 1,128, 1,192, 1, + 0, 1, 73, 65, 68,136, 73,193, 68,137, 73, 65, 69,138, 98, 65, 0, 1, 28,129, + 0, 1, 69,129, 5, 0,138, 1,129, 0,192, 1, 0, 2,137,193, 69,130,137,129, + 0,140,137,129,128,140,137,129, 0,141,162, 65,128, 0, 92,129, 0, 1,199, 64, + 0, 0,139,193,198, 2, 5, 2, 7, 0, 69, 2, 7, 0,156, 65, 0, 2,139, 65, +199, 2,156, 65, 0, 1,131, 1, 0, 3,135, 65, 0, 0, 30, 0,128, 0, 30, 0, + 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, + 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, + 0,116,105,116,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 79,107, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0, 54, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, + 0, 4, 44, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 95,109,101,115,115, + 97,103,101, 95,112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114,101,116, +117,114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 10, 0, 0, 0, 0, + 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 89, 69, + 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,114,101, 97,100,111,110,108,121, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0, 51, 48, 48,120, 49, 53, 48, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, + 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, + 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,103, +105,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, 4, 4, + 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, + 49, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103, 0, 4, + 14, 0, 0, 0, 0, 0, 0, 0, 69,114,114,111,114, 32, 77,101,115,115, 97,103, +101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,115, + 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116,101,110, +116,101,114, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,115,116, 97,114,116,102,111, + 99,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 52, 0, 0, 0, +239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0, +240, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0, 0, 0, +241, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0, +243, 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0, +244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0, 0, 0, +245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0, +245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0, +246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0, +246, 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0, 0, 0, +248, 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0, 0, 0, +250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, +101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, +116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0,109,108, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0,118, 98, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2, 2, 0, + 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, + 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6, 29, 0, + 0, 0, 26, 64, 0, 0, 22,192, 0,128,133, 0, 0, 0,192, 0,128, 0,156, 64, + 0, 1, 30, 0,128, 0,133, 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0,220, 0, + 0, 1,156,128, 0, 0,198,192, 64, 1,218, 64, 0, 0, 22, 0, 1,128,197, 0, + 0, 0, 6, 1, 65, 1,220, 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128,197, 64, + 1, 0,198,128,193, 1, 0, 1, 0, 1, 65,193, 0, 0,220, 64,128, 1,197,192, + 1, 0, 0, 1, 0, 1,221, 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0, 8, 0, + 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, + 83, 65, 71, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0, 0, 0, + 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0, 0, 0, + 0,116, 97, 98,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101,109,111, +118,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 2, + 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, + 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0, 0, 6, + 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 8, 1, 0, 0, 8, + 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, + 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 13, + 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,101,114,114, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 11, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0, + 0, 15, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, 64, 0, + 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, 0,128, + 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116,101, 99, +116,101,100, 99, 97,108,108, 95, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,108,111, + 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, 1, 0, + 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, + 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 1, 0, 0, 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, + 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, + 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116, +101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +108,111, 97,100,102,105,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 1, 0, + 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, + 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0,198, + 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128,129,221, + 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, +102,111,114,109, 97,116, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 37,100, 32, 37, +100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0,224,111, 64, 0, 0, 0, 0, 9, 0, + 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, + 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 20, 1, 0, 0, 3, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, +114, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, + 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, + 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, + 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0, 0, 0, +111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0, +112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0, +113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0, +114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0, +115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0, 0, 0, +156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, 0, 0, +164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0, 0, 0, +172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0, 0, 0, +178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0, +191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0, +214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0, 0, 0, +227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0, +229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0, 0, 0, +254, 0, 0, 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1, 0, 0, + 15, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1, 0, 0, + 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 24, 1, 0, 0, 25, 1, 0, 0, + 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 25, 1, 0, 0, 26, 1, 0, 0, + 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 26, 1, 0, 0, 27, 1, 0, 0, + 27, 1, 0, 0, 27, 1, 0, 0, 28, 1, 0, 0, 28, 1, 0, 0, 29, 1, 0, 0, + 3, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,119,105,100,103,101,116, 95,103, +101,116,116, 97, 98,108,101, 0, 7, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,103,101,116,116, 97, 98,108,101, + 0, 16, 0, 0, 0,113, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97, +110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0, 17, 0, 0, 0,113, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/iuplua_le64w.loh b/iup/srclua5/loh/iuplua_le64w.loh new file mode 100755 index 0000000..2a2302b --- /dev/null +++ b/iup/srclua5/loh/iuplua_le64w.loh @@ -0,0 +1,531 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/iuplua_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/iuplua_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,105,117,112,108,117, 97, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 7, 95, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 36, 0, 0, 0, + 7, 64, 0, 0, 36, 64, 0, 0, 7,128, 0, 0, 36,128, 0, 0, 69,192, 0, 0, +129, 0, 1, 0, 92, 64, 0, 1, 69, 64, 1, 0,129, 0, 1, 0,193,128, 1, 0, + 0, 1, 0, 0, 92, 64, 0, 2,100,192, 0, 0,164, 0, 1, 0,197,192, 0, 0, + 1,193, 1, 0,220, 64, 0, 1,197, 64, 1, 0, 1,193, 1, 0, 65,129, 1, 0, +128, 1,128, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 1, 2, 0, +128, 1, 0, 1,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65, 65, 2, 0, +133,129, 2, 0,220, 64, 0, 2,197, 64, 1, 0, 1,193, 1, 0, 65,193, 2, 0, +133, 1, 3, 0,220, 64, 0, 2,228, 64, 1, 0,199, 64, 3, 0,228,128, 1, 0, +199,128, 3, 0,228,192, 1, 0,199,192, 3, 0,202, 64, 0, 0, 10, 1, 0, 0, +201, 0,129,136,199, 0, 4, 0,197, 0, 4, 0, 36, 1, 2, 0,201, 0, 1,137, +197, 0, 4, 0, 36, 65, 2, 0,201, 0,129,137,197, 0, 4, 0, 36,129, 2, 0, +201, 0, 1,138,197, 0, 4, 0, 36,193, 2, 0,201, 0,129,138,197, 0, 4, 0, + 36, 1, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 4, 0, 65, 1, 1, 0, +220, 64,128, 1,202, 64, 0, 0, 5, 1, 4, 0,201, 0,129,140,199, 0, 6, 0, +197, 0, 6, 0, 36, 65, 3, 0,201, 0, 1,139,197,192, 5, 0, 5, 1, 6, 0, + 65, 1, 1, 0,220, 64,128, 1,195, 0,128, 1,199,128, 6, 0,228,128, 3, 0, +199,192, 6, 0,228,192, 3, 0,199, 0, 7, 0,228, 0, 4, 0,199, 64, 7, 0, +228, 64, 4, 0,199,128, 7, 0,228,128, 4, 0,199,192, 7, 0,228,192, 4, 0, +199, 0, 8, 0, 30, 0,128, 0, 33, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 67, 97,108,108, 77,101,116,104,111,100, 0, 4, 17, 0, 0, 0, 0, + 0, 0, 0, 82,101,103,105,115,116,101,114, 67, 97,108,108, 98, 97, 99,107, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 78,101,119, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, + 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 77,101,116,104, +111,100, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 95, 95,105,110,100,101,120, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 95,110,101,119,105,110,100,101,120, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0, 95, 95,116,111,115,116,114,105,110,103, 0, + 4, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,116,111,115, +116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 95, 95,101,113, 0, + 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95, 99,111,109, +112, 97,114,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108, +101, 95,115,101,116,110, 97,109,101, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 15, 0, + 0, 0, 0, 0, 0, 0, 82,101,103,105,115,116,101,114, 72, 97,110,100,108,101, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,115,104,111,119, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,104,105, +100,101, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,109, 97,112, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 4, 14, 0, + 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0,101, +114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112,117,112, 0, 4, + 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, 69, 83, 83, 65, 71, + 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, 0, 4, 15, 0, 0, + 0, 0, 0, 0, 0,112,114,111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,100,111,102,105,108,101, 0, 4, 4, 0, 0, 0, 0, + 0, 0, 0, 82, 71, 66, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 27, 0, 0, 0, 0, 1, 7, 7, 35, 0, 0, 0,134, 0,192, 0,198, + 0, 0, 1,218, 64, 0, 0, 22, 0, 0,128, 30, 0,128, 0, 5, 65, 0, 0, 64, + 1,128, 1, 28,129, 0, 1, 23,128, 64, 2, 22,128, 1,128, 0, 1,128, 1, 69, +193, 0, 0,128, 1,128, 0, 92, 1, 0, 1, 29, 1, 0, 0, 30, 1, 0, 0, 22, + 0, 4,128, 5, 65, 0, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 65, 2, 22, + 0, 2,128, 5, 65, 1, 0,135, 64, 1, 0, 69,129, 1, 0, 70,193,193, 2,128, + 1,128, 1, 92,129, 0, 1, 7, 65, 1, 0, 94, 1, 0, 1, 22,128, 0,128, 5, +129, 1, 0, 6, 1, 66, 2, 30, 1, 0, 1, 30, 0,128, 0, 9, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112, +101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,115,101,108,102, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0,100,111,115,116,114,105,110,103, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 69, 82, 82, 79, 82, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, + 23, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 27, 0, 0, 0, + 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, + 0, 34, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 34, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, + 1, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, + 0, 2, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,101,109, +112, 0, 23, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,114,101, +115,117,108,116, 0, 28, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 0, 3, 0, 5, 15, 0, 0, + 0,197, 0, 0, 0,198, 0,128, 1,218, 64, 0, 0, 22,128, 0,128,197, 0, 0, + 0, 10, 1, 0, 0,201, 0, 1, 0,197, 0, 0, 0,198, 0,128, 1,154, 0, 0, + 0, 22, 64, 0,128,201, 64, 0, 1, 22, 0, 0,128,201, 64,128,128, 30, 0,128, + 0, 2, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 15, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 9, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 53, 0, 0, 0, 0, 2, 0, 7, 21, 0, 0, 0,128, 0, 0, 0,195, + 0,128, 1, 5, 1, 0, 0, 64, 1, 0, 1,128, 1,128, 0, 28,129,128, 1,192, + 0, 0, 2,218, 0, 0, 0, 22, 0, 0,128,222, 0, 0, 1, 5, 1, 0, 0, 64, + 1, 0, 1,129, 65, 0, 0, 28,129,128, 1,128, 0, 0, 2,154, 64, 0, 0, 22, + 0,252,127, 3, 1, 0, 2, 30, 1, 0, 1, 22, 64,251,127, 30, 0,128, 0, 2, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, + 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, + 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, + 0, 0, 0, 53, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, + 98,106,101, 99,116, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,112, 0, 1, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,118, 0, 2, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 0, 0, 0, 79, 0, 0, 0, 0, 2, 0, 7, 67, 0, 0, 0, +133, 0, 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1,197,128, 0, 0, +198,128,128, 1,218, 0, 0, 0, 22,192, 3,128,197,192, 0, 0, 0, 1, 0, 0, +220,128, 0, 1,218, 0, 0, 0, 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, + 28,129, 0, 1, 87, 64, 65, 2, 22,128, 0,128, 5,129, 1, 0, 65,193, 1, 0, + 28, 65, 0, 1, 6, 65,128, 1, 30, 1, 0, 1, 22, 64, 10,128,197, 0, 2, 0, + 0, 1, 0, 0, 64, 1, 0, 1,220,128,128, 1,218, 64, 0, 0, 22,192, 3,128, + 5,193, 0, 0, 64, 1, 0, 0, 28,129, 0, 1, 26, 1, 0, 0, 22, 0, 1,128, + 69, 1, 1, 0,128, 1, 0, 2, 92,129, 0, 1, 87, 64,193, 2, 22,128, 0,128, + 69,129, 1, 0,129,193, 1, 0, 92, 65, 0, 1, 70, 65, 0, 2, 94, 1, 0, 1, + 22,192, 4,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 87, 64, 66, 2, + 22, 0, 1,128, 5, 1, 1, 0, 64, 1,128, 1, 28,129, 0, 1, 23, 0, 64, 2, + 22, 0, 2,128, 5,129, 2, 0, 64, 1,128, 1, 28,129, 0, 1, 26, 1, 0, 0, + 22, 64, 0,128, 30, 1, 0, 1, 22,128, 0,128,222, 0, 0, 1, 22, 0, 0,128, +222, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,117,112,112, +101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, +115, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100, +103,101,116, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,101,114,114,111,114, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0,105,110,118, + 97,108,105,100, 32,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 10, 0, 0, 0, 0, + 0, 0, 0, 71,101,116, 72, 97,110,100,108,101, 0, 0, 0, 0, 0, 67, 0, 0, + 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, + 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, + 0, 62, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 66, 0, 0, + 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, + 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, + 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, + 0, 69, 0, 0, 0, 69, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, + 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, + 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, + 0, 71, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, + 0, 73, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 74, 0, 0, + 0, 76, 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 66, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 4, 0, 0, 0, 66, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 11, 0, 0, 0, 23, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 28, 0, 0, + 0, 66, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, + 33, 0, 0, 0, 45, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,104, 0, 59, + 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 0,109, 0, 0, 0, 0, 3, 0, 14, 78, 0, 0, 0,197, 0, 0, 0, 0, + 1,128, 0,220,128, 0, 1, 5, 1, 0, 0, 64, 1, 0, 1, 28,129, 0, 1, 69, + 65, 0, 0,128, 1, 0, 0, 92,129, 0, 1, 90, 1, 0, 0, 22, 0, 1,128,133, + 1, 0, 0,192, 1,128, 2,156,129, 0, 1, 87,128, 64, 3, 22,128, 0,128,133, +193, 0, 0,193, 1, 1, 0,156, 65, 0, 1, 87, 64,193, 1, 22, 64, 0,128, 23, +128,193, 1, 22, 0, 13,128,133,129, 1, 0,134,193, 65, 3,192, 1,128, 0,156, +129, 0, 1,197, 1, 2, 0,198,129,129, 3,218, 1, 0, 0, 22,128, 3,128, 6, + 66,194, 3, 26, 66, 0, 0, 22,192, 0,128, 69,130, 2, 0,128, 2, 0, 0, 92, +130, 0, 1, 6, 66,130, 3, 69,194, 2, 0,128, 2, 0, 0,192, 2, 0, 3, 0, + 3, 0, 4, 64, 3, 0, 1, 92, 66,128, 2, 73,129,128, 0, 22,128, 7,128, 5, + 2, 3, 0, 64, 2, 0, 1, 28,130, 0, 1, 23, 64, 67, 4, 22, 64, 2,128, 5, +130, 3, 0, 64, 2, 0, 1, 28,130, 0, 1, 69,194, 3, 0,128, 2, 0, 0,192, + 2, 0, 3, 0, 3, 0, 4, 92, 66, 0, 2, 73, 1,196, 0, 22,192, 3,128, 87, +128, 65, 2, 22,192, 0,128, 87, 64, 65, 2, 22, 64, 0,128, 23, 64, 68, 2, 22, +128, 1,128, 5,194, 3, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2, 0, 1, 28, + 66, 0, 2, 73, 1,196, 0, 22,128, 0,128, 73,129,128, 0, 22, 0, 0,128, 73, +129,128, 0, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +116,121,112,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, + 87,105,100,103,101,116, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108, +101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 0, 4, 19, 0, + 0, 0, 0, 0, 0, 0,105,110,118, 97,108,105,100, 32,105,117,112, 32,104, 97, +110,100,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,117,112,112,101,114, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 4, 13, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 67,108, 97,115,115, 78, 97,109, +101, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, 97,108, +108, 98, 97, 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101, +116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32, +104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110, +100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 15, 0, 0, 0, 0, 0, 0, + 0, 83,116,111,114,101, 65,116,116,114,105, 98,117,116,101, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0,110,105,108, 0, 0, 0, 0, 0, 78, 0, 0, 0, 82, 0, + 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 83, 0, + 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 85, 0, + 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, + 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 86, 0, + 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 87, 0, 0, 0, 87, 0, + 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, + 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 92, 0, + 0, 0, 92, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, + 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 95, 0, + 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, 0, 96, 0, + 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 98, 0, + 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 99, 0, + 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0,100, 0, + 0, 0,100, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, 0, 0,101, 0, + 0, 0,101, 0, 0, 0,102, 0, 0, 0,102, 0, 0, 0,104, 0, 0, 0,105, 0, + 0, 0,107, 0, 0, 0,109, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0,105,110,100,101,120, 0, 0, 0, 0, 0, 77, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 77, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0,116,105, 0, 3, 0, 0, 0, 77, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0,116,118, 0, 6, 0, 0, 0, 77, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 9, 0, 0, 0, 77, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 73, 78, 68, 69, 88, 0, 27, 0, 0, 0, + 75, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 99, 98, 0, 29, 0, 0, 0, 75, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99, 0, 32, 0, 0, 0, + 45, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, 97,109,101, 0, 54, 0, 0, + 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, + 0,130, 0, 0, 0, 0, 1, 0, 6, 19, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, + 0, 92,128, 0, 1, 90, 64, 0, 0, 22,192, 2,128,133, 64, 0, 0,134,128, 64, + 1,193,192, 0, 0, 5, 1, 1, 0, 64, 1, 0, 0, 28, 1, 0, 1,156,128, 0, + 0,197, 64, 1, 0, 0, 1, 0, 1, 64, 1, 0, 0,220, 64,128, 1,158, 0, 0, + 1, 94, 0, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, + 0, 0, 71,101,116, 78, 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115, +116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,102,111,114,109, 97, +116, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 95, 73, 85, 80, 76, 85, 65, 95, 78, + 65, 77, 69, 40, 37,115, 41, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,116,111,115, +116,114,105,110,103, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 72, 97, +110,100,108,101, 0, 0, 0, 0, 0, 19, 0, 0, 0,123, 0, 0, 0,123, 0, 0, + 0,123, 0, 0, 0,124, 0, 0, 0,124, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, 0,125, 0, 0, + 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,126, 0, 0, 0,127, 0, 0, + 0,129, 0, 0, 0,130, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 0,118, 0, 0, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110, + 97,109,101, 0, 3, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 97,117,116,111,110, 97,109,101, 0, 12, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0,136, 0, 0, 0, 0, 1, 0, + 4, 6, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0,228, 0, 0, 0, 0, 0, 0, + 0, 73,192, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0,135, 0, 0, 0, + 1, 1, 0, 4, 6, 0, 0, 0, 68, 0, 0, 0, 75, 0,192, 0,192, 0, 0, 0, + 93, 0,128, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0, 99,111,110,115,116,114,117, 99,116,111,114, 0, 0, 0, 0, + 0, 6, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, 0,134, 0, 0, + 0,134, 0, 0, 0,135, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 99,116,114,108, 0, 6, 0, 0, 0,133, 0, 0, 0,133, 0, + 0, 0,135, 0, 0, 0,135, 0, 0, 0,135, 0, 0, 0,136, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 0, 0, 0,156, + 0, 0, 0, 0, 2, 0, 8, 31, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, + 65, 0, 0,156, 64,128, 1,133,128, 0, 0,192, 0, 0, 0,156,128, 0, 1,154, + 64, 0, 0, 22,192, 4,128,197,192, 0, 0, 5, 1, 1, 0, 6, 65, 65, 2, 64, + 1,128, 0, 28,129, 0, 1,198, 0,129, 1,218, 64, 0, 0, 22, 0, 0,128,197, +128, 1, 0, 10,129, 0, 0, 9,193,128,131, 9, 1, 0,132, 69, 1, 0, 0,128, + 1, 0, 2,193, 65, 2, 0, 92, 65,128, 1, 69,129, 2, 0,128, 1, 0, 0,192, + 1, 0, 2, 92, 65,128, 1, 30, 0, 0, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 87,105,100,103,101, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,117,112, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +117,112,112,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 0, 0, 0, 0, + 31, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0,140, 0, 0, 0, +142, 0, 0, 0,142, 0, 0, 0,142, 0, 0, 0,143, 0, 0, 0,143, 0, 0, 0, +145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0,145, 0, 0, 0, +145, 0, 0, 0,146, 0, 0, 0,146, 0, 0, 0,147, 0, 0, 0,150, 0, 0, 0, +150, 0, 0, 0,150, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0,151, 0, 0, 0, +151, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0,152, 0, 0, 0, +155, 0, 0, 0,156, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0,116,121,112,101,110, 97,109,101, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 7, 0, 0, 0, 30, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 15, 0, 0, + 0, 29, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, + 21, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +166, 0, 0, 0,168, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0, +134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0, 83,104,111,119, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, + 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,167, 0, 0, 0,167, 0, + 0, 0,167, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,172, 0, 0, 0, 0, 1, 0, + 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, 64, 0, 92, 64, 0, 1, 30, 0,128, + 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 72,105,100,101, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, + 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0, 1, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, + 0, 0,176, 0, 0, 0, 0, 1, 0, 3, 4, 0, 0, 0, 69, 0, 0, 0,134, 64, + 64, 0, 92, 64, 0, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, 0, + 0, 0, 0, 77, 97,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0,175, 0, 0, 0,175, 0, 0, 0,175, + 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, + 98,106,101, 99,116, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,178, 0, 0, 0,189, 0, 0, 0, 0, 2, 0, 7, 23, 0, + 0, 0,139, 0, 64, 0, 0, 1,128, 0,156,128,128, 1,202,128, 0, 0,201, 0, +128,128,201,128, 0,129, 5,193, 0, 0, 64, 1, 0, 1,129, 1, 1, 0, 28, 65, +128, 1, 5,193, 0, 0, 64, 1,128, 1,129, 65, 1, 0, 28, 65,128, 1, 5,129, + 1, 0, 64, 1, 0, 1,128, 1,128, 1, 28, 65,128, 1, 11,193,193, 1,128, 1, +128, 0, 28, 65,128, 1,158, 0, 0, 1, 30, 0,128, 0, 8, 0, 0, 0, 4, 14, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 4, 13, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 87,105,100,103,101,116, 0, 4, 14, 0, 0, + 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, + 0, 0, 0, 23, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,179, 0, 0, 0,180, + 0, 0, 0,181, 0, 0, 0,182, 0, 0, 0,184, 0, 0, 0,184, 0, 0, 0,184, + 0, 0, 0,184, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, 0, 0, 0,185, + 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,186, 0, 0, 0,187, + 0, 0, 0,187, 0, 0, 0,187, 0, 0, 0,188, 0, 0, 0,189, 0, 0, 0, 4, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, + 3, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, + 99,116, 0, 6, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,191, 0, 0, 0,203, 0, 0, 0, 0, 2, 0, 12, 25, 0, 0, 0,134, + 0, 64, 0,197, 64, 0, 0, 0, 1,128, 0,220, 0, 1, 1, 22, 0, 4,128, 5, +130, 0, 0, 64, 2, 0, 3, 28,130, 0, 1, 23,192, 64, 4, 22,128, 2,128, 5, + 2, 1, 0, 64, 2,128, 3, 28,130, 0, 1, 23, 64, 65, 4, 22, 64, 1,128, 5, +130, 1, 0, 64, 2, 0, 0,128, 2, 0, 3,192, 2,128, 3, 28, 66, 0, 2, 22, + 0, 0,128,137,192, 1, 3,225,128, 0, 0, 22, 0,251,127, 30, 0,128, 0, 7, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, + 6, 0, 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0,116,121,112,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, + 98,101,114, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97, +110,100,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,115,101,116, + 0, 0, 0, 0, 0, 25, 0, 0, 0,192, 0, 0, 0,193, 0, 0, 0,193, 0, 0, + 0,193, 0, 0, 0,193, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, + 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, 0,194, 0, 0, + 0,194, 0, 0, 0,194, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, + 0,197, 0, 0, 0,197, 0, 0, 0,197, 0, 0, 0,200, 0, 0, 0,193, 0, 0, + 0,201, 0, 0, 0,203, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0,104, 97,110,100,108,101, 0, 1, 0, 0, 0, 24, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116,111, +114, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40, +102,111,114, 32,115,116, 97,116,101, 41, 0, 4, 0, 0, 0, 24, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, + 0, 4, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, + 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 5, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 0, 0, + 0,227, 0, 0, 0, 0, 2, 0, 11, 28, 0, 0, 0,133, 0, 0, 0,192, 0, 0, + 0, 1, 65, 0, 0,156,128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128, + 0,220,128, 0, 1, 1, 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32, 1, 2, +128, 5, 66, 1, 0, 70,194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22,192, 0, +128, 5,194, 1, 0, 64, 2, 0, 1,134,194,129, 0, 28, 66,128, 1, 31, 65,253, +127, 5, 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, + 1, 30, 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97, +119,103,101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, + 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, 0, 0, 0, 0, 28, + 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,219, 0, 0, 0,220, + 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,220, 0, 0, 0,221, 0, 0, 0,221, + 0, 0, 0,221, 0, 0, 0,221, 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,222, + 0, 0, 0,222, 0, 0, 0,222, 0, 0, 0,223, 0, 0, 0,223, 0, 0, 0,223, + 0, 0, 0,223, 0, 0, 0,221, 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,226, + 0, 0, 0,226, 0, 0, 0,226, 0, 0, 0,227, 0, 0, 0, 8, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 27, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 27, 0, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0, + 0, 27, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0, 0, 27, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101, +120, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40, +102,111,114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 22, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 11, 0, + 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0, +252, 0, 0, 0, 0, 2, 0, 10, 52, 0, 0, 0,128, 0, 0, 0,219, 64,128, 0, + 22, 0, 0,128,193, 0, 0, 0, 21,192, 0, 1,133, 64, 0, 0,154, 0, 0, 0, + 22,128, 0,128,133, 64, 0, 0,137, 0, 0,129, 22,192, 9,128,133,192, 0, 0, +202,192, 0, 0,201, 64, 65,130,201,192, 65,131,201, 64, 66,132,156,128, 0, 1, +197,128, 2, 0, 10, 1, 1, 0, 9, 1,195,133, 9, 1,195,134, 9, 1, 0,129, + 9,129, 67,131,220,128, 0, 1, 5,193, 3, 0, 74,193, 0, 1,128, 1,128, 1, +192, 1, 0, 1, 73, 65, 68,136, 73,193, 68,137, 73, 65, 69,138, 98, 65, 0, 1, + 28,129, 0, 1, 69,129, 5, 0,138, 1,129, 0,192, 1, 0, 2,137,193, 69,130, +137,129, 0,140,137,129,128,140,137,129, 0,141,162, 65,128, 0, 92,129, 0, 1, +199, 64, 0, 0,139,193,198, 2, 5, 2, 7, 0, 69, 2, 7, 0,156, 65, 0, 2, +139, 65,199, 2,156, 65, 0, 1,131, 1, 0, 3,135, 65, 0, 0, 30, 0,128, 0, + 30, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, + 0, 0, 0,101,114,114,111,114, 95,109,101,115,115, 97,103,101, 95,112,111,112, +117,112, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,116,105,116,108,101, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 79,107, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,115,105,122,101, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 0, 54, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105, +111,110, 0, 4, 44, 0, 0, 0, 0, 0, 0, 0,101,114,114,111,114, 95,109,101, +115,115, 97,103,101, 95,112,111,112,117,112, 32, 61, 32,110,105,108, 59, 32,114, +101,116,117,114,110, 32,105,117,112, 46, 67, 76, 79, 83, 69, 0, 4, 10, 0, 0, + 0, 0, 0, 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,101,120,112, 97,110,100, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, + 89, 69, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,114,101, 97,100,111,110,108, +121, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 51, 48, 48,120, 49, 53, 48, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 97,108,105,103,110,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0, 65, 67, 69, 78, 84, 69, 82, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97, +114,103,105,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 49, 48,120, 49, 48, 0, + 4, 4, 0, 0, 0, 0, 0, 0, 0,103, 97,112, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0, 49, 48, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,100,105, 97,108,111,103, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 69,114,114,111,114, 32, 77,101,115,115, + 97,103,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116, +101,115, 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,100,101,102, 97,117,108,116, +101,110,116,101,114, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,115,116, 97,114,116, +102,111, 99,117,115, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,111,112,117,112, + 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, 69, 78, 84, 69, 82, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 0, 0, 0, 0, 52, 0, + 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, 0, 0,239, 0, + 0, 0,240, 0, 0, 0,240, 0, 0, 0,240, 0, 0, 0,241, 0, 0, 0,241, 0, + 0, 0,241, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, 0, 0,243, 0, + 0, 0,243, 0, 0, 0,243, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, + 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,244, 0, 0, 0,245, 0, + 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, + 0, 0,245, 0, 0, 0,245, 0, 0, 0,245, 0, 0, 0,246, 0, 0, 0,246, 0, + 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, 0, 0,246, 0, + 0, 0,246, 0, 0, 0,246, 0, 0, 0,247, 0, 0, 0,248, 0, 0, 0,248, 0, + 0, 0,248, 0, 0, 0,248, 0, 0, 0,249, 0, 0, 0,249, 0, 0, 0,250, 0, + 0, 0,250, 0, 0, 0,252, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0,101,114,114, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 0, 0, + 0, 0,116,114, 97, 99,101, 98, 97, 99,107, 0, 0, 0, 0, 0, 51, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 98,116, 0, 17, 0, 0, 0, 51, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0,109,108, 0, 24, 0, 0, 0, 51, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0,118, 98, 0, 33, 0, 0, 0, 51, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0,100,103, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 0, 0, 7, 2, + 2, 0, 0, 0, 30, 0, 0, 1, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0,254, 0, 0, 0,254, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 2, 0, 6, + 29, 0, 0, 0, 26, 64, 0, 0, 22,192, 0,128,133, 0, 0, 0,192, 0,128, 0, +156, 64, 0, 1, 30, 0,128, 0,133, 64, 0, 0,197,128, 0, 0, 0, 1, 0, 0, +220, 0, 0, 1,156,128, 0, 0,198,192, 64, 1,218, 64, 0, 0, 22, 0, 1,128, +197, 0, 0, 0, 6, 1, 65, 1,220, 64, 0, 1, 30, 0,128, 0, 22, 0, 2,128, +197, 64, 1, 0,198,128,193, 1, 0, 1, 0, 1, 65,193, 0, 0,220, 64,128, 1, +197,192, 1, 0, 0, 1, 0, 1,221, 0, 0, 1,222, 0, 0, 0, 30, 0,128, 0, + 8, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 95, 69, 82, 82, 79, 82, 77, + 69, 83, 83, 65, 71, 69, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,112, 97, 99,107, + 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 99, 97,108,108, 0, 3, 0, 0, 0, + 0, 0, 0,240, 63, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, 6, 0, 0, 0, 0, + 0, 0, 0,116, 97, 98,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114,101, +109,111,118,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,117,110,112, 97, 99,107, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 3, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, + 0, 5, 1, 0, 0, 5, 1, 0, 0, 5, 1, 0, 0, 6, 1, 0, 0, 6, 1, 0, + 0, 6, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 8, 1, 0, + 0, 8, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, 0, 10, 1, 0, + 0, 10, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, 0, 11, 1, 0, + 0, 13, 1, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,101,114,114, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 11, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 1, 0, 0, 15, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, 0,133, + 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, 0, 30, + 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114,111,116, +101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +108,111, 97,100,115,116,114,105,110,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 15, + 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, 1, 0, 0, 15, + 1, 0, 0, 15, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,115, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 1, 0, 0, 16, 1, 0, 0, 0, 1, 0, 4, 7, 0, 0, 0, 69, 0, 0, + 0,133, 64, 0, 0,192, 0, 0, 0,156, 0, 0, 1, 93, 0, 0, 0, 94, 0, 0, + 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,112,114, +111,116,101, 99,116,101,100, 99, 97,108,108, 95, 0, 4, 9, 0, 0, 0, 0, 0, + 0, 0,108,111, 97,100,102,105,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, + 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 16, + 1, 0, 0, 16, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,102, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 1, 0, 0, 20, 1, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, + 0,198, 64,192, 1, 1,129, 0, 0, 78, 1,128,129,142, 65,128,129,206,129,128, +129,221, 0,128, 2,222, 0, 0, 0, 30, 0,128, 0, 4, 0, 0, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0,102,111,114,109, 97,116, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 37,100, + 32, 37,100, 32, 37,100, 0, 3, 0, 0, 0, 0, 0,224,111, 64, 0, 0, 0, 0, + 9, 0, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, + 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 19, 1, 0, 0, 20, 1, 0, 0, + 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 27, 0, 0, 0, 9, 0, + 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 55, 0, + 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, 0, 0, 56, 0, + 0, 0, 56, 0, 0, 0, 79, 0, 0, 0,109, 0, 0, 0,111, 0, 0, 0,111, 0, + 0, 0,111, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, 0, 0,112, 0, + 0, 0,112, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, 0, 0,113, 0, + 0, 0,113, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, 0, 0,114, 0, + 0, 0,114, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, 0, 0,115, 0, + 0, 0,115, 0, 0, 0,130, 0, 0, 0,122, 0, 0, 0,136, 0, 0, 0,132, 0, + 0, 0,156, 0, 0, 0,138, 0, 0, 0,162, 0, 0, 0,163, 0, 0, 0,163, 0, + 0, 0,164, 0, 0, 0,166, 0, 0, 0,168, 0, 0, 0,166, 0, 0, 0,170, 0, + 0, 0,172, 0, 0, 0,170, 0, 0, 0,174, 0, 0, 0,176, 0, 0, 0,174, 0, + 0, 0,178, 0, 0, 0,189, 0, 0, 0,178, 0, 0, 0,191, 0, 0, 0,203, 0, + 0, 0,191, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, 0, 0,207, 0, + 0, 0,214, 0, 0, 0,215, 0, 0, 0,215, 0, 0, 0,216, 0, 0, 0,218, 0, + 0, 0,227, 0, 0, 0,218, 0, 0, 0,229, 0, 0, 0,229, 0, 0, 0,229, 0, + 0, 0,229, 0, 0, 0,236, 0, 0, 0,236, 0, 0, 0,252, 0, 0, 0,238, 0, + 0, 0,254, 0, 0, 0,254, 0, 0, 0, 13, 1, 0, 0, 0, 1, 0, 0, 15, 1, + 0, 0, 15, 1, 0, 0, 16, 1, 0, 0, 16, 1, 0, 0, 20, 1, 0, 0, 18, 1, + 0, 0, 20, 1, 0, 0, 3, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,119,105, +100,103,101,116, 95,103,101,116,116, 97, 98,108,101, 0, 7, 0, 0, 0, 94, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,103,101, +116,116, 97, 98,108,101, 0, 16, 0, 0, 0, 94, 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,116, 97, 98,108,101, 0, + 17, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/iuplua_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/label.loh b/iup/srclua5/loh/label.loh new file mode 100755 index 0000000..3aa72b7 --- /dev/null +++ b/iup/srclua5/loh/label.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/label.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/label.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,108, 97, 98, +101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, + 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, + 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193, +128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0, +110,105, 99,107, 0, 4, 6, 0, 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 83, + 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, + 0, 0, 13, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64, +192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, + 0, 0, 0, 76, 97, 98,101,108, 0, 4, 6, 0, 0, 0,116,105,116,108,101, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, + 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/label_be32.loh b/iup/srclua5/loh/label_be32.loh new file mode 100755 index 0000000..ef70ed4 --- /dev/null +++ b/iup/srclua5/loh/label_be32.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/label_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/label_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,108, 97, 98, +101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, + 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, + 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5, +110,105, 99,107, 0, 4, 0, 0, 0, 6,108, 97, 98,101,108, 0, 4, 0, 0, 0, + 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, + 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 83, + 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, + 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105, +117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 13, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, + 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, + 0, 0, 6, 76, 97, 98,101,108, 0, 4, 0, 0, 0, 6,116,105,116,108,101, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, + 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, + 0, 0, 16, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/label_be64.loh b/iup/srclua5/loh/label_be64.loh new file mode 100755 index 0000000..4d528c0 --- /dev/null +++ b/iup/srclua5/loh/label_be64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/label_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/label_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,108, 97, 98,101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 76, + 97, 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/label_le64.loh b/iup/srclua5/loh/label_le64.loh new file mode 100755 index 0000000..554b5da --- /dev/null +++ b/iup/srclua5/loh/label_le64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/label_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/label_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,108, 97, 98,101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 76, + 97, 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/label_le64w.loh b/iup/srclua5/loh/label_le64w.loh new file mode 100755 index 0000000..d622b47 --- /dev/null +++ b/iup/srclua5/loh/label_le64w.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/label_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/label_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,108, 97, 98,101,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0,108, 97, 98,101,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, + 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0, 83, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 76, + 97, 98,101,108, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/label_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/list.loh b/iup/srclua5/loh/list.loh new file mode 100755 index 0000000..860d071 --- /dev/null +++ b/iup/srclua5/loh/list.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/list.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/list.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,108,105,115, +116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 64, 1, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133, 73,128, +195,134, 73, 0,195,135, 9, 64, 0,131,100, 0, 0, 0, 9, 64, 0,136, 69, 64, + 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 4, 0,128, 0, 0, 0,193,192, + 4, 0, 92, 64,128, 1, 30, 0,128, 0, 20, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0,108,105,115,116, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99, +116,105,111,110, 0, 4, 4, 0, 0, 0,115,110,110, 0, 4, 15, 0, 0, 0,109, +117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2, 0, 0, 0,115, + 0, 4, 8, 0, 0, 0,101,100,105,116, 95, 99, 98, 0, 4, 3, 0, 0, 0,110, +115, 0, 4, 12, 0, 0, 0,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 4, + 2, 0, 0, 0,110, 0, 4, 12, 0, 0, 0,100, 98,108, 99,108,105, 99,107, 95, + 99, 98, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110, +116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105, +100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 0, 2, 0, 3, 4, 0, + 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, + 0, 0, 4, 5, 0, 0, 0, 76,105,115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 19, 0, 0, 0, 17, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, + 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116, +114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/list_be32.loh b/iup/srclua5/loh/list_be32.loh new file mode 100755 index 0000000..1e70e44 --- /dev/null +++ b/iup/srclua5/loh/list_be32.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/list_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/list_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,108,105,115, +116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 20, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0,192, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73,131, 0, + 64, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0, + 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128, + 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, + 5,108,105,115,116, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116, +105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, + 0, 4,115,110,110, 0, 4, 0, 0, 0, 15,109,117,108,116,105,115,101,108,101, + 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 2,115, 0, 4, 0, 0, 0, 8,101,100, +105,116, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,115, 0, 4, 0, 0, 0, 14, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, + 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117, +112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0, +157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 76,105, +115,116, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, + 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, + 5, 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/list_be64.loh b/iup/srclua5/loh/list_be64.loh new file mode 100755 index 0000000..1a3776c --- /dev/null +++ b/iup/srclua5/loh/list_be64.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/list_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/list_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,108,105,115,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 1, 0, 73, 0,194,131, 73,128,194,132, 73, 0, +195,133, 73,128,195,134, 73, 0,195,135, 9, 64, 0,131,100, 0, 0, 0, 9, 64, + 0,136, 69, 64, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 4, 0,128, 0, + 0, 0,193,192, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 20, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,108,105,115,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, + 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,115,110,110, 0, 4, 15, 0, 0, 0, 0, + 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100, +105,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 4, + 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,100, + 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, + 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101, +116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 0, + 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, + 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76, +105,115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 19, 0, 0, 0, 17, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, + 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/list_le64.loh b/iup/srclua5/loh/list_le64.loh new file mode 100755 index 0000000..995a457 --- /dev/null +++ b/iup/srclua5/loh/list_le64.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/list_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/list_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,108,105,115,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0, +195,133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64, +128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,108,105,115,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0,115,110,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105, +115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 95, 99, 98, 0, 4, 3, + 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76,105, +115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, + 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0, + 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/list_le64w.loh b/iup/srclua5/loh/list_le64w.loh new file mode 100755 index 0000000..1859883 --- /dev/null +++ b/iup/srclua5/loh/list_le64w.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/list_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/list_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,108,105,115,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 1, 0, 73, 0,194,131, 73,128,194,132, 73, 0, +195,133, 73,128,195,134, 73, 0,195,135, 9, 64, 0,131,100, 0, 0, 0, 9, 64, + 0,136, 69, 64, 4, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 4, 0,128, 0, + 0, 0,193,192, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 20, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,108,105,115,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, + 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,115,110,110, 0, 4, 15, 0, 0, 0, 0, + 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 2, + 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100, +105,116, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,100,114,111,112,100,111,119,110, 95, 99, 98, 0, 4, + 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,100, + 98,108, 99,108,105, 99,107, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, + 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101, +116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 0, + 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, + 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 76, +105,115,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 19, 0, 0, 0, 17, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, + 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/list_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/matrix.loh b/iup/srclua5/loh/matrix.loh new file mode 100755 index 0000000..cb1d401 --- /dev/null +++ b/iup/srclua5/loh/matrix.loh @@ -0,0 +1,94 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/matrix.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,109, 97,116, +114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 50, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, + 9, 64, 65,130, 74,128, 4, 0, 73, 0,194,131, 73,128,194,132, 73,128,194,133, + 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, 73, 64, 69,138, + 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140, 73,192, 67,141, + 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142,162, 64,128, 0, + 73,128, 0,142,138, 64,128, 0,193,192, 3, 0,137,128,199,142,162, 64,128, 0, + 73,128,128,143, 73,128, 66,144, 73,192,195,144, 73,192, 72,145, 9, 64, 0,131, + 9, 64, 73,146, 9,192, 73,147,100, 0, 0, 0, 9, 64, 0,148,100, 64, 0, 0, + 9, 64,128,148,100,128, 0, 0, 9, 64, 0,149, 69,192, 10, 0,128, 0, 0, 0, + 92, 64, 0, 1, 69, 0, 11, 0,128, 0, 0, 0,193, 64, 11, 0, 92, 64,128, 1, + 30, 0,128, 0, 46, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0,109, 97,116,114,105,120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, + 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 97, 99,116,105,111,110, + 95, 99, 98, 0, 4, 6, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0, + 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0,110,110,115, 0, 4, 11, + 0, 0, 0,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0,100, +114,111,112, 95, 99, 98, 0, 4, 4, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0, + 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3, 0, 0, 0,110, +110, 0, 4, 8, 0, 0, 0,100,114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, +110,110,110,110,110,110,110, 0, 4, 14, 0, 0, 0,100,114,111,112,115,101,108, +101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0,110,110,105,115,110,110, 0, 4, + 11, 0, 0, 0,101,100,105,116,105,111,110, 95, 99, 98, 0, 4, 5, 0, 0, 0, +110,110,110,110, 0, 4, 13, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95, + 99, 98, 0, 4, 13, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98, + 0, 4, 13, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, + 13, 0, 0, 0,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, 4, 11, 0, + 0, 0,102,103, 99,111,108,111,114, 95, 99, 98, 0, 4, 11, 0, 0, 0, 98,103, + 99,111,108,111,114, 95, 99, 98, 0, 4, 8, 0, 0, 0,102,111,110,116, 95, 99, + 98, 0, 4, 4, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0,115, 0, 4, 9, + 0, 0, 0,118, 97,108,117,101, 95, 99, 98, 0, 4, 14, 0, 0, 0,118, 97,108, +117,101, 95,101,100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0,109, 97,114,107, + 95, 99, 98, 0, 4, 12, 0, 0, 0,109, 97,114,107,101,100,105,116, 95, 99, 98, + 0, 4, 4, 0, 0, 0,110,110,110, 0, 4, 8, 0, 0, 0,105,110, 99,108,117, +100,101, 0, 4, 14, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46, +104, 0, 4, 11, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 8, 0, 0, 0,115,101,116, 99,101,108,108, 0, 4, + 8, 0, 0, 0,103,101,116, 99,101,108,108, 0, 4, 18, 0, 0, 0,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 35, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, +157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0, + 0, 77, 97,116,114,105,120, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 34, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 39, 0, + 0, 0, 0, 4, 0, 9, 9, 0, 0, 0, 5, 1, 0, 0, 64, 1, 0, 0,128, 1, +128, 0,193, 65, 0, 0, 0, 2, 0, 1,149, 1, 2, 3,192, 1,128, 1, 28, 65, + 0, 2, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 4, + 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 2, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, + 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0,118, 97,108, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, + 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1, +128, 0,129, 65, 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128, 1,222, 0, + 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 71,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, + 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 3, + 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 2, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, + 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, + 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, + 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, + 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, + 0, 0, 35, 0, 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, 0, 43, 0, + 0, 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, + 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 36, 0, 0, 0, 49, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/matrix_be32.loh b/iup/srclua5/loh/matrix_be32.loh new file mode 100755 index 0000000..3d83422 --- /dev/null +++ b/iup/srclua5/loh/matrix_be32.loh @@ -0,0 +1,94 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/matrix_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,109, 97,116, +114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 0, 0, 0, 50, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9, +130, 65, 64, 9, 0, 4,128, 74,131,194, 0, 73,132,194,128, 73,133,194,128, 73, +134, 67, 64, 73,135, 67,192, 73,136, 68, 64, 73,137, 68,192, 73,138, 69, 64, 73, +139, 67,192, 73,139,195,192, 73,140, 67,192, 73,140,195,192, 73,141, 67,192, 73, +141,195,192, 73, 0,128, 64,138, 0, 3,192,193,142,199,128,137, 0,128, 64,162, +142, 0,128, 73, 0,128, 64,138, 0, 3,192,193,142,199,128,137, 0,128, 64,162, +143,128,128, 73,144, 66,128, 73,144,195,192, 73,145, 72,192, 73,131, 0, 64, 9, +146, 73, 64, 9,147, 73,192, 9, 0, 0, 0,100,148, 0, 64, 9, 0, 0, 64,100, +148,128, 64, 9, 0, 0,128,100,149, 0, 64, 9, 0, 10,192, 69, 0, 0, 0,128, + 1, 0, 64, 92, 0, 11, 0, 69, 0, 0, 0,128, 0, 11, 64,193, 1,128, 64, 92, + 0,128, 0, 30, 0, 0, 0, 46, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, + 0, 0, 7,109, 97,116,114,105,120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110, +116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99, +114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9, + 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 10, 97, 99,116,105,111,110, + 95, 99, 98, 0, 4, 0, 0, 0, 6,110,110,110,110,115, 0, 4, 0, 0, 0, 9, + 99,108,105, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 4,110,110,115, 0, 4, 0, + 0, 0, 11,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 8,100, +114,111,112, 95, 99, 98, 0, 4, 0, 0, 0, 4,105,110,110, 0, 4, 0, 0, 0, + 13,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 3,110, +110, 0, 4, 0, 0, 0, 8,100,114, 97,119, 95, 99, 98, 0, 4, 0, 0, 0, 8, +110,110,110,110,110,110,110, 0, 4, 0, 0, 0, 14,100,114,111,112,115,101,108, +101, 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 7,110,110,105,115,110,110, 0, 4, + 0, 0, 0, 11,101,100,105,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 5, +110,110,110,110, 0, 4, 0, 0, 0, 13,101,110,116,101,114,105,116,101,109, 95, + 99, 98, 0, 4, 0, 0, 0, 13,108,101, 97,118,101,105,116,101,109, 95, 99, 98, + 0, 4, 0, 0, 0, 13,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, + 0, 0, 0, 13,115, 99,114,111,108,108,116,111,112, 95, 99, 98, 0, 4, 0, 0, + 0, 11,102,103, 99,111,108,111,114, 95, 99, 98, 0, 4, 0, 0, 0, 11, 98,103, + 99,111,108,111,114, 95, 99, 98, 0, 4, 0, 0, 0, 8,102,111,110,116, 95, 99, + 98, 0, 4, 0, 0, 0, 4,114,101,116, 0, 4, 0, 0, 0, 2,115, 0, 4, 0, + 0, 0, 9,118, 97,108,117,101, 95, 99, 98, 0, 4, 0, 0, 0, 14,118, 97,108, +117,101, 95,101,100,105,116, 95, 99, 98, 0, 4, 0, 0, 0, 8,109, 97,114,107, + 95, 99, 98, 0, 4, 0, 0, 0, 12,109, 97,114,107,101,100,105,116, 95, 99, 98, + 0, 4, 0, 0, 0, 4,110,110,110, 0, 4, 0, 0, 0, 8,105,110, 99,108,117, +100,101, 0, 4, 0, 0, 0, 14,105,117,112, 99,111,110,116,114,111,108,115, 46, +104, 0, 4, 0, 0, 0, 11,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 63, +240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 0, 0, 0, 8,115,101,116, 99,101,108,108, 0, 4, + 0, 0, 0, 8,103,101,116, 99,101,108,108, 0, 4, 0, 0, 0, 18,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, + 32,119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 35, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, + 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, + 7, 77, 97,116,114,105,120, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, + 0, 39, 0, 4, 0, 9, 0, 0, 0, 9, 0, 0, 1, 5, 0, 0, 1, 64, 0,128, + 1,128, 0, 0, 65,193, 1, 0, 2, 0, 3, 2, 1,149, 1,128, 1,192, 2, 0, + 65, 28, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 13, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, + 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, + 0, 0, 4, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 2,108, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, + 99, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4,118, 97,108, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, + 0, 43, 0, 3, 0, 8, 0, 0, 0, 9, 0, 0, 0,197, 0, 0, 1, 0, 0,128, + 1, 64, 0, 0, 65,129, 1, 0, 1,192, 2,129,193, 85, 1,128, 0,221, 0, 0, + 0,222, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 13, 71,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 2, 58, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, + 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, + 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 2,108, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, + 99, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, + 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, + 0, 30, 0, 0, 0, 35, 0, 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, + 0, 43, 0, 0, 0, 41, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, + 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, + 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 36, 0, 0, 0, 49, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/matrix_be64.loh b/iup/srclua5/loh/matrix_be64.loh new file mode 100755 index 0000000..b119ef9 --- /dev/null +++ b/iup/srclua5/loh/matrix_be64.loh @@ -0,0 +1,107 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/matrix_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 50, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74,128, 4, 0, 73, 0,194,131, 73,128,194,132, + 73,128,194,133, 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, + 73, 64, 69,138, 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140, + 73,192, 67,141, 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142, +162, 64,128, 0, 73,128, 0,142,138, 64,128, 0,193,192, 3, 0,137,128,199,142, +162, 64,128, 0, 73,128,128,143, 73,128, 66,144, 73,192,195,144, 73,192, 72,145, + 9, 64, 0,131, 9, 64, 73,146, 9,192, 73,147,100, 0, 0, 0, 9, 64, 0,148, +100, 64, 0, 0, 9, 64,128,148,100,128, 0, 0, 9, 64, 0,149, 69,192, 10, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 11, 0,128, 0, 0, 0,193, 64, 11, 0, + 92, 64,128, 1, 30, 0,128, 0, 46, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,116,114,105, +120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0,110,110,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,114,101,108,101, 97, +115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,114,111,112, 95, + 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3, + 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100, +114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,110,110,110, +110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,115,101,108, +101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,105,115, +110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,105,111,110, 95, + 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,110,110, 0, 4, 13, 0, + 0, 0, 0, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 4, + 13, 0, 0, 0, 0, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98, + 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, + 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108,116,111, +112, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,103, 99,111,108,111, +114, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,103, 99,111,108,111, +114, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,102,111,110,116, 95, 99, + 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, + 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 95,101, +100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107, + 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101,100,105, +116, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 8, + 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115, +101,116, 99,101,108,108, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,103,101,116, 99, +101,108,108, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,114,105,120, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114, +103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 0, 0, 39, 0, 0, 0, 0, 4, 0, 9, 9, 0, 0, 0, 5, 1, + 0, 0, 64, 1, 0, 0,128, 1,128, 0,193, 65, 0, 0, 0, 2, 0, 1,149, 1, + 2, 3,192, 1,128, 1, 28, 65, 0, 2, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, + 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0, 38, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0,118, 97,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 0, 3, + 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,129, 65, + 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128, 1,222, 0, 0, 0, 30, 0, +128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, + 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, + 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108, +101, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, + 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 35, 0, + 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, 0, 43, 0, 0, 0, 41, 0, + 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, 0, + 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 36, 0, 0, 0, 49, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/matrix_le64.loh b/iup/srclua5/loh/matrix_le64.loh new file mode 100755 index 0000000..4fbccff --- /dev/null +++ b/iup/srclua5/loh/matrix_le64.loh @@ -0,0 +1,107 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluacontrols51/matrix_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 50, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74,128, 4, 0, 73, 0,194,131, 73,128,194,132, + 73,128,194,133, 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, + 73, 64, 69,138, 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140, + 73,192, 67,141, 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142, +162, 64,128, 0, 73,128, 0,142,138, 64,128, 0,193,192, 3, 0,137,128,199,142, +162, 64,128, 0, 73,128,128,143, 73,128, 66,144, 73,192,195,144, 73,192, 72,145, + 9, 64, 0,131, 9, 64, 73,146, 9,192, 73,147,100, 0, 0, 0, 9, 64, 0,148, +100, 64, 0, 0, 9, 64,128,148,100,128, 0, 0, 9, 64, 0,149, 69,192, 10, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 11, 0,128, 0, 0, 0,193, 64, 11, 0, + 92, 64,128, 1, 30, 0,128, 0, 46, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,116,114,105, +120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0,110,110,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,114,101,108,101, 97, +115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,114,111,112, 95, + 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3, + 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100, +114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,110,110,110, +110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,115,101,108, +101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,105,115, +110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,105,111,110, 95, + 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,110,110, 0, 4, 13, 0, + 0, 0, 0, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 4, + 13, 0, 0, 0, 0, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98, + 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, + 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108,116,111, +112, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,103, 99,111,108,111, +114, 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,103, 99,111,108,111, +114, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,102,111,110,116, 95, 99, + 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, + 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 95,101, +100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107, + 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101,100,105, +116, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 8, + 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 14, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 99,111,110,116,114,111,108,115, 46,104, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97, +116,101, 69,108,101,109,101,110,116, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115, +101,116, 99,101,108,108, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,103,101,116, 99, +101,108,108, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 35, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 97,116,114,105,120, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 35, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114, +103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 0, 0, 39, 0, 0, 0, 0, 4, 0, 9, 9, 0, 0, 0, 5, 1, + 0, 0, 64, 1, 0, 0,128, 1,128, 0,193, 65, 0, 0, 0, 2, 0, 1,149, 1, + 2, 3,192, 1,128, 1, 28, 65, 0, 2, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, + 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0, 38, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0,118, 97,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 0, 3, + 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,129, 65, + 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128, 1,222, 0, 0, 0, 30, 0, +128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 71,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, + 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, + 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108, +101, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, + 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 35, 0, + 0, 0, 33, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, 0, 43, 0, 0, 0, 41, 0, + 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, 0, + 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 36, 0, 0, 0, 49, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/matrix_le64w.loh b/iup/srclua5/loh/matrix_le64w.loh new file mode 100755 index 0000000..13bc7f9 --- /dev/null +++ b/iup/srclua5/loh/matrix_le64w.loh @@ -0,0 +1,103 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/matrix_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/matrix_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,109, 97,116,114,105,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 45, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 64, 4, 0, 73, 0,194,131, 73,128,194,132, + 73,128,194,133, 73, 64, 67,134, 73,192, 67,135, 73, 64, 68,136, 73,192, 68,137, + 73, 64, 69,138, 73,192, 67,139, 73,192,195,139, 73,192, 67,140, 73,192,195,140, + 73,192, 67,141, 73,192,195,141,138, 64,128, 0,193,192, 3, 0,137,128,199,142, +162, 64,128, 0, 73,128, 0,142, 73,128,194,143, 73,192, 67,144, 73, 64,197,144, + 9, 64, 0,131, 9,192, 72,145, 9, 64, 73,146,100, 0, 0, 0, 9, 64, 0,147, +100, 64, 0, 0, 9, 64,128,147,100,128, 0, 0, 9, 64, 0,148, 69, 64, 10, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69,128, 10, 0,128, 0, 0, 0,193,192, 10, 0, + 92, 64,128, 1, 30, 0,128, 0, 44, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,116,114,105, +120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,110,110,110,110,115, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,108,105, 99,107, 95, 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, + 0, 0,110,110,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,114,101,108,101, 97, +115,101, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,114,111,112, 95, + 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,105,110,110, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0,100,114,111,112, 99,104,101, 99,107, 95, 99, 98, 0, 4, 3, + 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100, +114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,110,110,110,110, +110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,100,114,111,112,115,101,108, +101, 99,116, 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,105,115, +110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,105,111,110, 95, + 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0,101,110,116,101,114,105,116,101,109, 95, 99, 98, 0, 4, 13, + 0, 0, 0, 0, 0, 0, 0,108,101, 97,118,101,105,116,101,109, 95, 99, 98, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, + 98, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115, 99,114,111,108,108,116,111,112, + 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,102,103, 99,111,108,111,114, + 95, 99, 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,103, 99,111,108,111,114, + 95, 99, 98, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 95, 99, + 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,114,101,116, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, + 95,101,100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,109, 97, +114,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101, +100,105,116, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108, +117,100,101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112,109, 97,116,114, +105,120, 46,104, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102, +117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0,115,101,116, 99,101,108,108, 0, 4, 8, 0, 0, 0, 0, + 0, 0, 0,103,101,116, 99,101,108,108, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 0, + 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, + 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, + 77, 97,116,114,105,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105, +111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, + 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 38, 0, 0, 0, 0, 4, 0, + 9, 9, 0, 0, 0, 5, 1, 0, 0, 64, 1, 0, 0,128, 1,128, 0,193, 65, 0, + 0, 0, 2, 0, 1,149, 1, 2, 3,192, 1,128, 1, 28, 65, 0, 2, 30, 0,128, + 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116, +114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, + 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0, + 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,108, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, + 0, 42, 0, 0, 0, 0, 3, 0, 8, 9, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, + 0, 64, 1,128, 0,129, 65, 0, 0,192, 1, 0, 1, 85,193,129, 2,221, 0,128, + 1,222, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0, 71,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 9, 0, 0, 0, 41, 0, 0, 0, 41, 0, + 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, + 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 99, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, + 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, + 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 38, 0, 0, 0, 36, 0, 0, + 0, 42, 0, 0, 0, 40, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, + 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 31, 0, + 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/matrix_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/menu.loh b/iup/srclua5/loh/menu.loh new file mode 100755 index 0000000..2c6f9cf --- /dev/null +++ b/iup/srclua5/loh/menu.loh @@ -0,0 +1,122 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/menu.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/menu.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,109,101,110, +117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 27, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, 0,131,100, 0, + 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128, 0, 0, 9, 64, + 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64, 0,135, 69,192, + 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0, 0, 0,193, 64, + 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0,109,101,110,117, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0,111,112,101,110, 95, + 99, 98, 0, 4, 1, 0, 0, 0, 0, 4, 13, 0, 0, 0,109,101,110,117, 99,108, +111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0,112,111,112,117,112, 0, 4, 7, + 0, 0, 0, 97,112,112,101,110,100, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 7, 0, 0, 0,115,104,111,119,120,121, + 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, + 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, + 0, 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0, +133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, + 1, 0, 0, 0, 4, 7, 0, 0, 0, 65,112,112,101,110,100, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0, + 0, 2, 0, 14, 85, 0, 0, 0,148, 0,128, 0,193, 0, 0, 0, 0, 1, 0, 1, + 65, 1, 0, 0,224,128, 18,128,197, 65, 0, 0, 6,130,129, 0,220,129, 0, 1, + 23,128,192, 3, 22, 64, 17,128,202, 1, 0, 0,199,193, 0, 0,197, 1, 1, 0, + 6,130,129, 0,220, 1, 1, 1, 22,128, 1,128, 5, 67, 0, 0, 64, 3, 0, 5, + 28,131, 0, 1, 87, 64, 65, 6, 22, 64, 0,128, 5,195, 0, 0, 9,195, 2, 5, +225,129, 0, 0, 22,128,253,127,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4, +220,129, 0, 1, 23,128,193, 3, 22, 0, 6,128,197, 65, 0, 0, 6,130,129, 0, + 6,194, 65, 4,220,129, 0, 1, 87, 0,194, 3, 22, 64, 1,128,197, 65, 0, 0, + 6,130,129, 0, 6,194, 65, 4,220,129, 0, 1, 23,128,193, 3, 22, 0, 3,128, +197,193, 0, 0, 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197,193, 0, 0, + 6,130,129, 0, 6,194, 65, 4,201, 1, 2,133,197,193, 2, 0, 5,194, 0, 0, +220,129, 0, 1, 73,192, 1, 3, 22,192, 5,128,197, 65, 0, 0, 6,130,129, 0, + 6, 2, 64, 4,220,129, 0, 1, 23,128,193, 3, 22, 64, 4,128,197, 65, 0, 0, + 6,130,129, 0, 6,194, 65, 4,220,129, 0, 1, 23, 0,195, 3, 22,192, 2,128, +197,193, 0, 0, 6,130,129, 0, 6,194, 65, 4,201, 1, 2,128,197,193, 0, 0, + 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197, 65, 3, 0, 5,194, 0, 0, +220,129, 0, 1, 73,192, 1, 3,223,192,236,127,197,128, 3, 0,221, 0,128, 0, +222, 0, 0, 0, 30, 0,128, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, + 63, 4, 5, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,116, 97, 98,108, +101, 0, 4, 8, 0, 0, 0,105,116,101,109, 97,114,103, 0, 4, 6, 0, 0, 0, +112, 97,105,114,115, 0, 4, 7, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7, + 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, + 9, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 6, 0, 0, 0,116,105, +116,108,101, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0, + 0,105,116,101,109, 0, 4, 9, 0, 0, 0,117,115,101,114,100, 97,116, 97, 0, + 4, 8, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 5, 0, 0, 0, 77,101, +110,117, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, + 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 27, + 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 34, + 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 39, + 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, 0, 0, 0, 43, 0, 0, 0, 43, + 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 84, 0, 0, 0, 4, 0, 0, 0, 97,114,103, + 0, 0, 0, 0, 0, 84, 0, 0, 0, 2, 0, 0, 0,110, 0, 1, 0, 0, 0, 84, + 0, 0, 0, 12, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41, 0, 4, + 0, 0, 0, 81, 0, 0, 0, 12, 0, 0, 0, 40,102,111,114, 32,108,105,109,105, +116, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11, 0, 0, 0, 40,102,111,114, 32, +115,116,101,112, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 2, 0, 0, 0,105, 0, + 5, 0, 0, 0, 80, 0, 0, 0, 16, 0, 0, 0, 40,102,111,114, 32,103,101,110, +101,114, 97,116,111,114, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12, 0, 0, 0, + 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, + 14, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 15, 0, + 0, 0, 25, 0, 0, 0, 2, 0, 0, 0,117, 0, 16, 0, 0, 0, 23, 0, 0, 0, + 2, 0, 0, 0,118, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, + 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, + 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 83,104,111,119, 88, + 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, + 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 3, 0, + 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 2, 0, 0, 0,120, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0,121, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, + 0, 52, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, + 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, + 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 51, 0, + 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 1, 0, + 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0, + 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 52, 0, 0, + 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/menu_be32.loh b/iup/srclua5/loh/menu_be32.loh new file mode 100755 index 0000000..6b81d0e --- /dev/null +++ b/iup/srclua5/loh/menu_be32.loh @@ -0,0 +1,122 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/menu_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/menu_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,109,101,110, +117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 27, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0,128, 74,131,194, 0, 73,132,194, 0, 73,131, 0, 64, 9, 0, 0, + 0,100,133, 0, 64, 9, 0, 0, 64,100,133,128, 64, 9, 0, 0,128,100,134, 0, + 64, 9, 0, 0,192,100,134,128, 64, 9, 0, 1, 0,100,135, 0, 64, 9, 0, 3, +192, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 4, 0, 69, 0, 0, 0,128, 0, 4, + 64,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 18, 4, 0, 0, 0, 5,110, +105, 99,107, 0, 4, 0, 0, 0, 5,109,101,110,117, 0, 4, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66, 79, 88, 0, 4, 0, 0, 0, 9, + 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, + 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 8,111,112,101,110, 95, + 99, 98, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 13,109,101,110,117, 99,108, +111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 6,112,111,112,117,112, 0, 4, 0, + 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 7,115,104,111,119,120,121, + 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, 0, 0, 18,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, + 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105, +117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 16, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0,197, 0, 0, + 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, 0, 0, + 0, 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 2, 0, 5, 0, 0, 0, 5, + 0, 0, 0,133, 0, 0, 0,192, 0,128, 1, 0, 1,128, 64,156, 0,128, 0, 30, + 0, 0, 0, 1, 4, 0, 0, 0, 7, 65,112,112,101,110,100, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5,101,108,101,109, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, + 0, 2, 0, 14, 0, 0, 0, 85, 0,128, 0,148, 0, 0, 0,193, 1, 0, 1, 0, + 0, 0, 1, 65,128, 18,128,224, 0, 0, 65,197, 0,129,130, 6, 1, 0,129,220, + 3,192,128, 23,128, 17, 64, 22, 0, 0, 1,202, 0, 0,193,199, 0, 1, 1,197, + 0,129,130, 6, 1, 1, 1,220,128, 1,128, 22, 0, 0, 67, 5, 5, 0, 3, 64, + 1, 0,131, 28, 6, 65, 64, 87,128, 0, 64, 22, 0, 0,195, 5, 5, 2,195, 9, + 0, 0,129,225,127,253,128, 22, 0, 0, 65,197, 0,129,130, 6, 4, 64, 2, 6, + 1, 0,129,220, 3,193,128, 23,128, 6, 0, 22, 0, 0, 65,197, 0,129,130, 6, + 4, 65,194, 6, 1, 0,129,220, 3,194, 0, 87,128, 1, 64, 22, 0, 0, 65,197, + 0,129,130, 6, 4, 65,194, 6, 1, 0,129,220, 3,193,128, 23,128, 3, 0, 22, + 0, 0,193,197, 0,129,130, 6, 4, 64, 2, 6,132,130, 1,201, 0, 0,193,197, + 0,129,130, 6, 4, 65,194, 6,133, 2, 1,201, 0, 2,193,197, 0, 0,194, 5, + 1, 0,129,220, 3, 1,192, 73,128, 5,192, 22, 0, 0, 65,197, 0,129,130, 6, + 4, 64, 2, 6, 1, 0,129,220, 3,193,128, 23,128, 4, 64, 22, 0, 0, 65,197, + 0,129,130, 6, 4, 65,194, 6, 1, 0,129,220, 3,195, 0, 23,128, 2,192, 22, + 0, 0,193,197, 0,129,130, 6, 4, 65,194, 6,128, 2, 1,201, 0, 0,193,197, + 0,129,130, 6, 4, 64, 2, 6,132,130, 1,201, 0, 3, 65,197, 0, 0,194, 5, + 1, 0,129,220, 3, 1,192, 73,127,236,192,223, 0, 3,128,197, 0,128, 0,221, + 0, 0, 0,222, 0,128, 0, 30, 0, 0, 0, 15, 3, 63,240, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 5,116,121,112,101, 0, 4, 0, 0, 0, 6,116, 97, 98,108, +101, 0, 4, 0, 0, 0, 8,105,116,101,109, 97,114,103, 0, 4, 0, 0, 0, 6, +112, 97,105,114,115, 0, 4, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 4, 0, + 0, 0, 7,115,116,114,105,110,103, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 9,102,117,110, 99,116,105,111,110, 0, 4, 0, 0, 0, 6,116,105, +116,108,101, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0, + 5,105,116,101,109, 0, 4, 0, 0, 0, 9,117,115,101,114,100, 97,116, 97, 0, + 4, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, 4, 0, 0, 0, 5, 77,101, +110,117, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, + 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, + 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, + 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, + 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, + 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, + 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, + 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, 0, 0, 0, 43, 0, + 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, 0, 0, 0, 6, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 4, 97,114,103, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 2,110, 0, 0, 0, 0, 1, 0, + 0, 0, 84, 0, 0, 0, 12, 40,102,111,114, 32,105,110,100,101,120, 41, 0, 0, + 0, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 40,102,111,114, 32,108,105,109,105, +116, 41, 0, 0, 0, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11, 40,102,111,114, 32, +115,116,101,112, 41, 0, 0, 0, 0, 4, 0, 0, 0, 81, 0, 0, 0, 2,105, 0, + 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 16, 40,102,111,114, 32,103,101,110, +101,114, 97,116,111,114, 41, 0, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12, + 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 0, 0, 0, 15, 0, 0, 0, 25, + 0, 0, 0, 14, 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 0, 0, + 0, 15, 0, 0, 0, 25, 0, 0, 0, 2,117, 0, 0, 0, 0, 16, 0, 0, 0, 23, + 0, 0, 0, 2,118, 0, 0, 0, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 3, 0, 7, 0, 0, 0, 7, 0, 0, + 0,197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 0,221, 0, 0, + 0,222, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 7, 83,104,111,119, 88, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, + 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, + 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 2,120, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2,121, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 50, 0, 0, 0, 52, 0, 1, 0, 3, 0, 0, 0, 5, 0, 0, 0, 69, 0, 0, 0, +128, 1, 0, 0, 93, 0, 0, 0, 94, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, + 0, 8, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, + 0, 1, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, 0, 0, 0, + 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, + 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, + 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, + 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0, 26, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/menu_be64.loh b/iup/srclua5/loh/menu_be64.loh new file mode 100755 index 0000000..d09ad33 --- /dev/null +++ b/iup/srclua5/loh/menu_be64.loh @@ -0,0 +1,134 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/menu_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/menu_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 27, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, + 0,131,100, 0, 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128, + 0, 0, 9, 64, 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64, + 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0, + 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 95, 99, 98, 0, 4, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,101, +110,117, 99,108,111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110, +100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,120,121, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105, +100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, + 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119, +105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, + 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, + 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0, +133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, + 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0, 0, 2, 0, 14, + 85, 0, 0, 0,148, 0,128, 0,193, 0, 0, 0, 0, 1, 0, 1, 65, 1, 0, 0, +224,128, 18,128,197, 65, 0, 0, 6,130,129, 0,220,129, 0, 1, 23,128,192, 3, + 22, 64, 17,128,202, 1, 0, 0,199,193, 0, 0,197, 1, 1, 0, 6,130,129, 0, +220, 1, 1, 1, 22,128, 1,128, 5, 67, 0, 0, 64, 3, 0, 5, 28,131, 0, 1, + 87, 64, 65, 6, 22, 64, 0,128, 5,195, 0, 0, 9,195, 2, 5,225,129, 0, 0, + 22,128,253,127,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4,220,129, 0, 1, + 23,128,193, 3, 22, 0, 6,128,197, 65, 0, 0, 6,130,129, 0, 6,194, 65, 4, +220,129, 0, 1, 87, 0,194, 3, 22, 64, 1,128,197, 65, 0, 0, 6,130,129, 0, + 6,194, 65, 4,220,129, 0, 1, 23,128,193, 3, 22, 0, 3,128,197,193, 0, 0, + 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197,193, 0, 0, 6,130,129, 0, + 6,194, 65, 4,201, 1, 2,133,197,193, 2, 0, 5,194, 0, 0,220,129, 0, 1, + 73,192, 1, 3, 22,192, 5,128,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4, +220,129, 0, 1, 23,128,193, 3, 22, 64, 4,128,197, 65, 0, 0, 6,130,129, 0, + 6,194, 65, 4,220,129, 0, 1, 23, 0,195, 3, 22,192, 2,128,197,193, 0, 0, + 6,130,129, 0, 6,194, 65, 4,201, 1, 2,128,197,193, 0, 0, 6,130,129, 0, + 6, 2, 64, 4,201, 1,130,132,197, 65, 3, 0, 5,194, 0, 0,220,129, 0, 1, + 73,192, 1, 3,223,192,236,127,197,128, 3, 0,221, 0,128, 0,222, 0, 0, 0, + 30, 0,128, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0, + 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +116, 97, 98,108,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 97, +114,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, + 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101, +109, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,115,101,114,100, 97,116, 97, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0, 77,101,110,117, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23, + 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, + 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, + 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, + 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, + 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, + 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 84, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 84, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 1, 0, 0, 0, 84, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101, +120, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40, +102,111,114, 32,108,105,109,105,116, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 4, 0, + 0, 0, 81, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0, 0, + 80, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110, +101,114, 97,116,111,114, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 15, 0, 0, 0, + 25, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110, +116,114,111,108, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,117, 0, 16, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +118, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, + 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, + 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, +104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, + 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, + 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, + 0, 52, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, + 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, + 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, + 0, 20, 0, 0, 0, 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, + 0, 46, 0, 0, 0, 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114, +108, 0, 9, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/menu_le64.loh b/iup/srclua5/loh/menu_le64.loh new file mode 100755 index 0000000..a19667f --- /dev/null +++ b/iup/srclua5/loh/menu_le64.loh @@ -0,0 +1,134 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/menu_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/menu_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 27, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, + 0,131,100, 0, 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128, + 0, 0, 9, 64, 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64, + 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0, + 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 95, 99, 98, 0, 4, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,101, +110,117, 99,108,111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110, +100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,120,121, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105, +100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, + 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119, +105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, + 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, + 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0, +133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, + 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0, 0, 2, 0, 14, + 85, 0, 0, 0,148, 0,128, 0,193, 0, 0, 0, 0, 1, 0, 1, 65, 1, 0, 0, +224,128, 18,128,197, 65, 0, 0, 6,130,129, 0,220,129, 0, 1, 23,128,192, 3, + 22, 64, 17,128,202, 1, 0, 0,199,193, 0, 0,197, 1, 1, 0, 6,130,129, 0, +220, 1, 1, 1, 22,128, 1,128, 5, 67, 0, 0, 64, 3, 0, 5, 28,131, 0, 1, + 87, 64, 65, 6, 22, 64, 0,128, 5,195, 0, 0, 9,195, 2, 5,225,129, 0, 0, + 22,128,253,127,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4,220,129, 0, 1, + 23,128,193, 3, 22, 0, 6,128,197, 65, 0, 0, 6,130,129, 0, 6,194, 65, 4, +220,129, 0, 1, 87, 0,194, 3, 22, 64, 1,128,197, 65, 0, 0, 6,130,129, 0, + 6,194, 65, 4,220,129, 0, 1, 23,128,193, 3, 22, 0, 3,128,197,193, 0, 0, + 6,130,129, 0, 6, 2, 64, 4,201, 1,130,132,197,193, 0, 0, 6,130,129, 0, + 6,194, 65, 4,201, 1, 2,133,197,193, 2, 0, 5,194, 0, 0,220,129, 0, 1, + 73,192, 1, 3, 22,192, 5,128,197, 65, 0, 0, 6,130,129, 0, 6, 2, 64, 4, +220,129, 0, 1, 23,128,193, 3, 22, 64, 4,128,197, 65, 0, 0, 6,130,129, 0, + 6,194, 65, 4,220,129, 0, 1, 23, 0,195, 3, 22,192, 2,128,197,193, 0, 0, + 6,130,129, 0, 6,194, 65, 4,201, 1, 2,128,197,193, 0, 0, 6,130,129, 0, + 6, 2, 64, 4,201, 1,130,132,197, 65, 3, 0, 5,194, 0, 0,220,129, 0, 1, + 73,192, 1, 3,223,192,236,127,197,128, 3, 0,221, 0,128, 0,222, 0, 0, 0, + 30, 0,128, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5, 0, + 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +116, 97, 98,108,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,116,101,109, 97, +114,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 97,105,114,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 4, + 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105,111,110, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,105,116,101, +109, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,115,101,114,100, 97,116, 97, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0, 77,101,110,117, 0, 0, 0, 0, 0, 85, 0, 0, 0, 23, + 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, + 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, + 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, + 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, + 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, + 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, + 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 84, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 84, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 1, 0, 0, 0, 84, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101, +120, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40, +102,111,114, 32,108,105,109,105,116, 41, 0, 4, 0, 0, 0, 81, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 4, 0, + 0, 0, 81, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 5, 0, 0, 0, + 80, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110, +101,114, 97,116,111,114, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 15, 0, 0, 0, + 25, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110, +116,114,111,108, 41, 0, 15, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,117, 0, 16, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +118, 0, 16, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, + 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, + 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83, +104,111,119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, + 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, + 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, + 0, 52, 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, + 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, + 0, 0, 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, + 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, + 0, 20, 0, 0, 0, 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, + 0, 46, 0, 0, 0, 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, + 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, + 0, 55, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114, +108, 0, 9, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/menu_le64w.loh b/iup/srclua5/loh/menu_le64w.loh new file mode 100755 index 0000000..afca571 --- /dev/null +++ b/iup/srclua5/loh/menu_le64w.loh @@ -0,0 +1,136 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/menu_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/menu_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 27, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73, 0,194,132, 9, 64, + 0,131,100, 0, 0, 0, 9, 64, 0,133,100, 64, 0, 0, 9, 64,128,133,100,128, + 0, 0, 9, 64, 0,134,100,192, 0, 0, 9, 64,128,134,100, 0, 1, 0, 9, 64, + 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0,128, 0, + 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,111,112,101,110, 95, 99, 98, 0, 4, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,109,101, +110,117, 99,108,111,115,101, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, +112,111,112,117,112, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110, +100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101, +109,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,120,121, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 18, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105, +100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, + 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119, +105,100,103,101,116, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 16, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, + 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, + 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 0, 2, 0, 5, 5, 0, 0, 0, +133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, + 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 44, 0, 0, 0, 0, 2, 0, 14, + 88, 0, 0, 0,133, 0, 0, 0,134, 64, 64, 1,192, 0,128, 0,156,128, 0, 1, +193,128, 0, 0, 0, 1, 0, 1, 65,129, 0, 0,224,128, 18,128,197,193, 0, 0, + 6,130,129, 0,220,129, 0, 1, 23, 0,192, 3, 22, 64, 17,128,202, 1, 0, 0, +199, 1, 1, 0,197, 65, 1, 0, 6,130,129, 0,220, 1, 1, 1, 22,128, 1,128, + 5,195, 0, 0, 64, 3, 0, 5, 28,131, 0, 1, 87,128, 65, 6, 22, 64, 0,128, + 5, 3, 1, 0, 9,195, 2, 5,225,129, 0, 0, 22,128,253,127,197,193, 0, 0, + 6,130,129, 0, 6,130, 64, 4,220,129, 0, 1, 23,192,193, 3, 22, 0, 6,128, +197,193, 0, 0, 6,130,129, 0, 6, 2, 66, 4,220,129, 0, 1, 87, 64,194, 3, + 22, 64, 1,128,197,193, 0, 0, 6,130,129, 0, 6, 2, 66, 4,220,129, 0, 1, + 23,192,193, 3, 22, 0, 3,128,197, 1, 1, 0, 6,130,129, 0, 6,130, 64, 4, +201, 1, 2,133,197, 1, 1, 0, 6,130,129, 0, 6, 2, 66, 4,201, 1,130,133, +197, 1, 3, 0, 5, 2, 1, 0,220,129, 0, 1, 73,192, 1, 3, 22,192, 5,128, +197,193, 0, 0, 6,130,129, 0, 6,130, 64, 4,220,129, 0, 1, 23,192,193, 3, + 22, 64, 4,128,197,193, 0, 0, 6,130,129, 0, 6, 2, 66, 4,220,129, 0, 1, + 23, 64,195, 3, 22,192, 2,128,197, 1, 1, 0, 6,130,129, 0, 6, 2, 66, 4, +201, 1, 2,129,197, 1, 1, 0, 6,130,129, 0, 6,130, 64, 4,201, 1, 2,133, +197,129, 3, 0, 5, 2, 1, 0,220,129, 0, 1, 73,192, 1, 3,223,192,236,127, +197,192, 3, 0,221, 0,128, 0,222, 0, 0, 0, 30, 0,128, 0, 16, 0, 0, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 5, + 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,105,116,101,109, 97,114,103, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112, 97, +105,114,115, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,117,109, 98,101,114, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 64, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,116,105, +111,110, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 5, 0, 0, 0, 0, + 0, 0, 0,105,116,101,109, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,117,115,101, +114,100, 97,116, 97, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,117, 98,109,101, +110,117, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 77,101,110,117, 0, 0, 0, 0, + 0, 88, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, + 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, + 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, + 0, 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, + 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, + 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 24, 0, 0, + 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 12, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 87, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 87, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 0, 0, 0, 87, 0, 0, + 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110,100,101,120, 41, + 0, 7, 0, 0, 0, 84, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111, +114, 32,108,105,109,105,116, 41, 0, 7, 0, 0, 0, 84, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 7, 0, 0, 0, + 84, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 83, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, + 97,116,111,114, 41, 0, 18, 0, 0, 0, 28, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, 18, 0, 0, 0, 28, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114, +111,108, 41, 0, 18, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +117, 0, 19, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, + 19, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 0, 0, 0, 48, 0, 0, 0, 0, 3, 0, 7, 7, 0, 0, 0,197, 0, 0, 0, + 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,221, 0, 0, 2,222, 0, 0, 0, + 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 83,104,111, +119, 88, 89, 0, 0, 0, 0, 0, 7, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, + 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 52, + 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, + 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, + 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, + 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 20, + 0, 0, 0, 18, 0, 0, 0, 44, 0, 0, 0, 22, 0, 0, 0, 48, 0, 0, 0, 46, + 0, 0, 0, 52, 0, 0, 0, 50, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, + 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 9, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/menu_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/messagedlg.loh b/iup/srclua5/loh/messagedlg.loh new file mode 100755 index 0000000..1463b2d --- /dev/null +++ b/iup/srclua5/loh/messagedlg.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/messagedlg.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/messagedlg.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 16, 0, 0, 0, 64,109,101,115, +115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132, +100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133,100,128, 0, 0, + 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0, +128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, + 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 11, 0, 0, 0,109,101,115,115, 97, +103,101,100,108,103, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0,102,117,110, 99,110, + 97,109,101, 0, 4, 11, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, + 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0,112, +111,112,117,112, 0, 4, 8, 0, 0, 0,100,101,115,116,114,111,121, 0, 4, 14, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, 7, 6, 0, 0, 0,197, 0, 0, + 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, + 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0,120, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 2, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 3, 5, + 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, 0, 0, 1, 94, 0, 0, 0, 30, + 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, 68,101,115,116,114,111,121, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, + 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0, + 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 21, + 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 6, + 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, + 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, + 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114, +108, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/messagedlg_be32.loh b/iup/srclua5/loh/messagedlg_be32.loh new file mode 100755 index 0000000..d073d9f --- /dev/null +++ b/iup/srclua5/loh/messagedlg_be32.loh @@ -0,0 +1,54 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/messagedlg_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 16, 64,109,101,115, +115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 0, 0, 0, 22, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69, +129, 0, 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, 9, + 0, 0, 0,100,132,128, 64, 9, 0, 0, 64,100,133, 0, 64, 9, 0, 0,128,100, +133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 3, 64, 69, + 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 15, + 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 11,109,101,115,115, 97, +103,101,100,108,103, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116, +105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9,102,117,110, 99,110, + 97,109,101, 0, 4, 0, 0, 0, 11, 77,101,115,115, 97,103,101, 68,108,103, 0, + 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 6,112, +111,112,117,112, 0, 4, 0, 0, 0, 8,100,101,115,116,114,111,121, 0, 4, 0, + 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, + 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, + 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 3, 0, 7, 0, 0, 0, 6, 0, 0, 0, +197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, + 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 80,111,112,117,112, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, + 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2,120, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 2,121, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 1, 0, 3, 0, + 0, 0, 5, 0, 0, 0, 69, 0, 0, 0,128, 1, 0, 0, 93, 0, 0, 0, 94, 0, +128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 8, 68,101,115,116,114,111,121, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 7,104, 97,110,100, +108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 22, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0, +128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 11, + 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, 0, + 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, + 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, + 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114, +108, 0, 0, 0, 0, 8, 0, 0, 0, 21, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/messagedlg_be64.loh b/iup/srclua5/loh/messagedlg_be64.loh new file mode 100755 index 0000000..dd1d7bf --- /dev/null +++ b/iup/srclua5/loh/messagedlg_be64.loh @@ -0,0 +1,60 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/messagedlg_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,109,101,115,115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, + 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133, +100,128, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,109,101,115,115, 97,103,101,100,108,103, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101, +115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, + 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, + 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, + 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, + 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, + 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, + 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, + 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/messagedlg_le64.loh b/iup/srclua5/loh/messagedlg_le64.loh new file mode 100755 index 0000000..78dc095 --- /dev/null +++ b/iup/srclua5/loh/messagedlg_le64.loh @@ -0,0 +1,60 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/messagedlg_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,109,101,115,115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, + 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133, +100,128, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,109,101,115,115, 97,103,101,100,108,103, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101, +115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, + 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, + 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, + 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, + 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, + 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, + 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, + 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/messagedlg_le64w.loh b/iup/srclua5/loh/messagedlg_le64w.loh new file mode 100755 index 0000000..2d0aac4 --- /dev/null +++ b/iup/srclua5/loh/messagedlg_le64w.loh @@ -0,0 +1,60 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/messagedlg_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/messagedlg_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,109,101,115,115, 97,103,101,100,108,103, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, + 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132,100, 64, 0, 0, 9, 64, 0,133, +100,128, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,109,101,115,115, 97,103,101,100,108,103, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,112,111,112,117,112, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,100,101, +115,116,114,111,121, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 3, 0, + 7, 6, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, + 1,220, 64, 0, 2, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 80,111,112,117,112, 0, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, + 0, 0, 0, 0, 1, 0, 3, 5, 0, 0, 0, 69, 0, 0, 0,128, 0, 0, 0, 93, + 0, 0, 1, 94, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0, 68,101,115,116,114,111,121, 0, 0, 0, 0, 0, 5, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 22, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, + 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0, 77,101,115,115, 97,103,101, 68,108,103, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, + 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, + 0, 22, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/messagedlg_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/multiline.loh b/iup/srclua5/loh/multiline.loh new file mode 100755 index 0000000..6792602 --- /dev/null +++ b/iup/srclua5/loh/multiline.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/multiline.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/multiline.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64,109,117,108, +116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9, +128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, + 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, + 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, + 0, 0,109,117,108,116,105,108,105,110,101, 0, 4, 7, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, + 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99,116,105, +111,110, 0, 4, 3, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0,102,117,110, 99, +110, 97,109,101, 0, 4, 10, 0, 0, 0, 77,117,108,116,105, 76,105,110,101, 0, + 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, + 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, + 10, 0, 0, 0, 77,117,108,116,105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, + 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/multiline_be32.loh b/iup/srclua5/loh/multiline_be32.loh new file mode 100755 index 0000000..7c106df --- /dev/null +++ b/iup/srclua5/loh/multiline_be32.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/multiline_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/multiline_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64,109,117,108, +116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 0, 0, 0, 19, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, + 0, 64, 9,130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132, +194,128, 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, + 0, 64, 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0, +128, 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, + 0, 10,109,117,108,116,105,108,105,110,101, 0, 4, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, + 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, + 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105, +111,110, 0, 4, 0, 0, 0, 3,110,115, 0, 4, 0, 0, 0, 9,102,117,110, 99, +110, 97,109,101, 0, 4, 0, 0, 0, 10, 77,117,108,116,105, 76,105,110,101, 0, + 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 2, 0, 3, 0, 0, 0, 4, 0, + 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, + 0, 0, 0, 10, 77,117,108,116,105, 76,105,110,101, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, + 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 9, 0, 0, 0, + 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/multiline_be64.loh b/iup/srclua5/loh/multiline_be64.loh new file mode 100755 index 0000000..c386eb2 --- /dev/null +++ b/iup/srclua5/loh/multiline_be64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/multiline_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/multiline_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,109,117,108,116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, + 64, 0,131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, + 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,108, +105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117, +108,116,105, 76,105,110,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, + 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, + 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,108,116, +105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/multiline_le64.loh b/iup/srclua5/loh/multiline_le64.loh new file mode 100755 index 0000000..cbae6db --- /dev/null +++ b/iup/srclua5/loh/multiline_le64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/multiline_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/multiline_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,109,117,108,116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, + 64, 0,131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, + 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,108, +105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117, +108,116,105, 76,105,110,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, + 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, + 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,108,116, +105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/multiline_le64w.loh b/iup/srclua5/loh/multiline_le64w.loh new file mode 100755 index 0000000..8c729f6 --- /dev/null +++ b/iup/srclua5/loh/multiline_le64w.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/multiline_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/multiline_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,109,117,108,116,105,108,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, + 64, 0,131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, + 64,128, 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, +110,105, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,108, +105,110,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117, +108,116,105, 76,105,110,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, + 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, + 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 77,117,108,116, +105, 76,105,110,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0, + 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/multiline_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/normalizer.loh b/iup/srclua5/loh/normalizer.loh new file mode 100755 index 0000000..1e757fc --- /dev/null +++ b/iup/srclua5/loh/normalizer.loh @@ -0,0 +1,63 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/normalizer.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/normalizer.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 16, 0, 0, 0, 64,110,111,114, +109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, + 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, + 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, + 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 11, + 0, 0, 0,110,111,114,109, 97,108,105,122,101,114, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0,115,101, +116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21, + 0, 0, 0, 0, 2, 0, 10, 23, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, + 65, 0, 0,156,128,128, 1,212, 0,128, 0, 1,129, 0, 0, 64, 1,128, 1,129, +129, 0, 0, 32,129, 1,128, 5,194, 0, 0, 70,194,129, 0, 28,130, 0, 1, 23, + 0, 65, 4, 22, 64, 0,128, 6,194,129, 0, 9, 0,130,130, 31,193,253,127, 5, +129, 1, 0, 6,193, 65, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, + 0,128, 0, 8, 0, 0, 0, 4, 7, 0, 0, 0,114, 97,119,103,101,116, 0, 4, + 7, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 4, 12, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 97,100, +100, 99,111,110,116,114,111,108, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, + 0, 4, 14, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 20, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 8, 0, 0, 0, 7, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7, + 0, 0, 0,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 22, 0, 0, 0, 2, 0, + 0, 0,110, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 40,102,111,114, + 32,105,110,100,101,120, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, 12, 0, 0, 0, + 40,102,111,114, 32,108,105,109,105,116, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, + 11, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 2, 0, 0, 0,105, 0, 9, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, + 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 11, 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 12, + 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/normalizer_be32.loh b/iup/srclua5/loh/normalizer_be32.loh new file mode 100755 index 0000000..ecdb222 --- /dev/null +++ b/iup/srclua5/loh/normalizer_be32.loh @@ -0,0 +1,63 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/normalizer_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/normalizer_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 16, 64,110,111,114, +109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 0, 0, 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69, +129, 0, 64, 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100, +131,128, 64, 9, 0, 0, 64,100,132, 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128, + 1, 0, 64, 92, 0, 2,128, 69, 0, 0, 0,128, 0, 2,192,193, 1,128, 64, 92, + 0,128, 0, 30, 0, 0, 0, 12, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, + 0, 0, 11,110,111,114,109, 97,108,105,122,101,114, 0, 4, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, + 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14,115,101, +116, 65,116,116,114,105, 98,117,116,101,115, 0, 4, 0, 0, 0, 14, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32, +119,105,100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 12, 0, + 0, 0, 21, 0, 2, 0, 10, 0, 0, 0, 23, 0, 0, 0,133, 0, 0, 0,192, 0, + 0, 65, 1, 1,128,128,156, 0,128, 0,212, 0, 0,129, 1, 1,128, 1, 64, 0, + 0,129,129,128, 1,129, 32, 0, 0,194, 5, 0,129,194, 70, 1, 0,130, 28, 4, + 65, 0, 23,128, 0, 64, 22, 0,129,194, 6,130,130, 0, 9,127,253,193, 31, 0, + 1,129, 5, 2, 65,193, 6, 0, 0, 1, 64, 0,128, 1,128, 1,128, 65, 28, 0, +128, 0, 30, 0, 0, 0, 8, 4, 0, 0, 0, 7,114, 97,119,103,101,116, 0, 4, + 0, 0, 0, 7,104, 97,110,100,108,101, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 0, 0, + 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, 0, 11, 97,100, +100, 99,111,110,116,114,111,108, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, + 0, 4, 0, 0, 0, 14,115,101,116, 65,116,116,114,105, 98,117,116,101,115, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, + 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, + 0, 0, 0, 8, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 4, 0, 0, 0, 22, 0, 0, + 0, 2,110, 0, 0, 0, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 40,102,111,114, + 32,105,110,100,101,120, 41, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 12, + 40,102,111,114, 32,108,105,109,105,116, 41, 0, 0, 0, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 11, 40,102,111,114, 32,115,116,101,112, 41, 0, 0, 0, 0, 8, 0, + 0, 0, 17, 0, 0, 0, 2,105, 0, 0, 0, 0, 9, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 2, 0, 3, 0, 0, 0, + 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, + 1, 4, 0, 0, 0, 11, 78,111,114,109, 97,108,105,122,101,114, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, + 25, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 21, 0, + 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, + 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, + 0, 0, 0, 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/normalizer_be64.loh b/iup/srclua5/loh/normalizer_be64.loh new file mode 100755 index 0000000..2b0a199 --- /dev/null +++ b/iup/srclua5/loh/normalizer_be64.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/normalizer_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/normalizer_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,110,111,114,109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, + 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,110,111,114,109, 97, +108,105,122,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116, +114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, + 2, 0, 10, 23, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156, +128,128, 1,212, 0,128, 0, 1,129, 0, 0, 64, 1,128, 1,129,129, 0, 0, 32, +129, 1,128, 5,194, 0, 0, 70,194,129, 0, 28,130, 0, 1, 23, 0, 65, 4, 22, + 64, 0,128, 6,194,129, 0, 9, 0,130,130, 31,193,253,127, 5,129, 1, 0, 6, +193, 65, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 8, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0, 0, + 0, 0,240, 63, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97, +110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 97,100,100, 99,111,110, +116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117, +116,101,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, + 21, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, + 99,116, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, + 97,110,100,108,101, 0, 4, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,110, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 40,102,111,114, 32,105,110,100,101,120, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,108,105,109,105,116, 41, 0, + 8, 0, 0, 0, 17, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, + 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0,105, 0, 9, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, + 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, + 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23, + 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/normalizer_le64.loh b/iup/srclua5/loh/normalizer_le64.loh new file mode 100755 index 0000000..cfaf13a --- /dev/null +++ b/iup/srclua5/loh/normalizer_le64.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/normalizer_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/normalizer_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,110,111,114,109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, + 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,110,111,114,109, 97, +108,105,122,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116, +114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, + 2, 0, 10, 23, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156, +128,128, 1,212, 0,128, 0, 1,129, 0, 0, 64, 1,128, 1,129,129, 0, 0, 32, +129, 1,128, 5,194, 0, 0, 70,194,129, 0, 28,130, 0, 1, 23, 0, 65, 4, 22, + 64, 0,128, 6,194,129, 0, 9, 0,130,130, 31,193,253,127, 5,129, 1, 0, 6, +193, 65, 2, 64, 1, 0, 0,128, 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 8, + 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 3, 0, 0, 0, 0, + 0, 0,240, 63, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, 97, +110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 97,100,100, 99,111,110, +116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98,117, +116,101,115, 0, 0, 0, 0, 0, 23, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, + 21, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, + 99,116, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, + 97,110,100,108,101, 0, 4, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0,110, 0, 5, 0, 0, 0, 22, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 40,102,111,114, 32,105,110,100,101,120, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,108,105,109,105,116, 41, 0, + 8, 0, 0, 0, 17, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, + 32,115,116,101,112, 41, 0, 8, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0,105, 0, 9, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, + 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, + 0, 25, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, + 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23, + 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, + 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/normalizer_le64w.loh b/iup/srclua5/loh/normalizer_le64w.loh new file mode 100755 index 0000000..e89daa2 --- /dev/null +++ b/iup/srclua5/loh/normalizer_le64w.loh @@ -0,0 +1,72 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/normalizer_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/normalizer_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,110,111,114,109, 97,108,105,122,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0, +128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, + 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,110,111,114,109, 97, +108,105,122,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116, +114,105, 98,117,116,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 21, 0, 0, 0, 0, + 2, 0, 10, 26, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 1, 65, 0, 0,156, +128,128, 1,197,128, 0, 0,198,192,192, 1, 0, 1,128, 0,220,128, 0, 1, 1, + 1, 1, 0, 64, 1,128, 1,129, 1, 1, 0, 32,129, 1,128, 5, 66, 1, 0, 70, +194,129, 0, 28,130, 0, 1, 23,128, 65, 4, 22, 64, 0,128, 6,194,129, 0, 9, + 0,130,131, 31,193,253,127, 5, 1, 2, 0, 6, 65, 66, 2, 64, 1, 0, 0,128, + 1,128, 0, 28, 65,128, 1, 30, 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, + 0, 0, 0, 0,114, 97,119,103,101,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108, +101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, + 0, 0, 0,240, 63, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 71,101,116, + 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,104, + 97,110,100,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 97,100,100, 99,111, +110,116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,101,116, 65,116,116,114,105, 98, +117,116,101,115, 0, 0, 0, 0, 0, 26, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, + 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 8, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 4, + 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 8, 0, 0, + 0, 25, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,105,110, +100,101,120, 41, 0, 11, 0, 0, 0, 20, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, + 0, 40,102,111,114, 32,108,105,109,105,116, 41, 0, 11, 0, 0, 0, 20, 0, 0, + 0, 11, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115,116,101,112, 41, 0, + 11, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 12, 0, + 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 0, 0, 25, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0, +128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0, 78,111,114,109, 97,108,105,122,101,114, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 2, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, + 21, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, + 28, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/normalizer_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/olecontrol.loh b/iup/srclua5/loh/olecontrol.loh new file mode 100755 index 0000000..474d668 --- /dev/null +++ b/iup/srclua5/loh/olecontrol.loh @@ -0,0 +1,79 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluaole51/olecontrol.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluaole51/olecontrol.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 16, 0, 0, 0, 64,111,108,101, + 99,111,110,116,114,111,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 22, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0,132, + 9,128,194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134,100, 64, 0, 0, + 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 0, 4, 0, +128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 18, 0, 0, 0, + 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 11, 0, 0, 0,111,108,101, 99,111, +110,116,114,111,108, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0,115, 0, 4, 9, 0, 0, 0,102,117,110, 99, +110, 97,109,101, 0, 4, 11, 0, 0, 0, 79,108,101, 67,111,110,116,114,111,108, + 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, +105,110, 99,108,117,100,101, 0, 4, 9, 0, 0, 0,105,117,112,111,108,101, 46, +104, 0, 4, 10, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, 0, 4,164, 1, + 0, 0, 32, 10,105,110,116, 32,105,117,112,111,108,101,108,117, 97, 95,111,112, +101,110, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, + 32,105,102, 32, 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108, + 95,105,110,116,101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117, +112, 79,108,101, 67,111,110,116,114,111,108, 79,112,101,110, 40, 41, 59, 10, 32, + 32, 32, 32, 10, 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69, +110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112,111,108,101, 99,111,110,116,114, +111,108,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112, +108,117, 97, 95,114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32, +114,101,116,117,114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105, +103, 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114, +101, 34,105,117,112,108,117, 97,111,108,101, 34, 32, 42, 47, 10,105,110,116, 32, +108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,111,108,101, 40,108,117, + 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117, +114,110, 32,105,117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40, 76, 41, + 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116, +111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97, +111,108,101, 53, 49, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101, +110, 95,105,117,112,108,117, 97,111,108,101, 53, 49, 40,108,117, 97, 95, 83,116, + 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105, +117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, + 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 13, 0, 0, 0, 67,114,101, 97,116,101, 76,117, 97, 67, 79, 77, 0, 4, + 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 11, 0, 0, 0, 79,108,101, 67,111,110,116,114,111,108, 0, 3, + 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 39, 0, 0, 0, + 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 0, 0, 0, 51, 0, 0, 0, 0, 1, 0, 5, 15, 0, 0, 0, 69, 0, + 0, 0, 90, 0, 0, 0, 22,128, 2,128, 70, 64, 64, 0, 90, 0, 0, 0, 22,192, + 1,128,133, 0, 0, 0,134,192, 64, 1,197, 0, 0, 0,198, 0,193, 1, 0, 1, +128, 0,220, 0, 0, 1,156,128, 0, 0, 9,128, 0,129, 30, 0,128, 0, 5, 0, + 0, 0, 4, 7, 0, 0, 0,108,117, 97, 99,111,109, 0, 4, 9, 0, 0, 0,105, +117,110,107,110,111,119,110, 0, 4, 4, 0, 0, 0, 99,111,109, 0, 4, 13, 0, + 0, 0, 67,114,101, 97,116,101, 76,117, 97, 67, 79, 77, 0, 4, 15, 0, 0, 0, + 73,109,112,111,114,116, 73, 85,110,107,110,111,119,110, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, + 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 51, + 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 5, 0, 0, 0,112,117,110,107, 0, 4, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, + 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 40, 0, 0, 0, 38, 0, 0, 0, 51, + 0, 0, 0, 42, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, + 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0, 0, 21, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluaole51/olecontrol.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/olecontrol_be64.loh b/iup/srclua5/loh/olecontrol_be64.loh new file mode 100755 index 0000000..6599d53 --- /dev/null +++ b/iup/srclua5/loh/olecontrol_be64.loh @@ -0,0 +1,85 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluaole51/olecontrol_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iupluaole51/olecontrol_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,111,108,101, 99,111,110,116,114,111,108, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, + 9, 64, 0,132, 9,128,194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, +100, 64, 0, 0, 9, 64, 0,135, 69,192, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69, 0, 4, 0,128, 0, 0, 0,193, 64, 4, 0, 92, 64,128, 1, 30, 0,128, 0, + 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11, + 0, 0, 0, 0, 0, 0, 0,111,108,101, 99,111,110,116,114,111,108, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0, 79,108,101, 67,111,110,116,114,111,108, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,105,117,112,111,108,101, 46,104, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,101, +120,116,114, 97, 99,111,100,101, 0, 4,164, 1, 0, 0, 0, 0, 0, 0, 32, 10, +105,110,116, 32,105,117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40,108, +117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,105,102, 32, + 40,105,117,112,108,117, 97, 95,111,112,101,110, 99, 97,108,108, 95,105,110,116, +101,114,110, 97,108, 40, 76, 41, 41, 10, 32, 32, 32, 32, 73,117,112, 79,108,101, + 67,111,110,116,114,111,108, 79,112,101,110, 40, 41, 59, 10, 32, 32, 32, 32, 10, + 32, 32,105,117,112,108,117, 97, 95, 99,104, 97,110,103,101, 69,110,118, 40, 76, + 41, 59, 10, 32, 32,105,117,112,111,108,101, 99,111,110,116,114,111,108,108,117, + 97, 95,111,112,101,110, 40, 76, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95, +114,101,116,117,114,110, 69,110,118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117, +114,110, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105,103, 97,116,111, +114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114,101, 34,105,117, +112,108,117, 97,111,108,101, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111, +112,101,110, 95,105,117,112,108,117, 97,111,108,101, 40,108,117, 97, 95, 83,116, + 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105, +117,112,111,108,101,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, + 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115, +101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,111,108,101, 53, + 49, 34, 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117, +112,108,117, 97,111,108,101, 53, 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, + 32, 76, 41, 10,123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,111,108, +101,108,117, 97, 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 76,117, 97, 67, + 79, 77, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 79,108,101, 67,111,110,116,114, +111,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, + 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, + 0, 0, 51, 0, 0, 0, 0, 1, 0, 5, 15, 0, 0, 0, 69, 0, 0, 0, 90, 0, + 0, 0, 22,128, 2,128, 70, 64, 64, 0, 90, 0, 0, 0, 22,192, 1,128,133, 0, + 0, 0,134,192, 64, 1,197, 0, 0, 0,198, 0,193, 1, 0, 1,128, 0,220, 0, + 0, 1,156,128, 0, 0, 9,128, 0,129, 30, 0,128, 0, 5, 0, 0, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,108,117, 97, 99,111,109, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,105,117,110,107,110,111,119,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 99,111,109, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, + 76,117, 97, 67, 79, 77, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 73,109,112,111, +114,116, 73, 85,110,107,110,111,119,110, 0, 0, 0, 0, 0, 15, 0, 0, 0, 45, + 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, + 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 51, 0, 0, 0, 2, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,112,117,110,107, 0, 4, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, + 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 35, 0, 0, 0, 40, 0, 0, 0, 38, + 0, 0, 0, 51, 0, 0, 0, 42, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, + 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 10, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluaole51/olecontrol_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/olecontrol_le64w.loh b/iup/srclua5/loh/olecontrol_le64w.loh new file mode 100755 index 0000000..a8ec614 --- /dev/null +++ b/iup/srclua5/loh/olecontrol_le64w.loh @@ -0,0 +1,80 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluaole51/olecontrol_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluaole51/olecontrol_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 64,111,108,101, 99,111,110,116,114,111,108, 46,108,117, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 20, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, + 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, + 9, 64, 0,132, 9,128,194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, + 69,128, 3, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0, +193, 0, 4, 0, 92, 64,128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,111, +108,101, 99,111,110,116,114,111,108, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 79,108, +101, 67,111,110,116,114,111,108, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108, +117,100,101, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,117,112,111,108,101, 46, +104, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, 99,111,100,101, + 0, 4,164, 1, 0, 0, 0, 0, 0, 0, 32, 10,105,110,116, 32,105,117,112,111, +108,101,108,117, 97, 95,111,112,101,110, 40,108,117, 97, 95, 83,116, 97,116,101, + 42, 32, 76, 41, 10,123, 10, 32, 32,105,102, 32, 40,105,117,112,108,117, 97, 95, +111,112,101,110, 99, 97,108,108, 95,105,110,116,101,114,110, 97,108, 40, 76, 41, + 41, 10, 32, 32, 32, 32, 73,117,112, 79,108,101, 67,111,110,116,114,111,108, 79, +112,101,110, 40, 41, 59, 10, 32, 32, 32, 32, 10, 32, 32,105,117,112,108,117, 97, + 95, 99,104, 97,110,103,101, 69,110,118, 40, 76, 41, 59, 10, 32, 32,105,117,112, +111,108,101, 99,111,110,116,114,111,108,108,117, 97, 95,111,112,101,110, 40, 76, + 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95,114,101,116,117,114,110, 69,110, +118, 40, 76, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 48, 59, 10,125, 10, + 10, 47, 42, 32,111, 98,108,105,103, 97,116,111,114,121, 32,116,111, 32,117,115, +101, 32,114,101,113,117,105,114,101, 34,105,117,112,108,117, 97,111,108,101, 34, + 32, 42, 47, 10,105,110,116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108, +117, 97,111,108,101, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10, +123, 10, 32, 32,114,101,116,117,114,110, 32,105,117,112,111,108,101,108,117, 97, + 95,111,112,101,110, 40, 76, 41, 59, 10,125, 10, 10, 47, 42, 32,111, 98,108,105, +103, 97,116,111,114,121, 32,116,111, 32,117,115,101, 32,114,101,113,117,105,114, +101, 34,105,117,112,108,117, 97,111,108,101, 53, 49, 34, 32, 42, 47, 10,105,110, +116, 32,108,117, 97,111,112,101,110, 95,105,117,112,108,117, 97,111,108,101, 53, + 49, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41, 10,123, 10, 32, 32, +114,101,116,117,114,110, 32,105,117,112,111,108,101,108,117, 97, 95,111,112,101, +110, 40, 76, 41, 59, 10,125, 10, 10, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 51, 0, 0, + 0, 0, 2, 0, 7, 19, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,156,128, 0, + 1,197,128, 0, 0,218, 0, 0, 0, 22,128, 2,128,198,192, 64, 1,218, 0, 0, + 0, 22,192, 1,128, 5,129, 0, 0, 6, 65, 65, 2, 69,129, 0, 0, 70,129,193, + 2,128, 1,128, 1, 92, 1, 0, 1, 28,129, 0, 0,137, 0, 1,130,158, 0, 0, + 1, 30, 0,128, 0, 7, 0, 0, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 79,108, +101, 67,111,110,116,114,111,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 7, + 0, 0, 0, 0, 0, 0, 0,108,117, 97, 99,111,109, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0,105,117,110,107,110,111,119,110, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 99,111,109, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 77, 97,107,101, 76,117, + 97, 67, 79, 77, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 77, 97,107,101, 73, 85, +110,107,110,111,119,110, 0, 0, 0, 0, 0, 19, 0, 0, 0, 39, 0, 0, 0, 39, + 0, 0, 0, 39, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, + 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, + 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, + 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 99,116,108, 0, 3, 0, 0, 0, 18, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0,112,117,110,107, 0, 7, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 10, 0, + 0, 0, 35, 0, 0, 0, 51, 0, 0, 0, 38, 0, 0, 0, 53, 0, 0, 0, 53, 0, + 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, + 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116, +114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluaole51/olecontrol_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/pplot.loh b/iup/srclua5/loh/pplot.loh new file mode 100755 index 0000000..34e0b43 --- /dev/null +++ b/iup/srclua5/loh/pplot.loh @@ -0,0 +1,58 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua_pplot51/pplot.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,112,112,108, +111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 31, + 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73, 64,193,133, 73, + 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73, 64, 65,137, 73, + 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9, 64, 0,132, 9, + 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69, 64, 7, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193,192, 7, 0, 92, + 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, + 0, 4, 6, 0, 0, 0,112,112,108,111,116, 0, 4, 7, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, + 0,102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 80, 80,108,111,116, + 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, +115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0,110,110,102,102,110, + 0, 4, 15, 0, 0, 0,115,101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, + 0, 4, 13, 0, 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, + 11, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0, +110, 0, 4, 12, 0, 0, 0,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 4, + 8, 0, 0, 0,101,100,105,116, 95, 99, 98, 0, 4, 7, 0, 0, 0,110,110,102, +102,102,102, 0, 4, 13, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99, + 98, 0, 4, 11, 0, 0, 0,101,100,105,116,101,110,100, 95, 99, 98, 0, 4, 10, + 0, 0, 0,100,101,108,101,116,101, 95, 99, 98, 0, 4, 5, 0, 0, 0,110,110, +102,102, 0, 4, 15, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95, + 99, 98, 0, 4, 13, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98, + 0, 4, 8, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12, 0, 0, 0,105, +117,112, 95,112,112,108,111,116, 46,104, 0, 4, 11, 0, 0, 0,101,120,116,114, + 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, + 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, + 6, 0, 0, 0, 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111, +110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, + 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/pplot_be32.loh b/iup/srclua5/loh/pplot_be32.loh new file mode 100755 index 0000000..bee507d --- /dev/null +++ b/iup/srclua5/loh/pplot_be32.loh @@ -0,0 +1,58 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua_pplot51/pplot_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,112,112,108, +111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 31, 0, 1,192, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9,131, 65,192, 9, 0, 2,192, 74,132,194,128, 73,133,193, 64, 73,134, + 65, 64, 73,134,195,128, 73,135,195,128, 73,136, 68, 64, 73,137, 65, 64, 73,137, +193, 64, 73,138, 69, 64, 73,139, 65, 64, 73,139,193, 64, 73,132, 0, 64, 9,140, + 70, 64, 9,141, 70,192, 9, 0, 0, 0,100,142, 0, 64, 9, 0, 7, 64, 69, 0, + 0, 0,128, 1, 0, 64, 92, 0, 7,128, 69, 0, 0, 0,128, 0, 7,192,193, 1, +128, 64, 92, 0,128, 0, 30, 0, 0, 0, 32, 4, 0, 0, 0, 5,110,105, 99,107, + 0, 4, 0, 0, 0, 6,112,112,108,111,116, 0, 4, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, + 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, + 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 6, 80, 80,108,111,116, + 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 10, +115,101,108,101, 99,116, 95, 99, 98, 0, 4, 0, 0, 0, 6,110,110,102,102,110, + 0, 4, 0, 0, 0, 15,115,101,108,101, 99,116, 98,101,103,105,110, 95, 99, 98, + 0, 4, 0, 0, 0, 13,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, + 0, 0, 0, 11,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 0, 0, 0, 2, +110, 0, 4, 0, 0, 0, 12,112,111,115,116,100,114, 97,119, 95, 99, 98, 0, 4, + 0, 0, 0, 8,101,100,105,116, 95, 99, 98, 0, 4, 0, 0, 0, 7,110,110,102, +102,102,102, 0, 4, 0, 0, 0, 13,101,100,105,116, 98,101,103,105,110, 95, 99, + 98, 0, 4, 0, 0, 0, 11,101,100,105,116,101,110,100, 95, 99, 98, 0, 4, 0, + 0, 0, 10,100,101,108,101,116,101, 95, 99, 98, 0, 4, 0, 0, 0, 5,110,110, +102,102, 0, 4, 0, 0, 0, 15,100,101,108,101,116,101, 98,101,103,105,110, 95, + 99, 98, 0, 4, 0, 0, 0, 13,100,101,108,101,116,101,101,110,100, 95, 99, 98, + 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 12,105, +117,112, 95,112,112,108,111,116, 46,104, 0, 4, 0, 0, 0, 11,101,120,116,114, + 97,102,117,110, 99,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, + 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11, +105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0, +192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, + 0, 0, 0, 6, 80, 80,108,111,116, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111, +110, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, + 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, + 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, + 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, + 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, + 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 21, 0, 0, 0, + 30, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/pplot_be64.loh b/iup/srclua5/loh/pplot_be64.loh new file mode 100755 index 0000000..ff71da6 --- /dev/null +++ b/iup/srclua5/loh/pplot_be64.loh @@ -0,0 +1,65 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua_pplot51/pplot_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 31, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73, + 64,193,133, 73, 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73, + 64, 65,137, 73, 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9, + 64, 0,132, 9, 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69, + 64, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193, +192, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,112, +108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109, +101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80, 80,108,111,116, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, + 0, 0, 0, 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,110,110,102,102,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,115,101, +108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,111,115,116,100, +114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, + 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,102,102,102,102, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99, + 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,101,110,100, 95, 99, + 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101, 95, 99, 98, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,102,102, 0, 4, 15, 0, 0, 0, + 0, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 4, + 13, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 95,112,112,108,111,116, 46,104, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, + 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, + 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, + 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111, +110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 22, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, + 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/pplot_le64.loh b/iup/srclua5/loh/pplot_le64.loh new file mode 100755 index 0000000..cb64601 --- /dev/null +++ b/iup/srclua5/loh/pplot_le64.loh @@ -0,0 +1,65 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua_pplot51/pplot_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 31, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73, + 64,193,133, 73, 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73, + 64, 65,137, 73, 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9, + 64, 0,132, 9, 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69, + 64, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193, +192, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,112, +108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109, +101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80, 80,108,111,116, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, + 0, 0, 0, 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,110,110,102,102,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,115,101, +108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,111,115,116,100, +114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, + 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,102,102,102,102, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99, + 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,101,110,100, 95, 99, + 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101, 95, 99, 98, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,102,102, 0, 4, 15, 0, 0, 0, + 0, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 4, + 13, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 95,112,112,108,111,116, 46,104, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, + 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, + 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, + 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111, +110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 22, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, + 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/pplot_le64w.loh b/iup/srclua5/loh/pplot_le64w.loh new file mode 100755 index 0000000..28248bf --- /dev/null +++ b/iup/srclua5/loh/pplot_le64w.loh @@ -0,0 +1,65 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua_pplot51/pplot_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua_pplot51/pplot_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,112,112,108,111,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 31, 0, 0, 0, 10,192, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74,192, 2, 0, 73,128,194,132, 73, + 64,193,133, 73, 64, 65,134, 73,128,195,134, 73,128,195,135, 73, 64, 68,136, 73, + 64, 65,137, 73, 64,193,137, 73, 64, 69,138, 73, 64, 65,139, 73, 64,193,139, 9, + 64, 0,132, 9, 64, 70,140, 9,192, 70,141,100, 0, 0, 0, 9, 64, 0,142, 69, + 64, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 7, 0,128, 0, 0, 0,193, +192, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 32, 0, 0, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,112,112, +108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109, +101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 80, 80,108,111,116, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, + 0, 0, 0, 0,115,101,108,101, 99,116, 95, 99, 98, 0, 4, 6, 0, 0, 0, 0, + 0, 0, 0,110,110,102,102,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,115,101, +108,101, 99,116, 98,101,103,105,110, 95, 99, 98, 0, 4, 13, 0, 0, 0, 0, 0, + 0, 0,115,101,108,101, 99,116,101,110,100, 95, 99, 98, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,112,114,101,100,114, 97,119, 95, 99, 98, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 0,110, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,111,115,116,100, +114, 97,119, 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, + 95, 99, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,110,110,102,102,102,102, 0, + 4, 13, 0, 0, 0, 0, 0, 0, 0,101,100,105,116, 98,101,103,105,110, 95, 99, + 98, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,100,105,116,101,110,100, 95, 99, + 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101, 95, 99, 98, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,110,102,102, 0, 4, 15, 0, 0, 0, + 0, 0, 0, 0,100,101,108,101,116,101, 98,101,103,105,110, 95, 99, 98, 0, 4, + 13, 0, 0, 0, 0, 0, 0, 0,100,101,108,101,116,101,101,110,100, 95, 99, 98, + 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 95,112,112,108,111,116, 46,104, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99,115, 0, 3, + 0, 0, 0, 0, 0, 0,240, 63, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, + 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, + 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, + 80, 80,108,111,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, 99,116,105,111, +110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 22, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, + 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 99,116,114,108, 0, 21, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua_pplot51/pplot_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/progressbar.loh b/iup/srclua5/loh/progressbar.loh new file mode 100755 index 0000000..038ecb6 --- /dev/null +++ b/iup/srclua5/loh/progressbar.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/progressbar.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/progressbar.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 17, 0, 0, 0, 64,112,114,111, +103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, 0, 9, 64, 0, +132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, + 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, + 0, 13, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 12, 0, 0, 0, +112,114,111,103,114,101,115,115, 98, 97,114, 0, 4, 7, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, + 0,102,117,110, 99,110, 97,109,101, 0, 4, 12, 0, 0, 0, 80,114,111,103,114, +101,115,115, 66, 97,114, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0, +133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, + 4, 12, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, + 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/progressbar_be32.loh b/iup/srclua5/loh/progressbar_be32.loh new file mode 100755 index 0000000..f97d3cd --- /dev/null +++ b/iup/srclua5/loh/progressbar_be32.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/progressbar_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/progressbar_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 17, 64,112,114,111, +103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 0, 0, 0, 18, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, + 69,129, 0, 64, 9,130, 65, 64, 9,131, 65,192, 9, 0, 0, 0, 74,132, 0, 64, + 9, 0, 0, 0,100,132,128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, + 92, 0, 2,192, 69, 0, 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, + 30, 0, 0, 0, 13, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 12, +112,114,111,103,114,101,115,115, 98, 97,114, 0, 4, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, + 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, + 9,102,117,110, 99,110, 97,109,101, 0, 4, 0, 0, 0, 12, 80,114,111,103,114, +101,115,115, 66, 97,114, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 2, 0, 3, 0, 0, 0, 4, + 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, + 4, 0, 0, 0, 12, 80,114,111,103,114,101,115,115, 66, 97,114, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 14, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, + 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/progressbar_be64.loh b/iup/srclua5/loh/progressbar_be64.loh new file mode 100755 index 0000000..fab0e2d --- /dev/null +++ b/iup/srclua5/loh/progressbar_be64.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/progressbar_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/progressbar_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 64,112,114,111,103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64, +128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, + 0, 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,114,111,103,114,101,115,115, + 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109, +101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, + 97,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0, +133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/progressbar_le64.loh b/iup/srclua5/loh/progressbar_le64.loh new file mode 100755 index 0000000..f0bcaae --- /dev/null +++ b/iup/srclua5/loh/progressbar_le64.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/progressbar_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/progressbar_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 64,112,114,111,103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64, +128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, + 0, 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,114,111,103,114,101,115,115, + 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109, +101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, + 97,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0, +133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/progressbar_le64w.loh b/iup/srclua5/loh/progressbar_le64w.loh new file mode 100755 index 0000000..4c44c14 --- /dev/null +++ b/iup/srclua5/loh/progressbar_le64w.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/progressbar_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/progressbar_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 64,112,114,111,103,114,101,115,115, 98, 97,114, 46,108,117, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64, +128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 9,192, 65,131, 74, 0, 0, + 0, 9, 64, 0,132,100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,112,114,111,103,114,101,115,115, + 98, 97,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,102,117,110, 99,110, 97,109, +101, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, + 97,114, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0, +133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, + 4, 12, 0, 0, 0, 0, 0, 0, 0, 80,114,111,103,114,101,115,115, 66, 97,114, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97, +114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/progressbar_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/radio.loh b/iup/srclua5/loh/radio.loh new file mode 100755 index 0000000..3a77edf --- /dev/null +++ b/iup/srclua5/loh/radio.loh @@ -0,0 +1,64 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/radio.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/radio.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,114, 97,100, +105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 21, + 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0, 0, 0, 0, 9, + 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, + 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, + 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, + 0, 4, 6, 0, 0, 0,114, 97,100,105,111, 0, 4, 7, 0, 0, 0,112, 97,114, +101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0,105, 0, 4, 9, 0, + 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 20, 0, 0, 0, 67,114,101, 97, +116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 25, 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22, +192, 6,128, 70, 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22, +128, 2,128, 65,128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132, + 0, 0, 0,134,192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22, +128,253,127, 22,192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22, + 0, 1,128, 68, 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22, +128, 0,128, 69, 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6, + 0, 0, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, + 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0, 0, 0, 67,114, +101, 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 9, + 0, 0, 0, 73, 85, 80, 70, 82, 65, 77, 69, 0, 4, 16, 0, 0, 0,105,104, 97, +110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, + 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, + 0, 25, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0,111, 98,106, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 2, 0, 0, 0,105, 0, 8, 0, 0, 0, 17, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 30, 0, 0, 0, 1, 2, 0, 4, 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1, +198, 64,192, 0,156, 64, 0, 1,133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1, +158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4, 20, 0, 0, 0, 67,114,101, + 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0, + 0, 0, 0, 0,240, 63, 4, 6, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 8, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0, + 30, 0, 0, 0, 27, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, + 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0, + 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/radio_be32.loh b/iup/srclua5/loh/radio_be32.loh new file mode 100755 index 0000000..5e063f0 --- /dev/null +++ b/iup/srclua5/loh/radio_be32.loh @@ -0,0 +1,64 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/radio_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/radio_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,114, 97,100, +105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 21, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100, 0, 0, 0, 0,131, +128, 64, 9, 0, 0, 64,100, 0, 0, 0, 0,132, 0, 64, 9, 0, 2, 64, 69, 0, + 0, 0,128, 1, 0, 64, 92, 0, 2,128, 69, 0, 0, 0,128, 0, 2,192,193, 1, +128, 64, 92, 0,128, 0, 30, 0, 0, 0, 12, 4, 0, 0, 0, 5,110,105, 99,107, + 0, 4, 0, 0, 0, 6,114, 97,100,105,111, 0, 4, 0, 0, 0, 7,112, 97,114, +101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, + 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105, 0, 4, 0, 0, + 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 20, 67,114,101, 97, +116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 0, 0, 0, + 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, + 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11, +105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 25, 1, 1, 0, 4, 0, 0, 0, 31, 0, 0, 0, 26,128, + 6,192, 22, 0, 64, 0, 70, 0,192, 0, 70, 0, 0, 64,133, 0,128,128, 23,128, + 2,128, 22, 0, 0,128, 65, 0, 0, 64,134, 0, 0, 0,154,128, 4,128, 22, 0, + 0, 0,132, 1, 64,192,134, 0, 0, 64,198, 1, 0, 64,156, 0,192,128, 76,127, +253,128, 22,128, 2,192, 22, 0, 64, 0, 70, 0, 1, 0,133, 0,128,128, 23,128, + 1, 0, 22, 0, 0, 0, 68, 0,192,192, 70, 0, 64,128,134, 1, 0, 64, 92,128, + 0,128, 22, 0, 1, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0,128, 0, 30, 0, + 0, 0, 6, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 4, + 66, 79, 88, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 20, 67,114, +101, 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 0, + 0, 0, 9, 73, 85, 80, 70, 82, 65, 77, 69, 0, 4, 0, 0, 0, 16,105,104, 97, +110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, + 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, + 22, 0, 0, 0, 25, 0, 0, 0, 2, 0, 0, 0, 4,111, 98,106, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 2,105, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, + 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 30, 1, 2, 0, 4, 0, 0, 0, 9, 0, 0, 0,132, 1, 64, 0,134, + 0,192, 64,198, 1, 0, 64,156, 0, 0,128,133, 0,192, 64,198, 1, 0, 0,157, + 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 3, 4, 0, 0, 0, 20, 67,114,101, + 97,116,101, 67,104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 63,240, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 6, 82, 97,100,105,111, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, + 28, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, + 30, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 21, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 11, 0, 0, 0, 30, + 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, + 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, + 20, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/radio_be64.loh b/iup/srclua5/loh/radio_be64.loh new file mode 100755 index 0000000..f84561b --- /dev/null +++ b/iup/srclua5/loh/radio_be64.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/radio_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/radio_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,114, 97,100,105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 21, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0, + 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69, + 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193, +192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,114, 97, +100,105,111, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104, +105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 25, + 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22,192, 6,128, 70, + 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22,128, 2,128, 65, +128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132, 0, 0, 0,134, +192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22,128,253,127, 22, +192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22, 0, 1,128, 68, + 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22,128, 0,128, 69, + 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, + 0, 0, 0, 0, 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0, + 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 70, 82, + 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, + 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, + 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0, + 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 1, 2, 0, 4, + 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,198, 64,192, 0,156, 64, 0, 1, +133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 3, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67, +104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0, 0, 0, 0, 0, +240, 63, 4, 6, 0, 0, 0, 0, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, +116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0, + 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, + 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/radio_le64.loh b/iup/srclua5/loh/radio_le64.loh new file mode 100755 index 0000000..daf1502 --- /dev/null +++ b/iup/srclua5/loh/radio_le64.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/radio_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/radio_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,114, 97,100,105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 21, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0, + 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69, + 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193, +192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,114, 97, +100,105,111, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104, +105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 25, + 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22,192, 6,128, 70, + 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22,128, 2,128, 65, +128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132, 0, 0, 0,134, +192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22,128,253,127, 22, +192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22, 0, 1,128, 68, + 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22,128, 0,128, 69, + 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, + 0, 0, 0, 0, 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0, + 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 70, 82, + 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, + 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, + 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0, + 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 1, 2, 0, 4, + 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,198, 64,192, 0,156, 64, 0, 1, +133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 3, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67, +104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0, 0, 0, 0, 0, +240, 63, 4, 6, 0, 0, 0, 0, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, +116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0, + 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, + 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/radio_le64w.loh b/iup/srclua5/loh/radio_le64w.loh new file mode 100755 index 0000000..5ada88f --- /dev/null +++ b/iup/srclua5/loh/radio_le64w.loh @@ -0,0 +1,70 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/radio_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/radio_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,114, 97,100,105,111, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 21, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 0, + 0, 0, 0, 9, 64,128,131,100, 64, 0, 0, 0, 0, 0, 0, 9, 64, 0,132, 69, + 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, 0, 0, 0,193, +192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,114, 97, +100,105,111, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, + 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104, +105,108,100,114,101,110, 78, 97,109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 25, + 0, 0, 0, 1, 1, 0, 4, 31, 0, 0, 0, 26, 0, 0, 0, 22,192, 6,128, 70, + 0, 64, 0, 70, 0,192, 0,133, 64, 0, 0, 23,128,128, 0, 22,128, 2,128, 65, +128, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22,128, 4,128,132, 0, 0, 0,134, +192, 64, 1,198, 64, 0, 0,156, 64, 0, 1, 76,128,192, 0, 22,128,253,127, 22, +192, 2,128, 70, 0, 64, 0,133, 0, 1, 0, 23,128,128, 0, 22, 0, 1,128, 68, + 0, 0, 0, 70,192,192, 0,134,128, 64, 0, 92, 64, 0, 1, 22,128, 0,128, 69, + 64, 1, 0,128, 0, 0, 0, 92, 64, 0, 1, 30, 0,128, 0, 6, 0, 0, 0, 4, + 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, + 0, 0, 0, 0, 66, 79, 88, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 20, 0, + 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67,104,105,108,100,114,101,110, + 78, 97,109,101,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 73, 85, 80, 70, 82, + 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, + 95,115,101,116,110, 97,109,101, 0, 0, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, + 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 25, 0, 0, + 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 8, 0, 0, 0, 17, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 1, 2, 0, 4, + 9, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,198, 64,192, 0,156, 64, 0, 1, +133,128, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 3, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 0, 67,114,101, 97,116,101, 67, +104,105,108,100,114,101,110, 78, 97,109,101,115, 0, 3, 0, 0, 0, 0, 0, 0, +240, 63, 4, 6, 0, 0, 0, 0, 0, 0, 0, 82, 97,100,105,111, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, +116,114,108, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 11, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 27, 0, 0, 0, + 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, + 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/radio_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/sbox.loh b/iup/srclua5/loh/sbox.loh new file mode 100755 index 0000000..250c754 --- /dev/null +++ b/iup/srclua5/loh/sbox.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/sbox.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/sbox.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,115, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, 0, + 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,128, + 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0,115, 98,111,120, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0,105, 0, 4, + 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 13, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, +157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, + 0, 83, 98,111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, + 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, + 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, + 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/sbox_be32.loh b/iup/srclua5/loh/sbox_be32.loh new file mode 100755 index 0000000..6ab085b --- /dev/null +++ b/iup/srclua5/loh/sbox_be32.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/sbox_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/sbox_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,115, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 2, + 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, 2, +128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,110, +105, 99,107, 0, 4, 0, 0, 0, 5,115, 98,111,120, 0, 4, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105, 0, 4, + 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, + 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 13, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, 64,198, + 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, + 5, 83, 98,111,120, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, + 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, + 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/sbox_be64.loh b/iup/srclua5/loh/sbox_be64.loh new file mode 100755 index 0000000..0acf695 --- /dev/null +++ b/iup/srclua5/loh/sbox_be64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/sbox_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/sbox_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,115, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, + 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 4, + 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, + 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 98,111, +120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 12, + 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, + 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/sbox_le64.loh b/iup/srclua5/loh/sbox_le64.loh new file mode 100755 index 0000000..88cb639 --- /dev/null +++ b/iup/srclua5/loh/sbox_le64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/sbox_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/sbox_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,115, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, + 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 4, + 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, + 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 98,111, +120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 12, + 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, + 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/sbox_le64w.loh b/iup/srclua5/loh/sbox_le64w.loh new file mode 100755 index 0000000..440c7f2 --- /dev/null +++ b/iup/srclua5/loh/sbox_le64w.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/sbox_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/sbox_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,115, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,115, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, + 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 4, + 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, + 30, 0,128, 0, 2, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 83, 98,111, +120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 12, + 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, + 0, 13, 0, 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/sbox_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/separator.loh b/iup/srclua5/loh/separator.loh new file mode 100755 index 0000000..d27e0d7 --- /dev/null +++ b/iup/srclua5/loh/separator.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/separator.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/separator.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 15, 0, 0, 0, 64,115,101,112, + 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, + 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, + 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, + 5, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, 0, 0,115,101,112, 97,114, 97, +116,111,114, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, + 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, + 0, 4, 10, 0, 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, + 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/separator_be32.loh b/iup/srclua5/loh/separator_be32.loh new file mode 100755 index 0000000..d262bf7 --- /dev/null +++ b/iup/srclua5/loh/separator_be32.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/separator_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/separator_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 15, 64,115,101,112, + 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 0, 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, + 0, 64, 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131, +128, 64, 9, 0, 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, + 0, 0,128, 0, 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, + 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 10,115,101,112, 97,114, 97, +116,111,114, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, + 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111, +110, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, + 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 2, 0, 3, 0, 0, 0, + 4, 0, 0, 0,133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, + 1, 4, 0, 0, 0, 10, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, + 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, + 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, + 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/separator_be64.loh b/iup/srclua5/loh/separator_be64.loh new file mode 100755 index 0000000..5d4eb22 --- /dev/null +++ b/iup/srclua5/loh/separator_be64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/separator_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/separator_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,115,101,112, 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, + 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, + 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,115,101,112, 97,114, 97,116,111,114, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, + 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, + 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/separator_le64.loh b/iup/srclua5/loh/separator_le64.loh new file mode 100755 index 0000000..53aa721 --- /dev/null +++ b/iup/srclua5/loh/separator_le64.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/separator_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/separator_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,115,101,112, 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, + 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, + 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,115,101,112, 97,114, 97,116,111,114, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, + 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, + 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/separator_le64w.loh b/iup/srclua5/loh/separator_le64w.loh new file mode 100755 index 0000000..c0f7c76 --- /dev/null +++ b/iup/srclua5/loh/separator_le64w.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/separator_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/separator_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 64,115,101,112, 97,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69, +192, 0, 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, + 0, 0, 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, + 64, 2, 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,115,101,112, 97,114, 97,116,111,114, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, + 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100, +103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67, +108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, + 0, 13, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, + 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, + 0, 0, 83,101,112, 97,114, 97,116,111,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, + 0, 0, 11, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/separator_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/spin.loh b/iup/srclua5/loh/spin.loh new file mode 100755 index 0000000..1a19ff2 --- /dev/null +++ b/iup/srclua5/loh/spin.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spin.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spin.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,115,112,105, +110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, + 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, + 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,115,112,105,110, 0, 4, 7, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, + 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, 0,110, 0, 4, 14, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, + 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, + 5, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, + 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, + 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, + 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spin_be32.loh b/iup/srclua5/loh/spin_be32.loh new file mode 100755 index 0000000..345cb29 --- /dev/null +++ b/iup/srclua5/loh/spin_be32.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spin_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spin_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,115,112,105, +110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9, 0, 0, 0,100,132,128, + 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0, 0, + 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4, 0, + 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,115,112,105,110, 0, 4, 0, + 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, + 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, + 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, + 8,115,112,105,110, 95, 99, 98, 0, 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, + 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18, +105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, + 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11, +105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 15, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0, +192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, + 0, 0, 0, 5, 83,112,105,110, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, + 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97, +115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, + 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, + 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spin_be64.loh b/iup/srclua5/loh/spin_be64.loh new file mode 100755 index 0000000..7980327 --- /dev/null +++ b/iup/srclua5/loh/spin_be64.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spin_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spin_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, + 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, + 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0,115,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105, +110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, 14, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87, +105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101, +116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, + 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, + 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, + 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spin_le64.loh b/iup/srclua5/loh/spin_le64.loh new file mode 100755 index 0000000..e171149 --- /dev/null +++ b/iup/srclua5/loh/spin_le64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spin_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spin_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110, 46,104, 0, 4, 14, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87, +105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101, +116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, + 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, + 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, +116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spin_le64w.loh b/iup/srclua5/loh/spin_le64w.loh new file mode 100755 index 0000000..eb5820d --- /dev/null +++ b/iup/srclua5/loh/spin_le64w.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spin_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spin_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,115,112,105,110, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, + 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, + 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, 0, 4, 10, 0, + 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110, 46,104, 0, 4, 14, 0, 0, + 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87, +105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101, +116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, + 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, + 5, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 97, 99,116,105,111,110, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, + 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, + 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, +116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spin_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spinbox.loh b/iup/srclua5/loh/spinbox.loh new file mode 100755 index 0000000..b8c060d --- /dev/null +++ b/iup/srclua5/loh/spinbox.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spinbox.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spinbox.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,115,112,105, +110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0, +129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0, + 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, + 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, + 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,115,112,105,110, + 98,111,120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 2, 0, 0, 0,105, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 8, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, + 0,110, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110, +116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105, +100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0, +128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 83,112,105,110, 98,111,120, 0, 3, + 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, + 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spinbox_be32.loh b/iup/srclua5/loh/spinbox_be32.loh new file mode 100755 index 0000000..84a7f50 --- /dev/null +++ b/iup/srclua5/loh/spinbox_be32.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spinbox_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spinbox_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,115,112,105, +110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 0, 19, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, + 9,130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128, + 9, 0, 0, 0,100,133,128, 64, 9, 0, 3, 0, 69, 0, 0, 0,128, 1, 0, 64, + 92, 0, 3, 64, 69, 0, 0, 0,128, 0, 3,128,193, 1,128, 64, 92, 0,128, 0, + 30, 0, 0, 0, 15, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8, +115,112,105,110, 98,111,120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, + 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, + 97,116,105,111,110, 0, 4, 0, 0, 0, 2,105, 0, 4, 0, 0, 0, 9, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 8,115,112,105,110, 95, 99, 98, 0, + 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 8,105,110, 99,108,117,100,101, 0, + 4, 0, 0, 0, 10,105,117,112,115,112,105,110, 46,104, 0, 4, 0, 0, 0, 14, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, + 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105, +117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 16, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 0,133, 0,192, + 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 2, 4, 0, + 0, 0, 8, 83,112,105,110, 98,111,120, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, + 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 99,116, +114,108, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spinbox_be64.loh b/iup/srclua5/loh/spinbox_be64.loh new file mode 100755 index 0000000..6669e34 --- /dev/null +++ b/iup/srclua5/loh/spinbox_be64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spinbox_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spinbox_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,115,112,105,110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0, +131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 98,111,120, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108, +117,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110, + 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0, +128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 98, +111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spinbox_le64.loh b/iup/srclua5/loh/spinbox_le64.loh new file mode 100755 index 0000000..bca8d74 --- /dev/null +++ b/iup/srclua5/loh/spinbox_le64.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spinbox_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spinbox_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,115,112,105,110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0, +131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 98,111,120, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108, +117,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110, + 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0, +128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 98, +111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/spinbox_le64w.loh b/iup/srclua5/loh/spinbox_le64w.loh new file mode 100755 index 0000000..2293c4a --- /dev/null +++ b/iup/srclua5/loh/spinbox_le64w.loh @@ -0,0 +1,44 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/spinbox_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/spinbox_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,115,112,105,110, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 19, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0, +131, 9,128,194,132,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 98,111,120, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,105, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0,115,112,105,110, 95, 99, 98, 0, 4, 2, 0, 0, + 0, 0, 0, 0, 0,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108, +117,100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,115,112,105,110, + 46,104, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108, +101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101, +103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 0, 0,133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0, +128, 0, 2, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 83,112,105,110, 98, +111,120, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/spinbox_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/submenu.loh b/iup/srclua5/loh/submenu.loh new file mode 100755 index 0000000..9be8849 --- /dev/null +++ b/iup/srclua5/loh/submenu.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/submenu.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/submenu.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 13, 0, 0, 0, 64,115,117, 98, +109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0, +129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128, +131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, + 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, + 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0,115,117, 98,109,101,110,117, 0, + 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 3, + 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, + 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0, 6,129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, + 0,128, 0, 3, 0, 0, 0, 4, 8, 0, 0, 0, 83,117, 98,109,101,110,117, 0, + 4, 6, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 97,114, +103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, + 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/submenu_be32.loh b/iup/srclua5/loh/submenu_be32.loh new file mode 100755 index 0000000..8c727dc --- /dev/null +++ b/iup/srclua5/loh/submenu_be32.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/submenu_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/submenu_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 13, 64,115,117, 98, +109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, + 9,130, 65, 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, + 9, 0, 2, 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0, +128, 0, 2,128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, + 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 8,115,117, 98,109,101,110,117, 0, + 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, + 0, 0, 3, 83,105, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, + 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, + 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, + 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, 0, 2, 0, 5, 0, 0, 0, 6, 0, + 0, 0,133, 0,192, 64,198, 0,192,129, 6, 1,128, 0,157, 0, 0, 0,158, 0, +128, 0, 30, 0, 0, 0, 3, 4, 0, 0, 0, 8, 83,117, 98,109,101,110,117, 0, + 4, 0, 0, 0, 6,116,105,116,108,101, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 97,114, +103, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, + 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, + 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/submenu_be64.loh b/iup/srclua5/loh/submenu_be64.loh new file mode 100755 index 0000000..959cf94 --- /dev/null +++ b/iup/srclua5/loh/submenu_be64.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/submenu_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/submenu_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,115,117, 98,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, + 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, + 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, + 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6, +129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 83,117, 98,109,101,110,117, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/submenu_le64.loh b/iup/srclua5/loh/submenu_le64.loh new file mode 100755 index 0000000..d60c660 --- /dev/null +++ b/iup/srclua5/loh/submenu_le64.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/submenu_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/submenu_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,115,117, 98,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, + 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, + 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, + 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6, +129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 83,117, 98,109,101,110,117, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/submenu_le64w.loh b/iup/srclua5/loh/submenu_le64w.loh new file mode 100755 index 0000000..7634bdf --- /dev/null +++ b/iup/srclua5/loh/submenu_le64w.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/submenu_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/submenu_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 64,115,117, 98,109,101,110,117, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, + 0, 9, 64, 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, + 0, 9, 64,128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, + 0,128, 0, 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 8, 0, 0, 0, + 0, 0, 0, 0,115,117, 98,109,101,110,117, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83,105, 0, 4, 9, 0, 0, 0, 0, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, + 0, 0, 0, 0, 2, 0, 5, 6, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0, 6, +129,192, 0,157, 0,128, 1,158, 0, 0, 0, 30, 0,128, 0, 3, 0, 0, 0, 4, + 8, 0, 0, 0, 0, 0, 0, 0, 83,117, 98,109,101,110,117, 0, 4, 6, 0, 0, + 0, 0, 0, 0, 0,116,105,116,108,101, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, + 0, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, 14, 0, + 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/submenu_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/tabs.loh b/iup/srclua5/loh/tabs.loh new file mode 100755 index 0000000..0b9ca1c --- /dev/null +++ b/iup/srclua5/loh/tabs.loh @@ -0,0 +1,51 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tabs.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tabs.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,116, 97, 98, +115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 20, 0, + 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128,194,132, 9, 0, +195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0, +128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, + 0,116, 97, 98,115, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0,118, 0, 4, 9, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 13, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95, + 99, 98, 0, 4, 3, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0,102,117,110, 99, +110, 97,109,101, 0, 4, 6, 0, 0, 0, 84, 97, 98,115,118, 0, 4, 11, 0, 0, + 0, 99,114,101, 97,116,101,102,117,110, 99, 0, 4,207, 0, 0, 0,115,116, 97, +116,105, 99, 32,105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, + 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, + 42, 42,104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, + 99,107,105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, + 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117, +112, 84, 97, 98,115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112, +108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, + 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108, +101, 95,114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40, +104,108,105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10, +125, 10, 10, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87, +105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, + 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, + 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, + 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 99,116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tabs_be32.loh b/iup/srclua5/loh/tabs_be32.loh new file mode 100755 index 0000000..3a88da2 --- /dev/null +++ b/iup/srclua5/loh/tabs_be32.loh @@ -0,0 +1,51 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tabs_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tabs_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,116, 97, 98, +115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 20, 0, 1,128, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9,132,194,128, 9,133,195, + 0, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0, + 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128, + 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, + 5,116, 97, 98,115, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116, +105,111,110, 0, 4, 0, 0, 0, 2,118, 0, 4, 0, 0, 0, 9, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 0, 0, 0, 13,116, 97, 98, 99,104, 97,110,103,101, 95, + 99, 98, 0, 4, 0, 0, 0, 3,105,105, 0, 4, 0, 0, 0, 9,102,117,110, 99, +110, 97,109,101, 0, 4, 0, 0, 0, 6, 84, 97, 98,115,118, 0, 4, 0, 0, 0, + 11, 99,114,101, 97,116,101,102,117,110, 99, 0, 4, 0, 0, 0,207,115,116, 97, +116,105, 99, 32,105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, + 97,116,101, 32, 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, + 42, 42,104,108,105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, + 99,107,105,104, 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, + 41, 59, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117, +112, 84, 97, 98,115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112, +108,117, 97, 95,112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, + 10, 32, 32,105,117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108, +101, 95,114, 97,119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40, +104,108,105,115,116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10, +125, 10, 10, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87, +105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 28, 0, 2, 0, 4, 0, + 0, 0, 5, 0, 0, 0,133, 0,128, 0,192, 1, 0, 0,157, 0, 0, 0,158, 0, +128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 84, 97, 98,115,118, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, + 0, 27, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, + 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, 28, 0, 0, 0, 26, + 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, + 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 5, + 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tabs_be64.loh b/iup/srclua5/loh/tabs_be64.loh new file mode 100755 index 0000000..536d55a --- /dev/null +++ b/iup/srclua5/loh/tabs_be64.loh @@ -0,0 +1,56 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tabs_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tabs_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 20, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64, +128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, + 0, 0, 0, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, + 98,115,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102, +117,110, 99, 0, 4,207, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, 99, 32, +105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32, + 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108, +105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104, + 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32, + 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 84, 97, 98, +115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95, +112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105, +117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97, +119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115, +116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 10, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, + 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tabs_le64.loh b/iup/srclua5/loh/tabs_le64.loh new file mode 100755 index 0000000..9d6ecff --- /dev/null +++ b/iup/srclua5/loh/tabs_le64.loh @@ -0,0 +1,56 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tabs_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tabs_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 20, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64, +128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, + 0, 0, 0, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, + 98,115,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102, +117,110, 99, 0, 4,207, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, 99, 32, +105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32, + 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108, +105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104, + 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32, + 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 84, 97, 98, +115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95, +112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105, +117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97, +119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115, +116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 10, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, + 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tabs_le64w.loh b/iup/srclua5/loh/tabs_le64w.loh new file mode 100755 index 0000000..346d99f --- /dev/null +++ b/iup/srclua5/loh/tabs_le64w.loh @@ -0,0 +1,56 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tabs_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tabs_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116, 97, 98,115, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 20, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, 9,128, +194,132, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64, +128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,115, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,118, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, + 0, 0, 0, 0, 0, 0,116, 97, 98, 99,104, 97,110,103,101, 95, 99, 98, 0, 4, + 3, 0, 0, 0, 0, 0, 0, 0,105,105, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, +102,117,110, 99,110, 97,109,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, + 98,115,118, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101,102, +117,110, 99, 0, 4,207, 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,105, 99, 32, +105,110,116, 32, 84, 97, 98,115,118, 40,108,117, 97, 95, 83,116, 97,116,101, 32, + 42, 76, 41, 10,123, 10, 32, 32, 73,104, 97,110,100,108,101, 32, 42, 42,104,108, +105,115,116, 32, 61, 32,105,117,112,108,117, 97, 95, 99,104,101, 99,107,105,104, + 97,110,100,108,101, 95, 97,114,114, 97,121, 40, 76, 44, 32, 49, 41, 59, 10, 32, + 32, 73,104, 97,110,100,108,101, 32, 42,104, 32, 61, 32, 73,117,112, 84, 97, 98, +115,118, 40,104,108,105,115,116, 41, 59, 10, 32, 32,105,117,112,108,117, 97, 95, +112,108,117,103,115,116, 97,116,101, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,105, +117,112,108,117, 97, 95,112,117,115,104,105,104, 97,110,100,108,101, 95,114, 97, +119, 40, 76, 44, 32,104, 41, 59, 10, 32, 32,102,114,101,101, 40,104,108,105,115, +116, 41, 59, 10, 32, 32,114,101,116,117,114,110, 32, 49, 59, 10,125, 10, 10, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,192, 0,128, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84, 97, 98,115,118, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 23, 0, 0, 0, + 28, 0, 0, 0, 26, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tabs_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/text.loh b/iup/srclua5/loh/text.loh new file mode 100755 index 0000000..b84c5df --- /dev/null +++ b/iup/srclua5/loh/text.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/text.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/text.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,116,101,120, +116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 20, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0,195,133, 9, 64, + 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64,128, 1, 30, 0, +128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, + 0,116,101,120,116, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, + 0, 0,110,115, 0, 4, 9, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, + 4, 0, 0, 0,110,110,110, 0, 4, 16, 0, 0, 0,118, 97,108,117,101, 99,104, + 97,110,103,101,100, 95, 99, 98, 0, 4, 1, 0, 0, 0, 0, 4, 14, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, + 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 17, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0, +128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 84, +101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, + 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, + 0, 0, 99,116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/text_be32.loh b/iup/srclua5/loh/text_be32.loh new file mode 100755 index 0000000..95d0d1d --- /dev/null +++ b/iup/srclua5/loh/text_be32.loh @@ -0,0 +1,40 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/text_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/text_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,116,101,120, +116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 20, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0,192, 74,131,194, 0, 73,132,194,128, 73,133,195, 0, 73,131, 0, + 64, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0,128, 1, 0, + 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, 92, 0,128, + 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, + 5,116,101,120,116, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, + 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116, +105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, + 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, + 0, 3,110,115, 0, 4, 0, 0, 0, 9, 99, 97,114,101,116, 95, 99, 98, 0, 4, + 0, 0, 0, 4,110,110,110, 0, 4, 0, 0, 0, 16,118, 97,108,117,101, 99,104, + 97,110,103,101,100, 95, 99, 98, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 14, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105, +117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, + 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105, +117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, + 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 84, +101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, + 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, + 0, 5, 99,116,114,108, 0, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/text_be64.loh b/iup/srclua5/loh/text_be64.loh new file mode 100755 index 0000000..08f9c73 --- /dev/null +++ b/iup/srclua5/loh/text_be64.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/text_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/text_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116,101,120,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0, +195,133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64, +128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,101,120,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, + 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 16, 0, 0, + 0, 0, 0, 0, 0,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, + 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, + 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101, +116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, + 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, + 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 84, +101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/text_le64.loh b/iup/srclua5/loh/text_le64.loh new file mode 100755 index 0000000..d0a7678 --- /dev/null +++ b/iup/srclua5/loh/text_le64.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/text_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/text_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116,101,120,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73,128,194,132, 73, 0, +195,133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, 0,128, 0, + 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, 0, 92, 64, +128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,101,120,116, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, +114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, + 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, + 0, 0, 0, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 0,110,115, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, + 99, 98, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 16, 0, 0, + 0, 0, 0, 0, 0,118, 97,108,117,101, 99,104, 97,110,103,101,100, 95, 99, 98, + 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, + 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101, +116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, + 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, + 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 84, +101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, + 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, + 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, + 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 10, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/text_le64w.loh b/iup/srclua5/loh/text_le64w.loh new file mode 100755 index 0000000..a78caf2 --- /dev/null +++ b/iup/srclua5/loh/text_le64w.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/text_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/text_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116,101,120,116, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 0, 0, 73, 0,194,131, 73,128,194,132, 9, 64, + 0,131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0, +128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,116,101,120,116, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, + 0, 0, 97, 99,116,105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,115, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,114,101,116, 95, 99, 98, 0, 4, + 4, 0, 0, 0, 0, 0, 0, 0,110,110,110, 0, 4, 14, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101, +116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103, +101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 16, + 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, + 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, + 84,101,120,116, 0, 0, 0, 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, + 0, 15, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 16, + 0, 0, 0, 14, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 9, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/text_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/timer.loh b/iup/srclua5/loh/timer.loh new file mode 100755 index 0000000..2d6dfca --- /dev/null +++ b/iup/srclua5/loh/timer.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/timer.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/timer.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 11, 0, 0, 0, 64,116,105,109, +101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 18, + 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, + 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100, 0, 0, 0, 9, + 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, 2, 0,128, + 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, 0, 0, 4, + 5, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, 0, 0,116,105,109,101,114, 0, + 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, + 0, 0, 0, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, + 0, 0, 0, 97, 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, + 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, + 15, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0, +158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 84,105,109, +101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, + 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, + 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, + 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 8, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/timer_be32.loh b/iup/srclua5/loh/timer_be32.loh new file mode 100755 index 0000000..073d341 --- /dev/null +++ b/iup/srclua5/loh/timer_be32.loh @@ -0,0 +1,37 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/timer_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/timer_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 11, 64,116,105,109, +101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, + 0, 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, + 65, 64, 9, 0, 0, 64, 74,131,193, 64, 73,131, 0, 64, 9, 0, 0, 0,100,132, + 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,128, 69, 0, + 0, 0,128, 0, 2,192,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 12, 4, + 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 6,116,105,109,101,114, 0, + 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, + 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, + 0, 0, 1, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, + 0, 0, 10, 97, 99,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 14, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, + 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, + 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 15, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, + 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 6, 84,105,109, +101,114, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, + 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, + 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/timer_be64.loh b/iup/srclua5/loh/timer_be64.loh new file mode 100755 index 0000000..182b3fd --- /dev/null +++ b/iup/srclua5/loh/timer_be64.loh @@ -0,0 +1,41 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/timer_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/timer_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,116,105,109,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100, + 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,116,105,109,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, + 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, + 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, + 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, + 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84,105,109, +101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, + 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/timer_le64.loh b/iup/srclua5/loh/timer_le64.loh new file mode 100755 index 0000000..fddb2b5 --- /dev/null +++ b/iup/srclua5/loh/timer_le64.loh @@ -0,0 +1,41 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/timer_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/timer_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,116,105,109,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100, + 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,116,105,109,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, + 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, + 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, + 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, + 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84,105,109, +101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, + 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/timer_le64w.loh b/iup/srclua5/loh/timer_le64w.loh new file mode 100755 index 0000000..26126ce --- /dev/null +++ b/iup/srclua5/loh/timer_le64w.loh @@ -0,0 +1,41 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/timer_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/timer_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 64,116,105,109,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, + 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 64,193,131, 9, 64, 0,131,100, + 0, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, +128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 6, 0, + 0, 0, 0, 0, 0, 0,116,105,109,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, + 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 97, + 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, + 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, + 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, + 30, 0,128, 0, 1, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 84,105,109, +101,114, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, + 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/timer_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/toggle.loh b/iup/srclua5/loh/toggle.loh new file mode 100755 index 0000000..c1580f0 --- /dev/null +++ b/iup/srclua5/loh/toggle.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/toggle.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/toggle.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 12, 0, 0, 0, 64,116,111,103, +103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, + 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131,100, 0, 0, 0, + 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0, +128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, + 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 7, 0, 0, 0,116,111,103,103,108, +101, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 3, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 7, 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0,110, + 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 7, 0, 0, 0, 84,111,103,103,108,101, 0, 4, 6, 0, 0, + 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 14, + 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 6, + 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/toggle_be32.loh b/iup/srclua5/loh/toggle_be32.loh new file mode 100755 index 0000000..1aef13a --- /dev/null +++ b/iup/srclua5/loh/toggle_be32.loh @@ -0,0 +1,38 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/toggle_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/toggle_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 12, 64,116,111,103, +103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, + 0, 0, 0, 18, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9, +130, 65, 64, 9, 0, 0, 64, 74,131,194, 0, 73,131, 0, 64, 9, 0, 0, 0,100, +132,128, 64, 9, 0, 2,128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, + 0, 0, 0,128, 0, 3, 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, + 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 7,116,111,103,103,108, +101, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, + 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, + 4, 0, 0, 0, 3, 83, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 0, 0, 0, 7, 97, 99,116,105,111,110, 0, 4, 0, 0, 0, 2,110, + 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 2, 0, 4, 0, 0, 0, 5, + 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, 0, 30, + 0, 0, 0, 2, 4, 0, 0, 0, 7, 84,111,103,103,108,101, 0, 4, 0, 0, 0, + 6,116,105,116,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 14, 0, + 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 2, 0, + 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, + 13, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 5, 99,116,114,108, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/toggle_be64.loh b/iup/srclua5/loh/toggle_be64.loh new file mode 100755 index 0000000..523e6c2 --- /dev/null +++ b/iup/srclua5/loh/toggle_be64.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/toggle_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/toggle_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,116,111,103,103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,116,111,103,103,108,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 84,111,103,103,108,101, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, + 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/toggle_le64.loh b/iup/srclua5/loh/toggle_le64.loh new file mode 100755 index 0000000..41686fb --- /dev/null +++ b/iup/srclua5/loh/toggle_le64.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/toggle_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/toggle_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,116,111,103,103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,116,111,103,103,108,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 84,111,103,103,108,101, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, + 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/toggle_le64w.loh b/iup/srclua5/loh/toggle_le64w.loh new file mode 100755 index 0000000..21b2417 --- /dev/null +++ b/iup/srclua5/loh/toggle_le64w.loh @@ -0,0 +1,42 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/toggle_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/toggle_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 64,116,111,103,103,108,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 4, 18, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, + 9, 64, 0,129, 9, 64, 65,130, 74, 64, 0, 0, 73, 0,194,131, 9, 64, 0,131, +100, 0, 0, 0, 9, 64,128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, + 69,192, 2, 0,128, 0, 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, + 13, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0,116,111,103,103,108,101, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, + 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +105,111,110, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 83, 45, 0, 4, 9, 0, 0, + 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0, 97, 99,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, + 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109, +101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105, +115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 15, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0, +133, 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 84,111,103,103,108,101, 0, + 4, 6, 0, 0, 0, 0, 0, 0, 0,116,105,116,108,101, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, + 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 9, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, + 0, 18, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 99,116,114,108, 0, 8, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/toggle_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/tree.loh b/iup/srclua5/loh/tree.loh new file mode 100755 index 0000000..160153d --- /dev/null +++ b/iup/srclua5/loh/tree.loh @@ -0,0 +1,177 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tree.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tree.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,116,114,101, +101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 37, 0, + 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74,192, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192, 66,133, 73,192, + 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192,195,136, 73,192, + 66,137, 73,192,194,137, 73, 64, 69,138, 9, 64, 0,131, 9,192, 69,139,100, 0, + 0, 0,164, 64, 0, 0, 0, 0,128, 0,135, 0, 6, 0,164,128, 0, 0,135, 64, + 6, 0,164,192, 0, 0,135,128, 6, 0,164, 0, 1, 0, 9,128,128,141,133, 0, + 7, 0,192, 0, 0, 0,156, 64, 0, 1,133, 64, 7, 0,192, 0, 0, 0, 1,129, + 7, 0,156, 64,128, 1, 30, 0,128, 0, 31, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0,116,114,101,101, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0,115,101,108, +101, 99,116,105,111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,110, 0, 4, 18, + 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116,105,111,110, 95, 99, 98, + 0, 4, 14, 0, 0, 0, 98,114, 97,110, 99,104,111,112,101,110, 95, 99, 98, 0, + 4, 2, 0, 0, 0,110, 0, 4, 15, 0, 0, 0, 98,114, 97,110, 99,104, 99,108, +111,115,101, 95, 99, 98, 0, 4, 15, 0, 0, 0,101,120,101, 99,117,116,101,108, +101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0,114,101,110, 97,109,101,110,111, +100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0,110,115, 0, 4, 15, 0, 0, 0,110, +111,100,101,114,101,109,111,118,101,100, 95, 99, 98, 0, 4, 10, 0, 0, 0,114, +101,110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0,115,104,111,119,114,101, +110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0,114,105,103,104,116, 99,108, +105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0,100,114, 97,103,100,114,111,112, + 95, 99, 98, 0, 4, 5, 0, 0, 0,110,110,110,110, 0, 4, 11, 0, 0, 0,101, +120,116,114, 97,102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, + 18, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, + 98, 0, 4, 16, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82, +101, 99, 0, 4, 13, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 0, 0, 0, 3, 0, 7, 15, 0, 0, 0, +197, 0, 0, 0, 0, 1, 0, 1,220,128, 0, 1, 23, 64,192, 1, 22,192, 0,128, +197,128, 0, 0, 0, 1, 0, 1,220,128, 0, 1,128, 0,128, 1,197,192, 0, 0, + 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, 0, + 4, 0, 0, 0, 4, 12, 0, 0, 0,105,117,112, 71,101,116, 67,108, 97,115,115, + 0, 4, 11, 0, 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0, + 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13, + 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 27, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 6, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 1, 3, + 0, 7, 69, 0, 0, 0,198, 0,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65,129, 0, 0,128, 1, 0, 1, 85,129,129, 2,134, 1, +192, 0,220, 64, 0, 2,198,192,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65, 1, 1, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +192, 0,220, 64, 0, 2,198, 64,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65,129, 1, 0,128, 1, 0, 1, 85,129,129, 2,134, 65, +193, 0,220, 64, 0, 2,198,192,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65, 1, 2, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +193, 0,220, 64, 0, 2,198, 64,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0, + 0, 0, 0, 1, 0, 0, 65,129, 2, 0,128, 1, 0, 1, 85,129,129, 2,134, 65, +194, 0,220, 64, 0, 2,198,192,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0, + 0, 0, 0, 1, 0, 0, 65, 1, 3, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +194, 0,220, 64, 0, 2,198, 64,195, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, + 3, 0, 0, 1, 0, 0, 64, 1, 0, 1,134, 65,195, 0,220, 64, 0, 2, 30, 0, +128, 0, 15, 0, 0, 0, 4, 6, 0, 0, 0, 99,111,108,111,114, 0, 4, 13, 0, + 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 6, 0, 0, 0, + 67, 79, 76, 79, 82, 0, 4, 6, 0, 0, 0,115,116, 97,116,101, 0, 4, 6, 0, + 0, 0, 83, 84, 65, 84, 69, 0, 4, 10, 0, 0, 0,116,105,116,108,101,102,111, +110,116, 0, 4, 10, 0, 0, 0, 84, 73, 84, 76, 69, 70, 79, 78, 84, 0, 4, 7, + 0, 0, 0,109, 97,114,107,101,100, 0, 4, 7, 0, 0, 0, 77, 65, 82, 75, 69, + 68, 0, 4, 6, 0, 0, 0,105,109, 97,103,101, 0, 4, 6, 0, 0, 0, 73, 77, + 65, 71, 69, 0, 4, 14, 0, 0, 0,105,109, 97,103,101,101,120,112, 97,110,100, +101,100, 0, 4, 14, 0, 0, 0, 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69, + 68, 0, 4, 7, 0, 0, 0,117,115,101,114,105,100, 0, 4, 14, 0, 0, 0, 84, +114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 69, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, + 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0, + 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 5, 0, 0, 0,110,111,100,101, 0, 0, 0, 0, 0, 68, 0, 0, 0, 3, 0, 0, + 0,105,100, 0, 0, 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, + 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100, +108,101, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 0, 0, 0, 3, 0, 9, 61, + 0, 0, 0, 23, 0,192, 0, 22, 0, 0,128, 30, 0,128, 0,212, 0,128, 0, 25, +192,128,128, 22, 64, 13,128, 6,193,128, 0, 69,129, 0, 0,128, 1, 0, 2, 92, +129, 0, 1, 23,192,192, 2, 22, 0, 9,128, 70, 1, 65, 2, 90, 1, 0, 0, 22, + 64, 4,128, 69, 65, 1, 0,128, 1, 0, 0,193,129, 1, 0, 0, 2, 0, 1,213, + 1,130, 3, 6, 2, 65, 2, 92, 65, 0, 2, 69,193, 1, 0,128, 1, 0, 0,192, + 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 69, 65, 2, 0,128, 1, 0, 0,192, + 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 6,128, 70,129, 66, 2, 90, + 1, 0, 0, 22, 64, 5,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0, + 2, 0, 1,213, 1,130, 3, 6,130, 66, 2, 92, 65, 0, 2, 69,193, 1, 0,128, + 1, 0, 0,192, 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 2,128, 26, + 1, 0, 0, 22,128, 1,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0, + 2, 0, 1,213, 1,130, 3, 0, 2, 0, 2, 92, 65, 0, 2,205, 0,194, 1, 22, +192,241,127, 30, 0,128, 0, 12, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 5, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0,116, 97, 98,108, +101, 0, 4, 11, 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, + 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0, + 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 18, 0, 0, 0, 84,114,101,101, + 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 0, 0, 0, 0, 0, + 0,240, 63, 4, 16, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 82,101, 99, 0, 4, 9, 0, 0, 0,108,101, 97,102,110, 97,109,101, 0, 4, 8, + 0, 0, 0, 65, 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 61, 0, 0, 0, 40, + 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, + 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, + 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, + 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, + 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, + 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, + 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, + 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, + 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 54, + 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, + 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 60, + 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 60, 0, 0, 0, 2, 0, 0, 0,116, 0, 0, 0, 0, 0, 60, 0, 0, 0, + 3, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 60, 0, 0, 0, 5, 0, 0, 0, 99, +111,110,116, 0, 4, 0, 0, 0, 60, 0, 0, 0, 5, 0, 0, 0,110,111,100,101, + 0, 7, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, + 0, 69, 0, 0, 0, 0, 3, 0, 7, 22, 0, 0, 0,154, 64, 0, 0, 22, 64, 3, +128,129, 0, 0, 0,198, 64,192, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, 0, + 0, 0, 1, 0, 0, 65,193, 0, 0,134, 65,192, 0,220, 64, 0, 2,197, 0, 1, + 0, 0, 1, 0, 0, 64, 1,128, 0,129, 1, 0, 0,220, 64, 0, 2,197, 64, 1, + 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, + 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, 0, 98, +114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 7, 0, 0, 0, 84, 73, 84, 76, 69, 48, 0, + 4, 18, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114, +105, 98, 0, 4, 16, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 82,101, 99, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, + 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, + 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0, + 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 2, 0, 0, 0,116, 0, 0, 0, 0, 0, 21, 0, 0, 0, 3, 0, 0, + 0,105,100, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 0, 0, 0, 73, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0, +157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, + 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 37, 0, 0, 0, + 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0, 39, 0, 0, 0, 69, 0, 0, 0, + 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, + 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, + 76, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, + 0, 36, 0, 0, 0, 23, 0, 0, 0, 84,114,101,101, 83,101,116, 65,116,116,114, +105, 98,117,116,101, 72, 97,110,100,108,101, 0, 20, 0, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tree_be32.loh b/iup/srclua5/loh/tree_be32.loh new file mode 100755 index 0000000..3f6adfa --- /dev/null +++ b/iup/srclua5/loh/tree_be32.loh @@ -0,0 +1,177 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tree_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tree_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,116,114,101, +101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 0, 0, + 0, 37, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 2,192, 74,131,194, 0, 73,132,194, 0, 73,133, 66,192, 73,134, 66, +192, 73,134,194,192, 73,135, 67,192, 73,136, 67,192, 73,136,195,192, 73,137, 66, +192, 73,137,194,192, 73,138, 69, 64, 73,131, 0, 64, 9,139, 69,192, 9, 0, 0, + 0,100, 0, 0, 64,164, 0,128, 0, 0, 0, 6, 0,135, 0, 0,128,164, 0, 6, + 64,135, 0, 0,192,164, 0, 6,128,135, 0, 1, 0,164,141,128,128, 9, 0, 7, + 0,133, 0, 0, 0,192, 1, 0, 64,156, 0, 7, 64,133, 0, 0, 0,192, 0, 7, +129, 1, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 31, 4, 0, 0, 0, 5,110, +105, 99,107, 0, 4, 0, 0, 0, 5,116,114,101,101, 0, 4, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, + 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 13,115,101,108, +101, 99,116,105,111,110, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,110, 0, 4, 0, + 0, 0, 18,109,117,108,116,105,115,101,108,101, 99,116,105,111,110, 95, 99, 98, + 0, 4, 0, 0, 0, 14, 98,114, 97,110, 99,104,111,112,101,110, 95, 99, 98, 0, + 4, 0, 0, 0, 2,110, 0, 4, 0, 0, 0, 15, 98,114, 97,110, 99,104, 99,108, +111,115,101, 95, 99, 98, 0, 4, 0, 0, 0, 15,101,120,101, 99,117,116,101,108, +101, 97,102, 95, 99, 98, 0, 4, 0, 0, 0, 14,114,101,110, 97,109,101,110,111, +100,101, 95, 99, 98, 0, 4, 0, 0, 0, 3,110,115, 0, 4, 0, 0, 0, 15,110, +111,100,101,114,101,109,111,118,101,100, 95, 99, 98, 0, 4, 0, 0, 0, 10,114, +101,110, 97,109,101, 95, 99, 98, 0, 4, 0, 0, 0, 14,115,104,111,119,114,101, +110, 97,109,101, 95, 99, 98, 0, 4, 0, 0, 0, 14,114,105,103,104,116, 99,108, +105, 99,107, 95, 99, 98, 0, 4, 0, 0, 0, 12,100,114, 97,103,100,114,111,112, + 95, 99, 98, 0, 4, 0, 0, 0, 5,110,110,110,110, 0, 4, 0, 0, 0, 11,101, +120,116,114, 97,102,117,110, 99,115, 0, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 18, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, + 98, 0, 4, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82, +101, 99, 0, 4, 0, 0, 0, 13, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, 0, + 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103, +101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 3, 0, 7, 0, 0, 0, 15, + 0, 0, 0,197, 1, 0, 1, 0, 1, 0,128,220, 1,192, 64, 23,128, 0,192, 22, + 0, 0,128,197, 1, 0, 1, 0, 1, 0,128,220, 1,128, 0,128, 0, 0,192,197, + 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, 30, + 0, 0, 0, 4, 4, 0, 0, 0, 12,105,117,112, 71,101,116, 67,108, 97,115,115, + 0, 4, 0, 0, 0, 11,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 0, 0, + 0, 16,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 0, + 0, 0, 13, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, + 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, + 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, + 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 0, 0, 6,118, 97,108,117,101, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 1, 3, + 0, 7, 0, 0, 0, 69, 0,192, 0,198, 0, 0, 0,218,128, 1,128, 22, 0, 0, + 64,197, 0, 0, 1, 0, 0, 0,129, 65, 1, 0, 1,128, 2,129,129, 85, 0,192, + 1,134, 2, 0, 64,220, 0,192,192,198, 0, 0, 0,218,128, 1,128, 22, 0, 0, + 64,197, 0, 0, 1, 0, 0, 1, 1, 65, 1, 0, 1,128, 2,129,129, 85, 0,192, +193,134, 2, 0, 64,220, 0,193, 64,198, 0, 0, 0,218,128, 1,128, 22, 0, 0, + 64,197, 0, 0, 1, 0, 0, 1,129, 65, 1, 0, 1,128, 2,129,129, 85, 0,193, + 65,134, 2, 0, 64,220, 0,193,192,198, 0, 0, 0,218,128, 1,128, 22, 0, 0, + 64,197, 0, 0, 1, 0, 0, 2, 1, 65, 1, 0, 1,128, 2,129,129, 85, 0,193, +193,134, 2, 0, 64,220, 0,194, 64,198, 0, 0, 0,218,128, 1,128, 22, 0, 0, + 0,196, 0, 0, 1, 0, 0, 2,129, 65, 1, 0, 1,128, 2,129,129, 85, 0,194, + 65,134, 2, 0, 64,220, 0,194,192,198, 0, 0, 0,218,128, 1,128, 22, 0, 0, + 0,196, 0, 0, 1, 0, 0, 3, 1, 65, 1, 0, 1,128, 2,129,129, 85, 0,194, +193,134, 2, 0, 64,220, 0,195, 64,198, 0, 0, 0,218,128, 1, 0, 22, 0, 3, +128,197, 0, 0, 1, 0, 1, 0, 1, 64, 0,195, 65,134, 2, 0, 64,220, 0,128, + 0, 30, 0, 0, 0, 15, 4, 0, 0, 0, 6, 99,111,108,111,114, 0, 4, 0, 0, + 0, 13, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 6, + 67, 79, 76, 79, 82, 0, 4, 0, 0, 0, 6,115,116, 97,116,101, 0, 4, 0, 0, + 0, 6, 83, 84, 65, 84, 69, 0, 4, 0, 0, 0, 10,116,105,116,108,101,102,111, +110,116, 0, 4, 0, 0, 0, 10, 84, 73, 84, 76, 69, 70, 79, 78, 84, 0, 4, 0, + 0, 0, 7,109, 97,114,107,101,100, 0, 4, 0, 0, 0, 7, 77, 65, 82, 75, 69, + 68, 0, 4, 0, 0, 0, 6,105,109, 97,103,101, 0, 4, 0, 0, 0, 6, 73, 77, + 65, 71, 69, 0, 4, 0, 0, 0, 14,105,109, 97,103,101,101,120,112, 97,110,100, +101,100, 0, 4, 0, 0, 0, 14, 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69, + 68, 0, 4, 0, 0, 0, 7,117,115,101,114,105,100, 0, 4, 0, 0, 0, 14, 84, +114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, + 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, + 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, + 31, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, + 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, + 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, + 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, + 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, + 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, + 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, + 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 5,110,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 3,105,100, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, 23, + 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100, +108,101, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 3, 0, 9, 0, + 0, 0, 61, 0,192, 0, 23,128, 0, 0, 22, 0,128, 0, 30, 0,128, 0,212,128, +128,192, 25,128, 13, 64, 22, 0,128,193, 6, 0, 0,129, 69, 2, 0, 1,128, 1, + 0,129, 92, 2,192,192, 23,128, 9, 0, 22, 2, 65, 1, 70, 0, 0, 1, 90,128, + 4, 64, 22, 0, 1, 65, 69, 0, 0, 1,128, 0, 1,129,193, 1, 0, 2, 0, 3, +130, 1,213, 2, 65, 2, 6, 2, 0, 65, 92, 0, 1,193, 69, 0, 0, 1,128, 2, + 0, 1,192, 1, 66, 2, 12, 2, 0, 65, 92, 0, 2, 65, 69, 0, 0, 1,128, 2, + 0, 1,192, 1, 66, 2, 12, 2, 0, 65, 92,128, 6, 0, 22, 2, 66,129, 70, 0, + 0, 1, 90,128, 5, 64, 22, 0, 1, 65, 69, 0, 0, 1,128, 0, 2,193,193, 1, + 0, 2, 0, 3,130, 1,213, 2, 66,130, 6, 2, 0, 65, 92, 0, 1,193, 69, 0, + 0, 1,128, 2, 0, 1,192, 1, 66, 2, 12, 2, 0, 65, 92,128, 2, 0, 22, 0, + 0, 1, 26,128, 1,128, 22, 0, 1, 65, 69, 0, 0, 1,128, 0, 2,193,193, 1, + 0, 2, 0, 3,130, 1,213, 2, 0, 2, 0, 2, 0, 65, 92, 1,194, 0,205,127, +241,192, 22, 0,128, 0, 30, 0, 0, 0, 12, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 5,116,121,112,101, 0, 4, 0, 0, 0, 6,116, 97, 98,108, +101, 0, 4, 0, 0, 0, 11, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 0, + 0, 0, 13, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, + 10, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 0, 0, 0, 18, 84,114,101,101, + 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 63,240, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 82,101, 99, 0, 4, 0, 0, 0, 9,108,101, 97,102,110, 97,109,101, 0, 4, 0, + 0, 0, 8, 65, 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, + 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, + 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, + 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, + 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, + 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, + 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, + 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, + 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, + 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0, + 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, + 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0, + 0, 0, 60, 0, 0, 0, 5, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 0, 0, 0, 60, 0, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 0, 60, + 0, 0, 0, 3,105,100, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 5, 99, +111,110,116, 0, 0, 0, 0, 4, 0, 0, 0, 60, 0, 0, 0, 5,110,111,100,101, + 0, 0, 0, 0, 7, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 62, 0, 0, 0, 69, 0, 3, 0, 7, 0, 0, 0, 22, 0, 0, 64,154,128, 3, 64, + 22, 0, 0, 0,129, 0,192, 64,198, 0, 0, 0,218,128, 1, 0, 22, 0, 0,128, +197, 0, 0, 1, 0, 0, 0,193, 65, 0,192, 65,134, 2, 0, 64,220, 0, 1, 0, +197, 0, 0, 1, 0, 0,128, 1, 64, 0, 0, 1,129, 2, 0, 64,220, 0, 1, 64, +197, 0, 0, 1, 0, 0,128, 1, 64, 1, 0, 1,128, 2, 0, 64,220, 0,128, 0, + 30, 0, 0, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 11, 98, +114, 97,110, 99,104,110, 97,109,101, 0, 4, 0, 0, 0, 13, 83,101,116, 65,116, +116,114,105, 98,117,116,101, 0, 4, 0, 0, 0, 7, 84, 73, 84, 76, 69, 48, 0, + 4, 0, 0, 0, 18, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114, +105, 98, 0, 4, 0, 0, 0, 16, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 82,101, 99, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, + 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66, + 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, + 0, 0, 0, 3, 0, 0, 0, 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 2,116, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 3,105,100, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 73, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, + 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, + 5, 84,114,101,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0, + 0, 72, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, + 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 4, + 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, + 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, + 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, + 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 27, 0, 0, 0, 37, + 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0, 39, 0, 0, 0, 69, + 0, 0, 0, 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 75, 0, 0, 0, 75, + 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, + 0, 0, 0, 76, 0, 0, 0, 2, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, + 19, 0, 0, 0, 36, 0, 0, 0, 23, 84,114,101,101, 83,101,116, 65,116,116,114, +105, 98,117,116,101, 72, 97,110,100,108,101, 0, 0, 0, 0, 20, 0, 0, 0, 36, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tree_be64.loh b/iup/srclua5/loh/tree_be64.loh new file mode 100755 index 0000000..49a23fa --- /dev/null +++ b/iup/srclua5/loh/tree_be64.loh @@ -0,0 +1,195 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tree_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tree_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 5, 37, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,192, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192, + 66,133, 73,192, 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192, +195,136, 73,192, 66,137, 73,192,194,137, 73, 64, 69,138, 9, 64, 0,131, 9,192, + 69,139,100, 0, 0, 0,164, 64, 0, 0, 0, 0,128, 0,135, 0, 6, 0,164,128, + 0, 0,135, 64, 6, 0,164,192, 0, 0,135,128, 6, 0,164, 0, 1, 0, 9,128, +128,141,133, 0, 7, 0,192, 0, 0, 0,156, 64, 0, 1,133, 64, 7, 0,192, 0, + 0, 0, 1,129, 7, 0,156, 64,128, 1, 30, 0,128, 0, 31, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,116,114,101,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115,101,108,101, 99,116,105, +111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 18, + 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116,105,111, +110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, +111,112,101,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, + 15, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, + 99, 98, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,101,120,101, 99,117,116,101,108, +101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97, +109,101,110,111,100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110, +115, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,110,111,100,101,114,101,109,111,118, +101,100, 95, 99, 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,109, +101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,114,101, +110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,105,103, +104,116, 99,108,105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +100,114, 97,103,100,114,111,112, 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,110,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, +102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 18, 0, 0, 0, + 0, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, + 98, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97, +108,117,101, 82,101, 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, + 83,101,116, 86, 97,108,117,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, + 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 0, 0, + 0, 3, 0, 7, 15, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 1,220,128, 0, 1, + 23, 64,192, 1, 22,192, 0,128,197,128, 0, 0, 0, 1, 0, 1,220,128, 0, 1, +128, 0,128, 1,197,192, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1, +220, 64, 0, 2, 30, 0,128, 0, 4, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, + 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13, + 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 26, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 1, 3, + 0, 7, 69, 0, 0, 0,198, 0,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65,129, 0, 0,128, 1, 0, 1, 85,129,129, 2,134, 1, +192, 0,220, 64, 0, 2,198,192,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65, 1, 1, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +192, 0,220, 64, 0, 2,198, 64,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65,129, 1, 0,128, 1, 0, 1, 85,129,129, 2,134, 65, +193, 0,220, 64, 0, 2,198,192,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65, 1, 2, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +193, 0,220, 64, 0, 2,198, 64,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0, + 0, 0, 0, 1, 0, 0, 65,129, 2, 0,128, 1, 0, 1, 85,129,129, 2,134, 65, +194, 0,220, 64, 0, 2,198,192,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0, + 0, 0, 0, 1, 0, 0, 65, 1, 3, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +194, 0,220, 64, 0, 2,198, 64,195, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, + 3, 0, 0, 1, 0, 0, 64, 1, 0, 1,134, 65,195, 0,220, 64, 0, 2, 30, 0, +128, 0, 15, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,111,108,111,114, + 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 79, 76, 79, 82, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,101, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 83, 84, 65, 84, 69, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,116,105,116, +108,101,102,111,110,116, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 84, 73, 84, 76, + 69, 70, 79, 78, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101, +100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 65, 82, 75, 69, 68, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 73, 77, 65, 71, 69, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,109, 97, +103,101,101,120,112, 97,110,100,101,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69, 68, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,117,115,101,114,105,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 84, +114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 69, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, + 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, + 68, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, + 68, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, + 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100,108,101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 0, 0, 0, 3, 0, 9, 61, + 0, 0, 0, 23, 0,192, 0, 22, 0, 0,128, 30, 0,128, 0,212, 0,128, 0, 25, +192,128,128, 22, 64, 13,128, 6,193,128, 0, 69,129, 0, 0,128, 1, 0, 2, 92, +129, 0, 1, 23,192,192, 2, 22, 0, 9,128, 70, 1, 65, 2, 90, 1, 0, 0, 22, + 64, 4,128, 69, 65, 1, 0,128, 1, 0, 0,193,129, 1, 0, 0, 2, 0, 1,213, + 1,130, 3, 6, 2, 65, 2, 92, 65, 0, 2, 69,193, 1, 0,128, 1, 0, 0,192, + 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 69, 65, 2, 0,128, 1, 0, 0,192, + 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 6,128, 70,129, 66, 2, 90, + 1, 0, 0, 22, 64, 5,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0, + 2, 0, 1,213, 1,130, 3, 6,130, 66, 2, 92, 65, 0, 2, 69,193, 1, 0,128, + 1, 0, 0,192, 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 2,128, 26, + 1, 0, 0, 22,128, 1,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0, + 2, 0, 1,213, 1,130, 3, 0, 2, 0, 2, 92, 65, 0, 2,205, 0,194, 1, 22, +192,241,127, 30, 0,128, 0, 12, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98, +114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83, +101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, + 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, + 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,108,101, 97,102,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, + 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 61, 0, 0, 0, 40, 0, 0, 0, 40, + 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, + 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, + 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, + 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, + 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, + 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 50, + 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, + 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, + 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, + 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, + 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 60, 0, 0, 0, 5, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 60, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 60, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,111,110,116, 0, 4, 0, 0, 0, + 60, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 7, 0, 0, + 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, + 0, 69, 0, 0, 0, 0, 3, 0, 7, 22, 0, 0, 0,154, 64, 0, 0, 22, 64, 3, +128,129, 0, 0, 0,198, 64,192, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, 0, + 0, 0, 1, 0, 0, 65,193, 0, 0,134, 65,192, 0,220, 64, 0, 2,197, 0, 1, + 0, 0, 1, 0, 0, 64, 1,128, 0,129, 1, 0, 0,220, 64, 0, 2,197, 64, 1, + 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, + 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0, + 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 84, 73, 84, 76, 69, 48, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 82,101, 99, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, + 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, + 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0, + 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, + 73, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0, +158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 27, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0, + 39, 0, 0, 0, 69, 0, 0, 0, 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, + 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, + 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0, 36, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116, +101, 72, 97,110,100,108,101, 0, 20, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tree_le64.loh b/iup/srclua5/loh/tree_le64.loh new file mode 100755 index 0000000..dbfc0a1 --- /dev/null +++ b/iup/srclua5/loh/tree_le64.loh @@ -0,0 +1,195 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/tree_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/tree_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 5, 37, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,192, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192, + 66,133, 73,192, 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192, +195,136, 73,192, 66,137, 73,192,194,137, 73, 64, 69,138, 9, 64, 0,131, 9,192, + 69,139,100, 0, 0, 0,164, 64, 0, 0, 0, 0,128, 0,135, 0, 6, 0,164,128, + 0, 0,135, 64, 6, 0,164,192, 0, 0,135,128, 6, 0,164, 0, 1, 0, 9,128, +128,141,133, 0, 7, 0,192, 0, 0, 0,156, 64, 0, 1,133, 64, 7, 0,192, 0, + 0, 0, 1,129, 7, 0,156, 64,128, 1, 30, 0,128, 0, 31, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,116,114,101,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115,101,108,101, 99,116,105, +111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110,110, 0, 4, 18, + 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,115,101,108,101, 99,116,105,111, +110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, +111,112,101,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,110, 0, 4, + 15, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, 99,108,111,115,101, 95, + 99, 98, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,101,120,101, 99,117,116,101,108, +101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97, +109,101,110,111,100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110, +115, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,110,111,100,101,114,101,109,111,118, +101,100, 95, 99, 98, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,109, +101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,114,101, +110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,105,103, +104,116, 99,108,105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +100,114, 97,103,100,114,111,112, 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,110,110,110, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97, +102,117,110, 99,115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 18, 0, 0, 0, + 0, 0, 0, 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, + 98, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97, +108,117,101, 82,101, 99, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, + 83,101,116, 86, 97,108,117,101, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114, +101, 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, + 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, + 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 27, 0, 0, 0, + 0, 3, 0, 7, 15, 0, 0, 0,197, 0, 0, 0, 0, 1, 0, 1,220,128, 0, 1, + 23, 64,192, 1, 22,192, 0,128,197,128, 0, 0, 0, 1, 0, 1,220,128, 0, 1, +128, 0,128, 1,197,192, 0, 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1, +220, 64, 0, 2, 30, 0,128, 0, 4, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0, + 0,105,117,112, 71,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, + 0, 0,105,117,112, 32,104, 97,110,100,108,101, 0, 4, 16, 0, 0, 0, 0, 0, + 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 4, 13, + 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, + 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 26, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 5, 0, 0, 0, 0, + 0, 0, 0,110, 97,109,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0,118, 97,108,117,101, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 37, 0, 0, 0, 1, 3, + 0, 7, 69, 0, 0, 0,198, 0,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65,129, 0, 0,128, 1, 0, 1, 85,129,129, 2,134, 1, +192, 0,220, 64, 0, 2,198,192,192, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65, 1, 1, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +192, 0,220, 64, 0, 2,198, 64,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65,129, 1, 0,128, 1, 0, 1, 85,129,129, 2,134, 65, +193, 0,220, 64, 0, 2,198,192,193, 0,218, 0, 0, 0, 22,128, 1,128,197, 64, + 0, 0, 0, 1, 0, 0, 65, 1, 2, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +193, 0,220, 64, 0, 2,198, 64,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0, + 0, 0, 0, 1, 0, 0, 65,129, 2, 0,128, 1, 0, 1, 85,129,129, 2,134, 65, +194, 0,220, 64, 0, 2,198,192,194, 0,218, 0, 0, 0, 22,128, 1,128,196, 0, + 0, 0, 0, 1, 0, 0, 65, 1, 3, 0,128, 1, 0, 1, 85,129,129, 2,134,193, +194, 0,220, 64, 0, 2,198, 64,195, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, + 3, 0, 0, 1, 0, 0, 64, 1, 0, 1,134, 65,195, 0,220, 64, 0, 2, 30, 0, +128, 0, 15, 0, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 99,111,108,111,114, + 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117, +116,101, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 67, 79, 76, 79, 82, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,115,116, 97,116,101, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 83, 84, 65, 84, 69, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,116,105,116, +108,101,102,111,110,116, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 84, 73, 84, 76, + 69, 70, 79, 78, 84, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,109, 97,114,107,101, +100, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 77, 65, 82, 75, 69, 68, 0, 4, 6, + 0, 0, 0, 0, 0, 0, 0,105,109, 97,103,101, 0, 4, 6, 0, 0, 0, 0, 0, + 0, 0, 73, 77, 65, 71, 69, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,105,109, 97, +103,101,101,120,112, 97,110,100,101,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, + 73, 77, 65, 71, 69, 69, 88, 80, 65, 78, 68, 69, 68, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,117,115,101,114,105,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 84, +114,101,101, 83,101,116, 85,115,101,114, 73,100, 0, 0, 0, 0, 0, 69, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, + 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, + 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, + 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 3, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, + 68, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, + 68, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, + 83,101,116, 65,116,116,114,105, 98,117,116,101, 72, 97,110,100,108,101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 60, 0, 0, 0, 0, 3, 0, 9, 61, + 0, 0, 0, 23, 0,192, 0, 22, 0, 0,128, 30, 0,128, 0,212, 0,128, 0, 25, +192,128,128, 22, 64, 13,128, 6,193,128, 0, 69,129, 0, 0,128, 1, 0, 2, 92, +129, 0, 1, 23,192,192, 2, 22, 0, 9,128, 70, 1, 65, 2, 90, 1, 0, 0, 22, + 64, 4,128, 69, 65, 1, 0,128, 1, 0, 0,193,129, 1, 0, 0, 2, 0, 1,213, + 1,130, 3, 6, 2, 65, 2, 92, 65, 0, 2, 69,193, 1, 0,128, 1, 0, 0,192, + 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 69, 65, 2, 0,128, 1, 0, 0,192, + 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 6,128, 70,129, 66, 2, 90, + 1, 0, 0, 22, 64, 5,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0, + 2, 0, 1,213, 1,130, 3, 6,130, 66, 2, 92, 65, 0, 2, 69,193, 1, 0,128, + 1, 0, 0,192, 1, 0, 2, 12, 2, 66, 1, 92, 65, 0, 2, 22, 0, 2,128, 26, + 1, 0, 0, 22,128, 1,128, 69, 65, 1, 0,128, 1, 0, 0,193,193, 2, 0, 0, + 2, 0, 1,213, 1,130, 3, 0, 2, 0, 2, 92, 65, 0, 2,205, 0,194, 1, 22, +192,241,127, 30, 0,128, 0, 12, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 6, 0, 0, 0, + 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98, +114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83, +101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0, + 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 3, 0, + 0, 0, 0, 0, 0,240, 63, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, + 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0,108,101, 97,102,110, 97,109,101, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, + 68, 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 61, 0, 0, 0, 40, 0, 0, 0, 40, + 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, + 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, + 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 46, + 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, + 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, 0, 0, 0, 47, + 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 50, + 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 50, + 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, + 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, + 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 55, + 0, 0, 0, 55, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 60, 0, 0, 0, 5, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, + 0, 0, 60, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 60, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,111,110,116, 0, 4, 0, 0, 0, + 60, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,110,111,100,101, 0, 7, 0, 0, + 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, + 0, 69, 0, 0, 0, 0, 3, 0, 7, 22, 0, 0, 0,154, 64, 0, 0, 22, 64, 3, +128,129, 0, 0, 0,198, 64,192, 0,218, 0, 0, 0, 22, 0, 1,128,197,128, 0, + 0, 0, 1, 0, 0, 65,193, 0, 0,134, 65,192, 0,220, 64, 0, 2,197, 0, 1, + 0, 0, 1, 0, 0, 64, 1,128, 0,129, 1, 0, 0,220, 64, 0, 2,197, 64, 1, + 0, 0, 1, 0, 0, 64, 1,128, 0,128, 1, 0, 1,220, 64, 0, 2, 30, 0,128, + 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0, + 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 84, 73, 84, 76, 69, 48, 0, 4, 18, 0, 0, 0, 0, 0, 0, + 0, 84,114,101,101, 83,101,116, 78,111,100,101, 65,116,116,114,105, 98, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, + 82,101, 99, 0, 0, 0, 0, 0, 22, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, + 64, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, + 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 68, 0, 0, 0, + 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, + 73, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0, +158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, + 27, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 29, 0, 0, 0, 60, 0, 0, 0, + 39, 0, 0, 0, 69, 0, 0, 0, 62, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, + 75, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, + 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0, 36, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 65,116,116,114,105, 98,117,116, +101, 72, 97,110,100,108,101, 0, 20, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, + +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/tree_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/tree_le64w.loh b/iup/srclua5/loh/tree_le64w.loh new file mode 100755 index 0000000..ebc6aae --- /dev/null +++ b/iup/srclua5/loh/tree_le64w.loh @@ -0,0 +1,112 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/tree_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/tree_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,116,114,101,101, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 33, 0, 0, 0, 10,128, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74,128, 2, 0, 73, 0,194,131, 73, 0,194,132, 73,192, + 66,133, 73,192, 66,134, 73,192,194,134, 73,192, 67,135, 73,192, 67,136, 73,192, +194,136, 73,192, 66,137, 73, 0,197,137, 9, 64, 0,131, 9,128,197,138, 9, 0, +198,139,100, 0, 0, 0, 71, 64, 6, 0,100, 64, 0, 0, 71,128, 6, 0,100,128, + 0, 0, 9, 64,128,141, 69, 0, 7, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, + 7, 0,128, 0, 0, 0,193,128, 7, 0, 92, 64,128, 1, 30, 0,128, 0, 31, 0, + 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, + 0, 0, 0, 0, 0,116,114,101,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, + 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, + 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, + 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0,115,101,108, +101, 99,116,105,111,110, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0,110, +110, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,109,117,108,116,105,115,101,108,101, + 99,116,105,111,110, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 98,114, + 97,110, 99,104,111,112,101,110, 95, 99, 98, 0, 4, 2, 0, 0, 0, 0, 0, 0, + 0,110, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, 99,104, 99,108, +111,115,101, 95, 99, 98, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0,101,120,101, 99, +117,116,101,108,101, 97,102, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, +114,101,110, 97,109,101,110,111,100,101, 95, 99, 98, 0, 4, 3, 0, 0, 0, 0, + 0, 0, 0,110,115, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,114,101,110, 97,109, +101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,115,104,111,119,114,101, +110, 97,109,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0,114,105,103, +104,116, 99,108,105, 99,107, 95, 99, 98, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, +100,114, 97,103,100,114,111,112, 95, 99, 98, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,110,110,110,110, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117, +100,101, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0,105,117,112,116,114,101,101, 46, +104, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,101,120,116,114, 97,102,117,110, 99, +115, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0, 0, 0, 0, 0, 0, 0, + 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, 4, 13, 0, 0, + 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 0, 4, 14, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110,116, + 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101, +114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117,112, + 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 0, 0, 40, 0, 0, 0, 0, 3, 0, 8, 45, 0, 0, 0, 23, 0,192, + 0, 22, 0, 0,128, 30, 0,128, 0,197, 64, 0, 0,198,128,192, 1, 0, 1,128, + 0,220,128, 0, 1, 25,192,128,129, 22,128, 8,128, 5, 1, 1, 0, 70,193,128, + 0, 28,129, 0, 1, 23, 64, 64, 2, 22, 64, 4,128, 6,193,128, 0, 6, 65, 65, + 2, 87, 0, 64, 2, 22,192, 5,128, 5,129, 1, 0, 64, 1, 0, 0,129,193, 1, + 0,192, 1, 0, 1,149,193, 1, 3,198,193,128, 0,198, 65,193, 3, 28, 65, 0, + 2, 5, 1, 2, 0, 64, 1, 0, 0,134,193,128, 0,204, 65, 66, 1, 28, 65, 0, + 2, 22, 64, 2,128, 6,193,128, 0, 26, 1, 0, 0, 22,128, 1,128, 5,129, 1, + 0, 64, 1, 0, 0,129,129, 2, 0,192, 1, 0, 1,149,193, 1, 3,198,193,128, + 0, 28, 65, 0, 2,205, 64,194, 1, 22,128,246,127, 30, 0,128, 0, 11, 0, 0, + 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0,116, 97, 98,108,101, 0, 4, 5, 0, + 0, 0, 0, 0, 0, 0,103,101,116,110, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,116,121,112,101, 0, 4, 11, 0, 0, 0, 0, + 0, 0, 0, 98,114, 97,110, 99,104,110, 97,109,101, 0, 4, 13, 0, 0, 0, 0, + 0, 0, 0, 83,101,116, 65,116,116,114,105, 98,117,116,101, 0, 4, 10, 0, 0, + 0, 0, 0, 0, 0, 65, 68, 68, 66, 82, 65, 78, 67, 72, 0, 4, 16, 0, 0, 0, + 0, 0, 0, 0, 84,114,101,101, 83,101,116, 86, 97,108,117,101, 82,101, 99, 0, + 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 8, 0, 0, 0, 0, 0, 0, 0, 65, 68, + 68, 76, 69, 65, 70, 0, 0, 0, 0, 0, 45, 0, 0, 0, 25, 0, 0, 0, 25, 0, + 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, + 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, + 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, + 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, + 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, + 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, + 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, + 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, + 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 4, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 44, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 44, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0,105,100, 0, 0, 0, 0, 0, 44, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 99,111,110,116, 0, 7, 0, 0, 0, 44, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 47, 0, 0, 0, 0, + 2, 0, 6, 14, 0, 0, 0,134, 0,192, 0, 87, 64, 64, 1, 22, 0, 1,128,133, +128, 0, 0,192, 0, 0, 0, 1,193, 0, 0, 70, 1,192, 0,156, 64, 0, 2,133, + 0, 1, 0,192, 0, 0, 0, 0, 1,128, 0, 65, 65, 1, 0,156, 64, 0, 2, 30, + 0,128, 0, 6, 0, 0, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, 98,114, 97,110, + 99,104,110, 97,109,101, 0, 0, 4, 13, 0, 0, 0, 0, 0, 0, 0, 83,101,116, + 65,116,116,114,105, 98,117,116,101, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 78, + 65, 77, 69, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 84,114,101,101, 83,101,116, + 86, 97,108,117,101, 82,101, 99, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, + 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 46, 0, + 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 47, 0, + 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 0, 51, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, + 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, + 0, 0, 0, 0, 84,114,101,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 50, 0, 0, + 0, 50, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 0, 0, 0, 40, 0, 0, 0, 24, 0, 0, 0, 47, 0, 0, 0, 42, 0, 0, 0, 51, + 0, 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 53, 0, 0, 0, 54, + 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 19, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/tree_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/user.loh b/iup/srclua5/loh/user.loh new file mode 100755 index 0000000..79e6b0d --- /dev/null +++ b/iup/srclua5/loh/user.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/user.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/user.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,117,115,101, +114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 17, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131, 69, 0, + 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, 0, 0,193,128, + 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0,117,115,101,114, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, 0, 0, 4, 9, + 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 14, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, + 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, + 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 85,115,101,114, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, + 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 14, + 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/user_be32.loh b/iup/srclua5/loh/user_be32.loh new file mode 100755 index 0000000..953c75d --- /dev/null +++ b/iup/srclua5/loh/user_be32.loh @@ -0,0 +1,36 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/user_be32.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/user_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,117,115,101, +114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 17, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 2, + 0, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, 64, 69, 0, 0, 0,128, 0, 2, +128,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 11, 4, 0, 0, 0, 5,110, +105, 99,107, 0, 4, 0, 0, 0, 5,117,115,101,114, 0, 4, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, + 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 1, 0, 4, 0, + 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 14, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32, +119,105,100,103,101,116, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 0, + 0, 0, 14, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0,133, 0,128, 0,157, 0, + 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 5, 85,115,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, + 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, + 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, + 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 16, + 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_be32.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/user_be64.loh b/iup/srclua5/loh/user_be64.loh new file mode 100755 index 0000000..a53b5c1 --- /dev/null +++ b/iup/srclua5/loh/user_be64.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/user_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/user_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,117,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,117,115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, + 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 85,115,101,114, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, + 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/user_le64.loh b/iup/srclua5/loh/user_le64.loh new file mode 100755 index 0000000..3a16a8e --- /dev/null +++ b/iup/srclua5/loh/user_le64.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/user_le64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/user_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,117,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,117,115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, + 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 85,115,101,114, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, + 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_le64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/user_le64w.loh b/iup/srclua5/loh/user_le64w.loh new file mode 100755 index 0000000..8357384 --- /dev/null +++ b/iup/srclua5/loh/user_le64w.loh @@ -0,0 +1,39 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/user_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/user_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,117,115,101,114, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 17, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131, 69, 0, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69, 64, 2, 0,128, 0, + 0, 0,193,128, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 11, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,117,115,101,114, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, + 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, + 97, 99,107, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 3, 4, + 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, + 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 85,115,101,114, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, + 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, + 7, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/user_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/val.loh b/iup/srclua5/loh/val.loh new file mode 100755 index 0000000..7eff35b --- /dev/null +++ b/iup/srclua5/loh/val.loh @@ -0,0 +1,41 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/val.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/val.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 9, 0, 0, 0, 64,118, 97,108, + 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 20, 0, 0, + 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, 65, +130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66,133, 9, 64, 0, +131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, 0, 92, 64, 0, + 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, 1, 30, 0,128, + 0, 15, 0, 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 4, 0, 0, 0, +118, 97,108, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111, +110, 0, 4, 2, 0, 0, 0,115, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, + 99,107, 0, 4, 13, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, + 0, 4, 2, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 98,117,116,116,111,110, 95, +112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0, 0, 0, 98,117,116,116,111,110, + 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 14, 0, 0, 0, 99,114,101, + 97,116,101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32, +119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, + 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, 0, 0,198, 64,192, 0,157, + 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, 0, 0, 4, 4, 0, 0, 0, + 86, 97,108, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, + 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/val.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/val_be32.loh b/iup/srclua5/loh/val_be32.loh new file mode 100755 index 0000000..3bb4c4f --- /dev/null +++ b/iup/srclua5/loh/val_be32.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/val_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/val_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 9, 64,118, 97,108, + 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, + 21, 0, 1, 64, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, 64, + 9, 0, 0,192, 74,131,194, 0, 73,132,194, 0, 73,133, 66, 0, 73,131, 0, 64, + 9,133,195, 0, 9, 0, 0, 0,100,134,128, 64, 9, 0, 3,128, 69, 0, 0, 0, +128, 1, 0, 64, 92, 0, 3,192, 69, 0, 0, 0,128, 0, 4, 0,193, 1,128, 64, + 92, 0,128, 0, 30, 0, 0, 0, 17, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, + 0, 0, 0, 4,118, 97,108, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, + 4, 0, 0, 0, 7, 87, 73, 68, 71, 69, 84, 0, 4, 0, 0, 0, 9, 99,114,101, + 97,116,105,111,110, 0, 4, 0, 0, 0, 2,115, 0, 4, 0, 0, 0, 9, 99, 97, +108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 13,109,111,117,115,101,109,111,118, +101, 95, 99, 98, 0, 4, 0, 0, 0, 2,100, 0, 4, 0, 0, 0, 16, 98,117,116, +116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 0, 0, 0, 18, 98,117, +116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, 4, 0, 0, 0, + 8,105,110, 99,108,117,100,101, 0, 4, 0, 0, 0, 9,105,117,112,118, 97,108, + 46,104, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101,110, +116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87,105, +100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97,115, +115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 18, 0, 2, 0, 4, 0, 0, + 0, 5, 0, 0, 0,133, 0,192, 64,198, 1, 0, 0,157, 0, 0, 0,158, 0,128, + 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 4, 86, 97,108, 0, 3, 63,240, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, + 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 97,114, +103, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, + 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, + 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 11, 0, + 0, 0, 20, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/val_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/val_be64.loh b/iup/srclua5/loh/val_be64.loh new file mode 100755 index 0000000..15ecb4c --- /dev/null +++ b/iup/srclua5/loh/val_be64.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/val_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/val_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 64,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0, +129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66, +133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, + 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, + 0, 0, 0, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 98,117,116, +116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 86, 97,108, 0, 3, 0, 0, 0, + 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, +116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/val_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/val_le64.loh b/iup/srclua5/loh/val_le64.loh new file mode 100755 index 0000000..5567d6f --- /dev/null +++ b/iup/srclua5/loh/val_le64.loh @@ -0,0 +1,47 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iupluacontrols51/val_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iupluacontrols51/val_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 64,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 21, 0, 0, 0, 10, 64, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0, +129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66, +133, 9, 64, 0,131, 9, 0,195,133,100, 0, 0, 0, 9, 64,128,134, 69,128, 3, + 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 3, 0,128, 0, 0, 0,193, 0, 4, + 0, 92, 64,128, 1, 30, 0,128, 0, 17, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, + 0, 0,110,105, 99,107, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0, + 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, + 13, 0, 0, 0, 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 0, 0, 0, + 0, 98,117,116,116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0, + 0, 0, 0, 0, 0, 0, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, + 95, 99, 98, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0,105,110, 99,108,117,100,101, + 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,105,117,112,118, 97,108, 46,104, 0, 4, + 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101,110, +116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115,116, +101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, 0, + 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, 0, + 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 86, 97,108, 0, 3, 0, 0, 0, 0, + 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, + 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, + 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 11, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iupluacontrols51/val_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/val_le64w.loh b/iup/srclua5/loh/val_le64w.loh new file mode 100755 index 0000000..f9c6e3f --- /dev/null +++ b/iup/srclua5/loh/val_le64w.loh @@ -0,0 +1,45 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/val_le64w.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/val_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 64,118, 97,108, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 4, 20, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0, +129, 9, 64, 65,130, 74,192, 0, 0, 73, 0,194,131, 73, 0,194,132, 73, 0, 66, +133, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,133, 69, 0, 3, 0,128, 0, 0, + 0, 92, 64, 0, 1, 69, 64, 3, 0,128, 0, 0, 0,193,128, 3, 0, 92, 64,128, + 1, 30, 0,128, 0, 15, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, + 99,107, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0,118, 97,108, 0, 4, 7, 0, 0, + 0, 0, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 7, 0, 0, 0, 0, 0, 0, + 0, 87, 73, 68, 71, 69, 84, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, + 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0,115, 0, 4, 9, 0, + 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 13, 0, 0, 0, + 0, 0, 0, 0,109,111,117,115,101,109,111,118,101, 95, 99, 98, 0, 4, 2, 0, + 0, 0, 0, 0, 0, 0,100, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 98,117,116, +116,111,110, 95,112,114,101,115,115, 95, 99, 98, 0, 4, 18, 0, 0, 0, 0, 0, + 0, 0, 98,117,116,116,111,110, 95,114,101,108,101, 97,115,101, 95, 99, 98, 0, + 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82,101,103,105,115, +116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0,105, +117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, 0, 0, 0, 0, +105,117,112, 32,119,105,100,103,101,116, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 4, 5, 0, 0, 0,133, + 0, 0, 0,198, 64,192, 0,157, 0, 0, 1,158, 0, 0, 0, 30, 0,128, 0, 2, + 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 86, 97,108, 0, 3, 0, 0, 0, + 0, 0, 0,240, 63, 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, + 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, + 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, + 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, +116,114,108, 0, 10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/val_le64w.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/vbox.loh b/iup/srclua5/loh/vbox.loh new file mode 100755 index 0000000..efc2bc0 --- /dev/null +++ b/iup/srclua5/loh/vbox.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/vbox.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/vbox.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,118, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 19, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131,100, 64, + 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,128, + 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0,128, 0, 12, 0, + 0, 0, 4, 5, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0,118, 98,111, +120, 0, 4, 7, 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, + 0, 0, 0, 97,112,112,101,110,100, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, + 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105, +100,103,101,116, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, + 0, 0, 2, 0, 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, + 0,156, 64,128, 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, +101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 17, 0, 0, 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, + 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, + 0, 0, 86, 98,111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 97,114,103, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, + 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, + 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, + 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, + 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/vbox_be32.loh b/iup/srclua5/loh/vbox_be32.loh new file mode 100755 index 0000000..44e3024 --- /dev/null +++ b/iup/srclua5/loh/vbox_be32.loh @@ -0,0 +1,43 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/vbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/vbox_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,118, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 19, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 0, + 64,100,132, 0, 64, 9, 0, 2, 64, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2, +128, 69, 0, 0, 0,128, 0, 2,192,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, + 0, 12, 4, 0, 0, 0, 5,110,105, 99,107, 0, 4, 0, 0, 0, 5,118, 98,111, +120, 0, 4, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66, + 79, 88, 0, 4, 0, 0, 0, 9, 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, + 0, 2, 45, 0, 4, 0, 0, 0, 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, + 0, 0, 7, 97,112,112,101,110,100, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103, +105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, + 83,101,116, 67,108, 97,115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105, +100,103,101,116, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 13, 0, 2, 0, 5, 0, 0, 0, 5, 0, 0, 0,133, 0, 0, 0,192, 0,128, 1, + 0, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, 0, 7, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, + 7,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, +101,108,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0, +133, 0,128, 0,157, 0, 0, 0,158, 0,128, 0, 30, 0, 0, 0, 1, 4, 0, 0, + 0, 5, 86, 98,111,120, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 97,114,103, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, 0, + 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, + 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, + 5, 99,116,114,108, 0, 0, 0, 0, 7, 0, 0, 0, 18, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/vbox_be64.loh b/iup/srclua5/loh/vbox_be64.loh new file mode 100755 index 0000000..92962ee --- /dev/null +++ b/iup/srclua5/loh/vbox_be64.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/vbox_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/vbox_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,118, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0, +128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, +112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, + 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, + 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 86, 98, +111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, + 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/vbox_le64.loh b/iup/srclua5/loh/vbox_le64.loh new file mode 100755 index 0000000..b10314c --- /dev/null +++ b/iup/srclua5/loh/vbox_le64.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/vbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/vbox_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,118, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0, +128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, +112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, + 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, + 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 86, 98, +111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, + 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/vbox_le64w.loh b/iup/srclua5/loh/vbox_le64w.loh new file mode 100755 index 0000000..c3a3f70 --- /dev/null +++ b/iup/srclua5/loh/vbox_le64w.loh @@ -0,0 +1,48 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/vbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/vbox_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,118, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 19, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132, 69, 64, 2, 0,128, 0, 0, 0, 92, 64, + 0, 1, 69,128, 2, 0,128, 0, 0, 0,193,192, 2, 0, 92, 64,128, 1, 30, 0, +128, 0, 12, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, + 4, 5, 0, 0, 0, 0, 0, 0, 0,118, 98,111,120, 0, 4, 7, 0, 0, 0, 0, + 0, 0, 0,112, 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, + 79, 88, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, + 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97, +112,112,101,110,100, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116, +101, 69,108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117, +112, 82,101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, + 0, 0, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, + 0, 0, 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, 0, + 5, 5, 0, 0, 0,133, 0, 0, 0,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, + 1, 30, 0,128, 0, 1, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112, +112,101,110,100, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, + 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 17, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0,133, 0, 0, 0,157, 0,128, 0,158, 0, 0, + 0, 30, 0,128, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 86, 98, +111,120, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, + 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99, +108, 97,115,115, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 97,114,103, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, + 0, 8, 0, 0, 0, 8, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 17, 0, 0, + 0, 15, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/vbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/zbox.loh b/iup/srclua5/loh/zbox.loh new file mode 100755 index 0000000..ad51b1c --- /dev/null +++ b/iup/srclua5/loh/zbox.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/zbox.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/zbox.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 4, 4, 8, 0, 10, 0, 0, 0, 64,122, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 22, 0, + 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, 0,129, 9, 64, + 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64,128,131,100, 64, + 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64,128,132, 69,128, + 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, 0, 0,193, 0, + 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, 0, 0, 0,110, +105, 99,107, 0, 4, 5, 0, 0, 0,122, 98,111,120, 0, 4, 7, 0, 0, 0,112, + 97,114,101,110,116, 0, 4, 4, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 45, 0, 4, 9, 0, 0, + 0, 99, 97,108,108, 98, 97, 99,107, 0, 4, 7, 0, 0, 0, 97,112,112,101,110, +100, 0, 4, 17, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97, +109,101,115, 0, 4, 14, 0, 0, 0, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 18, 0, 0, 0,105,117,112, 82,101,103,105,115,116,101,114, 87, +105,100,103,101,116, 0, 4, 12, 0, 0, 0,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 11, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8, + 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192, + 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, + 16, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, + 4, 7, 0, 0, 0, 65,112,112,101,110,100, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0,101, +108,101,109, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0, + 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128, +133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127, + 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0, + 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 4, 0, + 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0, 0, 0, 2, 0, 0, 0,105, 0, + 3, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 29, 0, 0, 0, 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1, +192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0, + 30, 0,128, 0, 2, 0, 0, 0, 4, 17, 0, 0, 0, 83,101,116, 67,104,105,108, +100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 90, 98,111,120, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 99,108, 97,115,115, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 4, 0, 0, 0, 97,114,103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, + 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, + 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, + 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29, + 0, 0, 0, 29, 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, + 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/zbox_be32.loh b/iup/srclua5/loh/zbox_be32.loh new file mode 100755 index 0000000..9c39f71 --- /dev/null +++ b/iup/srclua5/loh/zbox_be32.loh @@ -0,0 +1,61 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/zbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/zbox_be32.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 64,122, 98,111, +120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 22, 0, 1, 0, 10,128, 64, 64, 9, 0, 0,192, 69,129, 0, 64, 9,130, 65, + 64, 9, 0, 0, 0, 74,131, 0, 64, 9, 0, 0, 0,100,131,128, 64, 9, 0, 0, + 64,100,132, 0, 64, 9, 0, 0,128,100, 0, 0, 0, 0,132,128, 64, 9, 0, 2, +128, 69, 0, 0, 0,128, 1, 0, 64, 92, 0, 2,192, 69, 0, 0, 0,128, 0, 3, + 0,193, 1,128, 64, 92, 0,128, 0, 30, 0, 0, 0, 13, 4, 0, 0, 0, 5,110, +105, 99,107, 0, 4, 0, 0, 0, 5,122, 98,111,120, 0, 4, 0, 0, 0, 7,112, + 97,114,101,110,116, 0, 4, 0, 0, 0, 4, 66, 79, 88, 0, 4, 0, 0, 0, 9, + 99,114,101, 97,116,105,111,110, 0, 4, 0, 0, 0, 2, 45, 0, 4, 0, 0, 0, + 9, 99, 97,108,108, 98, 97, 99,107, 0, 4, 0, 0, 0, 7, 97,112,112,101,110, +100, 0, 4, 0, 0, 0, 17, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97, +109,101,115, 0, 4, 0, 0, 0, 14, 99,114,101, 97,116,101, 69,108,101,109,101, +110,116, 0, 4, 0, 0, 0, 18,105,117,112, 82,101,103,105,115,116,101,114, 87, +105,100,103,101,116, 0, 4, 0, 0, 0, 12,105,117,112, 83,101,116, 67,108, 97, +115,115, 0, 4, 0, 0, 0, 11,105,117,112, 32,119,105,100,103,101,116, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 2, 0, 5, 0, + 0, 0, 8, 0, 0, 0,133, 0,128, 0,192, 1, 0, 64,156, 0, 0, 64,133, 0, + 0, 0,192, 0,128, 1, 0, 1,128, 64,156, 0,128, 0, 30, 0, 0, 0, 2, 4, + 0, 0, 0, 16,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, + 4, 0, 0, 0, 7, 65,112,112,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, + 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 7, +104, 97,110,100,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5,101, +108,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 24, 0, 1, 0, 4, 0, 0, 0, 12, 0, 0, 0, 26, +128, 2, 0, 22, 0, 0, 0, 65, 0, 0, 64,134, 0, 0, 0,154,128, 1, 0, 22, + 0, 0, 64,133, 0, 0, 64,198, 1, 0, 64,156, 0,192, 0, 76,127,253,192, 22, + 0,128, 0, 30, 0, 0, 0, 2, 3, 63,240, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 16,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109,101, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, + 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, + 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, + 0, 4,111, 98,106, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 2,105, 0, + 0, 0, 0, 3, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 29, 1, 2, 0, 4, 0, 0, 0, 8, 0, 0, 0,132, 1, 64, 0,134, + 0,128, 0,192, 1, 0, 64,156, 0, 0, 64,133, 0,128, 0,157, 0, 0, 0,158, + 0,128, 0, 30, 0, 0, 0, 2, 4, 0, 0, 0, 17, 83,101,116, 67,104,105,108, +100,114,101,110, 78, 97,109,101,115, 0, 4, 0, 0, 0, 5, 90, 98,111,120, 0, + 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 27, + 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, + 0, 0, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, + 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, + 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, + 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, + 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 5, 99,116,114,108, 0, 0, 0, 0, 7, + 0, 0, 0, 21, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_be32.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/zbox_be64.loh b/iup/srclua5/loh/zbox_be64.loh new file mode 100755 index 0000000..df7ee45 --- /dev/null +++ b/iup/srclua5/loh/zbox_be64.loh @@ -0,0 +1,67 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/zbox_be64.lo")==0) lua_call(L, 0, 0); +*/ +/* ../obj/iuplua51/zbox_be64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,122, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64, +128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, + 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,122, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,100, 0, 4, 17, + 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97, +109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8, + 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192, + 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, + 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0, + 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128, +133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127, + 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0, + 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109, +101, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 3, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 29, 0, 0, 0, + 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,192, 0,128, 0, +156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108, +100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 90, + 98,111,120, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, + 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114, +103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 14, + 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_be64.lo")==0) lua_call(L, 0, 0); +} diff --git a/iup/srclua5/loh/zbox_le64.loh b/iup/srclua5/loh/zbox_le64.loh new file mode 100755 index 0000000..138b8c7 --- /dev/null +++ b/iup/srclua5/loh/zbox_le64.loh @@ -0,0 +1,67 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/zbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/zbox_le64.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,122, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64, +128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, + 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,122, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,100, 0, 4, 17, + 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97, +109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8, + 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192, + 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, + 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0, + 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128, +133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127, + 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0, + 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109, +101, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 3, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 29, 0, 0, 0, + 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,192, 0,128, 0, +156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108, +100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 90, + 98,111,120, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, + 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114, +103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 14, + 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_le64.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/loh/zbox_le64w.loh b/iup/srclua5/loh/zbox_le64w.loh new file mode 100755 index 0000000..0a80b36 --- /dev/null +++ b/iup/srclua5/loh/zbox_le64w.loh @@ -0,0 +1,67 @@ +/* code automatically generated by bin2c -- DO NOT EDIT */ +{ +/* #include'ing this file in a C program is equivalent to calling + if (luaL_loadfile(L,"../obj/iuplua51/zbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +*/ +/* ../obj/iuplua51/zbox_le64w.lo */ +static const unsigned char B1[]={ + 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 64,122, 98,111,120, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 4, 22, 0, 0, 0, 10, 0, 1, 0, 9, 64, 64,128, 69,192, 0, 0, 9, 64, + 0,129, 9, 64, 65,130, 74, 0, 0, 0, 9, 64, 0,131,100, 0, 0, 0, 9, 64, +128,131,100, 64, 0, 0, 9, 64, 0,132,100,128, 0, 0, 0, 0, 0, 0, 9, 64, +128,132, 69,128, 2, 0,128, 0, 0, 0, 92, 64, 0, 1, 69,192, 2, 0,128, 0, + 0, 0,193, 0, 3, 0, 92, 64,128, 1, 30, 0,128, 0, 13, 0, 0, 0, 4, 5, + 0, 0, 0, 0, 0, 0, 0,110,105, 99,107, 0, 4, 5, 0, 0, 0, 0, 0, 0, + 0,122, 98,111,120, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0,112, 97,114,101,110, +116, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 66, 79, 88, 0, 4, 9, 0, 0, 0, + 0, 0, 0, 0, 99,114,101, 97,116,105,111,110, 0, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 99, 97,108,108, 98, 97, 99, +107, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 97,112,112,101,110,100, 0, 4, 17, + 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108,100,114,101,110, 78, 97, +109,101,115, 0, 4, 14, 0, 0, 0, 0, 0, 0, 0, 99,114,101, 97,116,101, 69, +108,101,109,101,110,116, 0, 4, 18, 0, 0, 0, 0, 0, 0, 0,105,117,112, 82, +101,103,105,115,116,101,114, 87,105,100,103,101,116, 0, 4, 12, 0, 0, 0, 0, + 0, 0, 0,105,117,112, 83,101,116, 67,108, 97,115,115, 0, 4, 11, 0, 0, 0, + 0, 0, 0, 0,105,117,112, 32,119,105,100,103,101,116, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0, 0, 2, 0, 5, 8, + 0, 0, 0,133, 0, 0, 0,192, 0,128, 0,156, 64, 0, 1,133, 64, 0, 0,192, + 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, 30, 0,128, 0, 2, 0, 0, 0, 4, + 16, 0, 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, + 97,109,101, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101,110,100, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, + 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,110,100,108,101, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,101,108,101,109, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 24, 0, 0, 0, 0, 1, 0, 4, 12, 0, 0, 0, 26, 0, 0, 0, + 22, 0, 2,128, 65, 0, 0, 0,134, 64, 0, 0,154, 0, 0, 0, 22, 0, 1,128, +133, 64, 0, 0,198, 64, 0, 0,156, 64, 0, 1, 76, 0,192, 0, 22,192,253,127, + 30, 0,128, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,240, 63, 4, 16, 0, + 0, 0, 0, 0, 0, 0,105,104, 97,110,100,108,101, 95,115,101,116,110, 97,109, +101, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, + 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 2, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,111, 98,106, 0, 0, 0, 0, 0, 11, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,105, 0, 3, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 29, 0, 0, 0, + 1, 2, 0, 4, 8, 0, 0, 0,132, 0, 0, 0,134, 0, 64, 1,192, 0,128, 0, +156, 64, 0, 1,133, 64, 0, 0,157, 0,128, 0,158, 0, 0, 0, 30, 0,128, 0, + 2, 0, 0, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 67,104,105,108, +100,114,101,110, 78, 97,109,101,115, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 90, + 98,111,120, 0, 0, 0, 0, 0, 8, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, + 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, + 29, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 99,108, 97,115, +115, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 97,114, +103, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 99,116,114,108, 0, 22, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 14, + 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 29, 0, 0, 0, 29, + 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, + 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 1, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99,116,114,108, 0, 7, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, +}; + + if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"../obj/iuplua51/zbox_le64w.lo")==0) lua_pcall(L, 0, 0, 0); +} diff --git a/iup/srclua5/make_uname b/iup/srclua5/make_uname new file mode 100755 index 0000000..4e01bd9 --- /dev/null +++ b/iup/srclua5/make_uname @@ -0,0 +1,9 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupcd $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupcontrols $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iup_pplot $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupgl $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupim $2 $3 $4 $5 $6 $7 $8 +tecmake $1 MF=iupimglib $2 $3 $4 $5 $6 $7 $8 diff --git a/iup/srclua5/make_uname.bat b/iup/srclua5/make_uname.bat new file mode 100755 index 0000000..ecf9de1 --- /dev/null +++ b/iup/srclua5/make_uname.bat @@ -0,0 +1,11 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupcd" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupcontrols" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iup_pplot" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupgl" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupim" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupimglib" %2 %3 %4 %5 %6 %7 %8 +call tecmake %1 "MF=iupole" %2 %3 %4 %5 %6 %7 %8 diff --git a/iup/srclua5/matrix.lua b/iup/srclua5/matrix.lua new file mode 100755 index 0000000..81aa732 --- /dev/null +++ b/iup/srclua5/matrix.lua @@ -0,0 +1,46 @@ +------------------------------------------------------------------------------ +-- Matrix class +------------------------------------------------------------------------------ +local ctrl = { + nick = "matrix", + parent = WIDGET, + creation = "-", + callback = { + action_cb = "nnnns", + click_cb = "nns", + release_cb = "nns", + drop_cb = "inn", + dropcheck_cb = "nn", + draw_cb = "nnnnnnn", -- fake definitions to be replaced by matrixfuncs module + dropselect_cb = "nnisnn", + edition_cb = "nnnn", + enteritem_cb = "nn", + leaveitem_cb = "nn", + mousemove_cb = "nn", + scrolltop_cb = "nn", + fgcolor_cb = "nn", -- fake definitions to be replaced by matrixfuncs module + bgcolor_cb = "nn", + font_cb = {"nn", ret = "s"}, -- ret is return type + value_cb = {"nn", ret = "s"}, -- ret is return type + value_edit_cb = "nns", + mark_cb = "nn", + markedit_cb = "nnn", + }, + include = "iupcontrols.h", + extrafuncs = 1, +} + +function ctrl.createElement(class, arg) + return Matrix(arg.action) +end + +function ctrl.setcell(handle, l, c, val) + SetAttribute(handle,l..":"..c,val) +end + +function ctrl.getcell(handle, l, c) + return GetAttribute(handle,l..":"..c) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/menu.lua b/iup/srclua5/menu.lua new file mode 100755 index 0000000..89cd241 --- /dev/null +++ b/iup/srclua5/menu.lua @@ -0,0 +1,55 @@ +------------------------------------------------------------------------------ +-- Menu class +------------------------------------------------------------------------------ +local ctrl = { + nick = "menu", + parent = BOX, + creation = "-", + callback = { + open_cb = "", + menuclose_cb = "", + } +} + +function ctrl.popup(handle, x, y) + Popup(handle, x, y) +end + +function ctrl.append(handle, elem) + Append(handle, elem) +end + +function ctrl.createElement(class, arg) + local n = #arg + for i=1,n do + if type(arg[i]) == "table" then + itemarg = {} + for u,v in pairs(arg[i]) do + if type(u) ~= "number" then + itemarg[u] = v + end + end + if type(arg[i][1]) == "string" and (type(arg[i][2]) == "function" or type(arg[i][2]) == "string") then + itemarg.title = arg[i][1] + itemarg.action = arg[i][2] + arg[i] = item(itemarg) + elseif type(arg[i][1]) == "string" and type(arg[i][2]) == "userdata" then + itemarg[1] = arg[i][2] + itemarg.title = arg[i][1] + arg[i] = submenu(itemarg) + end + end + end + return Menu() +end + +function ctrl.showxy(handle, x, y) + return ShowXY(handle, x, y) +end + +function ctrl.destroy(handle) + return Destroy(handle) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/messagedlg.lua b/iup/srclua5/messagedlg.lua new file mode 100755 index 0000000..e81eede --- /dev/null +++ b/iup/srclua5/messagedlg.lua @@ -0,0 +1,26 @@ +------------------------------------------------------------------------------ +-- MessageDlg class +------------------------------------------------------------------------------ +local ctrl = { + nick = "messagedlg", + parent = WIDGET, + creation = "", + funcname = "MessageDlg", + callback = {} +} + +function ctrl.popup(handle, x, y) + Popup(handle,x,y) +end + +function ctrl.destroy(handle) + return Destroy(handle) +end + +function ctrl.createElement(class, arg) + return MessageDlg() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") + diff --git a/iup/srclua5/multiline.lua b/iup/srclua5/multiline.lua new file mode 100755 index 0000000..9ae766e --- /dev/null +++ b/iup/srclua5/multiline.lua @@ -0,0 +1,19 @@ +------------------------------------------------------------------------------ +-- Multiline class +------------------------------------------------------------------------------ +local ctrl = { + nick = "multiline", + parent = WIDGET, + creation = "-", + callback = { + action = "ns", + }, + funcname = "MultiLine", +} + +function ctrl.createElement(class, arg) + return MultiLine() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/normalizer.lua b/iup/srclua5/normalizer.lua new file mode 100755 index 0000000..201aab0 --- /dev/null +++ b/iup/srclua5/normalizer.lua @@ -0,0 +1,28 @@ + +------------------------------------------------------------------------------ +-- Normalizer class +------------------------------------------------------------------------------ +local ctrl = { + nick = "normalizer", + parent = WIDGET, + creation = "-", + callback = {} +} + +function ctrl.setAttributes(object, arg) + local handle = rawget(object, "handle") + local n = #arg + for i = 1, n do + if iupGetClass(arg[i]) == "iup handle" then + object.addcontrol = arg[i] + end + end + WIDGET.setAttributes(object, arg) +end + +function ctrl.createElement(class, arg) + return Normalizer() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/olecontrol.lua b/iup/srclua5/olecontrol.lua new file mode 100755 index 0000000..902977b --- /dev/null +++ b/iup/srclua5/olecontrol.lua @@ -0,0 +1,54 @@ +------------------------------------------------------------------------------ +-- OleControl class +------------------------------------------------------------------------------ +local ctrl = { + nick = "olecontrol", + parent = WIDGET, + creation = "s", + funcname = "OleControl", + callback = {}, + include = "iupole.h", + extracode = [[ +int iupolelua_open(lua_State* L) +{ + if (iuplua_opencall_internal(L)) + IupOleControlOpen(); + + iuplua_changeEnv(L); + iupolecontrollua_open(L); + iuplua_returnEnv(L); + return 0; +} + +/* obligatory to use require"iupluaole" */ +int luaopen_iupluaole(lua_State* L) +{ + return iupolelua_open(L); +} + +/* obligatory to use require"iupluaole51" */ +int luaopen_iupluaole51(lua_State* L) +{ + return iupolelua_open(L); +} + +]] +} + +function ctrl.createElement(class, arg) + return OleControl(arg[1]) +end + +function ctrl.CreateLuaCOM(handle) + -- if luacom is loaded, use it to access methods and properties + -- of the control + if luacom then + local punk = handle.iunknown + if punk then + handle.com = luacom.CreateLuaCOM(luacom.ImportIUnknown(punk)) + end + end +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/pplot.lua b/iup/srclua5/pplot.lua new file mode 100755 index 0000000..5d6a2f4 --- /dev/null +++ b/iup/srclua5/pplot.lua @@ -0,0 +1,31 @@ +------------------------------------------------------------------------------ +-- PPlot class +------------------------------------------------------------------------------ +local ctrl = { + nick = "pplot", + parent = WIDGET, + creation = "", + funcname = "PPlot", + callback = { + select_cb = "nnffn", + selectbegin_cb = "", + selectend_cb = "", + predraw_cb = "n", -- fake definitions to be replaced by pplotfuncs module + postdraw_cb = "n", -- fake definitions to be replaced by pplotfuncs module + edit_cb = "nnffff", -- fake definitions to be replaced by pplotfuncs module + editbegin_cb = "", + editend_cb = "", + delete_cb = "nnff", + deletebegin_cb = "", + deleteend_cb = "", + }, + include = "iup_pplot.h", + extrafuncs = 1, +} + +function ctrl.createElement(class, arg) + return PPlot(arg.action) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/progressbar.lua b/iup/srclua5/progressbar.lua new file mode 100755 index 0000000..16b4a09 --- /dev/null +++ b/iup/srclua5/progressbar.lua @@ -0,0 +1,17 @@ +------------------------------------------------------------------------------ +-- ProgressBar class +------------------------------------------------------------------------------ +local ctrl = { + nick = "progressbar", + parent = WIDGET, + creation = "", + funcname = "ProgressBar", + callback = {} +} + +function ctrl.createElement(class, arg) + return ProgressBar() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/radio.lua b/iup/srclua5/radio.lua new file mode 100755 index 0000000..1cdd3a6 --- /dev/null +++ b/iup/srclua5/radio.lua @@ -0,0 +1,33 @@ +------------------------------------------------------------------------------ +-- Radio class +------------------------------------------------------------------------------ +local ctrl = { + nick = "radio", + parent = WIDGET, + creation = "i", + callback = {} +} + +function ctrl.CreateChildrenNames(obj) + if obj then + if obj.parent.parent == BOX then + local i = 1 + while obj[i] do + ctrl.CreateChildrenNames (obj[i]) + i = i+1 + end + elseif obj.parent == IUPFRAME then + ctrl.CreateChildrenNames (obj[1]) + else + ihandle_setname(obj) + end + end +end + +function ctrl.createElement(class, arg) + ctrl.CreateChildrenNames(arg[1]) + return Radio(arg[1]) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/sbox.lua b/iup/srclua5/sbox.lua new file mode 100755 index 0000000..9ee63ba --- /dev/null +++ b/iup/srclua5/sbox.lua @@ -0,0 +1,16 @@ +------------------------------------------------------------------------------ +-- Sbox class +------------------------------------------------------------------------------ +local ctrl = { + nick = "sbox", + parent = WIDGET, + creation = "i", + callback = {} +} + +function ctrl.createElement(class, arg) + return Sbox(arg[1]) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/separator.lua b/iup/srclua5/separator.lua new file mode 100755 index 0000000..1841d6a --- /dev/null +++ b/iup/srclua5/separator.lua @@ -0,0 +1,16 @@ +------------------------------------------------------------------------------ +-- Separator class +------------------------------------------------------------------------------ +local ctrl = { + nick = "separator", + parent = WIDGET, + creation = "", + callback = {} +} + +function ctrl.createElement(class, arg) + return Separator() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/spin.lua b/iup/srclua5/spin.lua new file mode 100755 index 0000000..b6e2044 --- /dev/null +++ b/iup/srclua5/spin.lua @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------ +-- Spin class +------------------------------------------------------------------------------ +local ctrl = { + nick = "spin", + parent = WIDGET, + creation = "", + callback = { + spin_cb = "n", + }, +} + +function ctrl.createElement(class, arg) + return Spin(arg.action) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/spinbox.lua b/iup/srclua5/spinbox.lua new file mode 100755 index 0000000..c671e6a --- /dev/null +++ b/iup/srclua5/spinbox.lua @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------ +-- SpinBox class +------------------------------------------------------------------------------ +local ctrl = { + nick = "spinbox", + parent = WIDGET, + creation = "i", + callback = { + spin_cb = "n", + }, +} + +function ctrl.createElement(class, arg) + return Spinbox(arg[1]) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/submenu.lua b/iup/srclua5/submenu.lua new file mode 100755 index 0000000..5dc76d4 --- /dev/null +++ b/iup/srclua5/submenu.lua @@ -0,0 +1,19 @@ +------------------------------------------------------------------------------ +-- Submenu class +------------------------------------------------------------------------------ +local ctrl = { + nick = "submenu", + parent = WIDGET, + creation = "Si", + callback = { +-- open_cb = "", -- already registered by the menu +-- menuclose_cb = "", -- already registered by the menu + } +} + +function ctrl.createElement(class, arg) + return Submenu(arg.title, arg[1]) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/tabs.lua b/iup/srclua5/tabs.lua new file mode 100755 index 0000000..3dc69bb --- /dev/null +++ b/iup/srclua5/tabs.lua @@ -0,0 +1,31 @@ +------------------------------------------------------------------------------ +-- Tabs class +------------------------------------------------------------------------------ +local ctrl = { + nick = "tabs", + parent = WIDGET, + creation = "v", + callback = { + tabchange_cb = "ii", + }, + funcname = "Tabsv", + createfunc = [[ +static int Tabsv(lua_State *L) +{ + Ihandle **hlist = iuplua_checkihandle_array(L, 1); + Ihandle *h = IupTabsv(hlist); + iuplua_plugstate(L, h); + iuplua_pushihandle_raw(L, h); + free(hlist); + return 1; +} + +]], +} + +function ctrl.createElement(class, arg) + return Tabsv(arg) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/text.lua b/iup/srclua5/text.lua new file mode 100755 index 0000000..e01dab5 --- /dev/null +++ b/iup/srclua5/text.lua @@ -0,0 +1,20 @@ +------------------------------------------------------------------------------ +-- Text class +------------------------------------------------------------------------------ +local ctrl = { + nick = "text", + parent = WIDGET, + creation = "-", + callback = { + action = "ns", + caret_cb = "nnn", + valuechanged_cb = "", -- used by many other controls + } +} + +function ctrl.createElement(class, arg) + return Text() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/timer.lua b/iup/srclua5/timer.lua new file mode 100755 index 0000000..53cda70 --- /dev/null +++ b/iup/srclua5/timer.lua @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------ +-- Timer class +------------------------------------------------------------------------------ +local ctrl = { + nick = "timer", + parent = WIDGET, + creation = "", + callback = { + action_cb = "", + }, +} + +function ctrl.createElement(class, arg) + return Timer() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/toggle.lua b/iup/srclua5/toggle.lua new file mode 100755 index 0000000..da9380b --- /dev/null +++ b/iup/srclua5/toggle.lua @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------ +-- Toggle class +------------------------------------------------------------------------------ +local ctrl = { + nick = "toggle", + parent = WIDGET, + creation = "S-", + callback = { + action = "n", + } +} + +function ctrl.createElement(class, arg) + return Toggle(arg.title) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/tree.lua b/iup/srclua5/tree.lua new file mode 100755 index 0000000..bd8daf7 --- /dev/null +++ b/iup/srclua5/tree.lua @@ -0,0 +1,76 @@ +------------------------------------------------------------------------------ +-- Tree class +------------------------------------------------------------------------------ +local ctrl = { + nick = "tree", + parent = WIDGET, + creation = "", + callback = { + selection_cb = "nn", + multiselection_cb = "nn", -- fake definition to be replaced by treefuncs module + branchopen_cb = "n", + branchclose_cb = "n", + executeleaf_cb = "n", + renamenode_cb = "ns", + noderemoved_cb = "ns", -- fake definition to be replaced by treefuncs module + rename_cb = "ns", + showrename_cb = "n", + rightclick_cb = "n", + dragdrop_cb = "nnnn", + }, + extrafuncs = 1, +} + +local function TreeSetAttributeHandle(handle, name, value) + if iupGetClass(value) == "iup handle" then value = ihandle_setname(value) end + SetAttribute(handle, name, value) +end + +function TreeSetNodeAttrib(handle, node, id) + if node.color then SetAttribute(handle, "COLOR"..id, node.color) end + if node.state then SetAttribute(handle, "STATE"..id, node.state) end + if node.titlefont then SetAttribute(handle, "TITLEFONT"..id, node.titlefont) end + if node.marked then SetAttribute(handle, "MARKED"..id, node.marked) end + if node.image then TreeSetAttributeHandle(handle, "IMAGE"..id, node.image) end + if node.imageexpanded then TreeSetAttributeHandle(handle, "IMAGEEXPANDED"..id, node.imageexpanded) end + if node.userid then TreeSetUserId(handle, id, node.userid) end +end + +function TreeSetValueRec(handle, t, id) + if t == nil then return end + local cont = #t + while cont >= 0 do + local node = t[cont] + if type(node) == "table" then + if node.branchname then + SetAttribute(handle, "ADDBRANCH"..id, node.branchname) + TreeSetNodeAttrib(handle, node, id+1) + TreeSetValueRec(handle, node, id+1) + elseif node.leafname then + SetAttribute(handle, "ADDLEAF"..id, node.leafname) + TreeSetNodeAttrib(handle, node, id+1) + end + else + if node then + SetAttribute(handle, "ADDLEAF"..id, node) + end + end + cont = cont - 1 + end +end + +function TreeSetValue(handle, t, id) + if (not id) then + id = 0 -- default is the root + if t.branchname then SetAttribute(handle, "TITLE0", t.branchname) end + TreeSetNodeAttrib(handle, t, 0) + end + TreeSetValueRec(handle, t, id) +end + +function ctrl.createElement(class, arg) + return Tree() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/user.lua b/iup/srclua5/user.lua new file mode 100755 index 0000000..c202be3 --- /dev/null +++ b/iup/srclua5/user.lua @@ -0,0 +1,17 @@ + +------------------------------------------------------------------------------ +-- User class +------------------------------------------------------------------------------ +local ctrl = { + nick = "user", + parent = WIDGET, + creation = "", + callback = {} +} + +function ctrl.createElement(class, arg) + return User() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/val.lua b/iup/srclua5/val.lua new file mode 100755 index 0000000..ba94255 --- /dev/null +++ b/iup/srclua5/val.lua @@ -0,0 +1,20 @@ +------------------------------------------------------------------------------ +-- Val class +------------------------------------------------------------------------------ +local ctrl = { + nick = "val", + parent = WIDGET, + creation = "s", + callback = { + mousemove_cb = "d", + button_press_cb = "d", + button_release_cb = "d", + }, +} + +function ctrl.createElement(class, arg) + return Val(arg[1]) +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/vbox.lua b/iup/srclua5/vbox.lua new file mode 100755 index 0000000..b98984c --- /dev/null +++ b/iup/srclua5/vbox.lua @@ -0,0 +1,20 @@ +------------------------------------------------------------------------------ +-- VBox class +------------------------------------------------------------------------------ +local ctrl = { + nick = "vbox", + parent = BOX, + creation = "-", + callback = {} +} + +function ctrl.append (handle, elem) + Append(handle, elem) +end + +function ctrl.createElement(class, arg) + return Vbox() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srclua5/zbox.lua b/iup/srclua5/zbox.lua new file mode 100755 index 0000000..579c00b --- /dev/null +++ b/iup/srclua5/zbox.lua @@ -0,0 +1,32 @@ +------------------------------------------------------------------------------ +-- ZBox class +------------------------------------------------------------------------------ +local ctrl = { + nick = "zbox", + parent = BOX, + creation = "-", + callback = {} +} + +function ctrl.append (handle, elem) + ihandle_setname(elem) + Append(handle, elem) +end + +function ctrl.SetChildrenNames(obj) + if obj then + local i = 1 + while obj[i] do + ihandle_setname(obj[i]) + i = i+1 + end + end +end + +function ctrl.createElement(class, arg) + ctrl.SetChildrenNames(arg) + return Zbox() +end + +iupRegisterWidget(ctrl) +iupSetClass(ctrl, "iup widget") diff --git a/iup/srcole/config.mak b/iup/srcole/config.mak new file mode 100755 index 0000000..af0ef50 --- /dev/null +++ b/iup/srcole/config.mak @@ -0,0 +1,17 @@ +PROJNAME = iup +LIBNAME = iupole +OPT = YES + +INCLUDES = ../include ../src +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup + +SRC = iup_olecontrol.cpp \ + tLegacy.cpp \ + tAmbientProperties.cpp \ + tDispatch.cpp \ + tOleClientSite.cpp \ + tOleControlSite.cpp \ + tOleHandler.cpp \ + tOleInPlaceFrame.cpp \ + tOleInPlaceSite.cpp diff --git a/iup/srcole/iup_olecontrol.cpp b/iup/srcole/iup_olecontrol.cpp new file mode 100755 index 0000000..20431c5 --- /dev/null +++ b/iup/srcole/iup_olecontrol.cpp @@ -0,0 +1,200 @@ +/* + * iupolectl.cpp + * + * CPI que implementa um container OLE + */ + +#include "tOleHandler.h" + +#include +#include +#include +#include + +#include "iup.h" +#include "iupole.h" + +#include "iup_object.h" +#include "iup_register.h" +#include "iup_attrib.h" +#include "iup_stdcontrols.h" +#include "iup_str.h" +#include "iup_layout.h" + + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + + tOleHandler* olehandler; +}; + +static char* iOleControlGetDesignModeAttrib(Ihandle* ih) +{ + if (ih->data->olehandler->m_ambientProp.getDesignMode()) + return "YES"; + else + return "NO"; +} + +static int iOleControlSetDesignModeAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + ih->data->olehandler->m_ambientProp.setDesignMode(true, true); + else + ih->data->olehandler->m_ambientProp.setDesignMode(false, true); + return 1; +} + +static int iOleControlSetDesignModeDontNotifyAttrib(Ihandle* ih, const char* value) +{ + if (iupStrBoolean(value)) + ih->data->olehandler->m_ambientProp.setDesignMode(true, false); + else + ih->data->olehandler->m_ambientProp.setDesignMode(false, false); + return 1; +} + +static char* iOleControlGetIUnknownAttrib(Ihandle* ih) +{ + IUnknown *punk = NULL; + ih->data->olehandler->ObjectGet(&punk); + return (char*)punk; +} + +static int iOleControlResize_CB(Ihandle *ih) +{ + if (!ih->data->olehandler->m_hWnd) + return IUP_DEFAULT; + + ih->data->olehandler->OnShow(); + + return IUP_DEFAULT; +} + +static void iOleControlComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) +{ + long natural_w = 0, natural_h = 0; + (void)expand; /* unset if not a container */ + + ih->data->olehandler->GetNaturalSize(&natural_w, &natural_h); + + *w = natural_w; + *h = natural_h; +} + +static void iOleControlLayoutUpdateMethod(Ihandle* ih) +{ + SIZEL szl; + szl.cx = ih->currentwidth; + szl.cy = ih->currentheight; + ih->data->olehandler->SizeSet(&szl, TRUE, TRUE); + ih->data->olehandler->UpdateInPlaceObjectRects(NULL, TRUE); +} + +static int iOleControlMapMethod(Ihandle* ih) +{ + /* reset the canvas BGCOLOR */ + IupSetAttribute(ih, "BACKGROUND", NULL); + + ih->data->olehandler->m_hWnd = ih->handle; + + return IUP_NOERROR; +} + +static int iOleControlCreateMethod(Ihandle* ih, void **params) +{ + CLSID clsid; + + if (!params || !(params[0])) + return IUP_ERROR; + + char *progID = (char*)params[0]; + + /* free the data alocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* change the IupCanvas default values */ + iupAttribSetStr(ih, "BORDER", "NO"); + + /* IupCanvas callbacks */ + IupSetCallback(ih,"RESIZE_CB",(Icallback)iOleControlResize_CB); + + size_t len = strlen(progID)+1; + wchar_t* wcProgId = (wchar_t*) malloc(len * sizeof(wchar_t)); + mbstowcs(wcProgId, progID, len); + HRESULT hr = CLSIDFromProgID(wcProgId, &clsid); + free(wcProgId); + if(FAILED(hr)) + return IUP_ERROR; + + ih->data->olehandler = new tOleHandler(); + if (ih->data->olehandler->Create(&clsid) == CREATE_FAILED) + return IUP_ERROR; + + return IUP_NOERROR; +} + +static void iOleControlDestroyMethod(Ihandle* ih) +{ + ih->data->olehandler->Close(true); + delete ih->data->olehandler; +} + +static void iOleControlRelease(Iclass* ic) +{ + (void)ic; + OleUninitialize(); +} + +static Iclass* iOleControlGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "olecontrol"; + ic->format = "s"; /* one string */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + + /* Class functions */ + ic->Create = iOleControlCreateMethod; + ic->Destroy = iOleControlDestroyMethod; + ic->Release = iOleControlRelease; + ic->Map = iOleControlMapMethod; + ic->LayoutUpdate = iOleControlLayoutUpdateMethod; + ic->ComputeNaturalSize = iOleControlComputeNaturalSizeMethod; + + iupClassRegisterAttribute(ic, "DESIGNMODE", iOleControlGetDesignModeAttrib, iOleControlSetDesignModeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DESIGNMODE_DONT_NOTIFY", iOleControlGetDesignModeAttrib, iOleControlSetDesignModeDontNotifyAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "IUNKNOWN", iOleControlGetIUnknownAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT|IUPAF_NO_STRING); + + /* Overwrite the canvas implementation */ + iupClassRegisterAttribute(ic, "BGCOLOR", NULL, NULL, NULL, NULL, IUPAF_NOT_MAPPED); + + return ic; +} + +Ihandle *IupOleControl(const char *ProgID) +{ + void *params[2]; + params[0] = (void*)ProgID; + params[1] = NULL; + return IupCreatev("olecontrol", params); +} + +int IupOleControlOpen(void) +{ + if (IupGetGlobal("_IUP_OLECONTROL_OPEN")) + return IUP_OPENED; + + HRESULT retval = OleInitialize(NULL); + if (retval != S_OK && retval != S_FALSE) + return IUP_ERROR; + + iupRegisterClass(iOleControlGetClass()); + + IupSetGlobal("_IUP_OLECONTROL_OPEN", "1"); + return IUP_NOERROR; +} diff --git a/iup/srcole/iupole.def b/iup/srcole/iupole.def new file mode 100755 index 0000000..d5fd72a --- /dev/null +++ b/iup/srcole/iupole.def @@ -0,0 +1,3 @@ +EXPORTS +IupOleControl +IupOleControlOpen diff --git a/iup/srcole/make_uname.bat b/iup/srcole/make_uname.bat new file mode 100755 index 0000000..f0a0722 --- /dev/null +++ b/iup/srcole/make_uname.bat @@ -0,0 +1,4 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 diff --git a/iup/srcole/tAmbientProperties.cpp b/iup/srcole/tAmbientProperties.cpp new file mode 100755 index 0000000..c9968a7 --- /dev/null +++ b/iup/srcole/tAmbientProperties.cpp @@ -0,0 +1,157 @@ +// tAmbientProperties.cpp: implementation of the tAmbientProperties class. +// +////////////////////////////////////////////////////////////////////// + +#include + +#include "tAmbientProperties.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +tAmbientProperties::tAmbientProperties() +{ + //0x80000000 in OLE_COLOR indicates low byte is color index. + m_clrBack=0x80000000+COLOR_WINDOW; + m_clrFore=0x80000000+COLOR_WINDOWTEXT; + m_lcid=LOCALE_USER_DEFAULT; + m_fDesignMode = TRUE; + + m_pIOleControl = NULL; + +#if 0 + { + int cy=MulDiv(-14, LOMETRIC_PER_INCH, 72); + //CHAPTER24MOD + //End CHAPTER24MOD + + HFONT m_hFont=CreateFont(cy, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE + , ANSI_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY + , VARIABLE_PITCH | FF_SWISS, TEXT("Arial")); + + + //m_hFont=(HFONT)GetStockObject(ANSI_VAR_FONT); + + //Need a standard font object for ambient properties + + FONTDESC fd={sizeof(FONTDESC), L"Arial" + , FONTSIZE(14), FW_NORMAL, DEFAULT_CHARSET + , FALSE, FALSE, FALSE}; + + OleCreateFontIndirect( + &fd, IID_IFontDisp, (void **)&m_pIFont + ); +#endif + m_pIFont = NULL; +} + +tAmbientProperties::~tAmbientProperties() +{ + if(m_pIOleControl) + m_pIOleControl->Release(); + + if(m_pIFont) + m_pIFont->Release(); +} + +void tAmbientProperties::setDesignMode(bool value, bool notify) +{ + switch(value) + { + case true: + m_fDesignMode = FALSE; + break; + + case false: + m_fDesignMode = FALSE; + break; + } + + assert(m_pIOleControl); + if(m_pIOleControl == NULL) + return; + + + // Notifica controle da mudanca + + if(notify) + m_pIOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_USERMODE); +} + +OLE_COLOR tAmbientProperties::getBackColor() +{ + return m_clrBack; +} + +OLE_COLOR tAmbientProperties::getForeColor() +{ + return m_clrFore; +} + +bool tAmbientProperties::has_font() +{ + if(m_pIFont != NULL) + return true; + else + return false; +} + +IFontDisp * tAmbientProperties::getFontRef() +{ + m_pIFont->AddRef(); + return m_pIFont; +} + +LCID tAmbientProperties::getLCID() +{ + return m_lcid; +} + +BOOL tAmbientProperties::getDesignMode() +{ + return m_fDesignMode; +} + +void tAmbientProperties::setForeColor(int red, + int green, + int blue, + bool notify) +{ + m_clrFore = blue << 16 | green << 8 | red; + + assert(m_pIOleControl); + if(m_pIOleControl == NULL) + return; + + if(notify) + m_pIOleControl-> + OnAmbientPropertyChange(DISPID_AMBIENT_FORECOLOR); +} + +void tAmbientProperties::setBackColor(int red, + int green, + int blue, + bool notify) +{ + m_clrBack = blue << 16 | green << 8 | red; + + assert(m_pIOleControl); + if(m_pIOleControl == NULL) + return; + + if(notify) + m_pIOleControl-> + OnAmbientPropertyChange(DISPID_AMBIENT_BACKCOLOR); +} + +void tAmbientProperties::setControl(IOleControl * olecontrol) +{ + assert(olecontrol && m_pIOleControl == NULL); + + if(m_pIOleControl != NULL) + return; + + olecontrol->AddRef(); + m_pIOleControl = olecontrol; +} diff --git a/iup/srcole/tAmbientProperties.h b/iup/srcole/tAmbientProperties.h new file mode 100755 index 0000000..359e733 --- /dev/null +++ b/iup/srcole/tAmbientProperties.h @@ -0,0 +1,47 @@ +// tAmbientProperties.h: interface for the tAmbientProperties class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TAMBIENTPROPERTIES_H__FC01B4C7_4918_11D4_9DF5_0000B45D6611__INCLUDED_) +#define AFX_TAMBIENTPROPERTIES_H__FC01B4C7_4918_11D4_9DF5_0000B45D6611__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include +#include + + +class tAmbientProperties +{ +public: + void setControl(IOleControl *olecontrol); + void setBackColor(int red, int green, int blue, bool notify); + void setForeColor(int red, int green, int blue, bool notify); + BOOL getDesignMode(void); + LCID getLCID(void); + IFontDisp * getFontRef(void); + bool has_font(void); + OLE_COLOR getForeColor(void); + OLE_COLOR getBackColor(void); + void setDesignMode(bool value, bool notify); + tAmbientProperties(); + virtual ~tAmbientProperties(); + +protected: + + // Utilizado para notificar mudancas nas propriedades + LPOLECONTROL m_pIOleControl; + + // propriedades + OLE_COLOR m_clrBack; + OLE_COLOR m_clrFore; + IFontDisp *m_pIFont; + LCID m_lcid; + BOOL m_fDesignMode; + BOOL m_fUIDead; + BOOL m_fHatchHandles; +}; + +#endif // !defined(AFX_TAMBIENTPROPERTIES_H__FC01B4C7_4918_11D4_9DF5_0000B45D6611__INCLUDED_) diff --git a/iup/srcole/tDispatch.cpp b/iup/srcole/tDispatch.cpp new file mode 100755 index 0000000..9db30a3 --- /dev/null +++ b/iup/srcole/tDispatch.cpp @@ -0,0 +1,236 @@ +// tDispatch.cpp: implementation of the tDispatch class. +// +////////////////////////////////////////////////////////////////////// + +#include "tDispatch.h" +#include "tOleHandler.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + + +/* + * tDispatch::tDispatch + * tDispatch::~tDispatch + * + * Parameters (Constructor): + * pTen PCTenant of the tenant we're in. + * pUnkOuter LPUNKNOWN to which we delegate. + */ + +tDispatch::tDispatch(tOleHandler *pTen, LPUNKNOWN pUnkOuter) + { + m_cRef=0; + m_pTen=pTen; + m_pUnkOuter=pUnkOuter; + return; + } + +tDispatch::~tDispatch(void) + { + return; + } + + + + +/* + * tDispatch::QueryInterface + * tDispatch::AddRef + * tDispatch::Release + */ + +STDMETHODIMP tDispatch::QueryInterface(REFIID riid, PPVOID ppv) + { + return m_pUnkOuter->QueryInterface(riid, ppv); + } + +STDMETHODIMP_(ULONG) tDispatch::AddRef(void) + { + ++m_cRef; + return m_pUnkOuter->AddRef(); + } + +STDMETHODIMP_(ULONG) tDispatch::Release(void) + { + m_cRef--; + return m_pUnkOuter->Release(); + } + + + + +/* + * tDispatch::GetTypeInfoCount + * tDispatch::GetTypeInfo + * tDispatch::GetIDsOfNames + * + * Unimplemented members, not needed for ambient properties. + */ + +STDMETHODIMP tDispatch::GetTypeInfoCount(UINT *pctInfo) + { + *pctInfo=0; + return NOERROR; + } + +STDMETHODIMP tDispatch::GetTypeInfo(UINT itinfo + , LCID lcid, ITypeInfo **pptInfo) + { + *pptInfo=NULL; + return ResultFromScode(E_NOTIMPL); + } + +STDMETHODIMP tDispatch::GetIDsOfNames(REFIID riid + , OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgDispID) + { + *rgszNames=NULL; + *rgDispID=NULL; + return ResultFromScode(E_NOTIMPL); + } + + + + +/* + * tDispatch::Invoke + * + * Purpose: + * Calls a method in the dispatch interface or manipulates a + * property. + * + * Parameters: + * dispIDMember DISPID of the method or property of interest. + * riid REFIID reserved, must be NULL. + * lcid LCID of the locale. + * wFlags USHORT describing the context of the invocation. + * pDispParams DISPPARAMS * to the array of arguments. + * pVarResult VARIANT * in which to store the result. Is + * NULL if the caller is not interested. + * pExcepInfo EXCEPINFO * to exception information. + * puArgErr UINT * in which to store the index of an + * invalid parameter if DISP_E_TYPEMISMATCH + * is returned. + * + * Return Value: + * HRESULT NOERROR or a general error code. + */ + + +STDMETHODIMP tDispatch::Invoke(DISPID dispIDMember, REFIID riid + , LCID lcid, unsigned short wFlags, DISPPARAMS *pDispParams + , VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) + { + HRESULT hr; + VARIANT varResult; + + if (IID_NULL!=riid) + return ResultFromScode(E_INVALIDARG); + + /* + * We ignore lcid in this function. A multilingual application + * might use it to determine the meaning of certain parameters + * or perhaps as an indication of how to format data like + * time, date, and currency or any other language or locale- + * sensitive data. + */ + + /* + * Variable handling: since ambient properties is just a + * collection of singular read-only values, we don't have to + * worry about input parameters. + */ + + /* + * If the caller is not interested in the return value, then + * pVarResult is NULL. But since we're dealing with ambient + * properties, there should always be an interest. In any case, + * if we're given a NULL, we'll point it to a dummy structure so + * the rest of the code can assume that pVarResult is non-NULL. + */ + if(NULL==pVarResult) + pVarResult=&varResult; + + VariantInit(pVarResult); + + //The most common case is boolean, use as an initial type + V_VT(pVarResult)=VT_BOOL; + + /* + * Process the requested ambient property. Anything but a + * request for a property is invalid, so we can check that + * before looking at the specific ID. We can only get away + * with this because all properties are read-only. + */ + + if (!(DISPATCH_PROPERTYGET & wFlags)) + return ResultFromScode(DISP_E_MEMBERNOTFOUND); + + hr=NOERROR; + + switch (dispIDMember) + { + case DISPID_AMBIENT_BACKCOLOR: + V_I4(pVarResult)=m_pTen->m_ambientProp.getBackColor(); + V_VT(pVarResult)=VT_I4; + break; + + case DISPID_AMBIENT_FORECOLOR: + V_I4(pVarResult)=m_pTen->m_ambientProp.getForeColor(); + V_VT(pVarResult)=VT_I4; + break; + + case DISPID_AMBIENT_FONT: + /* + * If we failed to create the font, act like we + * don't support it. + */ + if (!m_pTen->m_ambientProp.has_font()) + return ResultFromScode(DISP_E_MEMBERNOTFOUND); + + //The correct type is an IFontDisp pointer + V_DISPATCH(pVarResult)=m_pTen->m_ambientProp.getFontRef(); + V_VT(pVarResult)=VT_FONT; + break; + + case DISPID_AMBIENT_LOCALEID: + V_I4(pVarResult)=m_pTen->m_ambientProp.getLCID(); + V_VT(pVarResult)=VT_I4; + break; + + case DISPID_AMBIENT_USERMODE: + V_BOOL(pVarResult)=!m_pTen->m_ambientProp.getDesignMode(); + V_VT(pVarResult) = VT_BOOL; + break; + + case DISPID_AMBIENT_UIDEAD: + //V_BOOL(pVarResult)=m_pTen->m_ambientProp.getUIDead(); + V_BOOL(pVarResult)=FALSE; + V_VT(pVarResult) = VT_BOOL; + + break; + + case DISPID_AMBIENT_SUPPORTSMNEMONICS: + V_BOOL(pVarResult)=TRUE; + break; + + case DISPID_AMBIENT_SHOWGRABHANDLES: + //V_BOOL(pVarResult)=m_pTen->m_ambientProp.m_fHatchHandles; + V_BOOL(pVarResult)=FALSE; + V_VT(pVarResult) = VT_BOOL; + break; + + case DISPID_AMBIENT_SHOWHATCHING: +// V_BOOL(pVarResult)=m_pTen->m_ambientProp.m_fHatchHandles; + V_BOOL(pVarResult)=FALSE; + V_VT(pVarResult) = VT_BOOL; + break; + + default: + hr=ResultFromScode(DISP_E_MEMBERNOTFOUND); + break; + } + + return hr; + } diff --git a/iup/srcole/tDispatch.h b/iup/srcole/tDispatch.h new file mode 100755 index 0000000..c061d75 --- /dev/null +++ b/iup/srcole/tDispatch.h @@ -0,0 +1,40 @@ +// tDispatch.h: interface for the tDispatch class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TDISPATCH_H__37A5ADED_91FB_11D3_A906_0004AC252223__INCLUDED_) +#define AFX_TDISPATCH_H__37A5ADED_91FB_11D3_A906_0004AC252223__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include + +class tDispatch : public IDispatch +{ +public: + protected: + ULONG m_cRef; + class tOleHandler *m_pTen; + LPUNKNOWN m_pUnkOuter; + + public: + tDispatch(class tOleHandler *, LPUNKNOWN); + ~tDispatch(void); + + STDMETHODIMP QueryInterface(REFIID, LPVOID *); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + STDMETHODIMP GetTypeInfoCount(UINT *); + STDMETHODIMP GetTypeInfo(UINT, LCID, ITypeInfo **); + STDMETHODIMP GetIDsOfNames(REFIID, OLECHAR **, UINT + , LCID, DISPID *); + STDMETHODIMP Invoke(DISPID, REFIID, LCID, USHORT + , DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *); + + +}; + +#endif // !defined(AFX_TDISPATCH_H__37A5ADED_91FB_11D3_A906_0004AC252223__INCLUDED_) diff --git a/iup/srcole/tLegacy.cpp b/iup/srcole/tLegacy.cpp new file mode 100755 index 0000000..c310865 --- /dev/null +++ b/iup/srcole/tLegacy.cpp @@ -0,0 +1,240 @@ +// legacy.cpp + +#include +#include "tLegacy.h" + + +/* + * RectConvertMappings + * + * Purpose: + * Converts the contents of a rectangle from device to logical + * coordinates where the hDC defines the logical coordinates. + * + * Parameters: + * pRect LPRECT containing the rectangle to convert. + * hDC HDC describing the logical coordinate system. + * if NULL, uses a screen DC in MM_LOMETRIC. + * fToDevice BOOL TRUE to convert from uConv to device, + * FALSE to convert device to uConv. + * + * Return Value: + * None + */ + + +void RectConvertMappings(LPRECT pRect, HDC hDC, BOOL fToDevice) + { + POINT rgpt[2]; + BOOL fSysDC=FALSE; + + if (NULL==pRect) + return; + + rgpt[0].x=pRect->left; + rgpt[0].y=pRect->top; + rgpt[1].x=pRect->right; + rgpt[1].y=pRect->bottom; + + if (NULL==hDC) + { + hDC=GetDC(NULL); + SetMapMode(hDC, MM_LOMETRIC); + fSysDC=TRUE; + } + + if (fToDevice) + LPtoDP(hDC, rgpt, 2); + else + DPtoLP(hDC, rgpt, 2); + + if (fSysDC) + ReleaseDC(NULL, hDC); + + pRect->left=rgpt[0].x; + pRect->top=rgpt[0].y; + pRect->right=rgpt[1].x; + pRect->bottom=rgpt[1].y; + + return; + } + +STDAPI_(void) XformRectInHimetricToPixels(HDC hDC, LPRECT prcHiMetric + , LPRECT prcPix) + { + int iXppli; //Pixels per logical inch along width + int iYppli; //Pixels per logical inch along height + int iXextInHiMetric=(prcHiMetric->right-prcHiMetric->left); + int iYextInHiMetric=(prcHiMetric->bottom-prcHiMetric->top); + BOOL fSystemDC=FALSE; + + if (NULL==hDC || GetDeviceCaps(hDC, LOGPIXELSX) == 0) + { + hDC=GetDC(NULL); + fSystemDC=TRUE; + } + + iXppli=GetDeviceCaps (hDC, LOGPIXELSX); + iYppli=GetDeviceCaps (hDC, LOGPIXELSY); + + //We got pixel units, convert them to logical HIMETRIC along the display + prcPix->right=MAP_LOGHIM_TO_PIX(iXextInHiMetric, iXppli); + prcPix->top =MAP_LOGHIM_TO_PIX(iYextInHiMetric, iYppli); + + prcPix->left =0; + prcPix->bottom= 0; + + if (fSystemDC) + ReleaseDC(NULL, hDC); + + return; + } +/* + * INOLE_SetIconInCache + * + * Purpose: + * Stores an iconic presentation metafile in the cache. + * + * Parameters: + * pObj IUnknown * of the object. + * hMetaPict HGLOBAL containing the presentation. + * + * Return Value: + * HRESULT From IOleCache::SetData. + */ + +#if 0 +STDAPI INOLE_SetIconInCache(IUnknown *pObj, HGLOBAL hMetaPict) + { + IOleCache *pCache; + FORMATETC fe; + STGMEDIUM stm; + HRESULT hr; + + if (NULL==hMetaPict) + return ResultFromScode(E_INVALIDARG); + + if (FAILED(pObj->QueryInterface(IID_IOleCache, (void **)&pCache))) + return ResultFromScode(E_NOINTERFACE); + + SETFormatEtc(fe, CF_METAFILEPICT, DVASPECT_ICON, NULL + , TYMED_MFPICT, -1); + + stm.tymed=TYMED_MFPICT; + stm.hGlobal=hMetaPict; + stm.pUnkForRelease=NULL; + + hr=pCache->SetData(&fe, &stm, FALSE); + pCache->Release(); + + return hr; + } +#endif + + + +/* + * XformRectInPixelsToHimetric + * XformRectInHimetricToPixels + * + * Purpose: + * Convert a rectangle between pixels of a given hDC and HIMETRIC units + * as manipulated in OLE. If the hDC is NULL, then a screen DC is used + * and assumes the MM_TEXT mapping mode. + * + * Parameters: + * hDC HDC providing reference to the pixel mapping. If + * NULL, a screen DC is used. + * prcPix LPRECT containng the rectangles to convert. + * prcHiMetric + * + * Return Value: + * None + * + * NOTE: + * When displaying on the screen, Window apps display everything enlarged + * from its actual size so that it is easier to read. For example, if an + * app wants to display a 1in. horizontal line, that when printed is + * actually a 1in. line on the printed page, then it will display the line + * on the screen physically larger than 1in. This is described as a line + * that is "logically" 1in. along the display width. Windows maintains as + * part of the device-specific information about a given display device: + * LOGPIXELSX -- no. of pixels per logical in along the display width + * LOGPIXELSY -- no. of pixels per logical in along the display height + * + * The following formula converts a distance in pixels into its equivalent + * logical HIMETRIC units: + * + * DistInHiMetric=(HIMETRIC_PER_INCH * DistInPix) + * ------------------------------- + * PIXELS_PER_LOGICAL_IN + * + * Rect in Pixels (MM_TEXT): + * + * 0---------- X + * | + * | 1) ------------------ ( 2 P1=(rc.left, rc.top) + * | | | P2=(rc.right, rc.top) + * | | | P3=(rc.left, rc.bottom) + * | | | P4=(rc.right, rc.bottom) + * | | + * Y | | + * 3) ------------------ ( 4 + * + * NOTE: Origin =(P1x, P1y) + * X extent=P4x - P1x + * Y extent=P4y - P1y + * + * + * Rect in Himetric (MM_HIMETRIC): + * + * + * 1) ------------------ ( 2 P1=(rc.left, rc.top) + * Y | | P2=(rc.right, rc.top) + * | | P3=(rc.left, rc.bottom) + * | | | P4=(rc.right, rc.bottom) + * | | | + * | | | + * | 3) ------------------ ( 4 + * | + * 0---------- X + * + * NOTE: Origin =(P3x, P3y) + * X extent=P2x - P3x + * Y extent=P2y - P3y + * + * + */ + +STDAPI_(void) XformRectInPixelsToHimetric(HDC hDC, LPRECT prcPix + , LPRECT prcHiMetric) + { + int iXppli; //Pixels per logical inch along width + int iYppli; //Pixels per logical inch along height + int iXextInPix=(prcPix->right-prcPix->left); + int iYextInPix=(prcPix->bottom-prcPix->top); + BOOL fSystemDC=FALSE; + + if (NULL==hDC || GetDeviceCaps(hDC, LOGPIXELSX) == 0) + { + hDC=GetDC(NULL); + fSystemDC=TRUE; + } + + iXppli=GetDeviceCaps (hDC, LOGPIXELSX); + iYppli=GetDeviceCaps (hDC, LOGPIXELSY); + + //We got pixel units, convert them to logical HIMETRIC along the display + prcHiMetric->right=MAP_PIX_TO_LOGHIM(iXextInPix, iXppli); + prcHiMetric->top =MAP_PIX_TO_LOGHIM(iYextInPix, iYppli); + + prcHiMetric->left =0; + prcHiMetric->bottom =0; + + if (fSystemDC) + ReleaseDC(NULL, hDC); + + return; + } + + diff --git a/iup/srcole/tLegacy.h b/iup/srcole/tLegacy.h new file mode 100755 index 0000000..3294e20 --- /dev/null +++ b/iup/srcole/tLegacy.h @@ -0,0 +1,550 @@ +/* + * INOLE.H + * + * Master header file for all Inside OLE samples. + * + * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved + * + * Kraig Brockschmidt, Microsoft + * Internet : kraigb@microsoft.com + * Compuserve: >INTERNET:kraigb@microsoft.com + */ + + +#ifndef _INOLE_H_ +#define _INOLE_H_ + +#define INC_OLE2 +#include +#include +#include + +#ifdef INC_OLEUI +#ifdef WIN32 +/* + * Comment the next line and remove the comment from the + * line after it to compile for Windows NT 3.5. + */ +#include +//#include +#else +#include +#endif +#endif + +#ifdef INC_CONTROLS +#define INC_AUTOMATION +#endif + +#ifdef INC_AUTOMATION +#ifndef WIN32 +#include +#include +#else +#include +#endif +#endif + +#ifdef INC_CONTROLS +#include +#ifndef INITGUIDS +#include +#endif +#endif + +#ifdef WIN32 +#include +#ifdef UNICODE +#include +#endif +#endif + +#ifndef WIN32 +#include +#include +#endif + +#ifdef INC_CLASSLIB +extern "C" + { + #include + #ifndef WIN32 + #include + #include + #endif + } + +#include +#endif + + +//Types that OLE2.H et. al. leave out + +#ifndef PPVOID +typedef LPVOID * PPVOID; +#endif //PPVOID + + +#ifdef _OLE2_H_ //May not include ole2.h at all times. + +#ifndef PPOINTL +typedef POINTL * PPOINTL; +#endif //PPOINTL + + +#ifndef _WIN32 +#ifndef OLECHAR +typedef char OLECHAR; +typedef OLECHAR FAR* LPOLESTR; +typedef const OLECHAR FAR* LPCOLESTR; +#endif //OLECHAR +#endif //_WIN32 + + +//Useful macros. +#define SETFormatEtc(fe, cf, asp, td, med, li) \ + {\ + (fe).cfFormat=cf;\ + (fe).dwAspect=asp;\ + (fe).ptd=td;\ + (fe).tymed=med;\ + (fe).lindex=li;\ + } + +#define SETDefFormatEtc(fe, cf, med) \ + {\ + (fe).cfFormat=cf;\ + (fe).dwAspect=DVASPECT_CONTENT;\ + (fe).ptd=NULL;\ + (fe).tymed=med;\ + (fe).lindex=-1;\ + } + + +#define SETRECTL(rcl, l, t, r, b) \ + {\ + (rcl).left=l;\ + (rcl).top=t;\ + (rcl).right=r;\ + (rcl).bottom=b;\ + } + +#define SETSIZEL(szl, h, v) \ + {\ + (szl).cx=h;\ + (szl).cy=v;\ + } + + +#define RECTLFROMRECT(rcl, rc)\ + {\ + (rcl).left=(long)(rc).left;\ + (rcl).top=(long)(rc).top;\ + (rcl).right=(long)(rc).right;\ + (rcl).bottom=(long)(rc).bottom;\ + } + + +#define RECTFROMRECTL(rc, rcl)\ + {\ + (rc).left=(int)(rcl).left;\ + (rc).top=(int)(rcl).top;\ + (rc).right=(int)(rcl).right;\ + (rc).bottom=(int)(rcl).bottom;\ + } + + +#define POINTLFROMPOINT(ptl, pt) \ + { \ + (ptl).x=(long)(pt).x; \ + (ptl).y=(long)(pt).y; \ + } + + +#define POINTFROMPOINTL(pt, ptl) \ + { \ + (pt).x=(int)(ptl).x; \ + (pt).y=(int)(ptl).y; \ + } + +//Here's one that should be in windows.h +#define SETPOINT(pt, h, v) \ + {\ + (pt).x=h;\ + (pt).y=v;\ + } + +#define SETPOINTL(ptl, h, v) \ + {\ + (ptl).x=h;\ + (ptl).y=v;\ + } + +#endif //_OLE2_H_ + +#ifdef INC_AUTOMATION + +//Macros for setting DISPPARAMS structures +#define SETDISPPARAMS(dp, numArgs, pvArgs, numNamed, pNamed) \ + {\ + (dp).cArgs=numArgs;\ + (dp).rgvarg=pvArgs;\ + (dp).cNamedArgs=numNamed;\ + (dp).rgdispidNamedArgs=pNamed;\ + } + +#define SETNOPARAMS(dp) SETDISPPARAMS(dp, 0, NULL, 0, NULL) + +//Macros for setting EXCEPINFO structures +#define SETEXCEPINFO(ei, excode, src, desc, file, ctx, func, scd) \ + {\ + (ei).wCode=excode;\ + (ei).wReserved=0;\ + (ei).bstrSource=src;\ + (ei).bstrDescription=desc;\ + (ei).bstrHelpFile=file;\ + (ei).dwHelpContext=ctx;\ + (ei).pvReserved=NULL;\ + (ei).pfnDeferredFillIn=func;\ + (ei).scode=scd;\ + } + + +#define INITEXCEPINFO(ei) \ + SETEXCEPINFO(ei,0,NULL,NULL,NULL,0L,NULL,S_OK) + +#endif + + +/* + * State flags for IPersistStorage implementations. These + * are kept here to avoid repeating the code in all samples. + */ + +typedef enum + { + PSSTATE_UNINIT, //Uninitialized + PSSTATE_SCRIBBLE, //Scribble + PSSTATE_ZOMBIE, //No scribble + PSSTATE_HANDSOFF //Hand-off + } PSSTATE; + + +/* + * Identifers to describe which persistence model an object + * is using, along with a union type that holds on the the + * appropriate pointers that a client may need. + */ +typedef enum + { + PERSIST_UNKNOWN=0, + PERSIST_STORAGE, + PERSIST_STREAM, + PERSIST_STREAMINIT, + PERSIST_FILE + } PERSIST_MODEL; + +typedef struct + { + PERSIST_MODEL psModel; + union + { + IPersistStorage *pIPersistStorage; + IPersistStream *pIPersistStream; + #ifdef INC_CONTROLS + IPersistStreamInit *pIPersistStreamInit; + #endif + IPersistFile *pIPersistFile; + } pIP; + + } PERSISTPOINTER, *PPERSISTPOINTER; + + +//To identify a storage in which to save, load, or create. +typedef struct + { + PERSIST_MODEL psModel; + union + { + IStorage *pIStorage; + IStream *pIStream; + } pIS; + + } STGPOINTER, *PSTGPOINTER; + + + +//Type for an object-destroyed callback +typedef void (*PFNDESTROYED)(void); + + +//DeleteInterfaceImp calls 'delete' and NULLs the pointer +#define DeleteInterfaceImp(p)\ + {\ + if (NULL!=p)\ + {\ + delete p;\ + p=NULL;\ + }\ + } + + +//ReleaseInterface calls 'Release' and NULLs the pointer +#define ReleaseInterface(p)\ + {\ + IUnknown *pt=(IUnknown *)p;\ + p=NULL;\ + if (NULL!=pt)\ + pt->Release();\ + } + + +//OLE Documents Clipboard Formats + +#define CFSTR_EMBEDSOURCE TEXT("Embed Source") +#define CFSTR_EMBEDDEDOBJECT TEXT("Embedded Object") +#define CFSTR_LINKSOURCE TEXT("Link Source") +#define CFSTR_CUSTOMLINKSOURCE TEXT("Custom Link Source") +#define CFSTR_OBJECTDESCRIPTOR TEXT("Object Descriptor") +#define CFSTR_LINKSRCDESCRIPTOR TEXT("Link Source Descriptor") + + + +//Functions in the helper DLL, INOLE.DLL + +//UI Effects +STDAPI_(void) UIDrawHandles(LPRECT, HDC, DWORD, UINT, BOOL); +STDAPI_(void) UIDrawShading(LPRECT, HDC, DWORD, UINT); +STDAPI_(void) UIShowObject(LPCRECT, HDC, BOOL); + +//For UIDrawHandles +#define UI_HANDLES_USEINVERSE 0x00000001L +#define UI_HANDLES_NOBORDER 0x00000002L +#define UI_HANDLES_INSIDE 0x00000004L +#define UI_HANDLES_OUTSIDE 0x00000008L + +//For UIDrawShading +#define UI_SHADE_FULLRECT 1 +#define UI_SHADE_BORDERIN 2 +#define UI_SHADE_BORDEROUT 3 + +//Coordinate Munging +STDAPI_(int) XformWidthInHimetricToPixels(HDC, int); +STDAPI_(int) XformWidthInPixelsToHimetric(HDC, int); +STDAPI_(int) XformHeightInHimetricToPixels(HDC, int); +STDAPI_(int) XformHeightInPixelsToHimetric(HDC, int); + +STDAPI_(void) XformRectInPixelsToHimetric(HDC, LPRECT, LPRECT); +STDAPI_(void) XformRectInHimetricToPixels(HDC, LPRECT, LPRECT); +STDAPI_(void) XformSizeInPixelsToHimetric(HDC, LPSIZEL, LPSIZEL); +STDAPI_(void) XformSizeInHimetricToPixels(HDC, LPSIZEL, LPSIZEL); + + +//Helpers +STDAPI_(void) INOLE_MetafilePictIconFree(HGLOBAL); +STDAPI INOLE_SetIconInCache(IUnknown *, HGLOBAL); +STDAPI_(UINT) INOLE_GetUserTypeOfClass(REFCLSID, UINT, LPTSTR + , UINT); +STDAPI INOLE_DoConvert(IStorage *, REFCLSID); +STDAPI_(LPTSTR) INOLE_CopyString(LPTSTR); +STDAPI_(HGLOBAL) INOLE_ObjectDescriptorFromOleObject(IOleObject * + , DWORD, POINTL, LPSIZEL); +STDAPI_(HGLOBAL) INOLE_AllocObjectDescriptor(CLSID, DWORD + , SIZEL, POINTL, DWORD, LPTSTR, LPTSTR); +STDAPI_(IStorage *) INOLE_CreateStorageOnHGlobal(DWORD); +STDAPI INOLE_GetLinkSourceData(IMoniker *, LPCLSID + , LPFORMATETC, LPSTGMEDIUM); +STDAPI_(void) INOLE_RegisterAsRunning(IUnknown *, IMoniker * + , DWORD, LPDWORD); +STDAPI_(void) INOLE_RevokeAsRunning(LPDWORD); +STDAPI_(void) INOLE_NoteChangeTime(DWORD, FILETIME *, LPTSTR); + + + +/* + * These are for ANSI compilations on Win32. Source code assumes + * a Win32 Unicode environment (or Win16 Ansi). These macros + * route Win32 ANSI compiled functions to wrappers which do the + * proper Unicode conversion. + */ + + +#ifdef WIN32ANSI +STDAPI INOLE_ConvertStringToANSI(LPCWSTR, LPSTR *); +STDAPI INOLE_StringFromCLSID(REFCLSID, LPSTR *); +STDAPI INOLE_StringFromGUID2(REFGUID, LPSTR, int); +STDAPI INOLE_ProgIDFromCLSID(REFCLSID, LPSTR *); + +STDAPI INOLE_ReadFmtUserTypeStg(IStorage *, CLIPFORMAT *, LPSTR *); +STDAPI INOLE_WriteFmtUserTypeStg(IStorage *, CLIPFORMAT, LPSTR); + +STDAPI INOLE_StgIsStorageFile(LPCSTR); +STDAPI INOLE_StgCreateDocfile(LPCSTR, DWORD, DWORD, IStorage **); +STDAPI INOLE_StgOpenStorage(LPCSTR, IStorage *, DWORD, SNB + , DWORD, IStorage **); + + +STDAPI INOLE_CreateFileMoniker(LPCSTR, LPMONIKER *); +STDAPI INOLE_CreateItemMoniker(LPCSTR, LPCSTR, LPMONIKER *); +STDAPI INOLE_MkParseDisplayName(LPBC, LPCSTR, ULONG *, LPMONIKER *); + +STDAPI INOLE_OleCreateLinkToFile(LPCSTR, REFIID, DWORD, LPFORMATETC + , LPOLECLIENTSITE, LPSTORAGE, LPVOID *); +STDAPI INOLE_OleCreateFromFile(REFCLSID, LPCSTR, REFIID + , DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, LPVOID *); + + +#ifndef NOMACROREDIRECT +#undef StringFromCLSID +#define StringFromCLSID(c, pp) INOLE_StringFromCLSID(c, pp) + +#undef StringFromGUID2 +#define StringFromGUID2(r, p, i) INOLE_StringFromGUID2(r, p, i) + +#undef ProgIDFromCLSID +#define ProgIDFromCLSID(c, pp) INOLE_ProgIDFromCLSID(c, pp) + +#undef ReadFmtUserTypeStg +#define ReadFmtUserTypeStg(p, c, s) INOLE_ReadFmtUserTypeStg(p, c, s) + +#undef WriteFmtUserTypeStg +#define WriteFmtUserTypeStg(p, c, s) INOLE_WriteFmtUserTypeStg(p, c, s) + +#undef StgIsStorageFile +#define StgIsStorageFile(s) INOLE_StgIsStorageFile(s) + +#undef StgCreateDocfile +#define StgCreateDocfile(a, b, c, d) INOLE_StgCreateDocfile(a, b, c, d) + +#undef StgOpenStorage +#define StgOpenStorage(a,b,c,d,e,f) INOLE_StgOpenStorage(a,b,c,d,e,f) + +#undef CreateFileMoniker +#define CreateFileMoniker(p, i) INOLE_CreateFileMoniker(p, i) + +#undef CreateItemMoniker +#define CreateItemMoniker(p1, p2, i) INOLE_CreateItemMoniker(p1, p2, i) + +#undef MkParseDisplayName +#define MkParseDisplayName(b, p, u, i) INOLE_MkParseDisplayName(b, p, u, i) + +#undef OleCreateLinkToFile +#define OleCreateLinkToFile(s, i, d, fe, cs, st, pv) INOLE_OleCreateLinkToFile(s, i, d, fe, cs, st, pv) + +#undef OleCreateFromFile +#define OleCreateFromFile(c, s, i, d, fe, cs, st, pv) INOLE_OleCreateFromFile(c, s, i, d, fe, cs, st, pv) + + +#endif + +#endif + +//Versioning. +#define VERSIONMAJOR 2 +#define VERSIONMINOR 0 +#define VERSIONCURRENT 0x00020000 + +#define HIMETRIC_PER_INCH 2540 +#define LOMETRIC_PER_INCH 254 +#define LOMETRIC_BORDER 60 //Border around page + +#define CREATE_FAILED 0 +#define CREATE_GRAPHICONLY 1 + +//State flags +//CHAPTER24MOD +//Switched #defines to an enum +enum + { + TENANTSTATE_DEFAULT =0x00000000, + TENANTSTATE_SELECTED=0x00000001, + TENANTSTATE_OPEN =0x00000002, + TENANTSTATE_SHOWTYPE=0x00000004, + + //New ones for controls. + TENANTSTATE_CONTROL =0x00000100, + TENANTSTATE_EVENTS =0x00000200, + TENANTSTATE_BUTTON =0x00000400, + TENANTSTATE_LABEL =0x00000800, + TENANTSTATE_DEFBUTTON =0x00001000, + TENANTSTATE_CANCELBUTTON=0x00002000 + }; + +//To mask off non-control flags +#define STATEMASK_CONTROLS 0xFFFFFF00 + + + +/* + * Structures to save with the document describing the device + * configuration and pages that we have. This is followed by + * a list of DWORD IDs for the individual pages. + */ + +typedef struct tagDEVICECONFIG + { + DWORD cb; //Size of structure + TCHAR szDriver[CCHDEVICENAME]; + TCHAR szDevice[CCHDEVICENAME]; + TCHAR szPort[CCHDEVICENAME]; + DWORD cbDevMode; //Size of actual DEVMODE + DEVMODE dm; //Variable + } DEVICECONFIG, *PDEVICECONFIG; + +//Offset to cbDevMode +#define CBSEEKOFFSETCBDEVMODE (sizeof(DWORD) \ + +(3*CCHDEVICENAME*sizeof(TCHAR))) + +//Combined OLE and Patron device structures. +typedef struct tagCOMBINEDEVICE + { + DVTARGETDEVICE td; + DEVICECONFIG dc; + } COMBINEBDEVICE, *PCOMBINEDEVICE; + + + +void RectConvertMappings(LPRECT, HDC, BOOL); + + +//CHAPTER24MOD + + +#ifdef WIN32 +#define PROP_POINTER TEXT("Pointer") +#else +#define PROP_SELECTOR "Selector" +#define PROP_OFFSET "Offset" +#endif + +//End CHAPTER24MOD + +BOOL ObjectEventsIID(LPUNKNOWN pObj, IID *piid); +BOOL InterfaceConnect(LPUNKNOWN pObj, REFIID riid + , LPUNKNOWN pIUnknownSink, LPDWORD pdwConn); +BOOL InterfaceDisconnect(LPUNKNOWN pObj, REFIID riid + , LPDWORD pdwConn); +BOOL ObjectTypeInfo(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo); +BOOL ObjectTypeInfoEvents(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo); +BOOL ObjectEventsIID(LPUNKNOWN pObj, IID *piid); + +#define HIMETRIC_PER_INCH 2540 //Number HIMETRIC units per inch +#define PTS_PER_INCH 72 //Number points (font size) per inch + +#define MAP_PIX_TO_LOGHIM(x,ppli) MulDiv(HIMETRIC_PER_INCH, (x), (ppli)) +#define MAP_LOGHIM_TO_PIX(x,ppli) MulDiv((ppli), (x), HIMETRIC_PER_INCH) + +//Useful macros. +#define SETFormatEtc(fe, cf, asp, td, med, li) \ + {\ + (fe).cfFormat=cf;\ + (fe).dwAspect=asp;\ + (fe).ptd=td;\ + (fe).tymed=med;\ + (fe).lindex=li;\ + } + +STDAPI_(void) XformRectInHimetricToPixels(HDC hDC, LPRECT prcHiMetric + , LPRECT prcPix); + +#endif //_INOLE_H_ diff --git a/iup/srcole/tOleClientSite.cpp b/iup/srcole/tOleClientSite.cpp new file mode 100755 index 0000000..314b172 --- /dev/null +++ b/iup/srcole/tOleClientSite.cpp @@ -0,0 +1,148 @@ +////////////////////////////////////////////////////////////////////// +// +// tOleClientSite.cpp: implementation of the tOleClientSite class. +// +////////////////////////////////////////////////////////////////////// + + +#include +#include + +#include "tOleClientSite.h" +#include "tOleHandler.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +tOleClientSite::tOleClientSite(LPUNKNOWN pUnkOuter, + tOleHandler *olehandler) +{ + m_cRef=0; + m_pUnkOuter = pUnkOuter; + handler = olehandler; + return; +} + +tOleClientSite::~tOleClientSite() +{ + +} + +STDMETHODIMP tOleClientSite::QueryInterface(REFIID riid, + LPVOID *ppv) +{ + return m_pUnkOuter->QueryInterface(riid, ppv); +} + + +STDMETHODIMP_(ULONG) tOleClientSite::AddRef(void) +{ + ++m_cRef; + return m_pUnkOuter->AddRef(); +} + +STDMETHODIMP_(ULONG) tOleClientSite::Release(void) +{ + --m_cRef; + return m_pUnkOuter->Release(); +} + +STDMETHODIMP tOleClientSite::SaveObject(void) +{ + // persistencia ainda nao suportada + return E_FAIL; +} + + +STDMETHODIMP tOleClientSite::GetMoniker(DWORD dwAssign, + DWORD dwWhich, + LPMONIKER *ppmk) +{ + // Linking nao suportado + return E_FAIL; +} + + +STDMETHODIMP tOleClientSite::GetContainer(LPOLECONTAINER * ppContainer) +{ + + *ppContainer=NULL; + + return E_NOINTERFACE; +} + + +/* + * tOleClientSite::ShowObject + * + * Purpose: + * Tells the container to bring the object fully into view as much + * as possible, that is, scroll the document. + * + * Parameters: + * None + * + * Return Value: + * HRESULT Standard. + */ + +STDMETHODIMP tOleClientSite::ShowObject(void) +{ + return NOERROR; +} + + +STDMETHODIMP tOleClientSite::OnShowWindow(BOOL fShow) +{ + return NOERROR; +} + +/* + * tOleClientSite::RequestNewObjectLayout + * + * Purpose: + * Called when the object would like to have its layout + * reinitialized. This is used by OLE Controls. + * + * Parameters: + * None + * + * Return Value: + * HRESULT Standard. + */ + +STDMETHODIMP tOleClientSite::RequestNewObjectLayout(void) +{ + RECT rc, rcT; + SIZEL szl; + HRESULT hr; + + /* + * This function is called by a control that is not in-place + * active or UI active and therefore doesn't have our + * IOleInPlaceSite interface in which to call OnPosRectChange. + * Therefore we do pretty much the same thing we do in that + * function although we ask the control for the size it wants. + */ + + if (!handler->m_pIViewObject2) + return E_FAIL; + + //Get the size from the control + hr=handler->m_pIViewObject2->GetExtent(handler->m_fe.dwAspect, -1, NULL, &szl); + if (FAILED(hr)) + return hr; + + //Add these extents to the existing tenant position. + SetRect(&rcT, 0, 0, szl.cx*10, -szl.cy*10); + RectConvertMappings(&rcT, NULL, TRUE); + + rc=handler->m_rcPos; + rc.right=rc.left+rcT.right; + rc.bottom=rc.top+rcT.bottom; + + handler->UpdateInPlaceObjectRects(&rc, FALSE); + return NOERROR; +} + diff --git a/iup/srcole/tOleClientSite.h b/iup/srcole/tOleClientSite.h new file mode 100755 index 0000000..1525b9e --- /dev/null +++ b/iup/srcole/tOleClientSite.h @@ -0,0 +1,40 @@ +// tOleClientSite.h: interface for the tOleClientSite class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TOLECLIENTSITE_H__49B97C0A_8DEB_11D3_A906_0004ACE655F9__INCLUDED_) +#define AFX_TOLECLIENTSITE_H__49B97C0A_8DEB_11D3_A906_0004ACE655F9__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include + +class tOleHandler; + +class tOleClientSite : public IOleClientSite +{ +public: + tOleClientSite(LPUNKNOWN pUnkOuter, tOleHandler *olehandler); + virtual ~tOleClientSite(); + + STDMETHODIMP QueryInterface(REFIID, LPVOID *); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + STDMETHODIMP SaveObject(void); + STDMETHODIMP GetMoniker(DWORD, DWORD, LPMONIKER *); + STDMETHODIMP GetContainer(LPOLECONTAINER *); + STDMETHODIMP ShowObject(void); + STDMETHODIMP OnShowWindow(BOOL); + STDMETHODIMP RequestNewObjectLayout(void); + +protected: + tOleHandler * handler; + ULONG m_cRef; + //class CTenant *m_pTen; + LPUNKNOWN m_pUnkOuter; +}; + +#endif // !defined(AFX_TOLECLIENTSITE_H__49B97C0A_8DEB_11D3_A906_0004ACE655F9__INCLUDED_) diff --git a/iup/srcole/tOleControlSite.cpp b/iup/srcole/tOleControlSite.cpp new file mode 100755 index 0000000..71f3519 --- /dev/null +++ b/iup/srcole/tOleControlSite.cpp @@ -0,0 +1,301 @@ +// tOleControlSite.cpp: implementation of the tOleControlSite class. +// +////////////////////////////////////////////////////////////////////// + +#include "tOleControlSite.h" +#include "tOleHandler.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +/* + * tOleControlSite::tOleControlSite + * tOleControlSite::~tOleControlSite + * + * Parameters (Constructor): + * pTen PCTenant of the object we're in. + * pUnkOuter LPUNKNOWN to which we delegate. + */ + +tOleControlSite::tOleControlSite(tOleHandler *pTen + , LPUNKNOWN pUnkOuter) + { + m_cRef=0; + m_pTen=pTen; + m_pUnkOuter=pUnkOuter; + return; + } + +tOleControlSite::~tOleControlSite(void) + { + return; + } + + + + +/* + * tOleControlSite::QueryInterface + * tOleControlSite::AddRef + * tOleControlSite::Release + * + * Purpose: + * Delegating IUnknown members for tOleControlSite. + */ + +STDMETHODIMP tOleControlSite::QueryInterface(REFIID riid + , LPVOID *ppv) + { + return m_pUnkOuter->QueryInterface(riid, ppv); + } + + +STDMETHODIMP_(ULONG) tOleControlSite::AddRef(void) + { + ++m_cRef; + return m_pUnkOuter->AddRef(); + } + +STDMETHODIMP_(ULONG) tOleControlSite::Release(void) + { + --m_cRef; + return m_pUnkOuter->Release(); + } + + + + + +/* + * tOleControlSite::OnControlInfoChanged + * + * Purpose: + * Informs the site that the CONTROLINFO for the control has + * changed and we thus need to reload the data. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleControlSite::OnControlInfoChanged(void) + { + //We also update our "have info" flag here. + if(m_pTen->m_pIOleControl != NULL) + { + m_pTen->m_fHaveControlInfo=SUCCEEDED(m_pTen->m_pIOleControl + ->GetControlInfo(&m_pTen->m_ctrlInfo)); + } + + return NOERROR; + } + + + + + +/* + * tOleControlSite::LockInPlaceActive + * + * Purpose: + * Forces the container to keep this control in-place active + * (but not UI active) regardless of other considerations, or + * removes this lock. + * + * Parameters: + * fLock BOOL indicating to lock (TRUE) or unlock (FALSE) + * in-place activation. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleControlSite::LockInPlaceActive(BOOL fLock) + { + if (fLock) + m_pTen->m_cLockInPlace++; + else + { + if (0==--m_pTen->m_cLockInPlace) + { + //If there's a pending deactivate, do it now. + if (m_pTen->m_fPendingDeactivate) + m_pTen->DeactivateInPlaceObject(TRUE); + } + } + + return NOERROR; + } + + + + + +/* + * tOleControlSite::GetExtendedControl + * + * Purpose: + * Returns a pointer to the container's extended control that wraps + * the actual control in this site, if one exists. + * + * Parameters: + * ppDispatch LPDISPATCH * in which to return the pointer + * to the extended control's IDispatch interface. + * + * Return Value: + * HRESULT NOERROR or a general error value. + */ + +STDMETHODIMP tOleControlSite::GetExtendedControl(LPDISPATCH + * ppDispatch) + { + *ppDispatch=NULL; + return ResultFromScode(E_NOTIMPL); + } + + + + + + +/* + * tOleControlSite::TransformCoords + * + * Purpose: + * Converts coordinates in HIMETRIC units into those used by the + * container. + * + * Parameters: + * pptlHiMet POINTL * containing either the coordinates to + * transform to container or where to store the + * transformed container coordinates. + * pptlCont POINTF * containing the container coordinates. + * dwFlags DWORD containing instructional flags. + * + * Return Value: + * HRESULT NOERROR or a general error value. + */ + +STDMETHODIMP tOleControlSite::TransformCoords(POINTL *pptlHiMet + , POINTF *pptlCont, DWORD dwFlags) + { + if (NULL==pptlHiMet || NULL==pptlCont) + return ResultFromScode(E_POINTER); + + /* + * Convert coordinates. We use MM_LOMETRIC which means that + * to convert from HIMETRIC we divide by 10 and negate the y + * coordinate. Conversion to HIMETRIC means negate the y + * and multiply by 10. Note that size and position are + * considered the same thing, that is, we don't differentiate + * the two. + */ + + if (XFORMCOORDS_HIMETRICTOCONTAINER & dwFlags) + { + pptlCont->x=(float)(pptlHiMet->x/10); + pptlCont->y=(float)-(pptlHiMet->y/10); + } + else + { + pptlHiMet->x=(long)(pptlCont->x*10); + pptlHiMet->y=(long)-(pptlCont->y*10); + } + + return NOERROR; + } + + + + + +/* + * tOleControlSite::TranslateAccelerator + * + * Purpose: + * Instructs the container to translate a keyboard accelerator + * message that the control has picked up instead. + * + * Parameters: + * pMsg LPMSG to the message to translate. + * grfModifiers DWORD flags with additional instructions. + * + * Return Value: + * HRESULT NOERROR or a general error value. + */ + +STDMETHODIMP tOleControlSite::TranslateAccelerator(LPMSG pMsg + , DWORD grfModifiers) + { + /* + * The control has picked up a keystroke through its own + * TranslateAccelerator and is now giving us the change to + * play with it. Currently there are no flags for + * grfModifiers, so we ignore them. Especially since + * we have nothing to do here ourselves anyway. + */ + return ResultFromScode(S_FALSE); + } + + + + +/* + * tOleControlSite::OnFocus + * + * Purpose: + * Informs the container that focus has either been lost or + * gained in the control. + * + * Parameters: + * fGotFocus BOOL indicating that the control gained (TRUE) + * or lost (FALSE) focus. + * + * Return Value: + * HRESULT NOERROR or a general error value. + */ + +STDMETHODIMP tOleControlSite::OnFocus(BOOL fGotFocus) + { + /* + * Patron doesn't do this, but to handle the default + * and cancel buttons properly, we normally process RETURN + * and ESC accelerators to press the right button. + * This behavior must be disabled when the control with + * the focus has either CTRLINFO_EATS_RETURN or + * CTRLINFO_EATS_ESCAPE set. We tell the frame as + * we need to when a new control gets the focus. We + * do nothing when a control loses the focus. + */ + return NOERROR; + } + + + +/* + * tOleControlSite::ShowPropertyFrame + * + * Purpose: + * Instructs the container to show the property frame if + * this is an extended object and requires its own property + * pages. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR or a general error value. + */ + +STDMETHODIMP tOleControlSite::ShowPropertyFrame(void) + { + /* + * Returning an error here means that the container has + * no property pages itself for the control, so the + * control should display its own. + */ + return ResultFromScode(E_NOTIMPL); + } diff --git a/iup/srcole/tOleControlSite.h b/iup/srcole/tOleControlSite.h new file mode 100755 index 0000000..8e805d3 --- /dev/null +++ b/iup/srcole/tOleControlSite.h @@ -0,0 +1,39 @@ +// tOleControlSite.h: interface for the tOleControlSite class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TOLECONTROLSITE_H__37A5ADEC_91FB_11D3_A906_0004AC252223__INCLUDED_) +#define AFX_TOLECONTROLSITE_H__37A5ADEC_91FB_11D3_A906_0004AC252223__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include +#include + +class tOleControlSite : public IOleControlSite +{ + protected: + ULONG m_cRef; + class tOleHandler *m_pTen; + LPUNKNOWN m_pUnkOuter; + + public: + tOleControlSite(class tOleHandler *, LPUNKNOWN); + ~tOleControlSite(void); + + STDMETHODIMP QueryInterface(REFIID, LPVOID *); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + STDMETHODIMP OnControlInfoChanged(void); + STDMETHODIMP LockInPlaceActive(BOOL); + STDMETHODIMP GetExtendedControl(LPDISPATCH *); + STDMETHODIMP TransformCoords(POINTL *, POINTF *, DWORD); + STDMETHODIMP TranslateAccelerator(LPMSG, DWORD); + STDMETHODIMP OnFocus(BOOL); + STDMETHODIMP ShowPropertyFrame(void); +}; + +#endif // !defined(AFX_TOLECONTROLSITE_H__37A5ADEC_91FB_11D3_A906_0004AC252223__INCLUDED_) diff --git a/iup/srcole/tOleHandler.cpp b/iup/srcole/tOleHandler.cpp new file mode 100755 index 0000000..688ba30 --- /dev/null +++ b/iup/srcole/tOleHandler.cpp @@ -0,0 +1,1123 @@ +// tOleHandler.cpp: implementation of the tOleHandler class. +// +////////////////////////////////////////////////////////////////////// + +#include +#include + +#ifndef _OLE2_H_ +#define _OLE2_H_ +#endif + +#include "tOleHandler.h" +#include "tDispatch.h" + +/* + * tOleHandler::tOleHandler + * tOleHandler::~tOleHandler + * + */ + +tOleHandler::tOleHandler() +{ + natural_width = 0; + natural_height = 0; + + m_hWnd=NULL; + + m_fInitialized=0; + m_cOpens=0; + + m_pObj=NULL; + m_clsID=CLSID_NULL; + m_fSetExtent=FALSE; + + m_cRef=0; + m_pIOleObject=NULL; + m_pIViewObject2=NULL; + m_grfMisc=0; + + m_rcl.right = m_rcl.left = 0; + m_rcl.top = m_rcl.bottom = 0; + + m_pImpIOleClientSite=NULL; + + m_fRepaintEnabled=TRUE; + + + m_pImpIOleIPSite=NULL; + m_pIOleIPObject=NULL; + m_rcPos.left=-1; + m_fInRectSet=FALSE; + + //CHAPTER24MOD + m_pImpIOleControlSite=NULL; + m_pImpIDispatch=NULL; + + m_pIOleControl=NULL; + + m_fHaveControlInfo=FALSE; + m_cLockInPlace=0; + m_fPendingDeactivate=FALSE; + //End CHAPTER24MOD + + return; +} + + +tOleHandler::~tOleHandler(void) + { + + //Object pointers cleaned up in Close. + + //CHAPTER24MOD + + DeleteInterfaceImp(m_pImpIOleControlSite); + DeleteInterfaceImp(m_pImpIDispatch); + + //End CHAPTER24MOD + + DeleteInterfaceImp(m_pImpIOleIPSite); + DeleteInterfaceImp(m_pImpIOleClientSite); + return; + } + + + + +/* + * tOleHandler::QueryInterface + * tOleHandler::AddRef + * tOleHandler::Release + * + * Purpose: + * IUnknown members for tOleHandler object. + */ + +STDMETHODIMP tOleHandler::QueryInterface(REFIID riid, LPVOID *ppv) + { + *ppv=NULL; + + if (IID_IUnknown==riid) + *ppv=this; + + if (IID_IOleClientSite==riid) + *ppv=m_pImpIOleClientSite; + + if (IID_IOleWindow==riid || IID_IOleInPlaceSite==riid) + *ppv=m_pImpIOleIPSite; + + //CHAPTER24MOD + if (IID_IOleControlSite==riid) + *ppv=m_pImpIOleControlSite; + + //Queries for IDispatch return the ambient properties interface + if (IID_IDispatch==riid) + *ppv=m_pImpIDispatch; + //End CHAPTER24MOD + + if (NULL!=*ppv) + { + ((LPUNKNOWN)*ppv)->AddRef(); + return NOERROR; + } + + return ResultFromScode(E_NOINTERFACE); + } + + +STDMETHODIMP_(ULONG) tOleHandler::AddRef(void) + { + return ++m_cRef; + } + +STDMETHODIMP_(ULONG) tOleHandler::Release(void) + { + if (0!=--m_cRef) + return m_cRef; + + delete this; + return 0; + } + + + + + + +/* + * tOleHandler::Create + * + * Purpose: + * Creates a new tenant of the given CLSID, which can be either a + * static bitmap or metafile or any compound document object. + * + * Parameters: + * tType TENANTTYPE to create, either a static metafile, + * bitmap, or some kind of compound document object + * This determines which OleCreate* call we use. + * pvType LPVOID providing the relevant pointer from which + * to create the tenant, depending on iType. + * pFE LPFORMATETC specifying the type of renderings + * to use. + * pptl PPOINTL in which we store offset coordinates. + * pszl LPSIZEL where this object should store its + * lometric extents. + * pIStorage LPSTORAGE of the page we live in. We have to + * create another storage in this for the tenant. + * ppo PPATRONOBJECT containing placement data. + * dwData DWORD with extra data, sensitive to iType. + * + * Return Value: + * UINT A CREATE_* value depending on what we + * actually do. + */ + +UINT tOleHandler::Create(LPVOID pvType) + { + HRESULT hr; + LPUNKNOWN pObj; + UINT uRet=CREATE_GRAPHICONLY; + DWORD dwMode=STGM_READWRITE + | STGM_SHARE_EXCLUSIVE + | STGM_DELETEONRELEASE; + + + IPersistStorage *persist_storage = NULL; + + StgCreateDocfile(NULL, dwMode, 0, &m_pIStorage); + + if(m_pIStorage == NULL) + return CREATE_FAILED; + + if (NULL==pvType) + return CREATE_FAILED; + + hr=ResultFromScode(E_FAIL); + + Open(NULL); + + //CHAPTER24MOD + /* + * The OLE Control specifications mention that a + * a control might implement IPersistStream[Init] + * instead of IPersistStorage. In that case you + * cannot use OleCreate on a control but must rather + * use CoCreateInstance since OleCreate assumes + * that IPersistStorage is available. With a control, + * you would have to create the object first, then + * check if OLEMISC_SETCLIENTSITEFIRST is set, then + * send it your IOleClientSite first. Then you check + * for IPersistStorage and failing that, try + * IPersistStream[Init]. + * + * For simplicity we'll assume storage-based + * controls in this sample. + */ + //End CHAPTER24MOD + + hr = CoCreateInstance(*((LPCLSID)pvType), NULL, + CLSCTX_ALL, IID_IUnknown, (LPVOID *)&pObj); + + if(FAILED(hr)) + return CREATE_FAILED; + + if(pObj->QueryInterface(IID_IPersistStorage, (void **) &persist_storage) != S_OK) + return CREATE_FAILED; + + //We need an IOleObject most of the time, so get one here. + m_pIOleObject=NULL; + hr = pObj->QueryInterface(IID_IOleObject, (LPVOID*)&m_pIOleObject); + + if(FAILED(hr)) + return CREATE_FAILED; + + // seta o client site + m_pIOleObject->SetClientSite(m_pImpIOleClientSite); + + // inicializa o objeto + hr = persist_storage->InitNew(m_pIStorage); + + if(FAILED(hr)) + return CREATE_FAILED; + + + //We don't get the size if PatronObject data was seen already. + if (!ObjectInitialize(pObj)) + { + return CREATE_FAILED; + } + + SIZEL szl; + + hr=ResultFromScode(E_FAIL); + + CalcNaturalSize(); + + //CHAPTER24MOD + //Make sure this happens + /*if ((OLEMISC_ACTIVATEWHENVISIBLE & m_grfMisc)) + Activate(OLEIVERB_INPLACEACTIVATE, NULL);*/ + //End CHAPTER24MOD + + return uRet; + } + + + + + + + +/* + * tOleHandler::ObjectInitialize + * (Protected) + * + * Purpose: + * Performs operations necessary after creating an object or + * reloading one from storage. + * + * Parameters: + * pObj LPUNKNOWN of the object in this tenant. + * pFE LPFORMATETC describing the graphic here. + * dwData DWORD extra data. If pFE->dwAspect== + * DVASPECT_ICON then this is the iconic metafile. + * + * Return Value: + * BOOL TRUE if the function succeeded, FALSE otherwise. + */ + +BOOL tOleHandler::ObjectInitialize(LPUNKNOWN pObj) + { + HRESULT hr; + FORMATETC fe; + + SETDefFormatEtc(fe, 0, TYMED_NULL); + LPFORMATETC pFE = &fe; + + + if (NULL==pObj || NULL==pFE) + return FALSE; + + m_pObj=pObj; + m_fe=*pFE; + m_fe.ptd=NULL; + m_dwState=TENANTSTATE_DEFAULT; + + m_pIViewObject2=NULL; + hr=pObj->QueryInterface(IID_IViewObject2 + , (LPVOID*)&m_pIViewObject2); + + if (FAILED(hr)) + return FALSE; + + /* + * Get the MiscStatus bits and check for OLEMISC_ONLYICONIC. + * If set, force dwAspect in m_fe to DVASPECT_ICON so we + * remember to draw it properly and do extents right. + */ + m_pIOleObject->GetMiscStatus(m_fe.dwAspect, &m_grfMisc); + + + //CHAPTER24MOD + //Run the object if it says to do so + if (OLEMISC_ALWAYSRUN & m_grfMisc) + OleRun(pObj); + //End CHAPTER24MOD + + + + //CHAPTER24MOD + //Go try initializing control-related things. + ControlInitialize(); + //End CHAPTER24MOD + + return TRUE; + } + + + + +/* + * tOleHandler::Open + * + * Purpose: + * Retrieves the IStorage associated with this tenant. The + * IStorage is owned by the tenant and thus the tenant always + * holds a reference count. + * + * If the storage is already open for this tenant, then this + * function will AddRef it; therefore the caller must always + * match an Open with a Close. + * + * Parameters: + * pIStorage LPSTORAGE above this tenant (which has its + * own storage). + * + * Return Value: + * BOOL TRUE if opening succeeds, FALSE otherwise. + */ + +BOOL tOleHandler::Open(LPSTORAGE pIStorage) + { + HRESULT hr=NOERROR; + DWORD dwMode=STGM_TRANSACTED | STGM_READWRITE + | STGM_SHARE_EXCLUSIVE; + + + //Create these if we don't have them already. + if (NULL==m_pImpIOleClientSite) + { + m_pImpIOleClientSite=new tOleClientSite(this, this); + m_pImpIOleIPSite=new tOleInPlaceSite(this, this); + + //CHAPTER24MOD + m_pImpIOleControlSite=new tOleControlSite(this, this); + m_pImpIDispatch=new tDispatch(this, this); + + if (NULL==m_pImpIOleClientSite + || NULL==m_pImpIOleIPSite || NULL==m_pImpIOleControlSite + || NULL==m_pImpIDispatch) + return FALSE; + //End CHAPTER24MOD + } + + return TRUE; + } + + + + +/* + * tOleHandler::Close + * + * Purpose: + * Possibly commits the storage, then releases it reversing the + * reference count from Open. If the reference on the storage + * goes to zero, the storage is forgotten. However, the object we + * contain is still held and as long as it's active the storage + * remains alive. + * + * Parameters: + * fCommit BOOL indicating if we're to commit. + * + * Return Value: + * None + */ + +void tOleHandler::Close(BOOL fCommit) + { + /* + * We can't use a zero reference count to know when to NULL + * this since other things might have AddRef'd the storage. + */ + //OnInPlaceDeactivate releases this pointer. + if (NULL!=m_pIOleIPObject) + m_pIOleIPObject->InPlaceDeactivate(); + + //Close the object saving if necessary + if (NULL!=m_pIOleObject) + { + m_pIOleObject->Close(OLECLOSE_SAVEIFDIRTY); + ReleaseInterface(m_pIOleObject); + } + + //Release all other held pointers + //CHAPTER24MOD + ReleaseInterface(m_pIOleControl); + + //End CHAPTER24MOD + + //Release all other held pointers + if (NULL!=m_pIViewObject2) + { + m_pIViewObject2->SetAdvise(m_fe.dwAspect, 0, NULL); + ReleaseInterface(m_pIViewObject2); + } + + //We know we only hold one ref from Create or Load + ReleaseInterface(m_pObj); + + return; + } + + +/* + * tOleHandler::Activate + * + * Purpose: + * Activates a verb on the object living in the tenant. Does + * nothing for static objects. + * + * Parameters: + * iVerb LONG of the verb to execute. + * pMSG LPMSG to the message causing the invocation. + * + * Return Value: + * BOOL TRUE if the object changed due to this verb + * execution. + */ + +BOOL tOleHandler::Activate(LONG iVerb, LPMSG pMSG) + { + RECT rc, rcH; + SIZEL szl; + + //Can't activate statics. +/* if (TENANTTYPE_STATIC==m_tType || NULL==m_pIOleObject) + { + MessageBeep(0); + return FALSE; + }*/ + + RECTFROMRECTL(rc, m_rcl); + RectConvertMappings(&rc, NULL, TRUE); + XformRectInPixelsToHimetric(NULL, &rc, &rcH); + + //Get the server running first, then do a SetExtent, then show it + OleRun(m_pIOleObject); + + if (m_fSetExtent) + { + SETSIZEL(szl, rcH.right-rcH.left, rcH.top-rcH.bottom); + m_pIOleObject->SetExtent(m_fe.dwAspect, &szl); + m_fSetExtent=FALSE; + } + + //CHAPTER24MOD + /* + * If we have a pending deactivation, but we're activating + * again, clear the pending flag. + */ + if (OLEIVERB_UIACTIVATE==iVerb + || OLEIVERB_INPLACEACTIVATE==iVerb) + m_fPendingDeactivate=FALSE; + //End CHAPTER24MOD + + m_pIOleObject->DoVerb(iVerb, pMSG, m_pImpIOleClientSite, 0 + , m_hWnd, &rcH); + + //If object changes, IAdviseSink::OnViewChange will see it. + return FALSE; + } + + + + + + +/* + * tOleHandler::ObjectGet + * + * Purpose: + * Retrieves the LPUNKNOWN of the object in use by this tenant + * + * Parameters: + * ppUnk LPUNKNOWN * in which to return the object + * pointer. + * + * Return Value: + * None + */ + +void tOleHandler::ObjectGet(LPUNKNOWN *ppUnk) + { + if (NULL!=ppUnk) + { + *ppUnk=m_pObj; + m_pObj->AddRef(); + } + + return; + } + + + + + +/* + * tOleHandler::SizeGet + * tOleHandler::SizeSet + * tOleHandler::RectGet + * tOleHandler::RectSet + * + * Purpose: + * Returns or sets the size/position of the object contained here. + * + * Parameters: + * pszl/prcl LPSIZEL (Size) or LPRECTL (Rect) with the + * extents of interest. In Get situations, + * this will receive the extents; in Set it + * contains the extents. + * fDevice BOOL indicating that pszl/prcl is expressed + * in device units. Otherwise it's LOMETRIC. + * fInformObj (Set Only) BOOL indicating if we need to inform + * the object all. + * + * Return Value: + * None + */ + +void tOleHandler::SizeGet(LPSIZEL pszl, BOOL fDevice) + { + if (!fDevice) + { + pszl->cx=m_rcl.right-m_rcl.left; + pszl->cy=m_rcl.bottom-m_rcl.top; + } + else + { + RECT rc; + + SetRect(&rc, (int)(m_rcl.right-m_rcl.left) + , (int)(m_rcl.bottom-m_rcl.top), 0, 0); + + RectConvertMappings(&rc, NULL, TRUE); + + pszl->cx=(long)rc.left; + pszl->cy=(long)rc.top; + } + + return; + } + + +void tOleHandler::SizeSet(LPSIZEL pszl, BOOL fDevice, BOOL fInformObj) + { + SIZEL szl; + + if (!fDevice) + { + szl=*pszl; + m_rcl.right =pszl->cx+m_rcl.left; + m_rcl.bottom=pszl->cy+m_rcl.top; + } + else + { + RECT rc; + + SetRect(&rc, (int)pszl->cx, (int)pszl->cy, 0, 0); + RectConvertMappings(&rc, NULL, FALSE); + + m_rcl.right =(long)rc.left+m_rcl.left; + m_rcl.bottom=(long)rc.top+m_rcl.top; + + SETSIZEL(szl, (long)rc.left, (long)rc.top); + } + + //Tell OLE that this object was resized. + if (NULL!=m_pIOleObject && fInformObj) + { + HRESULT hr; + BOOL fRun=FALSE; + + //Convert our LOMETRIC into HIMETRIC by *=10 + szl.cx*=10; + szl.cy*=-10; //Our size is stored negative. + + /* + * If the MiscStatus bit of OLEMISC_RECOMPOSEONRESIZE + * is set, then we need to run the object before calling + * SetExtent to make sure it has a real chance to + * re-render the object. We have to update and close + * the object as well after this happens. + */ + + if (OLEMISC_RECOMPOSEONRESIZE & m_grfMisc) + { + if (!OleIsRunning(m_pIOleObject)) + { + OleRun(m_pIOleObject); + fRun=TRUE; + } + } + + hr=m_pIOleObject->SetExtent(m_fe.dwAspect, &szl); + + /* + * If the object is not running and it does not have + * RECOMPOSEONRESIZE, then SetExtent fails. Make + * sure that we call SetExtent again (by just calling + * SizeSet here again) when we next run the object. + */ + if (SUCCEEDED(hr)) + { + m_fSetExtent=FALSE; + + if (fRun) + { + m_pIOleObject->Update(); + m_pIOleObject->Close(OLECLOSE_SAVEIFDIRTY); + } + } + else + { + if (OLE_E_NOTRUNNING==GetScode(hr)) + m_fSetExtent=TRUE; + } + } + + return; + } + + +void tOleHandler::RectGet(LPRECTL prcl, BOOL fDevice) + { + if (!fDevice) + *prcl=m_rcl; + else + { + RECT rc; + + RECTFROMRECTL(rc, m_rcl); + RectConvertMappings(&rc, NULL, TRUE); + RECTLFROMRECT(*prcl, rc); + } + + return; + } + + +void tOleHandler::RectSet(LPRECTL prcl, BOOL fDevice, BOOL fInformObj) + { + SIZEL szl; + LONG cx, cy; + + /* + * Prevent reentrant calls that may come from calling + * UpdateInPlaceObjectRects here and elsewhere. + */ + if (m_fInRectSet) + return; + + m_fInRectSet=TRUE; + + cx=m_rcl.right-m_rcl.left; + cy=m_rcl.bottom-m_rcl.top; + + if (!fDevice) + m_rcl=*prcl; + else + { + RECT rc; + + RECTFROMRECTL(rc, *prcl); + RectConvertMappings(&rc, NULL, FALSE); + RECTLFROMRECT(m_rcl, rc); + } + + /* + * Tell ourselves that the size changed, if it did. SizeSet + * will call IOleObject::SetExtent for us. + */ + if ((m_rcl.right-m_rcl.left)!=cx || (m_rcl.bottom-m_rcl.top)!=cy) + { + SETSIZEL(szl, m_rcl.right-m_rcl.left, m_rcl.bottom-m_rcl.top); + SizeSet(&szl, FALSE, fInformObj); + } + + //Tell an in-place active object it moved too + UpdateInPlaceObjectRects(NULL, TRUE); + m_fInRectSet=FALSE; + return; + } + + + + + + + + +/* + * tOleHandler::DeactivateInPlaceObject + * + * Purpose: + * Deactivates an in-place object if there is one in this tenant. + * + * Parameters: + * fFull BOOL indicating full deactivation of UI + * deactivate only. + * + * Return Value: + * None + */ + +void tOleHandler::DeactivateInPlaceObject(BOOL fFull) + { + if (NULL!=m_pIOleIPObject) + { + /* + * Activate-when-visible objects only UI deactivate + * unless we're fully deactivating on purpose. + */ + if ((OLEMISC_ACTIVATEWHENVISIBLE & m_grfMisc) && !fFull) + m_pIOleIPObject->UIDeactivate(); + else + { + //CHAPTER24MOD + /* + * Only deactivate when there's no locks. If there + * is a lock, then remember that we need to deactivate + * when all the locks go away. + */ + if (0==m_cLockInPlace) + m_pIOleIPObject->InPlaceDeactivate(); + else + m_fPendingDeactivate=TRUE; + //End CHAPTER24MOD + } + } + + return; + } + + + +/* + * tOleHandler::UpdateInPlaceObjectRects + * + * Purpose: + * Generates a call to IOleInPlaceObject::SetObjectRects to allow + * it to show it's shading and its object adornments properly. + * This function deals in HIMETRIC units. + * + * Parameters: + * prcPos LPCRECT to the size the object wants. Ignored + * if NULL in which case we use the size of the + * tenant. This rect is in client coordinates of + * the pages window. + * fUseTenantRect BOOL indicating if we need to use the tenant + * rectangle offset for scrolling regardless. + * + * Return Value: + * None + */ + +void tOleHandler::UpdateInPlaceObjectRects(LPCRECT prcPos + , BOOL fUseTenantRect) + { + RECTL rcl; + RECT rc; + RECT rcClip; + BOOL fResizeTenant=TRUE; + + //We don't clip special anywhere in our window. + SetRect(&rcClip, 0, 0, 32767, 32767); + + /* + * Note that if the object here is activate-when-visible + * we'll always have this pointer. + */ + if (NULL!=m_pIOleIPObject) + { + /* + * This uses the last position rectangle from + * IOleInPlaceSite::OnPosRectChange if it's been + * initialized + */ + if (NULL==prcPos && -1!=m_rcPos.left && !fUseTenantRect) + prcPos=&m_rcPos; + + //This code is normally called from OnPosRectChange direct. + if (NULL!=prcPos && !fUseTenantRect) + { + rc=*prcPos; + + //Calculate the boundaries of the full page + //m_pPG->CalcBoundingRect(&rcClip, FALSE); + + //Make sure we limit object to page boundaries. + IntersectRect(&rc, &rc, &rcClip); + } + else + { + /* + * We have no rectangle of the object on which to + * base the position, so just use the tenant rectangle. + * This code is also used when scrolling objects. + */ + RectGet(&rcl, TRUE); + RECTFROMRECTL(rc, rcl); + + //Account for scrolling +// OffsetRect(&rc, -(int)m_pPG->m_xPos, -(int)m_pPG->m_yPos); + fResizeTenant=FALSE; + } + + + /* + * NOTE: The rectangles to SetObjectRects is in client + * coordinates of the pages window. + */ + if (NULL!=m_pIOleIPObject) + m_pIOleIPObject->SetObjectRects(&rc, &rcClip); + + if (fResizeTenant) + { + //Need to tell the tenant to change position too + RECTLFROMRECT(rcl, rc); + RectSet(&rcl, TRUE, FALSE); + } + } + + return; + } + + +/* + * tOleHandler::ObjectWindow + * + * Purpose: + * Returns the window handle of the in-place object. + * + * Parameters: + * None + * + * Return Value: + * HWND Handle of the object window. + */ + +HWND tOleHandler::ObjectWindow(void) + { + HWND hWnd=NULL; + + if (NULL!=m_pIOleIPObject) + m_pIOleIPObject->GetWindow(&hWnd); + + return hWnd; + } + + + + +/* + * tOleHandler::ControlInitialize + * + * Purpose: + * Initializes the control if that's the type of object we have + * in the site. + * + * Parameters: + * None + * + * Return Value: + * BOOL TRUE if initialization worked, FALSE otherwise. + */ + +BOOL tOleHandler::ControlInitialize(void) + { + HRESULT hr; + BOOL fEvents; + + if (NULL==m_pObj) + return FALSE; + + hr=m_pObj->QueryInterface(IID_IOleControl + , (PPVOID)&m_pIOleControl); + + //Failure means not a control. + if (FAILED(hr)) + return FALSE; + + m_ambientProp.setControl(m_pIOleControl); + + m_dwState |= TENANTSTATE_CONTROL; + + if (OLEMISC_ACTSLIKEBUTTON & m_grfMisc) + m_dwState |= TENANTSTATE_BUTTON; + + //We don't use this, but might as well store it. + if (OLEMISC_ACTSLIKELABEL & m_grfMisc) + m_dwState |= TENANTSTATE_LABEL; + + /* + * Call IOleControl::GetControlInfo to retrieve the keyboard + * information for this control. We have to reload this + * information in IOleControlSite::OnControlInfoChanged. + */ + /*m_fHaveControlInfo=SUCCEEDED(m_pIOleControl + ->GetControlInfo(&m_ctrlInfo));*/ //!!! + + + /* + * If you wanted to receive IPropertyNotifySink notifications + * for a control, establish that advisory connection here + * through the object's IConnectionPointContainer and + * IConnectionPoint. + */ + + return TRUE; + } + + + +/* + * tOleHandler::GetControlFlags + * + * Purpose: + * Requests flags describing the control inside this tenant + * if there is, in fact a control. + * + * Parameters: + * None + * + * Return Value: + * DWORD Flags describing the control from the + * TENANT + */ + +DWORD tOleHandler::GetControlFlags(void) + { + return m_dwState & STATEMASK_CONTROLS; + } + + + + + +/* + * tOleHandler::TryMnemonic + * + * Purpose: + * Asks the tenant to check the given keyboard message against + * one that its control might want, passing it to + * IOleControl::OnMnemonic if there is a match. + * + * Parameters: + * pMsg LPMSG containing the message to check. + * + * Return Value: + * BOOL TRUE if the mnemonic was a match, + * FALSE otherwise. + */ + +BOOL tOleHandler::TryMnemonic(LPMSG pMsg) + { + UINT i; + BOOL fRet=FALSE; + LPACCEL pACC; + BYTE fVirt=FVIRTKEY; + + if (!m_fHaveControlInfo) //False for non-controls + return FALSE; + + if (0==m_ctrlInfo.cAccel) + return FALSE; + + pACC=(LPACCEL)GlobalLock(m_ctrlInfo.hAccel); + + if (NULL==pACC) + return FALSE; + + /* + * We'll come here on WM_KEYDOWN messages and WM_SYSKEYDOWN + * messages. The control's accelerator table will contain + * entries that each have the desired key and the various + * modifier flags. We the create the current modifier flags + * then look for entries that match those flags and the key + * that is in the message itself. + */ + + fVirt |= (WM_SYSKEYDOWN==pMsg->message) ? FALT : 0; + + //GetKeyState works on the last message + fVirt |= (0x8000 & GetKeyState(VK_CONTROL)) ? FCONTROL : 0; + fVirt |= (0x8000 & GetKeyState(VK_SHIFT)) ? FSHIFT : 0; + + for (i=0; i < m_ctrlInfo.cAccel; i++) + { + if (pACC[i].key==pMsg->wParam && pACC[i].fVirt==fVirt) + { + m_pIOleControl->OnMnemonic(pMsg); + fRet=TRUE; + break; + } + } + + GlobalUnlock(m_ctrlInfo.hAccel); + return fRet; + } + + + + + +/* + * tOleHandler::AmbientChange + * + * Purpose: + * Notifes a control that an ambient property has changed in + * the control site. + * + * Parameters: + * dispID DISPID of the property that changed. + * + * Return Value: + * None + */ + +void tOleHandler::AmbientChange(DISPID dispID) + { + if (NULL!=m_pIOleControl) + m_pIOleControl->OnAmbientPropertyChange(dispID); + + return; + } + +//End CHAPTER24MOD + +void tOleHandler::OnShow() +{ + // Se objeto ja' tive sido ativado, ignora chamada + // Alguns controles reagem mal quando ativados + // mais de uma vez + if(m_pIOleIPObject != NULL) + return; + + if ((OLEMISC_ACTIVATEWHENVISIBLE & m_grfMisc)) + Activate(OLEIVERB_INPLACEACTIVATE, NULL); +} + + +void tOleHandler::GetNaturalSize(long *pWidth, long *pHeight) +{ + assert(pWidth && pHeight); + if(!pWidth || !pHeight) + return; + + *pWidth = natural_width; + *pHeight = natural_height; +} + +/* + * CalcNaturalSize + * Obtem o tamanho desejado pelo objeto + */ + +void tOleHandler::CalcNaturalSize() +{ + HRESULT hr; + SIZEL sizel; + RECTL rcl; + + assert(m_pIViewObject2 != NULL); + + if(!m_pIViewObject2) + return; + + hr = m_pIViewObject2->GetExtent(m_fe.dwAspect, -1, NULL, &sizel); + + if(FAILED(hr)) + return; + + SETRECTL(rcl, 0, 0, sizel.cx/10, -sizel.cy/10); + RectSet(&rcl, FALSE, TRUE); + + // Obtem medidas ja' convertidas para pixels + SizeGet(&sizel, TRUE); + + natural_width = sizel.cx; + natural_height = sizel.cy; +} + diff --git a/iup/srcole/tOleHandler.h b/iup/srcole/tOleHandler.h new file mode 100755 index 0000000..966cb30 --- /dev/null +++ b/iup/srcole/tOleHandler.h @@ -0,0 +1,139 @@ +// tOleHandler.h: interface for the tOleHandler class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_) +#define AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include +#include + +#include "tOleClientSite.h" +#include "tOleInPlaceSite.h" +#include "tOleControlSite.h" +#include "tDispatch.h" +#include "tAmbientProperties.h" +#include "tLegacy.h" + +#ifndef LPOLEINPLACEOBJECT +typedef interface IOleInPlaceObject *LPOLEINPLACEOBJECT; +#endif + +class tOleClientSite; + +class tOleHandler : public IUnknown +{ +public: + friend class tOleClientSite; + friend class tOleInPlaceSite; + friend class tOleControlSite; + friend class tDispatch; + tOleHandler(); + virtual ~tOleHandler(); + tAmbientProperties m_ambientProp; + + HWND m_hWnd; +private: + + DWORD m_cOpens; //Count calls to Open + + BOOL m_fInitialized; //Something here? + LPUNKNOWN m_pObj; //The object here + LPSTORAGE m_pIStorage; //Sub-storage for tenant + + FORMATETC m_fe; //Used to create the object + DWORD m_dwState; //State flags + RECTL m_rcl; //Space of this object + CLSID m_clsID; //Object class (for statics) + BOOL m_fSetExtent; //Call SetExtent on next run + + ULONG m_cRef; //We're an object now + LPOLEOBJECT m_pIOleObject; //IOleObject on m_pObj + LPVIEWOBJECT2 m_pIViewObject2; //IViewObject2 on m_pObj + ULONG m_grfMisc; //OLEMISC flags + BOOL m_fRepaintEnabled; //No redundant paints + + //Our interfaces + tOleClientSite *m_pImpIOleClientSite; + + tOleInPlaceSite *m_pImpIOleIPSite; //Our interface + LPOLEINPLACEOBJECT m_pIOleIPObject; //The object + RECT m_rcPos; //Last object rect + BOOL m_fInRectSet; //Prevent reentrancy + + //CHAPTER24MOD + tOleControlSite *m_pImpIOleControlSite; //Implemented + tDispatch *m_pImpIDispatch; //Implemented + + //Control interfaces + LPOLECONTROL m_pIOleControl; //Used + + //Other state information + BOOL m_fHaveControlInfo; + CONTROLINFO m_ctrlInfo; + ULONG m_cLockInPlace; + BOOL m_fPendingDeactivate; + //End CHAPTER24MOD + + +/* +* This flag is used exculsively by the implementation of +* IOleUILinkContainer on the page we're in for the Links +* Dialog. Since we never use it ourselves, public here +* is no big deal. +*/ +public: + BOOL m_fLinkAvail; + +protected: + void CalcNaturalSize(void); + long natural_height; + long natural_width; + BOOL ObjectInitialize(LPUNKNOWN); + + //CHAPTER24MOD + BOOL ControlInitialize(void); + //End CHAPTER24MOD + +public: + void setDesignMode(bool value, bool notify); + void GetNaturalSize(long *pWidth, long *pHeight); + void OnShow(void); + //Gotta have an IUnknown for delegation + STDMETHODIMP QueryInterface(REFIID, LPVOID *); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + UINT Create(LPVOID); + BOOL Open(LPSTORAGE); + void Close(BOOL); + + + BOOL Activate(LONG, LPMSG); + + void EnableRepaint(BOOL); + + void ObjectGet(LPUNKNOWN *); + void SizeGet(LPSIZEL, BOOL); + void SizeSet(LPSIZEL, BOOL, BOOL); + void RectGet(LPRECTL, BOOL); + void RectSet(LPRECTL, BOOL, BOOL); + + void DeactivateInPlaceObject(BOOL); + void UpdateInPlaceObjectRects(LPCRECT, BOOL); + HWND ObjectWindow(void); + + //CHAPTER24MOD + DWORD GetControlFlags(); + BOOL TryMnemonic(LPMSG); + void AmbientChange(DISPID); + //End CHAPTER24MOD + + +}; + +#endif // !defined(AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_) diff --git a/iup/srcole/tOleInPlaceFrame.cpp b/iup/srcole/tOleInPlaceFrame.cpp new file mode 100755 index 0000000..15fc9b4 --- /dev/null +++ b/iup/srcole/tOleInPlaceFrame.cpp @@ -0,0 +1,429 @@ +// tOleInPlaceFrame.cpp: implementation of the tOleInPlaceFrame class. +// +////////////////////////////////////////////////////////////////////// + +#include "tOleInPlaceFrame.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +/* + * tOleInPlaceFrame::tOleInPlaceFrame + * tOleInPlaceFrame::~tOleInPlaceFrame + * + * Constructor Parameters: + * hInst HINSTANCE from WinMain + * hInstPrev HINSTANCE from WinMain + * pszCmdLine LPSTR from WinMain + * nCmdShow int from WInMain + */ + +tOleInPlaceFrame::tOleInPlaceFrame(HWND hwnd) + { + m_cRef=0; + m_hAccelIP=NULL; + m_fInContextHelp=FALSE; + m_pIOleIPActiveObject=NULL; + m_hWnd = hwnd; + + return; + } + + +tOleInPlaceFrame::~tOleInPlaceFrame(void) + { + } + + +/* + * tOleInPlaceFrame::QueryInterface + * tOleInPlaceFrame::AddRef + * tOleInPlaceFrame::Release + */ + +STDMETHODIMP tOleInPlaceFrame::QueryInterface(REFIID riid, PPVOID ppv) + { + //We only know IUnknown and IOleInPlaceFrame + *ppv=NULL; + + if (IID_IUnknown==riid || IID_IOleInPlaceUIWindow==riid + || IID_IOleWindow==riid || IID_IOleInPlaceFrame==riid) + *ppv=(LPOLEINPLACEFRAME)this; + + if (NULL!=*ppv) + { + ((LPUNKNOWN)*ppv)->AddRef(); + return NOERROR; + } + + return ResultFromScode(E_NOINTERFACE); + } + + +STDMETHODIMP_(ULONG) tOleInPlaceFrame::AddRef(void) + { + return ++m_cRef; + } + +STDMETHODIMP_(ULONG) tOleInPlaceFrame::Release(void) + { + /* + * We don't do anything with this since we're not controlled + * by a reference count as far as in-place stuff is concerned. + */ + return --m_cRef; + } + + + + +/* + * tOleInPlaceFrame::GetWindow + * + * Purpose: + * Retrieves the handle of the window associated with the object + * on which this interface is implemented. + * + * Parameters: + * phWnd HWND * in which to store the window handle. + * + * Return Value: + * HRESULT NOERROR if successful, E_FAIL if there is no + * window. + */ + +STDMETHODIMP tOleInPlaceFrame::GetWindow(HWND *phWnd) + { + *phWnd=m_hWnd; + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::ContextSensitiveHelp + * + * Purpose: + * Instructs the object on which this interface is implemented to + * enter or leave a context-sensitive help mode. + * + * Parameters: + * fEnterMode BOOL TRUE to enter the mode, FALSE otherwise. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceFrame::ContextSensitiveHelp(BOOL fEnterMode) + { + /* + * Don't bother if there is no active object since we don't do + * context help on our own. + */ + if (NULL==m_pIOleIPActiveObject) + return NOERROR; + + /* + * If the state changes, an MDI frame should call the same + * function in all documents. An SDI frame should just call + * the active object, if it has one. + */ + + if (m_fInContextHelp!=fEnterMode) + { + m_fInContextHelp=fEnterMode; + + m_pIOleIPActiveObject->ContextSensitiveHelp(fEnterMode); + + } + + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::GetBorder + * + * Purpose: + * Returns the rectangle in which the container is willing to + * negotiate about an object's adornments. + * + * Parameters: + * prcBorder LPRECT in which to store the rectangle. + * + * Return Value: + * HRESULT NOERROR if all is well, INPLACE_E_NOTOOLSPACE + * if there is no negotiable space. + */ + +STDMETHODIMP tOleInPlaceFrame::GetBorder(LPRECT prcBorder) + { + if (NULL==prcBorder) + return ResultFromScode(E_INVALIDARG); + + /* + * We return all the client area space sans the StatStrip, + * which we control + */ + GetClientRect(m_hWnd, prcBorder); + + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::RequestBorderSpace + * + * Purpose: + * Asks the container if it can surrender the amount of space + * in pBW that the object would like for it's adornments. The + * container does nothing but validate the spaces on this call. + * + * Parameters: + * pBW LPCBORDERWIDTHS containing the requested space. + * The values are the amount of space requested + * from each side of the relevant window. + * + * Return Value: + * HRESULT NOERROR if we can give up space, + * INPLACE_E_NOTOOLSPACE otherwise. + */ + +STDMETHODIMP tOleInPlaceFrame::RequestBorderSpace(LPCBORDERWIDTHS pBW) + { + //Everything is fine with us, so always return an OK. + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::SetBorderSpace + * + * Purpose: + * Called when the object now officially requests that the + * container surrender border space it previously allowed + * in RequestBorderSpace. The container should resize windows + * appropriately to surrender this space. + * + * Parameters: + * pBW LPCBORDERWIDTHS containing the amount of space + * from each side of the relevant window that the + * object is now reserving. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceFrame::SetBorderSpace(LPCBORDERWIDTHS pBW) + { + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::SetActiveObject + * + * Purpose: + * Provides the container with the object's IOleInPlaceActiveObject + * pointer + * + * Parameters: + * pIIPActiveObj LPOLEINPLACEACTIVEOBJECT of interest. + * pszObj LPCOLESTR naming the object. Not used. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceFrame::SetActiveObject + (LPOLEINPLACEACTIVEOBJECT pIIPActiveObj, LPCOLESTR pszObj) + { + if (NULL!=m_pIOleIPActiveObject) + m_pIOleIPActiveObject->Release(); + + //NULLs m_pIOleIPActiveObject if pIIPActiveObj is NULL + m_pIOleIPActiveObject=pIIPActiveObj; + + if (NULL!=m_pIOleIPActiveObject) + m_pIOleIPActiveObject->AddRef(); + + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::InsertMenus + * + * Purpose: + * Instructs the container to place its in-place menu items where + * necessary in the given menu and to fill in elements 0, 2, and 4 + * of the OLEMENUGROUPWIDTHS array to indicate how many top-level + * items are in each group. + * + * Parameters: + * hMenu HMENU in which to add popups. + * pMGW LPOLEMENUGROUPWIDTHS in which to store the + * width of each container menu group. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceFrame::InsertMenus(HMENU hMenu + , LPOLEMENUGROUPWIDTHS pMGW) + { + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::SetMenu + * + * Purpose: + * Instructs the container to replace whatever menu it's currently + * using with the given menu and to call OleSetMenuDescritor so OLE + * knows to whom to dispatch messages. + * + * Parameters: + * hMenu HMENU to show. + * hOLEMenu HOLEMENU to the menu descriptor. + * hWndObj HWND of the active object to which messages are + * dispatched. + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceFrame::SetMenu(HMENU hMenu + , HOLEMENU hOLEMenu, HWND hWndObj) + { + HRESULT hr; + + /* + * Our responsibilities here are to put the menu on the frame + * window and call OleSetMenuDescriptor. + * CPatronClient::SetMenu which we call here takes care of + * MDI/SDI differences. + * + * We also want to save the object's hWnd for use in WM_SETFOCUS + * processing. + */ + + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::RemoveMenus + * + * Purpose: + * Asks the container to remove any menus it put into hMenu in + * InsertMenus. + * + * Parameters: + * hMenu HMENU from which to remove the container's + * items. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceFrame::RemoveMenus(HMENU hMenu) + { + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::SetStatusText + * + * Purpose: + * Asks the container to place some text in a status line, if one + * exists. If the container does not have a status line it + * should return E_FAIL here in which case the object could + * display its own. + * + * Parameters: + * pszText LPCOLESTR to display. + * + * Return Value: + * HRESULT NOERROR if successful, S_TRUNCATED if not all + * of the text could be displayed, or E_FAIL if + * the container has no status line. + */ + +STDMETHODIMP tOleInPlaceFrame::SetStatusText(LPCOLESTR pszText) + { + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::EnableModeless + * + * Purpose: + * Instructs the container to show or hide any modeless popup + * windows that it may be using. + * + * Parameters: + * fEnable BOOL indicating to enable/show the windows + * (TRUE) or to hide them (FALSE). + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceFrame::EnableModeless(BOOL fEnable) + { + return NOERROR; + } + + + + +/* + * tOleInPlaceFrame::TranslateAccelerator + * + * Purpose: + * When dealing with an in-place object from an EXE server, this + * is called to give the container a chance to process accelerators + * after the server has looked at the message. + * + * Parameters: + * pMSG LPMSG for the container to examine. + * wID WORD the identifier in the container's + * accelerator table (from IOleInPlaceSite + * ::GetWindowContext) for this message (OLE does + * some translation before calling). + * + * Return Value: + * HRESULT NOERROR if the keystroke was used, + * S_FALSE otherwise. + */ + +STDMETHODIMP tOleInPlaceFrame::TranslateAccelerator(LPMSG pMSG, WORD wID) + { + SCODE sc; + + sc=S_OK; + return ResultFromScode(sc); + } diff --git a/iup/srcole/tOleInPlaceFrame.h b/iup/srcole/tOleInPlaceFrame.h new file mode 100755 index 0000000..4048f12 --- /dev/null +++ b/iup/srcole/tOleInPlaceFrame.h @@ -0,0 +1,67 @@ +// tOleInPlaceFrame.h: interface for the tOleInPlaceFrame class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TOLEINPLACEFRAME_H__76ABD328_9D90_11D3_A906_0004ACE655F9__INCLUDED_) +#define AFX_TOLEINPLACEFRAME_H__76ABD328_9D90_11D3_A906_0004ACE655F9__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include "tLegacy.h" + +/* + * UINT value such that adding one produces zero. Portable to Win32. + * This is used to represent a non-existent zero-based UINT value + */ +#define NOVALUE ((UINT)-1) + + +//PATRON.CPP: Frame object that creates a main window + +class tOleInPlaceFrame : public IOleInPlaceFrame + { + private: + BOOL m_fInitialized; //OleInitialize worked + + DWORD m_cRef; + HWND m_hWnd; //Object window + + BOOL m_fInContextHelp; //In context help mode? + + LPOLEINPLACEACTIVEOBJECT m_pIOleIPActiveObject; + + //This is for access from IOleInPlaceSite::GetWindowContext + public: + HACCEL m_hAccelIP; //Accelerators for in-place + + protected: + + public: + tOleInPlaceFrame(HWND); + virtual ~tOleInPlaceFrame(void); + + //IOleInPlaceFrame implementation + STDMETHODIMP QueryInterface(REFIID, LPVOID *); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + STDMETHODIMP GetWindow(HWND *); + STDMETHODIMP ContextSensitiveHelp(BOOL); + STDMETHODIMP GetBorder(LPRECT); + STDMETHODIMP RequestBorderSpace(LPCBORDERWIDTHS); + STDMETHODIMP SetBorderSpace(LPCBORDERWIDTHS); + STDMETHODIMP SetActiveObject(LPOLEINPLACEACTIVEOBJECT + , LPCOLESTR); + STDMETHODIMP InsertMenus(HMENU, LPOLEMENUGROUPWIDTHS); + STDMETHODIMP SetMenu(HMENU, HOLEMENU, HWND); + STDMETHODIMP RemoveMenus(HMENU); + STDMETHODIMP SetStatusText(LPCOLESTR); + STDMETHODIMP EnableModeless(BOOL); + STDMETHODIMP TranslateAccelerator(LPMSG, WORD); + }; + + + +#endif // !defined(AFX_TOLEINPLACEFRAME_H__76ABD328_9D90_11D3_A906_0004ACE655F9__INCLUDED_) diff --git a/iup/srcole/tOleInPlaceSite.cpp b/iup/srcole/tOleInPlaceSite.cpp new file mode 100755 index 0000000..977777c --- /dev/null +++ b/iup/srcole/tOleInPlaceSite.cpp @@ -0,0 +1,485 @@ +// tOleInPlaceSite.cpp: implementation of the tOleInPlaceSite class. +// +////////////////////////////////////////////////////////////////////// + +#include "tOleInPlaceSite.h" +#include "tOleHandler.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +BOOL g_fSwitchingActive=FALSE; + +/* + * tOleInPlaceSite::tOleInPlaceSite + * tOleInPlaceSite::~tOleInPlaceSite + * + * Parameters (Constructor): + * pTen PCTenant of the tenant we're in. + * pUnkOuter LPUNKNOWN to which we delegate. + */ + +tOleInPlaceSite::tOleInPlaceSite(class tOleHandler *pTen + , LPUNKNOWN pUnkOuter) + { + m_cRef=0; + m_pTen=pTen; + m_pUnkOuter=pUnkOuter; + m_oleinplaceframe = new tOleInPlaceFrame(m_pTen->m_hWnd); + return; + } + +tOleInPlaceSite::~tOleInPlaceSite(void) + { + return; + } + + + +/* + * tOleInPlaceSite::QueryInterface + * tOleInPlaceSite::AddRef + * tOleInPlaceSite::Release + * + * Purpose: + * IUnknown members for tOleInPlaceSite object. + */ + +STDMETHODIMP tOleInPlaceSite::QueryInterface(REFIID riid + , LPVOID *ppv) + { + return m_pUnkOuter->QueryInterface(riid, ppv); + } + + +STDMETHODIMP_(ULONG) tOleInPlaceSite::AddRef(void) + { + ++m_cRef; + return m_pUnkOuter->AddRef(); + } + +STDMETHODIMP_(ULONG) tOleInPlaceSite::Release(void) + { + --m_cRef; + return m_pUnkOuter->Release(); + } + + + + +/* + * tOleInPlaceActiveObject::GetWindow + * + * Purpose: + * Retrieves the handle of the window associated with the object + * on which this interface is implemented. + * + * Parameters: + * phWnd HWND * in which to store the window handle. + * + * Return Value: + * HRESULT NOERROR if successful, E_FAIL if there is no + * window. + */ + +STDMETHODIMP tOleInPlaceSite::GetWindow(HWND *phWnd) + { + *phWnd=m_pTen->m_hWnd; + return NOERROR; + } + + + + +/* + * tOleInPlaceActiveObject::ContextSensitiveHelp + * + * Purpose: + * Instructs the object on which this interface is implemented to + * enter or leave a context-sensitive help mode. + * + * Parameters: + * fEnterMode BOOL TRUE to enter the mode, FALSE otherwise. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceSite::ContextSensitiveHelp + (BOOL fEnterMode) + { + return E_NOTIMPL; + } + + + + +/* + * tOleInPlaceSite::CanInPlaceActivate + * + * Purpose: + * Answers the server whether or not we can currently in-place + * activate its object. By implementing this interface we say + * that we support in-place activation, but through this function + * we indicate whether the object can currently be activated + * in-place. Iconic aspects, for example, cannot, meaning we + * return S_FALSE. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR if we can in-place activate the object + * in this site, S_FALSE if not. + */ + +STDMETHODIMP tOleInPlaceSite::CanInPlaceActivate(void) + { + if (DVASPECT_CONTENT!=m_pTen->m_fe.dwAspect) + return ResultFromScode(S_FALSE); + + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::OnInPlaceActivate + * + * Purpose: + * Informs the container that an object is being activated in-place + * such that the container can prepare appropriately. The + * container does not, however, make any user interface changes at + * this point. See OnUIActivate. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR or an appropriate error code. + */ + +STDMETHODIMP tOleInPlaceSite::OnInPlaceActivate(void) + { + //CHAPTER24MOD + m_pTen->m_fPendingDeactivate=FALSE; + //End CHAPTER24MOD + + //m_pIOleIPObject is our in-place flag. + m_pTen->m_pObj->QueryInterface(IID_IOleInPlaceObject + , (PPVOID)&m_pTen->m_pIOleIPObject); + + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::OnInPlaceDeactivate + * + * Purpose: + * Notifies the container that the object has deactivated itself + * from an in-place state. Opposite of OnInPlaceActivate. The + * container does not change any UI at this point. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR or an appropriate error code. + */ + +STDMETHODIMP tOleInPlaceSite::OnInPlaceDeactivate(void) + { + /* + * Since we don't have an Undo command, we can tell the object + * right away to discard its Undo state. + */ + m_pTen->Activate(OLEIVERB_DISCARDUNDOSTATE, NULL); + ReleaseInterface(m_pTen->m_pIOleIPObject); + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::OnUIActivate + * + * Purpose: + * Informs the container that the object is going to start munging + * around with user interface, like replacing the menu. The + * container should remove any relevant UI in preparation. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR or an appropriate error code. + */ + +STDMETHODIMP tOleInPlaceSite::OnUIActivate(void) + { + //CHAPTER24MOD + m_pTen->m_fPendingDeactivate=FALSE; + //End CHAPTER24MOD + + /* + * Change the currently selected tenant in the page. This + * will UIDeactivate the currently UI Active tenant. + */ + g_fSwitchingActive=TRUE; + //m_pTen->m_pPG->m_pPageCur->SwitchActiveTenant(m_pTen); + g_fSwitchingActive=FALSE; + + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::OnUIDeactivate + * + * Purpose: + * Informs the container that the object is deactivating its + * in-place user interface at which time the container may + * reinstate its own. Opposite of OnUIActivate. + * + * Parameters: + * fUndoable BOOL indicating if the object will actually + * perform an Undo if the container calls + * ReactivateAndUndo. + * + * Return Value: + * HRESULT NOERROR or an appropriate error code. + */ + +STDMETHODIMP tOleInPlaceSite::OnUIDeactivate(BOOL fUndoable) + { + MSG msg; + + /* + * Ignore this notification if we're switching between + * multiple active objects. + */ + if (g_fSwitchingActive) + return NOERROR; + + //If in shutdown (NULL storage), don't check messages. +/* if (NULL==m_pTen->m_pIStorage) + { + g_pFR->ReinstateUI(); + return NOERROR; + }*/ + + //If there's a pending double-click, delay showing our UI +/* if (!PeekMessage(&msg, pDoc->Window(), WM_LBUTTONDBLCLK + , WM_LBUTTONDBLCLK, PM_NOREMOVE | PM_NOYIELD)) + { + //Turn everything back on. + g_pFR->ReinstateUI(); + } + else*/ + + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::DeactivateAndUndo + * + * Purpose: + * If immediately after activation the object does an Undo, the + * action being undone is the activation itself, and this call + * informs the container that this is, in fact, what happened. + * The container should call IOleInPlaceObject::UIDeactivate. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR or an appropriate error code. + */ + +STDMETHODIMP tOleInPlaceSite::DeactivateAndUndo(void) + { + //CHAPTER24MOD + /* + * Note that we don't pay attention to the locking + * from IOleControlSite::LockInPlaceActive since only + * the object calls this function and should know + * that it's going to be deactivated. + */ + //End CHAPTER24MOD + + m_pTen->m_pIOleIPObject->InPlaceDeactivate(); + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::DiscardUndoState + * + * Purpose: + * Informs the container that something happened in the object + * that means the container should discard any undo information + * it currently maintains for the object. + * + * Parameters: + * None + * + * Return Value: + * HRESULT NOERROR or an appropriate error code. + */ + +STDMETHODIMP tOleInPlaceSite::DiscardUndoState(void) + { + return ResultFromScode(E_NOTIMPL); + } + + + + +/* + * tOleInPlaceSite::GetWindowContext + * + * Purpose: + * Provides an in-place object with pointers to the frame and + * document level in-place interfaces (IOleInPlaceFrame and + * IOleInPlaceUIWindow) such that the object can do border + * negotiation and so forth. Also requests the position and + * clipping rectangles of the object in the container and a + * pointer to an OLEINPLACEFRAME info structure which contains + * accelerator information. + * + * Note that the two interfaces this call returns are not + * available through QueryInterface on IOleInPlaceSite since they + * live with the frame and document, but not the site. + * + * Parameters: + * ppIIPFrame LPOLEINPLACEFRAME * in which to return the + * AddRef'd pointer to the container's + * IOleInPlaceFrame. + * ppIIPUIWindow LPOLEINPLACEUIWINDOW * in which to return + * the AddRef'd pointer to the container document's + * IOleInPlaceUIWindow. + * prcPos LPRECT in which to store the object's position. + * prcClip LPRECT in which to store the object's visible + * region. + * pFI LPOLEINPLACEFRAMEINFO to fill with accelerator + * stuff. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceSite::GetWindowContext + (LPOLEINPLACEFRAME *ppIIPFrame, LPOLEINPLACEUIWINDOW + *ppIIPUIWindow, LPRECT prcPos, LPRECT prcClip + , LPOLEINPLACEFRAMEINFO pFI) + { + RECTL rcl; + + *ppIIPUIWindow=NULL; + *ppIIPFrame=m_oleinplaceframe; + m_oleinplaceframe->AddRef(); + + GetClientRect(m_pTen->m_hWnd, prcPos); + GetClientRect(m_pTen->m_hWnd, prcClip); + +/* *ppIIPFrame=(LPOLEINPLACEFRAME)g_pFR; + g_pFR->AddRef();*/ + +/* if (NULL!=pDoc) + { + pDoc->QueryInterface(IID_IOleInPlaceUIWindow + , (PPVOID)ppIIPUIWindow); + }*/ + + //Now get the rectangles and frame information. + /*m_pTen->RectGet(&rcl, TRUE); + RECTFROMRECTL(*prcPos, rcl); + 0 + //Include scroll position here. + OffsetRect(prcPos, -(int)m_pTen->m_pPG->m_xPos + , -(int)m_pTen->m_pPG->m_yPos); + + SetRect(prcClip, 0, 0, 32767, 32767); +*/ + pFI->cb=sizeof(OLEINPLACEFRAMEINFO); + pFI->fMDIApp=FALSE; + + pFI->hwndFrame=m_pTen->m_hWnd; + + pFI->haccel=NULL; + pFI->cAccelEntries=0; + + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::Scroll + * + * Purpose: + * Asks the container to scroll the document, and thus the object, + * by the given amounts in the sz parameter. + * + * Parameters: + * sz SIZE containing signed horizontal and vertical + * extents by which the container should scroll. + * These are in device units. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceSite::Scroll(SIZE sz) + { + /*int x, y; + + x=m_pTen->m_pPG->m_xPos+sz.cx; + y=m_pTen->m_pPG->m_yPos+sz.cy; + + SendScrollPosition(m_pTen->m_hWnd, WM_HSCROLL, x); + SendScrollPosition(m_pTen->m_hWnd, WM_VSCROLL, y);*/ + return NOERROR; + } + + + + +/* + * tOleInPlaceSite::OnPosRectChange + * + * Purpose: + * Informs the container that the in-place object was resized. + * The container must call IOleInPlaceObject::SetObjectRects. + * This does not change the site's rectangle in any case. + * + * Parameters: + * prcPos LPCRECT containing the new size of the object. + * + * Return Value: + * HRESULT NOERROR + */ + +STDMETHODIMP tOleInPlaceSite::OnPosRectChange(LPCRECT prcPos) + { + if (NULL!=prcPos) + m_pTen->m_rcPos=*prcPos; + + m_pTen->UpdateInPlaceObjectRects(prcPos, FALSE); + return NOERROR; + } + diff --git a/iup/srcole/tOleInPlaceSite.h b/iup/srcole/tOleInPlaceSite.h new file mode 100755 index 0000000..d559df2 --- /dev/null +++ b/iup/srcole/tOleInPlaceSite.h @@ -0,0 +1,47 @@ +// tOleInPlaceSite.h: interface for the tOleInPlaceSite class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_TOLEINPLACESITE_H__37A5ADEB_91FB_11D3_A906_0004AC252223__INCLUDED_) +#define AFX_TOLEINPLACESITE_H__37A5ADEB_91FB_11D3_A906_0004AC252223__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include +#include "tOleInPlaceFrame.h" + +class tOleInPlaceSite : public IOleInPlaceSite +{ +protected: + ULONG m_cRef; + class tOleHandler *m_pTen; + LPUNKNOWN m_pUnkOuter; + +public: + tOleInPlaceFrame * m_oleinplaceframe; + tOleInPlaceSite(class tOleHandler *, LPUNKNOWN); + ~tOleInPlaceSite(void); + + STDMETHODIMP QueryInterface(REFIID, LPVOID*); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + STDMETHODIMP GetWindow(HWND *); + STDMETHODIMP ContextSensitiveHelp(BOOL); + STDMETHODIMP CanInPlaceActivate(void); + STDMETHODIMP OnInPlaceActivate(void); + STDMETHODIMP OnUIActivate(void); + STDMETHODIMP GetWindowContext(LPOLEINPLACEFRAME * + , LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT + , LPOLEINPLACEFRAMEINFO); + STDMETHODIMP Scroll(SIZE); + STDMETHODIMP OnUIDeactivate(BOOL); + STDMETHODIMP OnInPlaceDeactivate(void); + STDMETHODIMP DiscardUndoState(void); + STDMETHODIMP DeactivateAndUndo(void); + STDMETHODIMP OnPosRectChange(LPCRECT); +}; + +#endif // !defined(AFX_TOLEINPLACESITE_H__37A5ADEB_91FB_11D3_A906_0004AC252223__INCLUDED_) diff --git a/iup/srcpplot/Makefile b/iup/srcpplot/Makefile new file mode 100755 index 0000000..e10ef19 --- /dev/null +++ b/iup/srcpplot/Makefile @@ -0,0 +1,6 @@ + +.PHONY: do_all iup_pplot +do_all: iup_pplot + +iup_pplot: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak diff --git a/iup/srcpplot/config.mak b/iup/srcpplot/config.mak new file mode 100755 index 0000000..7c3975b --- /dev/null +++ b/iup/srcpplot/config.mak @@ -0,0 +1,25 @@ +PROJNAME = iup +LIBNAME = iup_pplot +OPT = YES + +USE_CD = Yes + +ifdef DBG + DEFINES += IUP_ASSERT +endif + +INCLUDES = ../include ../src +LDIR = ../lib/$(TEC_UNAME) +LIBS = iup iupcd + +DEFINES = _IUP_PPLOT_ CD_NO_OLD_INTERFACE + +SRC = iupPPlot.cpp iupPPlotInteraction.cpp iup_pplot.cpp + +ifneq ($(findstring owc, $(TEC_UNAME)), ) + CPPFLAGS = -xr -xst +endif + +ifeq "$(TEC_UNAME)" "vc6" + INCLUDES += C:\LNG\STLport\include +endif diff --git a/iup/srcpplot/iupPPlot.cpp b/iup/srcpplot/iupPPlot.cpp new file mode 100755 index 0000000..c0d07c9 --- /dev/null +++ b/iup/srcpplot/iupPPlot.cpp @@ -0,0 +1,2470 @@ +/*************************************************************************** + * * + * Copyright notice: * + * * + * This is free Pier ware. You may do whatever you want with this code, * + * except that you should not remove this copyright notice. * + * * + ***************************************************************************/ + +#ifdef _MSC_VER +#pragma warning(disable: 4100) +#pragma warning(disable: 4512) +#endif + +#include +#include +#include + +#include "iupPPlot.h" + +const float kFloatSmall = 1e-20f; +const float kLogMin = 1e-10f;// min argument for log10 function +const float kExpMax = 1e10f;// max argument for pow10 function +const float kLogMinClipValue = 1e-10f;// pragmatism to avoid problems with small values in log plot +const float kEps = 1e-4f; +const float kRelMajorTickSize = 0.02f; +const float kRelMinorTickSize = 0.01f; +const int kMinMinorTickScreenSize = 1;// minor ticks should not become smaller than this +const float kMaxMajorTickSizeInFontHeight = 0.5f;// not larger than half the font height +const float kLittleIncrease = 1.0001f; +const float kLittleDecrease = 0.9999f; +const float kTickValueVeryBig = 1.0e4;// switch to scientific format +const float kTickValueVerySmall = (float)1.0e-3; +const float kMajorTickXInitialFac = 2.0f; +const float kMajorTickYInitialFac = 3.0f; +const PMargins kDefaultMargins = PMargins (40,20,5,42); + +const float PPlot::kRangeVerySmall = (float)1.0e-3; // also in ZoomInteraction + +template const T & PMax (const T &a, const T &b) { + return b> a ? b: a; +} + +inline float SafeLog (float inFloat, float inBase, float inFac) { + if (inFloatkExpMax) { + inFloat = kExpMax; + } + return pow(inBase, inFloat/inFac); +} + +long PlotDataBase::GetSize () const { + if (GetRealPlotData ()) { + return GetRealPlotData ()->size (); + } + if (GetCalculatedData ()) { + return GetCalculatedData ()->GetSize (); + } + return 0; +} + +float PlotDataBase::GetValue (long inIndex) const { + if (GetRealPlotData ()) { + return (*GetRealPlotData ())[inIndex]; + } + if (GetCalculatedData ()) { + return GetCalculatedData ()->GetValue (inIndex); + } + return 0; +} + +bool PlotDataBase::CalculateRange (float &outXMin, float &outXMax) { + const RealData *theData = GetRealPlotData (); + if (theData && theData->size () >0) { + vector::const_iterator imin = min_element (theData->begin (), theData->end ()); + vector::const_iterator imax = max_element (theData->begin (), theData->end ()); + outXMin = *imin; + outXMax = *imax; + return true; + } + else { + const CalculatedDataBase *theCalculated = GetCalculatedData (); + if (theCalculated) { + outXMin = theCalculated->GetValue (0); + outXMax = theCalculated->GetValue (theCalculated->GetSize () - 1); + return true; + } + } + + return false; +} + +DummyPlotData::DummyPlotData (long inSize) { + for (int theI=0;theI0; +} + +long PlotDataSelection::GetSelectedCount () const { + long theCount = 0; + for (int theI=0;theI1) { + while (theSpan>10) { + theSpan/=10; + if (theSpan == inSpan) { // not a number + return (float)-1.234567; + } + thePow++; + } + } + else { + while (theSpan<1) { + theSpan*=10; + thePow--; + } + } + int theRoundedFirstDigit = PPlot::Round (theSpan); + int thePreferredFirstDigit = 1; + switch (theRoundedFirstDigit) { + case 1: + thePreferredFirstDigit = 1; + break; + case 2: + case 3: + case 4: + thePreferredFirstDigit = 2; + break; + case 5: + case 6: + case 7: + case 8: + case 9: + thePreferredFirstDigit = 5; + break; + case 10: + thePreferredFirstDigit = 1; + thePow++; + break; + default: + // error + return (float)-1.234567; + break; + } + float theRes = thePreferredFirstDigit*pow (10., thePow); /* M.T. changed to force a double cast */ + return theRes; +} + +void TickInfo::MakeFormatString (float inValue, string &outFormatString) { + if (inValue<0) { + inValue = - inValue; + } + if (inValue > kTickValueVeryBig || inValue < kTickValueVerySmall) { + outFormatString = "%.1e"; + } + else { + + int thePrecision = 0; + if (inValue<1) { + float theSpan = inValue; + while (theSpan<1) { + thePrecision++; + theSpan *=10; + } + } + + char theBuf[128] = "%.0f"; + theBuf[2] = '0'+thePrecision; + + outFormatString = theBuf; + } +} + + +PlotDataBase::~PlotDataBase (){ +}; + + +PlotDataContainer::PlotDataContainer (){ +} +PlotDataContainer::~PlotDataContainer (){ + ClearData (); +} + +PlotDataBase * PlotDataContainer::GetXData (int inIndex) { + if (inIndex < 0 || inIndex >= mXDataList.size ()) { + return 0; + } + return mXDataList[inIndex]; +} + +PlotDataBase * PlotDataContainer::GetYData (int inIndex) { + if (inIndex < 0 || inIndex >= mYDataList.size ()) { + return 0; + } + return mYDataList[inIndex]; +} + +LegendData * PlotDataContainer::GetLegendData (int inIndex) { + if (inIndex < 0 || inIndex >= mLegendDataList.size ()) { + return 0; + } + return mLegendDataList[inIndex]; +} + +DataDrawerBase * PlotDataContainer::GetDataDrawer (int inIndex) { + if (inIndex < 0 || inIndex >= mDataDrawerList.size ()) { + return 0; + } + return mDataDrawerList[inIndex]; +} + +PlotDataSelection * PlotDataContainer::GetPlotDataSelection (int inIndex) { + if (inIndex < 0 || inIndex >= mPlotDataSelectionList.size ()) { + return 0; + } + return mPlotDataSelectionList[inIndex]; +} + +const PlotDataBase * PlotDataContainer::GetConstXData (int inIndex) const { + if (inIndex < 0 || inIndex >= mXDataList.size ()) { + return 0; + } + return mXDataList[inIndex]; +} + +const PlotDataBase * PlotDataContainer::GetConstYData (int inIndex) const { + if (inIndex < 0 || inIndex >= mYDataList.size ()) { + return 0; + } + return mYDataList[inIndex]; +} + +const LegendData * PlotDataContainer::GetConstLegendData (int inIndex) const { + if (inIndex < 0 || inIndex >= mLegendDataList.size ()) { + return 0; + } + return mLegendDataList[inIndex]; +} + +const DataDrawerBase * PlotDataContainer::GetConstDataDrawer (int inIndex) const { + if (inIndex < 0 || inIndex >= mDataDrawerList.size ()) { + return 0; + } + return mDataDrawerList[inIndex]; +} + +const PlotDataSelection * PlotDataContainer::GetConstPlotDataSelection (int inIndex) const { + if (inIndex < 0 || inIndex >= mPlotDataSelectionList.size ()) { + return 0; + } + return mPlotDataSelectionList[inIndex]; +} + +void PlotDataContainer::RemoveElement (int inIndex) { + if (!(inIndex < mXDataList.size () && inIndex < mYDataList.size () && + inIndex < mLegendDataList.size () && inIndex < mDataDrawerList.size ())) { + // Invalid index + return; + } + + PlotDataList::iterator theXI = mXDataList.begin () + inIndex; + PlotDataList::iterator theYI = mYDataList.begin () + inIndex; + LegendDataList::iterator theLI = mLegendDataList.begin () + inIndex; + DataDrawerList::iterator theDI = mDataDrawerList.begin () + inIndex; + PlotDataSelectionList::iterator thePI = mPlotDataSelectionList.begin () + inIndex; + + delete *theXI; + delete *theYI; + delete *theLI; + delete *theDI; + delete *thePI; + + mXDataList.erase (theXI); + mYDataList.erase (theYI); + mLegendDataList.erase (theLI); + mDataDrawerList.erase (theDI); + mPlotDataSelectionList.erase (thePI); +} + +void PlotDataContainer::ClearData () { + PlotDataList::iterator theXI = mXDataList.begin (); + PlotDataList::iterator theYI = mYDataList.begin (); + LegendDataList::iterator theLI = mLegendDataList.begin (); + DataDrawerList::iterator theDI = mDataDrawerList.begin (); + PlotDataSelectionList::iterator thePI = mPlotDataSelectionList.begin (); + + for (;theXI!=mXDataList.end () && theYI!=mYDataList.end () && theLI!=mLegendDataList.end () && theDI != mDataDrawerList.end () && thePI != mPlotDataSelectionList.end ();) { + PlotDataBase *theX = *theXI; + PlotDataBase *theY = *theYI; + LegendData *theL = *theLI; + DataDrawerBase *theD = *theDI; + PlotDataSelection *theP = *thePI; + + delete theX; + delete theY; + delete theL; + delete theD; + delete theP; + + theXI++; + theYI++; + theLI++; + theDI++; + thePI++; + } + mXDataList.clear (); + mYDataList.clear (); + mLegendDataList.clear (); + mDataDrawerList.clear (); + mPlotDataSelectionList.clear (); +} + +/* M.T. - changed to return the index of the added plot; returns -1 on error */ +int PlotDataContainer::AddXYPlot (PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) { + if (!inYData || (!inYData->GetRealPlotData () && !inYData->GetCalculatedData ())) { + return -1; + } + PlotDataBase *theXData = inXData; + if (!theXData) { + theXData = new DummyPlotData (inYData->GetSize ()); + } + mXDataList.push_back (theXData); + mYDataList.push_back (inYData); + + LegendData *theLegendData = inLegendData; + if (!theLegendData) { + theLegendData = new LegendData (); + theLegendData->SetDefaultValues (mLegendDataList.size ()); + } + mLegendDataList.push_back (theLegendData); + + DataDrawerBase *theDataDrawer = inDataDrawer; + if (!theDataDrawer) { + theDataDrawer = new LineDataDrawer (); + } + mDataDrawerList.push_back (theDataDrawer); + + PlotDataSelection *thePlotDataSelection = inPlotDataSelection; + if (!thePlotDataSelection) { + thePlotDataSelection = new PlotDataSelection (); + } + else { + thePlotDataSelection->resize (inYData->GetSize ()); + } + mPlotDataSelectionList.push_back (thePlotDataSelection); + return ( mYDataList.size() - 1 ); +} + +void PlotDataContainer::SetXYPlot (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) { + if (!inYData || !inYData->GetRealPlotData ()) { + return; + } + if (!CheckState ()) { + return; + } + long thePlotCount = GetPlotCount (); + if (inIndex<0||inIndex>thePlotCount) { + return; + } + PlotDataBase *theXData = inXData; + + if (!theXData) { + theXData = new DummyPlotData (inYData->GetRealPlotData ()->size ()); + } + LegendData *theLegendData = inLegendData; + DataDrawerBase *theDataDrawer = inDataDrawer; + if (!theLegendData) { + theLegendData = new LegendData (); + if (inIndex >= 0 && inIndex < mYDataList.size () ) { + *theLegendData = *mLegendDataList[inIndex]; // copy old values... + } else { + theLegendData->SetDefaultValues (mLegendDataList.size ()); + } + } + if (!theDataDrawer) { + theDataDrawer = new LineDataDrawer (); + } + PlotDataSelection *thePlotDataSelection = inPlotDataSelection; + if (!thePlotDataSelection) { + thePlotDataSelection = new PlotDataSelection (inYData->GetSize ()); + // thePlotDataSelection = new PlotDataSelection (); + } + if (inIndex >= 0 && inIndex < mYDataList.size () ) { + delete mXDataList[inIndex]; + delete mYDataList[inIndex]; + delete mLegendDataList[inIndex]; + delete mDataDrawerList[inIndex]; + delete mPlotDataSelectionList[inIndex]; + + mXDataList[inIndex] = theXData; + mYDataList[inIndex] = inYData; + mLegendDataList[inIndex] = theLegendData; + mDataDrawerList[inIndex] = theDataDrawer; + mPlotDataSelectionList[inIndex] = thePlotDataSelection; + } else { // add at end + mXDataList.push_back (theXData); + mYDataList.push_back (inYData); + mLegendDataList.push_back (theLegendData); + mDataDrawerList.push_back (theDataDrawer); + mPlotDataSelectionList.push_back (thePlotDataSelection); + } +} + +bool PlotDataContainer::SetDataDrawer (int inIndex, DataDrawerBase* inDataDrawer) { + if (inIndex < 0 || inIndex >= mYDataList.size () ) { + return false; + } + DataDrawerBase* theDataDrawer = inDataDrawer; + if (!inDataDrawer) { + theDataDrawer = new LineDataDrawer; + } + delete mDataDrawerList[inIndex]; + mDataDrawerList[inIndex] = theDataDrawer; + return true; +} + +int PlotDataContainer::GetPlotIndexByName (const string &inName) const { + + if (CheckState ()) { + for (int theI=0;theImName == inName) { + return theI; + } + } + } + return -1; +} + + +bool PlotDataContainer::CalculateXRange (float &outXMin, float &outXMax) const { + bool theFirst = true; + outXMin = 0; + outXMax = 0; + for (PlotDataList::const_iterator theI=mXDataList.begin();theI!=mXDataList.end ();theI++) { + PlotDataBase *theXDataBase = *theI; + if (!theXDataBase) { + return false; + } + if (theXDataBase->GetSize () == 0) { + continue; + } + float theXMin; + float theXMax; + if (!theXDataBase->CalculateRange (theXMin, theXMax)) { + return false; + } + if (theXMax < theXMin) { + return false; + } + if (theFirst) { + outXMin = theXMin; + outXMax = theXMax; + theFirst = false; + } + if (theXMax>outXMax) { + outXMax = theXMax; + } + if (theXMinoutYMax) { + outYMax = theYMax; + } + + } + return true; +} + +bool PlotDataContainer::CalculateYRangePlot (float inXMin, float inXMax, const PlotDataBase &inXData, const PlotDataBase &inYData, float &outYMin, float &outYMax) const { + outYMin = 0; + outYMax = 0; + bool initialized = false; + + if (inXData.GetSize () != inYData.GetSize ()) { + return false; + } + + for (long theI = 0; theI < inXData.GetSize (); theI++) { + float theX = inXData.GetValue (theI); + float theY = inYData.GetValue (theI); + + if (theX>=inXMin && theX <= inXMax) { + if (!initialized) { + initialized = true; + outYMin = theY; + outYMax = theY; + } else { + if (theYoutYMax) { + outYMax = theY; + } + } + } + } + return true; +} + +bool PlotDataContainer::CheckState () const { + long theSize1 = mXDataList.size (); + long theSize2 = mYDataList.size (); + long theSize3 = mLegendDataList.size (); + long theSize4 = mDataDrawerList.size (); + long theSize5 = mPlotDataSelectionList.size (); + if (theSize1!=theSize2 || theSize1!=theSize3 || theSize1!=theSize4 || theSize1!=theSize5) { + return false; + } + return true; +} + +float LinTrafo::Transform (float inValue) const { + return inValue * mSlope + mOffset; +} +float LinTrafo::TransformBack (float inValue) const { + if (mSlope != 0) { + return (inValue - mOffset) / mSlope; + } else { + return 0; + } +} + + +float LogTrafo::Transform (float inValue) const{ + if (inValuemMin; + float theMajorTickSpan = mAxisSetup->mTickInfo.mMajorTickSpan; + int theDiv = mAxisSetup->mTickInfo.mTickDivision; + mDelta = theMajorTickSpan/theDiv; + mCount = ceil (theMin/mDelta); + mCurrentTick = mCount*mDelta; + + mFormatString = mAxisSetup->mTickInfo.mFormatString; + + return true; + +} + +bool LinTickIterator::GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString) { + if (!mAxisSetup) { + return false; + } + if (mCurrentTick>mAxisSetup->mMax*kLittleIncrease) { + return false; + } + outTick = mCurrentTick; + outIsMajorTick = (mCount%mAxisSetup->mTickInfo.mTickDivision == 0); + outFormatString = mFormatString; + + mCurrentTick += mDelta; + mCount++; + return true; +} + +bool LinTickIterator::InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &ioTickInfo) const { + if (inDivGuess <= kFloatSmall) { + return false; + } + float thePreferredSpan = TickInfo::RoundSpan (inParRange/inDivGuess); + if (thePreferredSpan < 0) { + return false; + } + + float thePreferredNrOfTicks = inParRange/thePreferredSpan; + if (thePreferredNrOfTicks <1) { + ioTickInfo.mMajorTickSpan = inParRange; + } + else { + ioTickInfo.mMajorTickSpan = thePreferredSpan; + } + + ioTickInfo.mTickDivision = 5; + if (ioTickInfo.mAutoTickSize) { + ioTickInfo.mMinorTickScreenSize = PMax (kMinMinorTickScreenSize, PPlot::Round (inOrthoScreenRange*kRelMinorTickSize)); + ioTickInfo.mMajorTickScreenSize = PMax (ioTickInfo.mMinorTickScreenSize+1, PPlot::Round (inOrthoScreenRange*kRelMajorTickSize)); + } + + TickInfo::MakeFormatString (ioTickInfo.mMajorTickSpan, ioTickInfo.mFormatString); + return true; +} + +bool LogTickIterator::Init () { + if (!mAxisSetup) { + return false; + } + + float theMin = mAxisSetup->mMin; + // float theMax = mAxisSetup->mMax; + float theMajorTickSpan = mAxisSetup->mTickInfo.mMajorTickSpan; + int theDiv = mAxisSetup->mTickInfo.mTickDivision; + mDelta = theMajorTickSpan/theDiv; + float theBase = mAxisSetup->mLogBase; + long theLogFac = 1;//mAxisSetup->mLogFactor; + long thePowMin = (long)floor(SafeLog(theMin, theBase, theLogFac)); + mCurrentTick = SafeExp (thePowMin, theBase, theLogFac); + mCount = 0; + + // walk to the first tick + + if (theMin<=0) { + return false; + // error + } + else { + // walk forward + float theNext = mCurrentTick+mDelta*SafeExp (thePowMin, theBase, theLogFac); + while (theNext<=theMin*kLittleDecrease) { + mCurrentTick = theNext; + theNext += mDelta*SafeExp (thePowMin,theBase, theLogFac); + mCount++; + } + } + return true; +} + +bool LogTickIterator::InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &ioTickInfo) const { + if (inDivGuess<=kFloatSmall) { + return false; + } + /* + float thePreferredSpan = TickInfo::RoundSpan (inParRange/inDivGuess); + float thePreferredNrOfTicks = inParRange/thePreferredSpan; + if (thePreferredNrOfTicks <1) { + ioTickInfo.mMajorTickSpan = inParRange; + } + else { + ioTickInfo.mMajorTickSpan = thePreferredSpan; + } + */ + float theBase = mAxisSetup->mLogBase; + ioTickInfo.mMajorTickSpan = theBase-1;// relative + + ioTickInfo.mTickDivision = PPlot::Round (ioTickInfo.mMajorTickSpan); + ioTickInfo.mMinorTickScreenSize = PMax (kMinMinorTickScreenSize, PPlot::Round (inOrthoScreenRange*kRelMinorTickSize)); + ioTickInfo.mMajorTickScreenSize = PMax (ioTickInfo.mMinorTickScreenSize+1, PPlot::Round (inOrthoScreenRange*kRelMajorTickSize)); + + ioTickInfo.mFormatString = "%.1e"; + return true; +} + +bool LogTickIterator::GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString) { + if (!mAxisSetup) { + return false; + } + if (mCurrentTick>mAxisSetup->mMax*kLittleIncrease) { + return false; + } + outTick = mCurrentTick; + outIsMajorTick = (mCount%mAxisSetup->mTickInfo.mTickDivision == 0); + TickInfo::MakeFormatString (outTick, outFormatString); + float theBase = mAxisSetup->mLogBase; + float theLogFac = 1;//mAxisSetup->mLogFactor; + float theLogNow = SafeLog(mCurrentTick, theBase, theLogFac); + int thePowNow = (int)floor(theLogNow); + outIsMajorTick = false; + if (fabs (theLogNow-thePowNow)mLogFactor>1) { + char theBuf[128]; + sprintf (theBuf, "%d", thePowNow*20); + outFormatString = theBuf; + } + + mCurrentTick += mDelta*SafeExp (thePowNow, theBase, theLogFac); + mCount++; + + return true; +} + +bool LogTickIterator::AdjustRange (float &ioMin, float &ioMax) const { + + float theBase = mAxisSetup->mLogBase; + long theLogFac = 1;//mAxisSetup->mLogFactor; + if (mAxisSetup->mMaxDecades > 0) { + ioMin = ioMax/SafeExp (mAxisSetup->mMaxDecades, theBase, theLogFac); + } + if (ioMin == 0 && ioMax == 0) { + ioMin = kLogMinClipValue; + ioMax = 1.0f; + } + if (ioMin <= 0 || ioMax<=0) { + return false; + } + ioMin = RoundDown (ioMin*kLittleIncrease); + ioMax = RoundUp (ioMax*kLittleDecrease); + + if (ioMinmMaxDecades > 0) { + ioMin = ioMax/SafeExp (mAxisSetup->mMaxDecades, theBase, theLogFac); + } + return true; +} + +float LogTickIterator::RoundUp (float inFloat) const { + float theBase = mAxisSetup->mLogBase; + float theLogFac = 1;//mAxisSetup->mLogFactor; + int thePow = (int)ceil(SafeLog(inFloat, theBase, theLogFac)); + return pow (theBase, thePow); +} + +float LogTickIterator::RoundDown (float inFloat) const { + float theBase = mAxisSetup->mLogBase; + long theLogFac = 1;//mAxisSetup->mLogFactor; + int thePow = (int)floor(SafeLog(inFloat,theBase, theLogFac)); + return pow (theBase, thePow); +} + +bool NamedTickIterator::GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString) { + if (LinTickIterator::GetNextTick (outTick, outIsMajorTick, outFormatString)) { + int theIndex = PPlot::Round (outTick); + + // TO DO: improve this + if (fabs(outTick - (float)theIndex) > 0.1 ) { + outFormatString = ""; + return true; + } + + if (theIndex>=0 && theIndex < (int)mStringList.size ()) { + outFormatString = mStringList[theIndex]; + return true; + } + } + return false; +} + +bool NamedTickIterator::InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const { + if (LinTickIterator::InitFromRanges (inParRange, inOrthoScreenRange, inDivGuess, outTickInfo)) { + outTickInfo.mTickDivision = 1; + return true; + } + return false; +} + +bool PainterTester::Draw (Painter &inPainter) { + + const char * theString = "The quick brown fox..."; + int theWidth = inPainter.CalculateTextDrawSize (theString); + int theOffset = theWidth/10; + + // a horizontal lines + int theHAscent_x = theOffset+2*inPainter.GetFontHeight (); + int theHAscent_y = 10; + int theHAscent_w = theWidth; + inPainter.DrawLine (theHAscent_x, theHAscent_y, theHAscent_x+theHAscent_w, theHAscent_y); + + int theHDescent_x = theHAscent_x; + int theHDescent_y = theHAscent_y+inPainter.GetFontHeight (); + int theHDescent_w = theHAscent_w; + inPainter.DrawLine (theHDescent_x, theHDescent_y, theHDescent_x+theHDescent_w, theHDescent_y); + + // a vertical lines + int theVAscent_x = theOffset; + int theVAscent_y = theHAscent_y+theWidth; + int theVAscent_h = -theWidth; + inPainter.DrawLine (theVAscent_x, theVAscent_y, theVAscent_x, theVAscent_y+theVAscent_h); + + int theVDescent_x = theVAscent_x+inPainter.GetFontHeight (); + int theVDescent_y = theVAscent_y; + int theVDescent_h = theVAscent_h; + inPainter.DrawLine (theVDescent_x, theVDescent_y, theVDescent_x, theVDescent_y+theVDescent_h); + + // Draw vertical text, followed by horizontal. +#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */ + inPainter.DrawRotatedText (theVDescent_x, theVDescent_y, -90, PPLOT_NORTH_WEST, theString); + inPainter.DrawText (theHDescent_x, theHDescent_y, PPLOT_NORTH_WEST, theString); +#else + inPainter.DrawRotatedText (theVDescent_x, theVDescent_y, -90, theString); + inPainter.DrawText (theHDescent_x, theHDescent_y, theString); +#endif + + return true; +} + +PPlot::PPlot (): + mShowLegend(true), // M.T. - show|hide legend + mLegendPos(PPLOT_TOPRIGHT), + mXTrafo (&mXLinTrafo), + mYTrafo (&mYLinTrafo), + mXTickIterator (&mXLinTickIterator), + mYTickIterator (&mYLinTickIterator), + mPPlotDrawer (0), + mOwnsPPlotDrawer (true), + mHasAnyModifyingCalculatorBeenActive (false) +{ + mMargins = kDefaultMargins; + mYAxisSetup.mAscending = false; +} + +PPlot::~PPlot () { + if (mOwnsPPlotDrawer) { + delete mPPlotDrawer; + } + mPPlotDrawer = 0; +} + +bool PPlot::Draw (Painter &inPainter) { + PRect theRect; + theRect.mX = mMargins.mLeft; + theRect.mY = mMargins.mTop; + theRect.mW = inPainter.GetWidth () - mMargins.mLeft - mMargins.mRight; + theRect.mH = inPainter.GetHeight () - mMargins.mTop - mMargins.mBottom; + + if (mPPlotDrawer) { + mPPlotDrawer->Prepare (inPainter, *this); + return mPPlotDrawer->Draw (inPainter); + } + if (!mPlotDataContainer.GetPlotCount ()) { + return true; + } + + if (!ConfigureSelf ()) { + return false; + } + bool theShouldRepeat = true; + long theRepeatCount = 0; + + while (theShouldRepeat && theRepeatCount<2) { + theRepeatCount++; + + if (!ValidateData ()) { + return false; + } + + if (!CalculateAxisRanges ()) { + return false; + } + + if (!this->CheckRange (mXAxisSetup)) { + return false; + } + + if (!this->CheckRange (mYAxisSetup)) { + return false; + } + + if (!CalculateTickInfo (theRect, inPainter)) { + return false; + } + + if (!CalculateXTransformation (theRect)) { + return false; + } + + if (!CalculateYTransformation (theRect)) { + return false; + } + if (theRepeatCount>1) { + break; + } + // hooks for some final calculations + bool theShouldRepeat = false; + for (PCalculator::tList::iterator theModifyingC=mModifyingCalculatorList.begin ();theModifyingC!=mModifyingCalculatorList.end();theModifyingC++) { + PCalculator *theModifyingCalculator = *theModifyingC; + if (theModifyingCalculator->ShouldCalculate ()) { + theShouldRepeat = true; + theModifyingCalculator->Calculate (inPainter, *this); + mHasAnyModifyingCalculatorBeenActive = true; + } + } +// theShouldRepeat = mModifyingCalculatorList.size ()>0; + } + + // hooks for some final calculations + for (PCalculator::tList::iterator thePostC=mPostCalculatorList.begin ();thePostC!=mPostCalculatorList.end();thePostC++) { + PCalculator *thePostCalculator = *thePostC; + thePostCalculator->Calculate (inPainter, *this); + } + + for (PDrawer::tList::iterator thePre1=mPreDrawerList.begin();thePre1!=mPreDrawerList.end ();thePre1++) { + PDrawer *thePreDrawer = *thePre1; + thePreDrawer->Prepare (inPainter, *this); + } + + // Drawing ! + + inPainter.SetLineColor (0,0,0); + inPainter.SetClipRect (0, 0, inPainter.GetWidth (), inPainter.GetHeight ()); + + // draw entire background, including the margins (for scrolling...) + PRect fullRect; + fullRect.mX = 0; + fullRect.mY = 0; + fullRect.mW = inPainter.GetWidth (); + fullRect.mH = inPainter.GetHeight (); + if (!DrawPlotBackground (fullRect, inPainter)) { + return false; + } + + for (PDrawer::tList::iterator thePre=mPreDrawerList.begin ();thePre!=mPreDrawerList.end();thePre++) { + PDrawer *thePreDrawer = *thePre; + thePreDrawer->Draw (inPainter); + } + + + if (!DrawGridXAxis (theRect, inPainter)) { + return false; + } + + if (!DrawGridYAxis (theRect, inPainter)) { + return false; + } + + if (!DrawXAxis (theRect, inPainter)) { + return false; + } + + if (!DrawYAxis (theRect, inPainter)) { + return false; + } + + // clip the plotregion while drawing plots + inPainter.SetClipRect (theRect.mX, theRect.mY, theRect.mW, theRect.mH); + + for (int theI=0;theIDraw (inPainter); + } + + return true; +} + +void PPlot::SetPPlotDrawer (PDrawer *inPDrawer) { + if (mOwnsPPlotDrawer) { + delete mPPlotDrawer;// delete (if any) + } + mOwnsPPlotDrawer = true; + mPPlotDrawer = inPDrawer; +} + +void PPlot::SetPPlotDrawer (PDrawer &inPDrawer) { + mOwnsPPlotDrawer = false; + mPPlotDrawer = &inPDrawer; +} + +bool PPlot::DrawPlotBackground (const PRect &inRect, Painter &inPainter) const { + if (!mPlotBackground.mTransparent) { + PColor theC = mPlotBackground.mPlotRegionBackColor; + inPainter.SetFillColor (theC.mR, theC.mG, theC.mB); + inPainter.FillRect (inRect.mX, inRect.mY, inRect.mW, inRect.mH); + } +#ifndef _IUP_PPLOT_ + string theTitle = mPlotBackground.mTitle; + if (theTitle.size ()>0) { + int theW = inPainter.CalculateTextDrawSize (theTitle.c_str()); + int theX = inRect.mX + (inRect.mW-theW)/2; + int theY = inRect.mY + mMargins.mTop; + inPainter.DrawText (theX, theY, theTitle.c_str ()); + } +#endif + return true; +} + +#ifdef _IUP_PPLOT_ +bool PPlot::DrawPlotTitle(const PRect &inRect, Painter &inPainter) const { + if (mPlotBackground.mTitle.size ()>0) { + inPainter.SetStyle (mPlotBackground.mStyle); + int theX = inRect.mX + inRect.mW/2; + int theY = inRect.mY + 5; // do not depend on margin + PColor theC = mPlotBackground.mPlotRegionBackColor; + inPainter.SetFillColor (theC.mR, theC.mG, theC.mB); + int textSize = inPainter.CalculateTextDrawSize(mPlotBackground.mTitle.c_str()); + inPainter.FillRect (theX-textSize/2-3, theY, textSize+6, inPainter.GetFontHeight()+3); + theC = mPlotBackground.mTitleColor; + inPainter.SetFillColor (theC.mR, theC.mG, theC.mB); + inPainter.DrawText (theX, theY, PPLOT_NORTH, mPlotBackground.mTitle.c_str()); + } + return true; +} +#endif + +bool PPlot::DrawGridXAxis (const PRect &inRect, Painter &inPainter) const { + + // ticks + inPainter.SetStyle (mXAxisSetup.mTickInfo.mStyle); + if (!mXTickIterator->Init ()) { + return false; + } + + float theX; + bool theIsMajorTick; + string theFormatString; + +/* M.T. - modified to allow customisation + inPainter.SetFillColor (200,200,200); + inPainter.SetLineColor (200,200,200); +*/ + inPainter.SetLineColor(mGridInfo.mGridColor.mR, + mGridInfo.mGridColor.mG, + mGridInfo.mGridColor.mB); + inPainter.SetStyle (mGridInfo.mStyle); + + // draw gridlines + if (mGridInfo.mXGridOn) { + while (mXTickIterator->GetNextTick (theX, theIsMajorTick, theFormatString)) { + + if (theIsMajorTick && mGridInfo.mXGridOn) { + float theScreenX = mXTrafo->Transform(theX); + inPainter.DrawLine (theScreenX, inRect.mY, theScreenX, inRect.mY + inRect.mH); + } + } + } + + return true; +} + +bool PPlot::DrawGridYAxis (const PRect &inRect, Painter &inPainter) const { + + // ticks + inPainter.SetStyle (mYAxisSetup.mTickInfo.mStyle); + if (!mYTickIterator->Init ()) { + return false; + } + + float theY; + bool theIsMajorTick; + string theFormatString; + PRect theTickRect; + +/* M.T. - modified to allow customisation + inPainter.SetFillColor (200,200,200); + inPainter.SetLineColor (200,200,200); +*/ + inPainter.SetLineColor(mGridInfo.mGridColor.mR, + mGridInfo.mGridColor.mG, + mGridInfo.mGridColor.mB); + inPainter.SetStyle (mGridInfo.mStyle); + + // draw gridlines + if (mYAxisSetup.mTickInfo.mTicksOn) { + while (mYTickIterator->GetNextTick (theY, theIsMajorTick, theFormatString)) { + + if (theIsMajorTick && mGridInfo.mYGridOn) { + float theScreenY = mYTrafo->Transform(theY); + inPainter.DrawLine (inRect.mX, theScreenY, inRect.mX + inRect.mW, theScreenY); + } + } + } + + return true; +} + +#ifdef _IUP_PPLOT_ +static void DrawArrow(Painter &inPainter, float rx, float ry, int vert, int ascen, int size) +{ + int x = (int)(rx + 0.5); + int y = (int)(ry + 0.5); + size += 2; // to avoid too small sizes + int size2 = (int)(size*0.7f + 0.5); + if (vert) + { + y-=ascen*size; + inPainter.DrawLine(x, y, x, y+ascen*size); + + int y2 = y+ascen*size2; + inPainter.FillArrow(x, y, x-size2, y2, x+size2, y2); + } + else + { + x+=ascen*size; + inPainter.DrawLine(x, y, x-ascen*size, y); + + int x2 = x-ascen*size2; + inPainter.FillArrow(x, y, x2, y-size2, x2, y+size2); + } +} +#endif + +bool PPlot::DrawXAxis (const PRect &inRect, Painter &inPainter) const { + inPainter.SetStyle (mXAxisSetup.mStyle); + + float theX1 = inRect.mX; + float theY1; + float theTargetY = 0; + if (!mXAxisSetup.mCrossOrigin) { + if (mYAxisSetup.mAscending) { + theTargetY = mYAxisSetup.mMax; + } else { + theTargetY = mYAxisSetup.mMin; + } + } + theY1 = mYTrafo->Transform (theTargetY); + + inPainter.SetLineColor(mXAxisSetup.mColor.mR, + mXAxisSetup.mColor.mG, + mXAxisSetup.mColor.mB); + + // x-axis + float theX2 = theX1+inRect.mW; + float theY2 = theY1; + inPainter.DrawLine (theX1, theY1, theX2, theY2); + +#ifdef _IUP_PPLOT_ + if (mXAxisSetup.mAscending) + DrawArrow(inPainter, theX2, theY2, 0, 1, mXAxisSetup.mTickInfo.mMinorTickScreenSize); + else + DrawArrow(inPainter, theX1, theY1, 0, -1, mXAxisSetup.mTickInfo.mMinorTickScreenSize); +#endif + + // ticks + inPainter.SetStyle (mXAxisSetup.mTickInfo.mStyle); + if (!mXTickIterator->Init ()) { + return false; + } + + float theX; + bool theIsMajorTick; + string theFormatString; + + int theYMax = 0; + PRect theTickRect; + PRect theRect = inRect; + + if (mXAxisSetup.mTickInfo.mTicksOn) { + while (mXTickIterator->GetNextTick (theX, theIsMajorTick, theFormatString)) { + if (!DrawXTick (theX, theY1, theIsMajorTick, theFormatString, inPainter, theTickRect)) { + return false; + } + + if (theTickRect.mY+theTickRect.mH>theYMax) { + theYMax = theTickRect.mY+theTickRect.mH; + } + } + } + + if (theYMax>theRect.mY+theRect.mH) { + theRect.mH = theYMax-theRect.mY; + } + +#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */ + if (mXAxisSetup.mLabel.size ()>0) { + inPainter.SetStyle (mXAxisSetup.mStyle); + int theY = theRect.mY + theRect.mH + 3*inPainter.GetFontHeight()/2; + if (mXAxisSetup.mLabelCentered) + { + int theX = theRect.mX + theRect.mW/2; + inPainter.DrawText (theX, theY, PPLOT_NORTH, mXAxisSetup.mLabel.c_str ()); + } + else + { + int theX = theRect.mX + theRect.mW; + inPainter.DrawText (theX, theY, PPLOT_NORTH_EAST, mXAxisSetup.mLabel.c_str ()); + } + } +#else + inPainter.SetStyle (mXAxisSetup.mStyle); + string theLabel = mXAxisSetup.mLabel; + if (theLabel.size ()>0) { + int theW = inPainter.CalculateTextDrawSize (theLabel.c_str ()); + int theX = theRect.mX + (theRect.mW-theW)/2; + int theY = 1 + theRect.mY + theRect.mH + inPainter.GetFontHeight (); // M.T. was too close to ticks + inPainter.DrawText (theX, theY, theLabel.c_str ()); + } +#endif + return true; +} + +bool PPlot::DrawXTick (float inX, int inScreenY, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const{ + char theBuf[128]; + int theTickSize; + float theScreenX = mXTrafo->Transform(inX); + outRect.mX = theScreenX; + outRect.mY = inScreenY; + outRect.mW = 0; + if (inMajor) { + theTickSize = mXAxisSetup.mTickInfo.mMajorTickScreenSize; + sprintf (theBuf, inFormatString.c_str (), inX); +#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */ + outRect.mH = theTickSize + mXAxisSetup.mTickInfo.mMinorTickScreenSize; + inPainter.DrawText (theScreenX, inScreenY+outRect.mH, PPLOT_NORTH, theBuf); +#else + outRect.mH = inPainter.GetFontHeight () + theTickSize + + mXAxisSetup.mTickInfo.mMinorTickScreenSize; + inPainter.DrawText (theScreenX, inScreenY+outRect.mH, theBuf); +#endif + } + else { + theTickSize = mXAxisSetup.mTickInfo.mMinorTickScreenSize; + outRect.mH = theTickSize; + } + + inPainter.DrawLine (theScreenX, inScreenY,theScreenX, inScreenY+theTickSize); + return true; +} + +bool PPlot::DrawYAxis (const PRect &inRect, Painter &inPainter) const { + inPainter.SetStyle (mYAxisSetup.mStyle); + float theX1; + float theTargetX = 0; + if (!mYAxisSetup.mCrossOrigin) { + if (mXAxisSetup.mAscending) { + theTargetX = mXAxisSetup.mMin; + } + else { + theTargetX = mXAxisSetup.mMax; + } + } + if (mXAxisSetup.mDiscrete) + theTargetX -= 0.5; + + theX1 = mXTrafo->Transform (theTargetX); + + int theY1 = inRect.mY; + float theX2 = theX1; + int theY2 = theY1+inRect.mH; + + inPainter.SetLineColor(mYAxisSetup.mColor.mR, + mYAxisSetup.mColor.mG, + mYAxisSetup.mColor.mB); + + // draw y axis + inPainter.DrawLine (theX1, theY1, theX2, theY2); + +#ifdef _IUP_PPLOT_ + if (mYAxisSetup.mAscending) + DrawArrow(inPainter, theX2, theY2, 1, -1, mYAxisSetup.mTickInfo.mMinorTickScreenSize); + else + DrawArrow(inPainter, theX1, theY1, 1, 1, mYAxisSetup.mTickInfo.mMinorTickScreenSize); +#endif + + // ticks + inPainter.SetStyle (mYAxisSetup.mTickInfo.mStyle); + if (!mYTickIterator->Init ()) { + return false; + } + + float theY; + bool theIsMajorTick; + string theFormatString; + PRect theTickRect; + PRect theRect = inRect; + + if (mYAxisSetup.mTickInfo.mTicksOn) { + while (mYTickIterator->GetNextTick (theY, theIsMajorTick, theFormatString)) { + if (!DrawYTick (theY, theX1, theIsMajorTick, theFormatString, inPainter, theTickRect)) { + return false; + } + + if (theTickRect.mX < theRect.mX) { + theRect.mX = theTickRect.mX; + } + } + } + + // draw label +#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */ + if (mYAxisSetup.mLabel.size ()>0) { + inPainter.SetStyle (mYAxisSetup.mStyle); + int theX = theRect.mX - 3*inPainter.GetFontHeight()/2; + if (mYAxisSetup.mLabelCentered) + { + int theY = theRect.mY + theRect.mH/2; + inPainter.DrawRotatedText (theX, theY, -90, PPLOT_NORTH, mYAxisSetup.mLabel.c_str ()); + } + else + { + int theY = theRect.mY; + inPainter.DrawRotatedText (theX, theY, -90, PPLOT_NORTH_EAST, mYAxisSetup.mLabel.c_str ()); + } + } +#else + inPainter.SetStyle (mYAxisSetup.mStyle); + string theLabel = mYAxisSetup.mLabel; + if (theLabel.size ()>0) { + int theW = inPainter.CalculateTextDrawSize (theLabel.c_str ()); + int theX = theRect.mX - 1; // M.T. - was too close to ticks + int theY = theRect.mY + theRect.mH - (theRect.mH-theW)/2; + inPainter.DrawRotatedText (theX, theY, -90, theLabel.c_str ()); + } +#endif + + return true; +} + +bool PPlot::DrawYTick (float inY, int inScreenX, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const { + char theBuf[128]; + int theTickSize; + float theScreenY = mYTrafo->Transform(inY); + outRect.mX = inScreenX; + outRect.mY = theScreenY; + outRect.mW = 0;// not used + outRect.mH = 0;// not used + if (inMajor) { + theTickSize = mYAxisSetup.mTickInfo.mMajorTickScreenSize; + sprintf (theBuf, inFormatString.c_str (), inY); +#ifdef _IUP_PPLOT_ /* M.T. - the alignment of the text is simply requested */ + outRect.mX -= (theTickSize + mYAxisSetup.mTickInfo.mMinorTickScreenSize); + inPainter.DrawText (outRect.mX, theScreenY, PPLOT_EAST, theBuf); + outRect.mX -= inPainter.CalculateTextDrawSize (theBuf); // update the position +#else + int theStringWidth = inPainter.CalculateTextDrawSize (theBuf); + outRect.mX -= (theStringWidth+theTickSize+mYAxisSetup.mTickInfo.mMinorTickScreenSize); + int theHalfFontHeight = inPainter.GetFontHeight ()/2;// for sort of vertical centralizing + inPainter.DrawText (outRect.mX, theScreenY+theHalfFontHeight, theBuf); +#endif + + } + else { + theTickSize = mYAxisSetup.mTickInfo.mMinorTickScreenSize; + outRect.mX -= theTickSize; + } + + inPainter.DrawLine (inScreenX, theScreenY, inScreenX-theTickSize, theScreenY); + return true; +} + +#ifdef _IUP_PPLOT_ +static void DrawRect(Painter &inPainter, int inX, int inY, int inW, int inH) +{ + inPainter.DrawLine(inX, inY, inX+inW-1, inY); + inPainter.DrawLine(inX+inW-1, inY, inX+inW-1, inY+inH-1); + inPainter.DrawLine(inX+inW-1, inY+inH-1, inX, inY+inH-1); + inPainter.DrawLine(inX, inY+inH-1, inX, inY); +} + +bool PPlot::DrawLegend (const PRect &inRect, Painter &inPainter) const { + PColor theC; + int theI; + + int theHeight = inPainter.GetFontHeight(); + int margin = theHeight/2; + int plotCount = mPlotDataContainer.GetPlotCount(); + int totalHeight = plotCount*(1.2*theHeight) - 0.2*theHeight + 2*margin; + + int maxWidth = 0; + for (theI=0; theImShow) { + inPainter.SetStyle (theLegendData->mStyle); + int size = inPainter.CalculateTextDrawSize(theLegendData->mName.c_str()); + + const DataDrawerBase* drawer = mPlotDataContainer.GetConstDataDrawer(theI); + if (drawer->mHasMarks) + { + LineDataDrawer* linedrawer = (LineDataDrawer*)drawer; + if (linedrawer->mDrawPoint) + size += linedrawer->mStyle.mMarkSize+8; + } + + if (size > maxWidth) + maxWidth = size; + } + } + + if (maxWidth == 0) + return false; + + maxWidth += 2*margin; + + int theX = inRect.mX; + int theY = inRect.mY; + + switch (mLegendPos) + { + case PPLOT_TOPLEFT: + theX += 2; + theY += 2; + break; + case PPLOT_BOTTOMLEFT: + theX += 2; + theY += inRect.mH - totalHeight - 2; + break; + case PPLOT_BOTTOMRIGHT: + theX += inRect.mW - maxWidth - 2; + theY += inRect.mH - totalHeight - 2; + break; + default: // PPLOT_TOPRIGHT + theX += inRect.mW - maxWidth - 2; + theY += 2; + break; + } + + theC = mPlotBackground.mPlotRegionBackColor; + inPainter.SetFillColor (theC.mR, theC.mG, theC.mB); + inPainter.FillRect(theX, theY, maxWidth, totalHeight); + inPainter.SetLineColor (theC.mR/1.5, theC.mG/1.5, theC.mB/1.5); + DrawRect(inPainter, theX, theY, maxWidth, totalHeight); + + for (theI=0; theImShow) { + theC = theLegendData->mColor; + inPainter.SetLineColor (theC.mR, theC.mG, theC.mB); + + int X = theX + margin; + int Y = theY + theI*(theHeight*1.2) + margin; + + int mark_size = 0; + const DataDrawerBase* drawer = mPlotDataContainer.GetConstDataDrawer(theI); + if (drawer->mHasMarks) + { + LineDataDrawer* linedrawer = (LineDataDrawer*)drawer; + if (linedrawer->mDrawPoint) + { + mark_size = linedrawer->mStyle.mMarkSize+8; + inPainter.SetStyle (linedrawer->mStyle); + linedrawer->DrawPoint(X+mark_size/2, Y+3*inPainter.GetFontHeight()/4, inRect, inPainter); + } + } + + inPainter.SetStyle (theLegendData->mStyle); + inPainter.DrawText (X+mark_size, Y, PPLOT_NORTH_WEST, theLegendData->mName.c_str ()); + } + } + return true; +} +#else +bool PPlot::DrawLegend (const PRect &inRect, Painter &inPainter) const { + const int kXoffsetLegend(20); + + for (int theI=0; theImStyle); + theC = theLegendData->mColor; + if (theLegendData->mShow) { + theText = theLegendData->mName; + } + } + inPainter.SetLineColor (theC.mR, theC.mG, theC.mB); + + // cut legend if it doesn't fit in plot + int theSize (0); + if (inPainter.CalculateTextDrawSize (theText.c_str ()) >= inRect.mW - kXoffsetLegend) { + theText.insert(0, "..."); + while (inPainter.CalculateTextDrawSize (theText.c_str ()) >= inRect.mW - kXoffsetLegend) { + theSize = theText.size (); + // display dots and at least 3 characters + if (theSize >= 9) { + theText.erase (3, 3); + } + else if (theSize >= 7) { + theText.erase (3, theSize - 6); + } else { + // keep dots only + theText.erase (3, theSize - 3); + break; + } + } + } + + int theHeight = inPainter.GetFontHeight (); + int theX = inRect.mX + kXoffsetLegend; + int theY = inRect.mY + theI*(theHeight*2)+theHeight; + inPainter.DrawText (theX, theY, theText.c_str ()); + } + return true; +} +#endif + +static float GetMaxFromRange (const PlotDataBase &inData, long inStartIndex, long inEndIndex) { + float max = 0; + float fabsMax = 0; + for (long theI = inStartIndex; theI <= inEndIndex; theI++) { + if (theI == inStartIndex) { + max = inData.GetValue (theI); + fabsMax = fabs (max); + } + else { + float data = inData.GetValue (theI); + if (fabs (data) > fabsMax) { + max = data; + fabsMax = fabs (data); + } + } + } + + return max; +} + +static void FindRange (const PlotDataBase &inData, float inMin, float inMax, long& outStartIndex, long& outEndIndex) { + outStartIndex = 0; + while (outStartIndex < inData.GetSize () && inData.GetValue (outStartIndex) <= inMin) { + outStartIndex++; + } + + if (outStartIndex == inData.GetSize ()) { + outStartIndex = inData.GetSize () - 1; + outEndIndex = outStartIndex; + assert (outStartIndex>-1); + return; + } + + // We want the value at outStartIndex smaller than or equal to inMin + if (outStartIndex > 0) { + outStartIndex--; + } + + outEndIndex = outStartIndex; + while (outEndIndex < inData.GetSize () && inData.GetValue (outEndIndex) < inMax) { + outEndIndex++; + } + + if (outEndIndex == inData.GetSize ()) { + outEndIndex--; + } + assert (outStartIndex>-1); +} + +static void DrawValue(int theTraX, int theTraY, float theX, float theY, const PlotDataBase &inXData, const AxisSetup &inXAxisSetup, Painter &inPainter) +{ + char theBuf[128]; + string FormatString; + if (inXData.IsString()) + { + const StringPlotData *theStringXData = (const StringPlotData *)(&inXData); + FormatString = "(%s, " + inXAxisSetup.mTickInfo.mFormatString + ")"; + const StringData* stdata = theStringXData->GetStringData(); + sprintf (theBuf, FormatString.c_str(), (*stdata)[(int)theX].c_str(), theY); + } + else + { + FormatString = "(" + inXAxisSetup.mTickInfo.mFormatString + ", " + inXAxisSetup.mTickInfo.mFormatString + ")"; + sprintf (theBuf, FormatString.c_str(), theX, theY); + } + inPainter.DrawRotatedText (theTraX, theTraY-10, -45, PPLOT_WEST, theBuf); +} + +bool LineDataDrawer::DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const { + if (!mXTrafo || !mYTrafo) { + return false; + } + if ((inXData.GetSize () == 0) || (inYData.GetSize () == 0)) { + return false; + } + long theXSize = inXData.GetSize (); + long theYSize = inYData.GetSize (); + if (theXSize>theYSize) { + return false; + } + inPainter.SetStyle (mStyle); + float thePrevX = 0; + float thePrevY = 0; + bool theFirst = true; + float theTraX, theTraY; + + long theStart = 0; + long theEnd = inXData.GetSize () - 1; + int theStride = 1; + if (mDrawFast) { + FindRange (inXData, inXAxisSetup.mMin, inXAxisSetup.mMax, theStart, theEnd); + + theStride = (theEnd - theStart + 1) / inPainter.GetWidth (); + if (theStride == 0) { + theStride = 1; + } + } + + for (int theI = theStart; theI <= theEnd; theI+=theStride) { + + float theY; + float theX = inXData.GetValue (theI); + theTraX = mXTrafo->Transform (theX); + if (theStride > 1) { + long theLast = theI + theStride - 1; + if (theLast>theEnd) { + theLast = theEnd; + } + theY = GetMaxFromRange (inYData, theI, theLast); + } + else { + theY = inYData.GetValue (theI); + } + theTraY = mYTrafo->Transform (theY); + + if (!theFirst && mDrawLine) { + inPainter.DrawLine (thePrevX, thePrevY, theTraX, theTraY); + } + else { + theFirst = false; + } + bool theDrawPoint = mDrawPoint; + + if (theDrawPoint && !DrawPoint (theTraX, theTraY, inRect, inPainter)) { + return false; + } + if (inPlotDataSelection.IsSelected (theI) && !DrawSelection (theTraX, theTraY, inRect, inPainter)) { + return false; + } +#ifdef _IUP_PPLOT_ + if (mShowValues) + DrawValue(theTraX, theTraY, theX, theY, inXData, inXAxisSetup, inPainter); +#endif + thePrevX = theTraX; + thePrevY = theTraY; + } + return true; +} + +DataDrawerBase* LineDataDrawer::Clone () const { + return new LineDataDrawer (*this); +} + +bool LineDataDrawer::DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const { + inPainter.DrawLine (inScreenX-5, inScreenY+5, inScreenX+5, inScreenY-5); + inPainter.DrawLine (inScreenX-5, inScreenY-5, inScreenX+5, inScreenY+5); + return true; +} + +bool LineDataDrawer::DrawSelection (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const { +// inPainter.DrawLine (inScreenX-5, inScreenY+5, inScreenX+5, inScreenY-5); +// inPainter.DrawLine (inScreenX-5, inScreenY-5, inScreenX+5, inScreenY+5); + inPainter.FillRect (inScreenX-5, inScreenY-5, 10, 10); + return true; +} + +bool DotDataDrawer::DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const { + inPainter.DrawLine (inScreenX, inScreenY, inScreenX + 1, inScreenY); + return true; +} + +bool BarDataDrawer::DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const { + if (!mXTrafo || !mYTrafo) { + return false; + } + if (inXData.GetSize ()>inYData.GetSize ()) { + return false; + } + if (!mPlotCount) { + return false; + } + if (mDrawOnlyLastPoint) { + return DrawOnlyLastPoint (inXData, inYData, inPlotDataSelection, inXAxisSetup, inRect, inPainter); + } + + int theTraX, theTraY; + int theTraY0 = mYTrafo->Transform (0); + + int theLeft, theTop, theWidth, theHeight; + + theWidth = inRect.mW/inXData.GetSize (); + theWidth *= 0.9f; + + for (long theI=0;theITransform (theX); + theTraY = mYTrafo->Transform (theY); + + theLeft = theTraX-theWidth/2; + theTop = theTraY; + theHeight = theTraY0-theTop; + + inPainter.FillRect (theLeft, theTop, theWidth, theHeight); + +#ifdef _IUP_PPLOT_ + if (mShowValues) + DrawValue(theTraX, theTraY, theX, theY, inXData, inXAxisSetup, inPainter); +#endif + } + return true; +} + + +bool BarDataDrawer::DrawOnlyLastPoint (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const { + + PRect theRect = inRect; + theRect.mW = inRect.mW / mPlotCount; + theRect.mX = inRect.mX + mPlotIndex * theRect.mW; + + int theTraX, theTraY; + int theTraY0 = mYTrafo->Transform (0); + + int theLeft, theTop, theWidth, theHeight; + + theWidth = theRect.mW; + + // only draw last point: + long theI = inXData.GetSize () - 1; + if (theI >= 0) { + theTraX = mXTrafo->Transform (inXData.GetValue (theI)); + theTraY = mYTrafo->Transform (inYData.GetValue (theI)); + + theLeft = theRect.mX; + theTop = theTraY; + theHeight = theTraY0-theTop; + + inPainter.FillRect (theLeft, theTop, theWidth, theHeight); + } + return true; +} + + +DataDrawerBase* BarDataDrawer::Clone () const { + return new BarDataDrawer (*this); +} + +bool PPlot::DrawPlot (int inIndex, const PRect &inRect, Painter &inPainter) const { + + if (inIndex>=mPlotDataContainer.GetPlotCount ()) { + return false; + } + + const PlotDataBase *theXData = mPlotDataContainer.GetConstXData (inIndex); + const PlotDataBase *theYData = mPlotDataContainer.GetConstYData (inIndex); + if (!theXData || !theYData) { + return false; + } + const LegendData *theLegendData = mPlotDataContainer.GetConstLegendData (inIndex); + PColor theC; + if (theLegendData) { + theC = theLegendData->mColor; + } + inPainter.SetLineColor (theC.mR, theC.mG, theC.mB); + inPainter.SetFillColor (theC.mR, theC.mG, theC.mB); + + const DataDrawerBase *theD = mPlotDataContainer.GetConstDataDrawer (inIndex); + if (!theD) { + return false; + } + const PlotDataSelection *thePlotDataSelection = mPlotDataContainer.GetConstPlotDataSelection (inIndex); + if (!thePlotDataSelection) { + return false; + } + + return theD->DrawData (*theXData, *theYData, *thePlotDataSelection, mXAxisSetup, inRect, inPainter); + } + +bool PPlot::ConfigureSelf () { + long thePlotCount = mPlotDataContainer.GetPlotCount (); + if (thePlotCount == 0) { + return false; + } + if (mXAxisSetup.mLogScale) { + mXTickIterator = &mXLogTickIterator; + mXTrafo = &mXLogTrafo; + mYAxisSetup.mCrossOrigin = false; + } + else { + const PlotDataBase *theGlue = mPlotDataContainer.GetConstXData (0); + if (theGlue->IsString()) { + const StringPlotData *theStringXData = (const StringPlotData *)(theGlue); + mXTickIterator = &mXNamedTickIterator; + mXNamedTickIterator.SetStringList (*(theStringXData->GetStringData ())); + } + else { + mXTickIterator = &mXLinTickIterator; + } + mXTrafo = &mXLinTrafo; + } + if (mYAxisSetup.mLogScale) { + mYTickIterator = &mYLogTickIterator; + mYTrafo = &mYLogTrafo; + mXAxisSetup.mCrossOrigin = false; + } + else { + mYTickIterator = &mYLinTickIterator; + mYTrafo = &mYLinTrafo; + } + mXTickIterator->SetAxisSetup (&mXAxisSetup); + mYTickIterator->SetAxisSetup (&mYAxisSetup); + + // set trafo's for data drawers + for (int theI=0; theISetXTrafo (mXTrafo); + theD->SetYTrafo (mYTrafo); + theD->SetPlotCount (mPlotDataContainer.GetPlotCount ()); + theD->SetPlotIndex (theI); + } + } + + return true; +} + +bool PPlot::ValidateData () { + + /* check x data ascending + for (int theI=0; theI (mPlotDataContainer.GetConstXData (theI)); + if (theX && theX->size ()>0) { + float thePrev = (*theX)[0]; + for (RealData::const_iterator theJ=theX->begin ();theJ!=theX->end ();theJ++) { + float theNext = *theJ; + if (theNextAdjustRange (mXAxisSetup.mMin, mXAxisSetup.mMax)) { + return false; + } + } + + if (mYAxisSetup.mAutoScaleMin || mYAxisSetup.mAutoScaleMax) { + float theYMin; + float theYMax; + + mPlotDataContainer.CalculateYRange (mXAxisSetup.mMin, mXAxisSetup.mMax, + theYMin, theYMax); + + if (mYAxisSetup.mAutoScaleMin) { + mYAxisSetup.mMin = theYMin; + if (mYAxisSetup.mLogScale && (theYMin < kLogMinClipValue) ) { + mYAxisSetup.mMin = kLogMinClipValue; + } + } + if (mYAxisSetup.mAutoScaleMax) { + mYAxisSetup.mMax = theYMax; + } + + if (!mYTickIterator->AdjustRange (mYAxisSetup.mMin, mYAxisSetup.mMax)) { + return false; + } + } + + return true; +} + +bool PPlot::CheckRange (const AxisSetup &inAxisSetup) const { + if (inAxisSetup.mLogScale) { + if (inAxisSetup.mMin < kLogMinClipValue) { + return false; + } + + } + return true; +} + +bool PPlot::CalculateTickInfo (const PRect &inRect, Painter &inPainter) { + float theXRange = mXAxisSetup.mMax - mXAxisSetup.mMin; + float theYRange = mYAxisSetup.mMax - mYAxisSetup.mMin; + + if (theXRange <= 0 || theYRange < 0) { + return false; + } + + if ((mYAxisSetup.mMax != 0 && fabs (theYRange / mYAxisSetup.mMax) < kRangeVerySmall) || + theYRange == 0) { + float delta = 0.1f; + if (mYAxisSetup.mMax != 0) { + delta *= fabs(mYAxisSetup.mMax); + } + + mYAxisSetup.mMax += delta; + mYAxisSetup.mMin -= delta; + theYRange = mYAxisSetup.mMax - mYAxisSetup.mMin; + } + + if (mXAxisSetup.mTickInfo.mAutoTick) { + inPainter.SetStyle(mXAxisSetup.mTickInfo.mStyle); + int theTextWidth = inPainter.CalculateTextDrawSize ("12345"); + float theDivGuess = inRect.mW/(kMajorTickXInitialFac*theTextWidth); + if (!mXTickIterator->InitFromRanges (theXRange, inRect.mH, theDivGuess, mXAxisSetup.mTickInfo)) { + return false; + } + } + if (mYAxisSetup.mTickInfo.mAutoTick) { + float theTextHeight = inPainter.GetFontHeight (); + float theDivGuess = inRect.mH/(kMajorTickYInitialFac*theTextHeight); + if (!mYTickIterator->InitFromRanges (theYRange, inRect.mW, theDivGuess, mYAxisSetup.mTickInfo)) { + return false; + } + } + + SetTickSizes (inPainter.GetFontHeight (), mXAxisSetup.mTickInfo); + SetTickSizes (inPainter.GetFontHeight (), mYAxisSetup.mTickInfo); + + return true; +} + +void PPlot::SetTickSizes (int inFontHeight, TickInfo &ioTickInfo) { + if (ioTickInfo.mAutoTickSize) { + float theFac = kRelMinorTickSize/kRelMajorTickSize; + float theMax = Round (inFontHeight*kMaxMajorTickSizeInFontHeight); + if (ioTickInfo.mMajorTickScreenSize>theMax) { + ioTickInfo.mMajorTickScreenSize = theMax; + } + ioTickInfo.mMinorTickScreenSize = Round (ioTickInfo.mMajorTickScreenSize*theFac); + } +} + + +bool PPlot::CalculateLogTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LogTrafo& outTrafo) { + + float theBase = inAxisSetup.mLogBase; + long theLogFac = 1;//inAxisSetup.mLogFactor; + float theDataRange = SafeLog (inAxisSetup.mMax, theBase, theLogFac) - SafeLog(inAxisSetup.mMin, theBase, theLogFac); + if (theDataRange < kFloatSmall) { + return false; + } + float theTargetRange = inEnd - inBegin; + float theScale = theTargetRange / theDataRange; + + if (inAxisSetup.mAscending ) { + outTrafo.mOffset = inBegin - SafeLog(inAxisSetup.mMin, theBase, theLogFac) * theScale; + } else { + outTrafo.mOffset = inEnd + SafeLog(inAxisSetup.mMin, theBase, theLogFac) * theScale; + } + outTrafo.mSlope = -theScale; + outTrafo.mBase = theBase; +// outTrafo.mFactor = inAxisSetup.mLogFactor; + + if (inAxisSetup.mAscending) { + outTrafo.mSlope *= -1; + } + return true; +} + +bool PPlot::CalculateLinTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LinTrafo& outTrafo) { + float theDataRange = inAxisSetup.mMax - inAxisSetup.mMin; + if (theDataRange < kFloatSmall) { + return false; + } + float theMin = inAxisSetup.mMin; + if (inAxisSetup.mDiscrete) + { + theDataRange++; + theMin -= 0.5f; + } + + float theTargetRange = inEnd - inBegin; + float theScale = theTargetRange / theDataRange; + + if (inAxisSetup.mAscending) { + outTrafo.mOffset = inBegin - theMin * theScale; + } else { + outTrafo.mOffset = inEnd + theMin * theScale; + } + outTrafo.mSlope = -theScale; + + if (inAxisSetup.mAscending) { + outTrafo.mSlope *= -1; + } + return true; +} + +bool PPlot::CalculateXTransformation (const PRect &inRect) { + if (mXAxisSetup.mLogScale) { + return CalculateLogTransformation (inRect.mX, inRect.mX + inRect.mW, mXAxisSetup, mXLogTrafo); + } + else { + return CalculateLinTransformation (inRect.mX, inRect.mX + inRect.mW, mXAxisSetup, mXLinTrafo); + } +} + +bool PPlot::CalculateYTransformation (const PRect &inRect) { + if (mYAxisSetup.mLogScale) { + return CalculateLogTransformation (inRect.mY, inRect.mY + inRect.mH, mYAxisSetup, mYLogTrafo); + } + else { + return CalculateLinTransformation (inRect.mY, inRect.mY + inRect.mH, mYAxisSetup, mYLinTrafo); + } +} + +#ifndef _IUP_PPLOT_ +bool MakeExamplePlot (int inExample, PPlot &ioPPlot) { + switch (inExample) { + case 1: + MakeExamplePlot1 (ioPPlot); + return true; + break; + case 2: + MakeExamplePlot2 (ioPPlot); + return true; + break; + case 3: + MakeExamplePlot3 (ioPPlot); + return true; + break; + case 4: + MakeExamplePlot4 (ioPPlot); + return true; + break; + case 5: + MakeExamplePlot5 (ioPPlot); + return true; + break; + case 6: + MakeExamplePlot6 (ioPPlot); + return true; + break; + case 7: + MakeExamplePlot7 (ioPPlot); + return true; + break; + case 8: + MakeExamplePlot8 (ioPPlot); + return true; + break; + } + return false; +} + +void MakeExamplePlot1 (PPlot &ioPPlot) { + + int theI; + PlotData *theX1 = new PlotData (); + PlotData *theY1 = new PlotData (); + float theFac = (float)1.0/(100*100*100); + for (theI=-100;theI<=100;theI++) { + theX1->push_back (theI+50); + theY1->push_back (theFac*theI*theI*theI); + } + LineDataDrawer *theDataDrawer1 = new LineDataDrawer (); + theDataDrawer1->mStyle.mPenWidth = 3; + ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, 0, theDataDrawer1); + ioPPlot.mPlotBackground.mTitle = "Bar"; + ioPPlot.mPlotBackground.mStyle.mFontSize = 20; + ioPPlot.mMargins.mTop = 60; + ioPPlot.mXAxisSetup.mLabel = "gnu (Foo)"; + ioPPlot.mYAxisSetup.mLabel = "Space (m^3)"; + ioPPlot.mYAxisSetup.mStyle.mFontSize = 9; + ioPPlot.mYAxisSetup.mTickInfo.mStyle.mFontSize = 5; + ioPPlot.mYAxisSetup.mStyle.mPenWidth = 2; + ioPPlot.mXAxisSetup.mStyle = ioPPlot.mYAxisSetup.mStyle; + ioPPlot.mXAxisSetup.mTickInfo.mStyle = ioPPlot.mYAxisSetup.mTickInfo.mStyle; + + PlotData *theX2 = new PlotData (); + PlotData *theY2 = new PlotData (); + theFac = (float)2.0/100; + for (theI=-100;theI<=100;theI++) { + theX2->push_back (theI); + theY2->push_back (-theFac*theI); + } + ioPPlot.mPlotDataContainer.AddXYPlot (theX2, theY2); + LegendData *theLegendData2 = ioPPlot.mPlotDataContainer.GetLegendData (1); + theLegendData2->mStyle.mFontSize = 9; + + PlotData *theX3 = new PlotData (); + PlotData *theY3 = new PlotData (); + for (theI=-100;theI<=100;theI++) { + theY3->push_back (0.01*theI); + theX3->push_back (0.01*theI*theI-30); + } + ioPPlot.mPlotDataContainer.AddXYPlot (theX3, theY3); +} + +void MakeExamplePlot2 (PPlot &ioPPlot) { + + int theI; + PlotData *theX1 = new PlotData (); + PlotData *theY1 = new PlotData (); + float theFac = (float)1.0/(100*100*100); + for (theI=0;theI<=100;theI++) { + theX1->push_back (theI); + theY1->push_back (theFac*theI*theI*theI); + } + ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, 0); + + PlotData *theX2 = new PlotData (); + PlotData *theY2 = new PlotData (); + theFac = (float)2.0/100; + for (theI=0;theI<=100;theI++) { + theX2->push_back (theI); + theY2->push_back (-theFac*theI); + } + ioPPlot.mPlotDataContainer.AddXYPlot (theX2, theY2, 0); + + ioPPlot.mPlotBackground.mTitle = "no autoscale"; + ioPPlot.mPlotBackground.mStyle.mFontSize = 15; + ioPPlot.mPlotBackground.mTransparent = false; + ioPPlot.mPlotBackground.mPlotRegionBackColor = PColor (200,200,200); + ioPPlot.mMargins.mTop = 60; + ioPPlot.mMargins.mRight = 30; + ioPPlot.mXAxisSetup.mLabel = "Tg (X)"; + ioPPlot.mXAxisSetup.SetAutoScale (false); + ioPPlot.mXAxisSetup.mMin = 10; + ioPPlot.mXAxisSetup.mMax = 60; + ioPPlot.mYAxisSetup.SetAutoScale (false); + ioPPlot.mYAxisSetup.mMin = -0.5; + ioPPlot.mYAxisSetup.mMax = 0.5; + + ioPPlot.mXAxisSetup.mCrossOrigin = false; + ioPPlot.mYAxisSetup.mCrossOrigin = false; + ioPPlot.mXAxisSetup.mAscending = false; + ioPPlot.mYAxisSetup.mAscending = true; + + // M.T. - use a color different from background + ioPPlot.mGridInfo.mGridColor = PColor(128,255,128); // some sort of green +} + +void MakeExamplePlot3 (PPlot &ioPPlot) { + + PlotData *theX1 = new PlotData (); + PlotData *theY1 = new PlotData (); + float theFac = 1.0f/(100*100*100); + for (int theI=0;theI<=100;theI++) { + // theX1->push_back (theI*0.001); + theX1->push_back (theI); + theY1->push_back (theFac*theI*theI*theI); + } + ioPPlot.mPlotDataContainer.AddXYPlot (0, theY1, 0); + + ioPPlot.mPlotBackground.mTitle = "narrow margins"; + ioPPlot.mPlotBackground.mTransparent = false; + ioPPlot.mPlotBackground.mPlotRegionBackColor = PColor (200,200,200); + ioPPlot.mMargins.mTop = 50; + ioPPlot.mMargins.mRight = 10; + ioPPlot.mMargins.mLeft = 10; + ioPPlot.mMargins.mBottom = 10; + + // M.T. - use a color different from background + ioPPlot.mGridInfo.mGridColor = PColor(128,255,128); // some sort of green +} + +void MakeExamplePlot4 (PPlot &ioPPlot) { + + PlotData *theX1 = new PlotData (); + PlotData *theY1 = new PlotData (); + float theFac = 100.0f/(100*100*100); + for (int theI=0;theI<=100;theI++) { + theX1->push_back (0.0001+theI*0.001); + theY1->push_back (0.01+theFac*theI*theI*theI); + } + LegendData *theLegend = new LegendData (); + theLegend->mName = "foo"; + theLegend->mColor = PColor (100,100,200); + ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend); + ioPPlot.mXAxisSetup.mLogScale = true; + ioPPlot.mYAxisSetup.mLogScale = true; + ioPPlot.mYAxisSetup.mLogBase = 2; + ioPPlot.mMargins.mLeft = 50; + ioPPlot.mMargins.mTop = 20; + + ioPPlot.mGridInfo.mXGridOn = true; + ioPPlot.mGridInfo.mYGridOn = true; +} + +void MakeExamplePlot5 (PPlot &ioPPlot) { + + const char * kLables[12] = {"jan","feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"}; + const float kData[12] = {1,2,3,4,5,6,7,8,9,0,1,2}; + + StringPlotData *theX1 = new StringPlotData (); + PlotData *theY1 = new PlotData (); + for (int theI=0;theI<12;theI++) { + theX1->AddItem (kLables[theI]); + theY1->push_back (kData[theI]); + } + LegendData *theLegend = new LegendData (); + theLegend->mName = "bar"; + theLegend->mColor = PColor (100,100,200); + BarDataDrawer *theDataDrawer = new BarDataDrawer (); + ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend, theDataDrawer); + ioPPlot.mMargins.mLeft = 50; + ioPPlot.mMargins.mTop = 20; +} + +void MakeExamplePlot6 (PPlot &ioPPlot) { + + int theI; + + ioPPlot.mPlotBackground.mTitle = "line styles"; + PlotData *theX1 = new PlotData (); + PlotData *theY1 = new PlotData (); + float theFac = 100.0f/(100*100*100); + for (theI=0;theI<=10;theI++) { + theX1->push_back (0.0001+theI*0.001); + theY1->push_back (0.01+theFac*theI*theI); + } + LineDataDrawer *theDataDrawer1 = new LineDataDrawer (); + theDataDrawer1->mDrawPoint = true; + theDataDrawer1->mStyle.mPenWidth = 3; + ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, 0, theDataDrawer1); + + PlotData *theX2 = new PlotData (); + PlotData *theY2 = new PlotData (); + for (theI=0;theI<=10;theI++) { + theX2->push_back (0.0001+theI*0.001); + theY2->push_back (0.2-theFac*theI*theI); + } + LineDataDrawer *theDataDrawer2 = new LineDataDrawer (); + theDataDrawer2->mDrawPoint = true; + theDataDrawer2->mDrawLine = false; + ioPPlot.mPlotDataContainer.AddXYPlot (theX2, theY2, 0, theDataDrawer2); + + ioPPlot.mMargins.mLeft = 50; + ioPPlot.mMargins.mTop = 40; +} + +void MakeExamplePlot7 (PPlot &ioPPlot) { + + PlotData *theX1 = new PlotData (); + PlotData *theY1 = new PlotData (); + float theFac = 100.0f/(100*100*100); + for (int theI=0;theI<=100;theI++) { + theX1->push_back (0.0001+theI*0.001); + theY1->push_back (0.01+theFac*theI*theI*theI); + } + LegendData *theLegend = new LegendData (); + theLegend->mName = "foo"; + theLegend->mColor = PColor (100,100,200); + ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend); + ioPPlot.mYAxisSetup.mLogScale = true; + ioPPlot.mYAxisSetup.mLogFactor = 20; + ioPPlot.mMargins.mLeft = 50; + ioPPlot.mMargins.mTop = 20; + + ioPPlot.mGridInfo.mXGridOn = true; + ioPPlot.mGridInfo.mYGridOn = true; +} + +void MakeExamplePlot8 (PPlot &ioPPlot) { + + ioPPlot.mPlotBackground.mTitle = "data selection and editing"; + PlotData *theX1 = new PlotData (); + PlotData *theY1 = new PlotData (); + float theFac = 100.0f/(100*100*100); + for (int theI=-10;theI<=10;theI++) { + theX1->push_back (0.001*theI); + theY1->push_back (0.01+theFac*theI*theI*theI); + } + LegendData *theLegend = new LegendData (); + theLegend->mName = "foo"; + theLegend->mColor = PColor (100,100,200); + + PlotDataSelection *thePlotDataSelection = new PlotDataSelection (); + ioPPlot.mPlotDataContainer.AddXYPlot (theX1, theY1, theLegend, 0, thePlotDataSelection); + ioPPlot.mMargins.mLeft = 30; + ioPPlot.mMargins.mTop = 30; + ioPPlot.mMargins.mBottom = 30; + ioPPlot.mMargins.mRight = 30; +} + +void MakePainterTester (PPlot &ioPPlot) { + ioPPlot.SetPPlotDrawer (new PainterTester ()); +} + +static PPlot *sCurrentPPlot=0; + +void SetCurrentPPlot (PPlot *inPPlot) { + sCurrentPPlot = inPPlot; +} +#include +PPlot & GetCurrentPPlot () { + fprintf (stderr, "getplot\n"); + if (sCurrentPPlot) { + return *sCurrentPPlot; + } + assert (0); + fprintf (stderr, "aargh\n"); + + return *sCurrentPPlot;// this should not happen +} + + + +void MakeCopy (const PPlot &inPPlot, PPlot &outPPlot) { + // copy settings + outPPlot.mGridInfo = inPPlot.mGridInfo; + outPPlot.mMargins = inPPlot.mMargins; + outPPlot.mXAxisSetup = inPPlot.mXAxisSetup; + outPPlot.mYAxisSetup = inPPlot.mYAxisSetup; + outPPlot.mPlotBackground = inPPlot.mPlotBackground; + + // now the data + for (int theI=0;theIClone (); + + outPPlot.mPlotDataContainer.AddXYPlot (theNewXData, theNewYData, theNewLegendData, theNewDrawer); + + } + +} +#endif diff --git a/iup/srcpplot/iupPPlot.h b/iup/srcpplot/iupPPlot.h new file mode 100755 index 0000000..bab2f94 --- /dev/null +++ b/iup/srcpplot/iupPPlot.h @@ -0,0 +1,645 @@ +/*************************************************************************** + * * + * Copyright notice: * + * * + * This is free Pier ware. You may do whatever you want with this code. * + * You may cont(r)act me by email: pierphil@xs4all.nl * + * * + ***************************************************************************/ + +#ifndef __PPLOT_H__ +#define __PPLOT_H__ + + +#pragma warning (disable: 4786) + +#include +#include +#include +#include +#include +using namespace std; + +#ifdef __WATCOMC__ /* M.T. - 2006-09-26 - hacked to compile with OW ver. 1.5 */ +#pragma off (unreferenced); +#endif + +/* M.T. - these are text alignment values usable here */ +#ifdef _IUP_PPLOT_ +// Text alignment +enum { /* text alignment */ + PPLOT_NORTH, + PPLOT_SOUTH, + PPLOT_EAST, + PPLOT_WEST, + PPLOT_NORTH_EAST, + PPLOT_NORTH_WEST, + PPLOT_SOUTH_EAST, + PPLOT_SOUTH_WEST, + PPLOT_CENTER, + PPLOT_BASE_LEFT, + PPLOT_BASE_CENTER, + PPLOT_BASE_RIGHT +}; + +// Legend Position +enum PLegendPos {PPLOT_TOPLEFT, PPLOT_TOPRIGHT, PPLOT_BOTTOMLEFT, PPLOT_BOTTOMRIGHT}; +#endif + +typedef vector RealData; +typedef vector StringData; + +class PStyle { + public: +#ifdef _IUP_PPLOT_ + PStyle (): mFontSize(0), mFontStyle(-1), mPenWidth(1), mPenStyle(0), mMarkSize(7), mMarkStyle(3) {}; + int mFontSize; + int mFontStyle; + int mPenWidth; + int mPenStyle; + int mMarkStyle; + int mMarkSize; +#else + PStyle (): mFontSize(10), mPenWidth(1) {}; + int mFontSize; + string mFont; + int mPenWidth; + string mPenStyle; + map mVar; +#endif +}; + +class CalculatedDataBase { + public: + virtual float GetValue (long inIndex) const = 0; + virtual long GetSize () const = 0; +}; + +// data +class PlotDataBase { + public: + PlotDataBase(): mIsString(false) {}; + virtual ~PlotDataBase (); + virtual const RealData * GetRealPlotData () const = 0; + virtual const CalculatedDataBase * GetCalculatedData () const {return 0;} + bool IsString () const {return mIsString;} + long GetSize () const; + float GetValue (long inIndex) const; + virtual bool CalculateRange (float &outMin, float &outMax); +protected: + bool mIsString; +}; + +typedef vector PlotDataList; + +class PlotDataPointer: public PlotDataBase { + public: + PlotDataPointer (const PlotDataBase *inPlotData):mPlotData (inPlotData){};// does not own them + virtual const RealData * GetRealPlotData () const {return mPlotData->GetRealPlotData ();}; + virtual const CalculatedDataBase * GetCalculatedData () const {return mPlotData->GetCalculatedData ();} + private: + const PlotDataBase *mPlotData; +}; + +// default data class +class PlotData: public RealData, public PlotDataBase { + public: + virtual const RealData * GetRealPlotData () const {return this;}; +}; + +class CalculatedData: public CalculatedDataBase { + public: + CalculatedData (float inMin, float inDelta, long inSize): + mMin (inMin), mDelta (inDelta), mSize (inSize) {} + virtual float GetValue (long inIndex) const { return mMin + inIndex * mDelta; } + virtual long GetSize () const { return mSize; } + + float mMin; + float mDelta; + long mSize; +}; + +class CalculatedPlotData: public PlotDataBase { + public: + CalculatedPlotData (CalculatedDataBase* inCalculatedData): + mCalculatedData (inCalculatedData) {} + ~CalculatedPlotData () {delete mCalculatedData;} + virtual const RealData * GetRealPlotData () const {return 0;} + virtual const CalculatedDataBase * GetCalculatedData () const {return mCalculatedData;} + + CalculatedDataBase* mCalculatedData; +}; + +class DummyPlotData: public PlotDataBase { + public: + DummyPlotData (long inSize=0); + virtual const RealData * GetRealPlotData () const {return &mRealPlotData;}; + private: + RealData mRealPlotData; +}; + +class StringPlotData: public PlotDataBase { + public: + StringPlotData() {mIsString = true;} + void AddItem (const char *inString); + void InsertItem (int inIndex, const char *inString); + const StringData * GetStringData () const {return &mStringPlotData;}; + virtual const RealData * GetRealPlotData () const {return &mRealPlotData;}; +// private: + RealData mRealPlotData; + StringData mStringPlotData; +}; + + +float SafeLog (float inFloat, float inBase, float inFac=1); +float SafeExp (float inFloat, float inBase, float inFac=1); + +class PRect { + public: + PRect ():mX(0),mY(0),mW(0),mH(0){}; + long mX; + long mY; + long mW; + long mH; +}; + +class PMargins { + public: + PMargins ():mLeft (0), mRight(0), mTop (0), mBottom (0){}; + PMargins (long inLeft, long inRight, long inTop, long inBottom):mLeft (inLeft), mRight (inRight), mTop(inTop), mBottom (inBottom) {}; + long mLeft; + long mRight; + long mTop; + long mBottom; +}; + +class PColor { + public: + PColor (): mR(0), mG(0), mB(0){}; + PColor (int inR, int inG, int inB): mR((unsigned char)inR), mG((unsigned char)inG), mB((unsigned char)inB){}; // M.T. added typecast + unsigned char mR; + unsigned char mG; + unsigned char mB; +}; + +class LegendData { + public: + LegendData (): mShow (true) {}; + string mName; + PColor mColor; + bool mShow; + + void SetDefaultColor (int inPlotIndex); + void SetDefaultValues (int inPlotIndex); + static PColor GetDefaultColor (int inPlotIndex); + + PStyle mStyle; +}; + +typedef vector LegendDataList; + +class PlotDataSelection: public vector { + public: + PlotDataSelection (long inSize=0):vector(inSize){}; + bool IsSelected (long inIndex) const; + long GetSelectedCount () const; +}; + +typedef vector PlotDataSelectionList; + +class Painter { + public: + virtual void DrawLine (float inX1, float inY1, float inX2, float inY2)=0; + virtual void FillRect (int inX, int inY, int inW, int inH)=0; + virtual void InvertRect (int inX, int inY, int inW, int inH)=0; + virtual void SetClipRect (int inX, int inY, int inW, int inH)=0; + virtual long GetWidth () const=0; + virtual long GetHeight () const=0; + virtual void SetLineColor (int inR, int inG, int inB)=0; + virtual void SetFillColor (int inR, int inG, int inB)=0; + virtual long CalculateTextDrawSize (const char *inString)=0; + virtual long GetFontHeight () const =0; +#ifdef _IUP_PPLOT_ + virtual void FillArrow (int inX1, int inY1, int inX2, int inY2, int inX3, int inY3)=0; + virtual void DrawText (int inX, int inY, short align, const char *inString)=0; + virtual void DrawRotatedText (int inX, int inY, float inDegrees, + short align, const char *inString)=0; +#else + virtual void DrawText (int inX, int inY, const char *inString)=0; + virtual void DrawRotatedText (int inX, int inY, float inDegrees, const char *inString)=0; +#endif + virtual void SetStyle (const PStyle &inStyle){}; +}; + +class DummyPainter: public Painter { + public: + virtual void DrawLine (float inX1, float inY1, float inX2, float inY2){}; + virtual void FillRect (int inX, int inY, int inW, int inH){}; + virtual void InvertRect (int inX, int inY, int inW, int inH){}; + virtual void SetClipRect (int inX, int inY, int inW, int inH){}; + virtual long GetWidth () const {return 100;}; + virtual long GetHeight () const {return 100;}; + virtual void SetLineColor (int inR, int inG, int inB){}; + virtual void SetFillColor (int inR, int inG, int inB){}; + virtual long CalculateTextDrawSize (const char *inString){return 0;}; + virtual long GetFontHeight () const {return 10;}; +#ifdef _IUP_PPLOT_ + virtual void FillArrow (int inX1, int inY1, int inX2, int inY2, int inX3, int inY3){}; + virtual void DrawText (int inX, int inY, short align, const char *inString){}; + virtual void DrawRotatedText (int inX, int inY, float inDegrees, + short align, const char *inString){}; +#else + virtual void DrawText (int inX, int inY, const char *inString){}; + virtual void DrawRotatedText (int inX, int inY, float inDegrees, const char *inString){}; +#endif +}; + +class Trafo; +class AxisSetup; + +class DataDrawerBase { + public: + DataDrawerBase (): mXTrafo (0), mYTrafo (0), mDrawFast (false), mPlotCount (1), mPlotIndex (0), mHasMarks(false), mShowValues(false), mMode(0) {}; + virtual ~DataDrawerBase (){}; + void SetXTrafo (Trafo *inTrafo) {mXTrafo = inTrafo;}; + void SetYTrafo (Trafo *inTrafo) {mYTrafo = inTrafo;}; + void SetDrawFast (bool inDrawFast) {mDrawFast = inDrawFast;} + void SetPlotCount (int inPlotCount) {mPlotCount = inPlotCount;} + void SetPlotIndex (int inPlotIndex) {mPlotIndex = inPlotIndex;} + virtual bool DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const =0; + virtual DataDrawerBase* Clone () const = 0; + bool mHasMarks; + bool mShowValues; + PStyle mStyle; + const char* mMode; + protected: + Trafo *mXTrafo; + Trafo *mYTrafo; + bool mDrawFast; + int mPlotCount; + int mPlotIndex; +}; + +typedef vector DataDrawerList; + +class LineDataDrawer: public DataDrawerBase { + public: + LineDataDrawer ():mDrawLine (true), mDrawPoint (false) {mMode = "LINE"; mHasMarks = true;}; + virtual bool DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const; + + virtual DataDrawerBase* Clone () const; + virtual bool DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const; + virtual bool DrawSelection (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const; + + bool mDrawLine; + bool mDrawPoint; +}; + +class DotDataDrawer: public LineDataDrawer { + public: + DotDataDrawer () { mDrawLine = false; mDrawPoint = true;}; + virtual bool DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const; +}; + +class BarDataDrawer: public DataDrawerBase { + public: + BarDataDrawer (bool inDrawOnlyLastPoint = false):mDrawOnlyLastPoint (inDrawOnlyLastPoint){ mMode = "BAR"; }; + virtual bool DrawData (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const; + virtual DataDrawerBase* Clone () const; + + protected: + bool mDrawOnlyLastPoint;// special mode + virtual bool DrawOnlyLastPoint (const PlotDataBase &inXData, const PlotDataBase &inYData, const PlotDataSelection &inPlotDataSelection, const AxisSetup &inXAxisSetup, const PRect &inRect, Painter &inPainter) const; +}; + + +class PlotDataContainer { + public: + PlotDataContainer (); + ~PlotDataContainer (); + + void RemoveElement (int inIndex); + void ClearData (); + + /* M.T. - changed to return the index of the added plot; returns -1 on error */ + int AddXYPlot (PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData=0, DataDrawerBase *inDataDrawer=0, PlotDataSelection *inPlotDataSelection=0);//takes ownership + void SetXYPlot (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, LegendData *inLegendData=0, DataDrawerBase *inDataDrawer=0, PlotDataSelection *inPlotDataSelection=0);//takes ownership + + int GetPlotCount () const {return mYDataList.size ();}; + + PlotDataBase * GetXData (int inIndex); + PlotDataBase * GetYData (int inIndex); + LegendData * GetLegendData (int inIndex); + DataDrawerBase * GetDataDrawer (int inIndex); + PlotDataSelection * GetPlotDataSelection (int inIndex); + bool SetDataDrawer (int inIndex, DataDrawerBase* inDataDrawer); // takes ownership + + int GetPlotIndexByName (const string &inName) const;// negative value: not found + + const PlotDataBase * GetConstXData (int inIndex) const; + const PlotDataBase * GetConstYData (int inIndex) const; + const LegendData * GetConstLegendData (int inIndex) const; + const DataDrawerBase * GetConstDataDrawer (int inIndex) const; + const PlotDataSelection * GetConstPlotDataSelection (int inIndex) const; + + bool CalculateXRange (float &outXMin, float &outXMax) const; + bool CalculateYRange (float inXMin, float inXMax, float &outYMin, float &outYMax) const; + bool CalculateYRangePlot (float inXMin, float inXMax, const PlotDataBase &inXData, const PlotDataBase &inYData, float &outYMin, float &outYMax) const; + + protected: + bool CheckState () const; + PlotDataList mXDataList; + PlotDataList mYDataList; + LegendDataList mLegendDataList; + DataDrawerList mDataDrawerList; + PlotDataSelectionList mPlotDataSelectionList; +}; + +// M.T. - added custom grid color - was (200,200,200) +class GridInfo { + public: + GridInfo (const bool inXGridOn = false, const bool inYGridOn = false) : mXGridOn (inXGridOn), mYGridOn (inYGridOn), mGridColor(200,200,200) {}; + + bool mXGridOn; + bool mYGridOn; + PColor mGridColor; + PStyle mStyle; +}; + +class TickInfo { + public: + TickInfo ():mAutoTick (true), mAutoTickSize (true), mTickDivision(1), mMajorTickSpan(1), mMajorTickScreenSize (1), mMinorTickScreenSize (1), mFormatString ("%.0f"), mTicksOn (true) {}; + + + static float RoundSpan (float inSpan); + static void MakeFormatString (float inValue, string &outFormatString); + + bool mAutoTick; + bool mAutoTickSize; + bool mTicksOn; + + int mTickDivision; + float mMajorTickSpan; // in plot units + int mMajorTickScreenSize; + int mMinorTickScreenSize; + string mFormatString; + PStyle mStyle; +}; + +class AxisSetup { + + public: + AxisSetup (): mMin(0),mMax(0), mAutoScaleMin(true), mAutoScaleMax (true), mAscending (true), mLogScale(false), mCrossOrigin(true), mMaxDecades(-1), mLogFactor (1), mLogBase (10), mLabelCentered(true), mDiscrete(false) {}; + + void SetMin (float inMin) {mMin = inMin;}; + void SetMax (float inMax) {mMax = inMax;}; + void SetAutoScale (bool inBool) {mAutoScaleMin = mAutoScaleMax = inBool;}; + bool IsAutoScale () const {return mAutoScaleMin && mAutoScaleMax;}; + + float mMin; + float mMax; + bool mAutoScaleMin; + bool mAutoScaleMax; + bool mAscending; // not Ascending: Descending + bool mLogScale; + bool mCrossOrigin; + long mMaxDecades;// property for auto logscale + long mLogFactor;// to make db possible with logscale + float mLogBase; + bool mDiscrete; + + bool mLabelCentered; + PColor mColor; + string mLabel; + PStyle mStyle; + + TickInfo mTickInfo; + + private: +}; + +class Trafo { + public: + virtual ~Trafo (){}; + virtual float Transform (float inValue) const=0; + virtual float TransformBack (float inValue) const = 0; +}; + +class LinTrafo: public Trafo { + public: + LinTrafo ():mOffset (0), mSlope(0){}; + virtual float Transform (float inValue) const; + virtual float TransformBack (float inValue) const; + + float mOffset; + float mSlope; +}; + +class LogTrafo: public Trafo { + public: + LogTrafo ():mOffset (0), mSlope(0), mBase (10), mFactor (1){}; + virtual float Transform (float inValue) const; + virtual float TransformBack (float inValue) const; + + float mOffset; + float mSlope; + float mBase; + float mFactor; +}; + +class TickIterator { + public: + TickIterator ():mAxisSetup (0){}; + virtual ~TickIterator () {}; + virtual bool Init ()=0; + virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString)=0; + + virtual bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const=0; + virtual bool AdjustRange (float &ioMin, float &ioMax) const{return true;}; + void SetAxisSetup (const AxisSetup *inAxisSetup) {mAxisSetup = inAxisSetup;}; + + protected: + const AxisSetup *mAxisSetup; +}; + +class LinTickIterator: public TickIterator { + public: + LinTickIterator ():mCurrentTick (0), mDelta (0){} + virtual bool Init (); + virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString); + bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const; + protected: + float mCurrentTick; + long mCount; + float mDelta; + string mFormatString; +}; + +class LogTickIterator: public TickIterator { + public: + LogTickIterator ():mCurrentTick (0), mDelta (0){} + virtual bool Init (); + virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString); + + bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const; + virtual bool AdjustRange (float &ioMin, float &ioMax) const; + float RoundUp (float inFloat) const; + float RoundDown (float inFloat) const; + + protected: + float mCurrentTick; + long mCount; + float mDelta; +}; + +class NamedTickIterator: public LinTickIterator { + public: + NamedTickIterator (){} + void SetStringList (const StringData &inStringList) {mStringList = inStringList;}; + + // virtual bool Init (); + virtual bool GetNextTick (float &outTick, bool &outIsMajorTick, string &outFormatString); + bool InitFromRanges (float inParRange, float inOrthoScreenRange, float inDivGuess, TickInfo &outTickInfo) const; + protected: + StringData mStringList; +}; + +class PlotBackground { + public: + PlotBackground ():mTransparent (true), mPlotRegionBackColor (255,255,255) {}; + bool mTransparent; + PColor mPlotRegionBackColor; + string mTitle; + PStyle mStyle; +#ifdef _IUP_PPLOT_ + PColor mTitleColor; +#endif +}; + +class PPlot; + +class PDrawer { + public: + typedef vector tList; + + virtual ~PDrawer (){}; + virtual bool Prepare (Painter &inPainter, PPlot& inPPlot) {return true;}; + virtual bool Draw (Painter &inPainter)=0; +}; + +class PCalculator {// base class to do additional calculations on a PPlot + public: + typedef vector tList; + + virtual ~PCalculator (){}; + + virtual bool ShouldCalculate () const {return true;}; + virtual bool Calculate (Painter &inPainter, PPlot& inPPlot) {return true;}; +}; + + +class PainterTester: public PDrawer { + public: + virtual bool Draw (Painter &inPainter); +}; + +class PPlot: public PDrawer { + public: + PPlot (); + virtual ~PPlot (); + + virtual bool Draw (Painter &inPainter); + + PlotDataContainer mPlotDataContainer; + AxisSetup mXAxisSetup; + AxisSetup mYAxisSetup; + GridInfo mGridInfo; + PMargins mMargins;// [pixels] + PlotBackground mPlotBackground; + bool mShowLegend; // M.T. - hide|show legend + PLegendPos mLegendPos; + + void SetPPlotDrawer (PDrawer *inPDrawer);// taker ownership. Used to bypass normal Draw function, i.e., set Draw function by composition. + void SetPPlotDrawer (PDrawer &inPDrawer);// same as above: does not take ownership + + bool mHasAnyModifyingCalculatorBeenActive; + PCalculator::tList mModifyingCalculatorList; + PCalculator::tList mPostCalculatorList; + PDrawer::tList mPreDrawerList; + PDrawer::tList mPostDrawerList; + + TickIterator *mXTickIterator; + TickIterator *mYTickIterator; + + virtual bool CalculateXTransformation (const PRect &inRect); + virtual bool CalculateYTransformation (const PRect &inRect); + virtual bool DrawGridXAxis (const PRect &inRect, Painter &inPainter) const; + virtual bool DrawGridYAxis (const PRect &inRect, Painter &inPainter) const; + virtual bool DrawXAxis (const PRect &inRect, Painter &inPainter) const; + virtual bool DrawYAxis (const PRect &inRect, Painter &inPainter) const; + virtual bool CalculateTickInfo (const PRect &inRect, Painter &inPainter); + + Trafo *mXTrafo; + Trafo *mYTrafo; + + static int Round (float inFloat); + static const float kRangeVerySmall; + + protected: + PPlot (const PPlot&); + PPlot& operator=(const PPlot&); + + static bool CalculateLogTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LogTrafo& outTrafo); + static bool CalculateLinTransformation (int inBegin, int inEnd, const AxisSetup& inAxisSetup, LinTrafo& outTrafo); + + virtual bool DrawPlotBackground (const PRect &inRect, Painter &inPainter) const; +#ifdef _IUP_PPLOT_ + virtual bool DrawPlotTitle(const PRect &inRect, Painter &inPainter) const; +#endif + virtual bool DrawXTick (float inX, int inScreenY, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const; + virtual bool DrawYTick (float inY, int inScreenX, bool inMajor, const string &inFormatString, Painter &inPainter, PRect &outRect) const; + virtual bool DrawLegend (const PRect &inRect, Painter &inPainter) const; + virtual bool DrawPlot (int inIndex, const PRect &inRect, Painter &inPainter) const; + virtual bool ConfigureSelf ();// change here implementations of interfaces + virtual bool ValidateData ();// check preconditions here things like x is ascending + virtual bool CalculateAxisRanges (); + virtual bool CheckRange (const AxisSetup &inAxisSetup) const; + + void SetTickSizes (int inFontHeight, TickInfo &ioTickInfo); + + // trafo's between plot coordinates and screen coordinates. + LinTrafo mXLinTrafo; + LinTrafo mYLinTrafo; + LogTrafo mXLogTrafo; + LogTrafo mYLogTrafo; + + LinTickIterator mXLinTickIterator; + LinTickIterator mYLinTickIterator; + LogTickIterator mXLogTickIterator; + LogTickIterator mYLogTickIterator; + NamedTickIterator mXNamedTickIterator; + + PDrawer * mPPlotDrawer; + bool mOwnsPPlotDrawer; +}; + +#ifndef _IUP_PPLOT_ +bool MakeExamplePlot (int inExample, PPlot &ioPPlot); +void MakeExamplePlot1 (PPlot &ioPPlot); +void MakeExamplePlot2 (PPlot &ioPPlot); +void MakeExamplePlot3 (PPlot &ioPPlot); +void MakeExamplePlot4 (PPlot &ioPPlot); +void MakeExamplePlot5 (PPlot &ioPPlot); +void MakeExamplePlot6 (PPlot &ioPPlot); +void MakeExamplePlot7 (PPlot &ioPPlot); +void MakeExamplePlot8 (PPlot &ioPPlot); +void MakePainterTester (PPlot &ioPPlot); + +void MakeCopy (const PPlot &inPPlot, PPlot &outPPlot); + +// following functions can be used to interface with scripts +void SetCurrentPPlot (PPlot *inPPlot); +PPlot & GetCurrentPPlot (); +#endif + +#endif diff --git a/iup/srcpplot/iupPPlotInteraction.cpp b/iup/srcpplot/iupPPlotInteraction.cpp new file mode 100755 index 0000000..389dbcc --- /dev/null +++ b/iup/srcpplot/iupPPlotInteraction.cpp @@ -0,0 +1,832 @@ +/*************************************************************************** + * * + * Copyright notice: * + * * + * This is free Pier ware. You may do whatever you want with this code. * + * You may cont(r)act me by email: pierphil@xs4all.nl * + * * + ***************************************************************************/ + +#include +#include + +#include "iupPPlotInteraction.h" + +const float kHitDistance = (float)10.0;//pixels + +float pmax (float inX1, float inX2) { + if (inX1>inX2) { + return inX1; + } + return inX2; +} +float pmin (float inX1, float inX2) { + if (inX1 inY2) ? inY1 : inY2; + if (fabs (theYRange / theYMax) < PPlot::kRangeVerySmall) { + return; + } + + StoreCurrentAxisSetup (); + + if (IsZoomRegion () || IsZoomX ()) { + mPPlot.mXAxisSetup.SetAutoScale (false); + mPPlot.mXAxisSetup.mMin = pmin (inX1, inX2); + mPPlot.mXAxisSetup.mMax = pmax (inX1, inX2); + } + if (IsZoomRegion () || IsZoomY ()) { + mPPlot.mYAxisSetup.SetAutoScale (false); + mPPlot.mYAxisSetup.mMin = pmin (inY1, inY2); + mPPlot.mYAxisSetup.mMax = pmax (inY1, inY2); + } + + return; +} + +void PZoomInteraction::StoreCurrentAxisSetup () { + PAxisInfo theInfo;// store the current axis setup + + theInfo.mXAxisSetup = mPPlot.mXAxisSetup; + theInfo.mYAxisSetup = mPPlot.mYAxisSetup; + + mZoomHistory.push (theInfo); +} + +void PZoomInteraction::DoZoomIn () { + float theX1 = mPPlot.mXTrafo->TransformBack (mX1); + float theX2 = mPPlot.mXTrafo->TransformBack (mX2); + float theY1 = mPPlot.mYTrafo->TransformBack (mY1); + float theY2 = mPPlot.mYTrafo->TransformBack (mY2); + + DoZoomIn (theX1, theX2, theY1, theY2); +}; + +// arguments allow us to zoom out in X direction but change the Y-axis +void PZoomInteraction::DoZoomOut (float inY1, float inY2) { + if (mZoomHistory.size () == 0) { + return; + } + PAxisInfo theInfo = mZoomHistory.top (); + mZoomHistory.pop (); + + mPPlot.mXAxisSetup = theInfo.mXAxisSetup; + if (inY1 != -1) { + mPPlot.mYAxisSetup.mMin = pmin (inY1, inY2); + mPPlot.mYAxisSetup.mMax = pmax (inY1, inY2); + } else { + mPPlot.mYAxisSetup = theInfo.mYAxisSetup; + } +} + +PSelectionInteraction::PSelectionInteraction (PPlot &inPPlot): + PPlotInteraction (inPPlot), + mCommand (kNone), + mListener (0) +{ + inPPlot.mPostCalculatorList.push_back (this); +} + + +bool PSelectionInteraction::HandleKeyEvent (const PKeyEvent &inEvent) { + + mCommand = kNone; + if (inEvent.IsOnlyControlKeyDown () && inEvent.IsChar () && inEvent.GetChar () == 'a') { +// mCalculate = true; + mCommand = kSelectAll; + mKeyEvent = inEvent; + } + return mCommand != kNone; +}; + +void PSelectionInteraction::UpdateSelection (int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, PlotDataSelection *inPlotDataSelection) { + if ((*inPlotDataSelection)[inSampleIndex] != inHit) + { + if (SelectNotify(inIndex, inSampleIndex, inXData, inYData, inHit)) + (*inPlotDataSelection)[inSampleIndex] = inHit; + } +} + +void PSelectionInteraction::SelectAll (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection) { + for (long theI=0;theIsize ();theI++) { + UpdateSelection (inIndex, theI, inXData, inYData, true, inPlotDataSelection); + } +} + + +bool PSelectionInteraction::HandleMouseEvent (const PMouseEvent &inEvent) { + + mCommand = kNone; + if (inEvent.IsMouseDown ()) { + if (!(inEvent.IsOnlyControlKeyDown () || inEvent.IsOnlyShiftKeyDown ())) { + return false; + } +// fprintf (stderr, "selection\n"); +// mCalculate = true; + if (inEvent.IsOnlyControlKeyDown ()) { + mCommand = kPointwiseSelection; + } + else if (inEvent.IsOnlyShiftKeyDown ()) { + mCommand = kGlobalSelection; + } + mMouseEvent = inEvent; + return true; + } + return false; +} + +bool PSelectionInteraction::Calculate (Painter &inPainter, PPlot& inPPlot) { + + if (mCommand == kNone) { + return true; + } + + PlotDataContainer &theContainer = inPPlot.mPlotDataContainer; + long thePlotCount = theContainer.GetPlotCount (); + float theDist = -1; + + for (long theI=0;theIHandlePSelectionInteraction (); + } + + mCommand = kNone; + + return true; +} + +void PSelectionInteraction::HandleGlobalInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) { + if (inPlotDataSelection->size ()>0) { + for (int theI=0;theIsize ();theI++) { + UpdateSelection (inIndex, theI, inXData, inYData, inHit, inPlotDataSelection); + } + } +} + +void PSelectionInteraction::HandlePointwiseInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection) { + if (!inHit) { + return; + } + if (inPlotDataSelection->size ()>inNearestPointIndex) { + bool theWasHit = (*inPlotDataSelection)[inNearestPointIndex] !=0; + UpdateSelection (inIndex, inNearestPointIndex, inXData, inYData, !theWasHit, inPlotDataSelection); + /* + for (int theI=0;theIsize ();theI++) { + bool theWasHit = (*inPlotDataSelection)[theI] !=0; + bool theIsHit = false; + if (theI==inNearestPointIndex) { + theIsHit = !theWasHit; + } + (*inPlotDataSelection)[theI] = theIsHit; + }*/ + } +} + +float PSelectionInteraction::CalculateDistanceToPlot (const PlotDataBase *inXData, const PlotDataBase *inYData, long &outNearestPointIndex) { + +// const RealData *theXData = inXData->GetRealPlotData (); +// const RealData *theYData = inYData->GetRealPlotData (); + outNearestPointIndex = -1; + float theDist = -1; + for (int theI=0;theIGetSize ();theI++) { +// float theX = (*theXData)[theI]; +// float theY = (*theYData)[theI]; + float theX = inXData->GetValue (theI); + float theY = inYData->GetValue (theI); + // transform to pixels + theX = mPPlot.mXTrafo->Transform (theX)-mMouseEvent.mX; + theY = mPPlot.mYTrafo->Transform (theY)-mMouseEvent.mY; + + float theTmp = theX*theX+theY*theY; + + if (theTmpmUpperBound) { + return false; + } + return true; +} + + +bool PlotDataIncrementer::Increment (const vector &inIncrementList, vector &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector &inBoundList) const { + bool theDontChange = true; + + if (!Impl_Increment (inIncrementList, inData, inGlobalBounds, inBoundList, theDontChange)) { + return false; + } + theDontChange = false; + Impl_Increment (inIncrementList, inData, inGlobalBounds, inBoundList, theDontChange); + return true; +} + +bool PlotDataIncrementer::Impl_Increment (const vector &inIncrementList, vector &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector &inBoundList, bool inDontChange) const { + + if (inBoundList.size ()>0 && inBoundList.size () != inData.size ()) { + return false; + } + if (inIncrementList.size () != inData.size ()) { + return false; + } + + for (int theI=0;theI0) { + if (!inBoundList[theI].CheckBounds (theIncrementedValue)) { + return false; + } + } + if (!inDontChange) { + *theValue = theIncrementedValue; + } + } + return true; +} + + + +PEditInteraction::PEditInteraction (PPlot &inPPlot): + PPlotInteraction (inPPlot), + mCalculate (false), + mListener (0) +{ + inPPlot.mModifyingCalculatorList.push_back (this); +} + +bool PEditInteraction::HandleKeyEvent (const PKeyEvent &inEvent) { + + mCalculate = Impl_HandleKeyEvent (inEvent); + mKeyEvent = inEvent; + return mCalculate; +}; + +bool PEditInteraction::Calculate (Painter &inPainter, PPlot& inPPlot) { + if (!mCalculate) { + return true; + } + + Impl_Calculate (inPainter, inPPlot); + + if (mListener) { + mListener->HandlePEditInteraction (); + } + mCalculate = false; + return true; +} + + + +PVerticalCursorInteraction::PVerticalCursorInteraction (PPlot &inPPlot): + PEditInteraction (inPPlot) +{ +} + +bool PVerticalCursorInteraction::Impl_HandleKeyEvent (const PKeyEvent &inEvent) { + + if (inEvent.IsArrowDown () || inEvent.IsArrowUp ()) { + return true; + } + return false; +}; + +bool PVerticalCursorInteraction::Impl_Calculate (Painter &inPainter, PPlot& inPPlot) { + + PlotDataContainer &theContainer = inPPlot.mPlotDataContainer; + long thePlotCount = theContainer.GetPlotCount (); + for (long theI=0;theI(inYData); + if (!theYData) { + return; + } + vector theIncrementList (inPlotDataSelection->GetSelectedCount ()); + vector theSelectedData (inPlotDataSelection->GetSelectedCount ()); + float theDelta = 1;// pixels + if (mKeyEvent.IsArrowDown ()) { + theDelta *= -1; + } + if (mKeyEvent.IsOnlyControlKeyDown ()) { + theDelta *= 10; + } + long theIndex = 0; + for (int theI=0;theIGetSize ();theI++) { + if (inPlotDataSelection->IsSelected (theI)) { + float *theNow = &((*theYData)[theI]); + float theNowPixels = mPPlot.mYTrafo->Transform (*theNow); + float theNow2 = mPPlot.mYTrafo->TransformBack (theNowPixels); + theNowPixels -= theDelta; + float theShiftedNow = mPPlot.mYTrafo->TransformBack (theNowPixels); + float theDeltaData = theShiftedNow-*theNow; + theIncrementList[theIndex] = theDeltaData; + theSelectedData[theIndex] = theNow; +// float theNew = theNow + theDelta; +// (*theYData)[theI] = theNew; + theIndex++; + } + } + PlotDataIncrementer theIncremter; + vector theDummyList; + theIncremter.Increment (theIncrementList, theSelectedData, mGlobalBounds, theDummyList); +} + + +PDeleteInteraction::PDeleteInteraction (PPlot &inPPlot): + PEditInteraction (inPPlot) +{ +} + +bool PDeleteInteraction::Impl_HandleKeyEvent (const PKeyEvent &inEvent) { + + if (inEvent.IsDelete ()) { + return true; + } + return false; +}; + +bool PDeleteInteraction::Impl_Calculate (Painter &inPainter, PPlot& inPPlot) { + + PlotDataContainer &theContainer = inPPlot.mPlotDataContainer; + long thePlotCount = theContainer.GetPlotCount (); + + if (!DeleteNotify(-1, 0, NULL, NULL)) + return true; + + for (long theI=0;theI vectorOfInt; + +template bool Erase (const vectorOfInt &inEraseList, T &ioVec) { + vectorOfInt theSortedList = inEraseList; + sort (theSortedList.begin (), theSortedList.end ()); + reverse (theSortedList.begin (), theSortedList.end ()); +// M.T. this is missing in OW: unique (theSortedList.begin (), theSortedList.end ());// remove duplicates + for (vectorOfInt::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) { + int theEraseIndex = *theI; + // vector ::iterator theX; + // theX = ioVec[theEraseIndex]; + // T *theX = &(ioVec[theEraseIndex]); + ioVec.erase (ioVec.begin ()+theEraseIndex); + } + + return true; +} + +/* + +bool Erase (const vectorOfInt &inEraseList, PlotData &ioVec) { + vectorOfInt theSortedList = inEraseList; + sort (theSortedList.begin (), theSortedList.end ()); + reverse (theSortedList.begin (), theSortedList.end ()); +// unique (theSortedList.begin (), theSortedList.end ());// remove duplicates + for (vectorOfInt::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) { + int theEraseIndex = *theI; + ioVec.erase (ioVec.begin ()+theEraseIndex); + } + + return true; +} + +bool Erase (const vectorOfInt &inEraseList, PlotDataSelection &ioVec) + { + vectorOfInt theSortedList = inEraseList; + sort (theSortedList.begin (), theSortedList.end ()); + reverse (theSortedList.begin (), theSortedList.end ()); +// unique (theSortedList.begin (), theSortedList.end ());// remove duplicates + for (vectorOfInt::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) { + int theEraseIndex = *theI; + ioVec.erase (ioVec.begin ()+theEraseIndex); + } + + return true; +} +*/ +#else +template bool Erase (const vector &inEraseList, vector &ioVec) { + vector theSortedList = inEraseList; + sort (theSortedList.begin (), theSortedList.end ()); + reverse (theSortedList.begin (), theSortedList.end ()); + unique (theSortedList.begin (), theSortedList.end ());// remove duplicates + for (vector::iterator theI=theSortedList.begin();theI!=theSortedList.end ();theI++) { + int theEraseIndex = *theI; + // vector ::iterator theX; + // theX = ioVec[theEraseIndex]; + // T *theX = &(ioVec[theEraseIndex]); + ioVec.erase (ioVec.begin ()+theEraseIndex); + } + + return true; +} +#endif + +void PDeleteInteraction::HandleDeleteKey (PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection, int inIndex) { + vector theDeleteList (inPlotDataSelection->GetSelectedCount ()); + long theIndex = 0; + for (int theI=0;theIGetSize ();theI++) { + if (inPlotDataSelection->IsSelected (theI)) { + if (DeleteNotify(inIndex, theI, inXData, inYData)) + { + theDeleteList[theIndex] = theI; + theIndex++; + } + } + } + + if (inXData->IsString()) + { + StringPlotData *theXData = (StringPlotData*)(inXData); + PlotData *theYData = (PlotData*)(inYData); + Erase (theDeleteList, theXData->mRealPlotData); + Erase (theDeleteList, theXData->mStringPlotData); + Erase (theDeleteList, *theYData); + Erase (theDeleteList, *inPlotDataSelection); + } + else + { + PlotData *theXData = (PlotData*)(inXData); + PlotData *theYData = (PlotData*)(inYData); + Erase (theDeleteList, *theXData); + Erase (theDeleteList, *theYData); + Erase (theDeleteList, *inPlotDataSelection); + } +} + +PCrosshairInteraction::PCrosshairInteraction (PPlot &inPPlot): + PPlotInteraction (inPPlot), + mActive (false), + mX (0), + mListener (0) +{ + inPPlot.mPostDrawerList.push_back (this); +} + +bool PCrosshairInteraction::HandleMouseEvent (const PMouseEvent &inEvent) { + if (!mActive) { + if (inEvent.IsMouseDown ()) { + if (inEvent.IsShiftKeyDown () && inEvent.IsControlKeyDown ()) { + mActive = true; + mX = inEvent.mX; + return true; + } + } + } + else { + if (inEvent.IsMouseUp ()) { + mActive = false; + return true; + } + if (inEvent.IsMouseMove ()) { + mX = inEvent.mX; + return true; + } + } + return false; +} + +bool PCrosshairInteraction::Draw (Painter &inPainter) { + if (mActive) { + float theX1 = mX; + float theY1 = mPPlot.mMargins.mTop; + float theX2 = mX; + float theY2 = inPainter.GetHeight () - mPPlot.mMargins.mBottom; + + inPainter.SetLineColor (0, 0, 0); + inPainter.DrawLine (theX1, theY1, theX2, theY2); + + PlotDataContainer &theContainer = mPPlot.mPlotDataContainer; + long thePlotCount = theContainer.GetPlotCount (); + + for (long theI=0;theITransformBack (mX); + float theYTarget = mPPlot.mYTrafo->TransformBack (theY); + mListener->HandleCrosshair (theI, thePlotCount, theXTarget, theYTarget); + } + theX1 = mPPlot.mMargins.mLeft; + theX2 = inPainter.GetWidth ()-mPPlot.mMargins.mLeft; + theY1 = theY2 = theY; + PColor theC = theLegendData->mColor; + inPainter.SetLineColor (theC.mR, theC.mG, theC.mB); + inPainter.DrawLine (theX1, theY1, theX2, theY2); + } + } + } + return true; +} + +bool PCrosshairInteraction::GetCrossPoint (const PlotDataBase *inXData, const PlotDataBase *inYData, float &outY) { + if (inXData->GetSize ()==0 ){ + return false; + } + float theXTarget = mPPlot.mXTrafo->TransformBack (mX); + bool theFirstIsLess = inXData->GetValue (0) < theXTarget; + for (int theI=0;theIGetSize ();theI++) { + float theX = inXData->GetValue (theI); + float theY = inYData->GetValue (theI); + bool theCurrentIsLess = theX < theXTarget; + + if (theCurrentIsLess != theFirstIsLess) { + outY = mPPlot.mYTrafo->Transform (theY);// transform to pixels + return true; + } + } + return false; +} + + +bool InteractionContainer::HandleMouseEvent (const PMouseEvent &inEvent) { + for (int theI=0;theIIsEnabled () && theInteraction->HandleMouseEvent (inEvent)) { + return true; + } + } + return false; +} + +bool InteractionContainer::HandleKeyEvent (const PKeyEvent &inEvent) { + for (int theI=0;theIIsEnabled () && theInteraction->HandleKeyEvent (inEvent)) { + return true; + } + } + return false; +} + + +DefaultInteractionContainer::DefaultInteractionContainer (PPlot &inPPlot): + mZoomInteraction (inPPlot), + mSelectionInteraction (inPPlot), + mVerticalCursorInteraction (inPPlot), + mDeleteInteraction (inPPlot), + mCrosshairInteraction (inPPlot) +{ + AddInteraction (mZoomInteraction); + AddInteraction (mSelectionInteraction); + AddInteraction (mVerticalCursorInteraction); + AddInteraction (mDeleteInteraction); + AddInteraction (mCrosshairInteraction); +/* + mVerticalCursorInteraction.mGlobalBounds.mLowerBoundEnabled = true; + mVerticalCursorInteraction.mGlobalBounds.mLowerBound = 0; + mVerticalCursorInteraction.mGlobalBounds.mUpperBoundEnabled = true; + mVerticalCursorInteraction.mGlobalBounds.mUpperBound = 10;*/ +} diff --git a/iup/srcpplot/iupPPlotInteraction.h b/iup/srcpplot/iupPPlotInteraction.h new file mode 100755 index 0000000..eacf790 --- /dev/null +++ b/iup/srcpplot/iupPPlotInteraction.h @@ -0,0 +1,328 @@ +/*************************************************************************** + * * + * Copyright notice: * + * * + * This is free Pier ware. You may do whatever you want with this code. * + * You may cont(r)act me by email: pierphil@xs4all.nl * + * * + ***************************************************************************/ + +#ifndef __PPLOTINTERACTION_H__ +#define __PPLOTINTERACTION_H__ + +#include "iupPPlot.h" + +class PModifierKeys { +public: + enum { + kShift=1, + kControl=2, + kAlt=4 + }; + PModifierKeys (int inModifierKeys=0):mModifierKeys (inModifierKeys) {}; + + + bool IsShiftKeyDown () const {return mModifierKeys & kShift? true: false;}; + bool IsControlKeyDown () const {return mModifierKeys & kControl? true: false;}; + bool IsAltKeyDown () const {return mModifierKeys & kAlt? true: false;}; + bool IsOnlyShiftKeyDown () const {return mModifierKeys == kShift? true: false;}; + bool IsOnlyControlKeyDown () const {return mModifierKeys == kControl? true: false;}; + bool IsOnlyAltKeyDown () const {return mModifierKeys == kAlt? true: false;}; + + bool HasModifierKeys () const {return mModifierKeys != 0;}; + + void SetModifierKeys (int inModifierKeys) {mModifierKeys = inModifierKeys;}; +private: + int mModifierKeys;// values like kShift | kAlt +}; + +class PMouseEvent: public PModifierKeys { +public: + enum EType { + kNone, + kDown, + kUp, + kMove + }; + + PMouseEvent (int inX=0, int inY=0, EType inType=kNone, int inModifierKeys=0); + + int mX; + int mY; + + + EType mType; + + bool IsNone () const {return mType == kNone;}; + bool IsMouseDown () const {return mType == kDown;}; + bool IsMouseUp () const {return mType == kUp;}; + bool IsMouseMove () const {return mType == kMove;}; +}; + +class PKeyEvent: public PModifierKeys { +public: + + enum EKey { + kNone, + kArrowUp, + kArrowDown, + kArrowLeft, + kArrowRight, + kDelete, + kChar + }; + + PKeyEvent (EKey inKey=kNone, int inRepeatCount=0, int inModifierKeys=0, char inChar=0); + + + bool IsNone () const {return mKey == kNone;}; + bool IsArrowUp () const {return mKey == kArrowUp;}; + bool IsArrowDown () const {return mKey == kArrowDown;}; + bool IsArrowLeft () const {return mKey == kArrowLeft;}; + bool IsArrowRight () const {return mKey == kArrowRight;}; + bool IsDelete () const {return mKey == kDelete;}; + bool IsChar () const {return mKey == kChar;}; + + int GetRepeatCount () const {return mRepeatCount;}; + char GetChar () const {return mChar;}; +protected: + EKey mKey; + char mChar; + + int mRepeatCount; +}; + + +class PPlotInteraction { + public: + + typedef vectortList; + + PPlotInteraction (PPlot &inPPlot); + + virtual bool HandleMouseEvent (const PMouseEvent &inEvent)=0; + virtual bool HandleKeyEvent (const PKeyEvent &inEvent) {return false;}; + + void SetEnabled (bool inBool) {mIsEnabled = inBool;}; + bool IsEnabled () const {return mIsEnabled;}; +protected: + PPlot &mPPlot; + bool mIsEnabled; +}; + +class PAxisInfo { +public: + typedef vector tList; + AxisSetup mXAxisSetup; + AxisSetup mYAxisSetup; +}; + +class PZoomInteraction: public PPlotInteraction, public PDrawer { +public: + + enum EZoomMode { + kZoom_Region, + kZoom_X, + kZoom_Y + }; + + PZoomInteraction (PPlot &inPPlot); + + virtual bool HandleMouseEvent (const PMouseEvent &inEvent); + virtual bool HandleKeyEvent (const PKeyEvent &inEvent); + + void DoZoomIn (float inX1, float inX2, float inY1, float inY2); + void DoZoomOut (float inY1 = -1, float inY2 = -1); + bool CanZoomOut () { return !mZoomHistory.empty (); }; + int GetZoomStackSize () { return mZoomHistory.size (); }; + + stack mZoomHistory; + EZoomMode mZoomMode; + + bool IsZoomRegion () const {return mZoomMode == kZoom_Region;}; + bool IsZoomX () const {return mZoomMode == kZoom_X;}; + bool IsZoomY () const {return mZoomMode == kZoom_Y;}; +protected: + void StoreCurrentAxisSetup (); + virtual bool Draw (Painter &inPainter); + bool CheckRange (float inFloat1, float inFloat2); + + void DoZoomIn (); + + bool mDragging; + int mX1; + int mY1; + int mX2; + int mY2; + +}; + +class PlotDataIncrementerBounds { +public: + PlotDataIncrementerBounds (); + + bool CheckBounds (float inValue) const; + + bool mLowerBoundEnabled; + float mLowerBound; + bool mUpperBoundEnabled; + float mUpperBound; +}; + +class PlotDataIncrementer { +public: + + // all are none are incremented + bool Increment (const vector &inIncrementList, vector &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector &inBoundList) const; + +protected: + bool Impl_Increment (const vector &inIncrementList, vector &inData, const PlotDataIncrementerBounds &inGlobalBounds, const vector &inBoundList, bool inDontChange) const; +}; + +class PSelectionInteractionListener { +public: + virtual void HandlePSelectionInteraction ()=0; +}; + +class PSelectionInteraction: public PPlotInteraction, public PCalculator { +public: + + enum ECommand { + kNone, + kPointwiseSelection, + kGlobalSelection, + kSelectAll + }; + + PSelectionInteraction (PPlot &inPPlot); + + virtual bool HandleKeyEvent (const PKeyEvent &inEvent); + virtual bool HandleMouseEvent (const PMouseEvent &inEvent); + virtual bool Calculate (Painter &inPainter, PPlot& inPPlot); + + void SetCommand (ECommand inCommand, const PKeyEvent &inKeyEvent, const PMouseEvent &inMouseEvent); + void SetListener (PSelectionInteractionListener *inListener) {mListener = inListener;}; +protected: + PSelectionInteractionListener *mListener; + + virtual bool SelectNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inSelect) {return true;} + void UpdateSelection (int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, PlotDataSelection *inPlotDataSelection); + void HandleGlobalInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection); + void HandlePointwiseInteraction (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inHit, long inNearestPointIndex, DataDrawerBase *inDataDrawer, PlotDataSelection *inPlotDataSelection); + float CalculateDistanceToPlot (const PlotDataBase *inXData, const PlotDataBase *inYData, long &outNearestPointIndex); + void SelectAll (int inIndex, PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection); +// int mX; +// int mY; + ECommand mCommand; + PMouseEvent mMouseEvent; + PKeyEvent mKeyEvent; +}; + + +class PKeySelectionInteraction: public PPlotInteraction, public PCalculator { +public: + PKeySelectionInteraction (PPlot &inPPlot); + + virtual bool Calculate (Painter &inPainter, PPlot& inPPlot); + +protected: + + bool mCalculate; +}; + +class PEditInteractionListener { +public: + virtual void HandlePEditInteraction ()=0; +}; + +class PEditInteraction: public PPlotInteraction, public PCalculator { +public: + PEditInteraction (PPlot &inPPlot); + + virtual bool HandleMouseEvent (const PMouseEvent &inEvent) {return false;}; + virtual bool HandleKeyEvent (const PKeyEvent &inEvent); + virtual bool ShouldCalculate () const {return mCalculate;}; + virtual bool Calculate (Painter &inPainter, PPlot& inPPlot); + + virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent)=0; + virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot)=0; + void SetListener (PEditInteractionListener *inListener) {mListener = inListener;}; +protected: + PEditInteractionListener *mListener; + PKeyEvent mKeyEvent; +private: + bool mCalculate; +}; + +class PVerticalCursorInteraction: public PEditInteraction { +public: + + PVerticalCursorInteraction (PPlot &inPPlot); + + virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent); + virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot); + + PlotDataIncrementerBounds mGlobalBounds; +protected: + void HandleVerticalCursorKey (const PlotDataSelection *inPlotDataSelection, PlotDataBase *inYData); +}; + +class PDeleteInteraction: public PEditInteraction { +public: + + PDeleteInteraction (PPlot &inPPlot); + + virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent); + virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot); + +protected: + void HandleDeleteKey (PlotDataBase *inXData, PlotDataBase *inYData, PlotDataSelection *inPlotDataSelection, int inIndex); + virtual bool DeleteNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData) {return true;} +}; + +class PCrosshairInteractionListener { +public: + virtual void HandleCrosshair (int inIndex, int inPlotCount, float inX, float inY)=0; +}; + +class PCrosshairInteraction: public PPlotInteraction, public PDrawer { +public: + PCrosshairInteraction (PPlot &inPPlot); + + void SetListener (PCrosshairInteractionListener *inListener) {mListener = inListener;}; +protected: + virtual bool HandleMouseEvent (const PMouseEvent &inEvent); + virtual bool Draw (Painter &inPainter); + + bool GetCrossPoint (const PlotDataBase *inXData, const PlotDataBase *inYData, float &outY); + bool mActive; + int mX; + PCrosshairInteractionListener *mListener; +}; + +class InteractionContainer { +public: + InteractionContainer (){}; + virtual ~InteractionContainer (){}; + + bool HandleMouseEvent (const PMouseEvent &inEvent); + bool HandleKeyEvent (const PKeyEvent &inEvent); + + void AddInteraction (PPlotInteraction &inInteraction){mList.push_back(&inInteraction);}; + +protected: + PPlotInteraction::tList mList; +}; + +class DefaultInteractionContainer: public InteractionContainer { +public: + DefaultInteractionContainer (PPlot &inPPlot); + + PZoomInteraction mZoomInteraction; + PSelectionInteraction mSelectionInteraction; + PVerticalCursorInteraction mVerticalCursorInteraction; + PDeleteInteraction mDeleteInteraction; + PCrosshairInteraction mCrosshairInteraction; +}; + +#endif diff --git a/iup/srcpplot/iup_pplot.cpp b/iup/srcpplot/iup_pplot.cpp new file mode 100755 index 0000000..6f5c93a --- /dev/null +++ b/iup/srcpplot/iup_pplot.cpp @@ -0,0 +1,2959 @@ +/* + * IupPPlot component + * + * Description : A component, derived from PPlot and IUP canvas + * Remark : Depend on libs IUP, CD, IUPCD + */ + + +#ifdef _MSC_VER +#pragma warning(disable: 4100) +#pragma warning(disable: 4512) +#endif + +#include +#include +#include +#include + +#include "iup.h" +#include "iupcbs.h" +#include "iup_pplot.h" +#include "iupkey.h" + +#include +#include +#include +#include +#include + +#include "iup_class.h" +#include "iup_register.h" +#include "iup_object.h" +#include "iup_attrib.h" +#include "iup_str.h" +#include "iup_drv.h" +#include "iup_stdcontrols.h" +#include "iup_assert.h" + +#include "iupPPlot.h" +#include "iupPPlotInteraction.h" +#include "iuppplot.hpp" + + +#ifndef M_E +#define M_E 2.71828182846 +#endif + +struct _IcontrolData +{ + iupCanvas canvas; /* from IupCanvas (must reserve it) */ + PPainterIup* plt; +}; + + +static int iPPlotGetCDFontStyle(const char* value); + + +/* PPlot function pointer typedefs. */ +typedef int (*IFnC)(Ihandle*, cdCanvas*); /* postdraw_cb, predraw_cb */ +typedef int (*IFniiff)(Ihandle*, int, int, float, float); /* delete_cb */ +typedef int (*IFniiffi)(Ihandle*, int, int, float, float, int); /* select_cb */ +typedef int (*IFniiffff)(Ihandle*, int, int, float, float, float*, float*); /* edit_cb */ + + +/* callback: forward redraw request to PPlot object */ +static int iPPlotRedraw_CB(Ihandle* ih) +{ + ih->data->plt->Draw(0); /* full redraw only if nothing changed */ + return IUP_DEFAULT; +} + +/* callback: forward resize request to PPlot object */ +static int iPPlotResize_CB(Ihandle* ih) +{ + ih->data->plt->Resize(); + return IUP_DEFAULT; +} + +/* callback: forward mouse button events to PPlot object */ +static int iPPlotMouseButton_CB(Ihandle* ih, int btn, int stat, int x, int y, char* r) +{ + ih->data->plt->MouseButton(btn, stat, x, y, r); + return IUP_DEFAULT; +} + +/* callback: forward mouse button events to PPlot object */ +static int iPPlotMouseMove_CB(Ihandle* ih, int x, int y) +{ + ih->data->plt->MouseMove(x, y); + return IUP_DEFAULT; +} + +/* callback: forward keyboard events to PPlot object */ +static int iPPlotKeyPress_CB(Ihandle* ih, int c, int press) +{ + ih->data->plt->KeyPress(c, press); + return IUP_DEFAULT; +} + +/* user level call: add dataset to plot */ +void IupPPlotBegin(Ihandle* ih, int strXdata) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return; + + PlotDataBase* inXData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_XDATA"); + PlotDataBase* inYData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_YDATA"); + + if (inXData) delete inXData; + if (inYData) delete inYData; + + if (strXdata) + inXData = (PlotDataBase*)(new StringPlotData()); + else + inXData = (PlotDataBase*)(new PlotData()); + + inYData = (PlotDataBase*)new PlotData(); + + iupAttribSetStr(ih, "_IUP_PPLOT_XDATA", (char*)inXData); + iupAttribSetStr(ih, "_IUP_PPLOT_YDATA", (char*)inYData); + iupAttribSetStr(ih, "_IUP_PPLOT_STRXDATA", (char*)(strXdata? "1": "0")); +} + +void IupPPlotAdd(Ihandle* ih, float x, float y) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return; + + PlotData* inXData = (PlotData*)iupAttribGet(ih, "_IUP_PPLOT_XDATA"); + PlotData* inYData = (PlotData*)iupAttribGet(ih, "_IUP_PPLOT_YDATA"); + int strXdata = iupAttribGetInt(ih, "_IUP_PPLOT_STRXDATA"); + + if (!inYData || !inXData || strXdata) + return; + + inXData->push_back(x); + inYData->push_back(y); +} + +void IupPPlotAddStr(Ihandle* ih, const char* x, float y) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return; + + StringPlotData *inXData = (StringPlotData*)iupAttribGet(ih, "_IUP_PPLOT_XDATA"); + PlotData *inYData = (PlotData*)iupAttribGet(ih, "_IUP_PPLOT_YDATA"); + int strXdata = iupAttribGetInt(ih, "_IUP_PPLOT_STRXDATA"); + + if (!inYData || !inXData || !strXdata) + return; + + inXData->AddItem(x); + inYData->push_back(y); +} + +void IupPPlotInsertStr(Ihandle* ih, int inIndex, int inSampleIndex, const char* inX, float inY) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return; + + PlotDataBase* theXDataBase = ih->data->plt->_plot.mPlotDataContainer.GetXData(inIndex); + PlotDataBase* theYDataBase = ih->data->plt->_plot.mPlotDataContainer.GetYData(inIndex); + StringPlotData *theXData = (StringPlotData*)theXDataBase; + PlotData *theYData = (PlotData*)theYDataBase; + if (!theYData || !theXData) + return; + + theXData->InsertItem(inSampleIndex, inX); + theYData->insert(theYData->begin()+inSampleIndex, inY); +} + +void IupPPlotInsert(Ihandle* ih, int inIndex, int inSampleIndex, float inX, float inY) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return; + + PlotDataBase* theXDataBase = ih->data->plt->_plot.mPlotDataContainer.GetXData(inIndex); + PlotDataBase* theYDataBase = ih->data->plt->_plot.mPlotDataContainer.GetYData(inIndex); + PlotData* theXData = (PlotData*)theXDataBase; + PlotData* theYData = (PlotData*)theYDataBase; + if (!theYData || !theXData) + return; + + theXData->insert(theXData->begin()+inSampleIndex, inX); + theYData->insert(theYData->begin()+inSampleIndex, inY); +} + +int IupPPlotEnd(Ihandle* ih) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return -1; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return -1; + + PlotDataBase* inXData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_XDATA"); + PlotDataBase* inYData = (PlotDataBase*)iupAttribGet(ih, "_IUP_PPLOT_YDATA"); + if (!inYData || !inXData) + return -1; + + /* add to plot */ + ih->data->plt->_currentDataSetIndex = ih->data->plt->_plot.mPlotDataContainer.AddXYPlot(inXData, inYData); + + LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex); + legend->mStyle.mFontStyle = iPPlotGetCDFontStyle(IupGetAttribute(ih, "LEGENDFONTSTYLE")); + legend->mStyle.mFontSize = IupGetInt(ih, "LEGENDFONTSIZE"); + + iupAttribSetStr(ih, "_IUP_PPLOT_XDATA", NULL); + iupAttribSetStr(ih, "_IUP_PPLOT_YDATA", NULL); + + ih->data->plt->_redraw = 1; + return ih->data->plt->_currentDataSetIndex; +} + +void IupPPlotTransform(Ihandle* ih, float x, float y, int *ix, int *iy) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return; + + if (ix) *ix = ih->data->plt->_plot.Round(ih->data->plt->_plot.mXTrafo->Transform(x)); + if (iy) *iy = ih->data->plt->_plot.Round(ih->data->plt->_plot.mYTrafo->Transform(y)); +} + +/* user level call: plot on the given device */ +void IupPPlotPaintTo(Ihandle* ih, void* _cnv) +{ + iupASSERT(iupObjectCheck(ih)); + if (!iupObjectCheck(ih)) + return; + + if (ih->iclass->nativetype != IUP_TYPECANVAS || + !iupStrEqual(ih->iclass->name, "pplot")) + return; + + ih->data->plt->DrawTo((cdCanvas *)_cnv); +} + +/* -------------------------------------------------------------------- + class implementation + -------------------------------------------------------------------- */ + +PostPainterCallbackIup::PostPainterCallbackIup (PPlot &inPPlot, Ihandle* inHandle): + _ih(inHandle) +{ + inPPlot.mPostDrawerList.push_back (this); +} + +bool PostPainterCallbackIup::Draw(Painter &inPainter) +{ + IFnC cb = (IFnC)IupGetCallback(_ih, "POSTDRAW_CB"); + + if (cb) + { + PPainterIup* iupPainter = (PPainterIup*)(&inPainter); + cb(_ih, iupPainter->_cddbuffer); + } + + return true; +} + +PrePainterCallbackIup::PrePainterCallbackIup (PPlot &inPPlot, Ihandle* inHandle): + _ih(inHandle) +{ + inPPlot.mPreDrawerList.push_back (this); +} + +bool PrePainterCallbackIup::Draw(Painter &inPainter) +{ + IFnC cb = (IFnC)IupGetCallback(_ih, "PREDRAW_CB"); + if (cb) + { + PPainterIup* iupPainter = (PPainterIup*)(&inPainter); + cb(_ih, iupPainter->_cddbuffer); + } + + return true; +} + +bool PDeleteInteractionIup::DeleteNotify(int inIndex, int inSampleIndex, PlotDataBase* inXData, PlotDataBase* inYData) +{ + IFniiff cb = (IFniiff)IupGetCallback(_ih, "DELETE_CB"); + if (cb) + { + if (inIndex == -1) + { + Icallback cbb = IupGetCallback(_ih, "DELETEBEGIN_CB"); + if (cbb && cbb(_ih) == IUP_IGNORE) + return false; + } + else if (inIndex == -2) + { + Icallback cbb = IupGetCallback(_ih, "DELETEEND_CB"); + if (cbb) + cbb(_ih); + } + else + { + float theX = inXData->GetValue(inSampleIndex); + float theY = inYData->GetValue(inSampleIndex); + int ret = cb(_ih, inIndex, inSampleIndex, theX, theY); + if (ret == IUP_IGNORE) + return false; + } + } + + return true; +} + +bool PSelectionInteractionIup::SelectNotify(int inIndex, int inSampleIndex, PlotDataBase* inXData, PlotDataBase* inYData, bool inSelect) +{ + IFniiffi cb = (IFniiffi)IupGetCallback(_ih, "SELECT_CB"); + if (cb) + { + if (inIndex == -1) + { + Icallback cbb = IupGetCallback(_ih, "SELECTBEGIN_CB"); + if (cbb && cbb(_ih) == IUP_IGNORE) + return false; + } + else if (inIndex == -2) + { + Icallback cbb = IupGetCallback(_ih, "SELECTEND_CB"); + if (cbb) + cbb(_ih); + } + else + { + float theX = inXData->GetValue(inSampleIndex); + float theY = inYData->GetValue(inSampleIndex); + int ret = cb(_ih, inIndex, inSampleIndex, theX, theY, (int)inSelect); + if (ret == IUP_IGNORE) + return false; + } + } + + return true; +} + +bool PEditInteractionIup::Impl_HandleKeyEvent (const PKeyEvent &inEvent) +{ + if (inEvent.IsArrowDown () || inEvent.IsArrowUp () || + inEvent.IsArrowLeft () || inEvent.IsArrowRight ()) + return true; + + return false; +}; + +bool PEditInteractionIup::Impl_Calculate (Painter &inPainter, PPlot& inPPlot) +{ + PlotDataContainer &theContainer = inPPlot.mPlotDataContainer; + long thePlotCount = theContainer.GetPlotCount(); + + if (!EditNotify(-1, 0, 0, 0, NULL, NULL)) + return false; + + for (long theI=0;theIGetSize ();theI++) + { + if (inPlotDataSelection->IsSelected (theI)) + { + float theX = inXData->GetValue(theI); + float newX = theX; + + if (theXDelta) + { + float theXPixels = mPPlot.mXTrafo->Transform(theX); + theXPixels += theXDelta; + newX = mPPlot.mXTrafo->TransformBack(theXPixels); + } + + float theY = inYData->GetValue(theI); + float newY = theY; + if (theYDelta) + { + float theYPixels = mPPlot.mYTrafo->Transform(theY); + theYPixels -= theYDelta; // in pixels Y is descending + newY = mPPlot.mYTrafo->TransformBack(theYPixels); + } + + if (!EditNotify(inIndex, theI, theX, theY, &newX, &newY)) + return; + + if (inXData->IsString()) + { + StringPlotData *theXData = (StringPlotData*)(inXData); + PlotData* theYData = (PlotData*)(inYData); + theXData->mRealPlotData[theI] = newX; + (*theYData)[theI] = newY; + } + else + { + PlotData* theXData = (PlotData*)(inXData); + PlotData* theYData = (PlotData*)(inYData); + (*theXData)[theI] = newX; + (*theYData)[theI] = newY; + } + } + } +} + +bool PEditInteractionIup::EditNotify(int inIndex, int inSampleIndex, float inX, float inY, float *inNewX, float *inNewY) +{ + IFniiffff cb = (IFniiffff)IupGetCallback(_ih, "EDIT_CB"); + if (cb) + { + if (inIndex == -1) + { + Icallback cbb = IupGetCallback(_ih, "EDITBEGIN_CB"); + if (cbb && cbb(_ih) == IUP_IGNORE) + return false; + } + else if (inIndex == -2) + { + Icallback cbb = IupGetCallback(_ih, "EDITEND_CB"); + if (cbb) + cbb(_ih); + } + else + { + int ret = cb(_ih, inIndex, inSampleIndex, inX, inY, inNewX, inNewY); + if (ret == IUP_IGNORE) + return false; + } + } + + return true; +} + +InteractionContainerIup::InteractionContainerIup(PPlot &inPPlot, Ihandle* inHandle): + mZoomInteraction (inPPlot), + mSelectionInteraction (inPPlot, inHandle), + mEditInteraction (inPPlot, inHandle), + mDeleteInteraction (inPPlot, inHandle), + mCrosshairInteraction (inPPlot), + mPostPainterCallback(inPPlot, inHandle), + mPrePainterCallback(inPPlot, inHandle) +{ + AddInteraction (mZoomInteraction); + AddInteraction (mSelectionInteraction); + AddInteraction (mEditInteraction); + AddInteraction (mDeleteInteraction); + AddInteraction (mCrosshairInteraction); +} + +PPainterIup::PPainterIup(Ihandle *ih) : + Painter(), + _ih(ih), + _cdcanvas(NULL), + _cddbuffer(NULL), + _mouseDown(0), + _currentDataSetIndex(-1), + _redraw(1) +{ + _plot.mShowLegend = false; // change default to hidden + _plot.mPlotBackground.mTransparent = false; // always draw the background + _plot.mMargins.mLeft = 15; + _plot.mMargins.mBottom = 15; + _plot.mMargins.mTop = 30; + _plot.mMargins.mRight = 15; + _plot.mXAxisSetup.mTickInfo.mTickDivision = 5; + _plot.mYAxisSetup.mTickInfo.mTickDivision = 5; + _plot.mXAxisSetup.mTickInfo.mMinorTickScreenSize = 5; + _plot.mYAxisSetup.mTickInfo.mMinorTickScreenSize = 5; + _plot.mXAxisSetup.mTickInfo.mMajorTickScreenSize = 8; + _plot.mYAxisSetup.mTickInfo.mMajorTickScreenSize = 8; + + _InteractionContainer = new InteractionContainerIup(_plot, _ih); + +} /* c-tor */ + + +PPainterIup::~PPainterIup() +{ + if (_cddbuffer != NULL) + cdKillCanvas(_cddbuffer); + + delete _InteractionContainer; +} /* d-tor */ + +class MarkDataDrawer: public LineDataDrawer +{ + public: + MarkDataDrawer (bool inDrawLine) + { + mDrawLine = inDrawLine; + mDrawPoint = true; + mMode = inDrawLine ? "MARKLINE" : "MARK"; + }; + virtual bool DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const; +}; + +bool MarkDataDrawer::DrawPoint (int inScreenX, int inScreenY, const PRect &inRect, Painter &inPainter) const +{ + PPainterIup* painter = (PPainterIup*)&inPainter; + cdCanvasMark(painter->_cddbuffer, inScreenX, cdCanvasInvertYAxis(painter->_cddbuffer, inScreenY)); + + return true; +} + +static void RemoveSample(PPlot& inPPlot, int inIndex, int inSampleIndex) +{ + PlotDataBase* theXDataBase = inPPlot.mPlotDataContainer.GetXData(inIndex); + PlotDataBase* theYDataBase = inPPlot.mPlotDataContainer.GetYData(inIndex); + + if (theXDataBase->IsString()) + { + StringPlotData *theXData = (StringPlotData *)theXDataBase; + PlotData* theYData = (PlotData*)theYDataBase; + theXData->mRealPlotData.erase(theXData->mRealPlotData.begin()+inSampleIndex); + theXData->mStringPlotData.erase(theXData->mStringPlotData.begin()+inSampleIndex); + theYData->erase(theYData->begin()+inSampleIndex); + } + else + { + PlotData* theXData = (PlotData*)theXDataBase; + PlotData* theYData = (PlotData*)theYDataBase; + theXData->erase(theXData->begin()+inSampleIndex); + theYData->erase(theYData->begin()+inSampleIndex); + } +} + +/* -------------------------------------------------------------------- + CD Gets - size and style + -------------------------------------------------------------------- */ + +static int iPPlotGetCDFontStyle(const char* value) +{ + if (!value) + return -1; + if (iupStrEqualNoCase(value, "PLAIN")) + return CD_PLAIN; + if (iupStrEqualNoCase(value, "BOLD")) + return CD_BOLD; + if (iupStrEqualNoCase(value, "ITALIC")) + return CD_ITALIC; + if (iupStrEqualNoCase(value, "BOLDITALIC")) + return CD_BOLD_ITALIC; + return -1; +} + +static char* iPPlotGetPlotFontSize(int size) +{ + if (size) + { + char* buffer = iupStrGetMemory(50); + sprintf(buffer, "%d", size); + return buffer; + } + else + return NULL; +} + +static char* iPPlotGetPlotFontStyle(int style) +{ + if (style >= CD_PLAIN && style <= CD_BOLD_ITALIC) + { + char* style_str[4] = {"PLAIN", "BOLD", "ITALIC", "BOLDITALIC"}; + return style_str[style]; + } + else + return NULL; +} + +static char* iPPlotGetPlotPenStyle(int style) +{ + if (style >= CD_CONTINUOUS && style <= CD_DASH_DOT_DOT) + { + char* style_str[5] = {"CONTINUOUS", "DASHED", "DOTTED", "DASH_DOT", "DASH_DOT_DOT"}; + return style_str[style]; + } + else + return NULL; +} + +static int iPPlotGetCDPenStyle(const char* value) +{ + if (!value || iupStrEqualNoCase(value, "CONTINUOUS")) + return CD_CONTINUOUS; + else if (iupStrEqualNoCase(value, "DASHED")) + return CD_DASHED; + else if (iupStrEqualNoCase(value, "DOTTED")) + return CD_DOTTED; + else if (iupStrEqualNoCase(value, "DASH_DOT")) + return CD_DASH_DOT; + else if (iupStrEqualNoCase(value, "DASH_DOT_DOT")) + return CD_DASH_DOT_DOT; + else + return CD_CONTINUOUS; +} + +static char* iPPlotGetPlotMarkStyle(int style) +{ + if (style >= CD_PLUS && style <= CD_HOLLOW_DIAMOND) + { + char* style_str[9] = {"PLUS", "STAR", "CIRCLE", "X", "BOX", "DIAMOND", "HOLLOW_CIRCLE", "HOLLOW_BOX", "HOLLOW_DIAMOND"}; + return style_str[style]; + } + else + return NULL; +} + +static int iPPlotGetCDMarkStyle(const char* value) +{ + if (!value || iupStrEqualNoCase(value, "PLUS")) + return CD_PLUS; + else if (iupStrEqualNoCase(value, "STAR")) + return CD_STAR; + else if (iupStrEqualNoCase(value, "CIRCLE")) + return CD_CIRCLE; + else if (iupStrEqualNoCase(value, "X")) + return CD_X; + else if (iupStrEqualNoCase(value, "BOX")) + return CD_BOX; + else if (iupStrEqualNoCase(value, "DIAMOND")) + return CD_DIAMOND; + else if (iupStrEqualNoCase(value, "HOLLOW_CIRCLE")) + return CD_HOLLOW_CIRCLE; + else if (iupStrEqualNoCase(value, "HOLLOW_BOX")) + return CD_HOLLOW_BOX; + else if (iupStrEqualNoCase(value, "HOLLOW_DIAMOND")) + return CD_HOLLOW_DIAMOND; + else + return CD_PLUS; +} + +/*****************************************************************************/ +/***** SET AND GET ATTRIBUTES ************************************************/ +/*****************************************************************************/ + +/* refresh plot window (write only) */ +static int iPPlotSetRedrawAttrib(Ihandle* ih, const char* value) +{ + (void)value; /* not used */ + ih->data->plt->Draw(1); /* force a full redraw here */ + return 0; +} + +/* total number of datasets (read only) */ +static char* iPPlotGetCountAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()); + return att_buffer; +} + +/* legend box visibility */ +static int iPPlotSetLegendShowAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + ih->data->plt->_plot.mShowLegend = true; + else + ih->data->plt->_plot.mShowLegend = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetLegendShowAttrib(Ihandle* ih) +{ + if (ih->data->plt->_plot.mShowLegend) + return "YES"; + else + return "NO"; +} + +/* legend box visibility */ +static int iPPlotSetLegendPosAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "TOPLEFT")) + ih->data->plt->_plot.mLegendPos = PPLOT_TOPLEFT; + if (iupStrEqualNoCase(value, "BOTTOMLEFT")) + ih->data->plt->_plot.mLegendPos = PPLOT_BOTTOMLEFT; + if (iupStrEqualNoCase(value, "BOTTOMRIGHT")) + ih->data->plt->_plot.mLegendPos = PPLOT_BOTTOMRIGHT; + else + ih->data->plt->_plot.mLegendPos = PPLOT_TOPRIGHT; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetLegendPosAttrib(Ihandle* ih) +{ + char* legendpos_str[4] = {"TOPLEFT", "TOPRIGHT", "BOTTOMLEFT", "BOTTOMRIGHT"}; + + return legendpos_str[ih->data->plt->_plot.mLegendPos]; +} + +/* background color */ +static int iPPlotSetBGColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char rr, gg, bb; + if (iupStrToRGB(value, &rr, &gg, &bb)) + { + ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor = PColor(rr, gg, bb); + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetBGColorAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d %d %d", + ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor.mR, + ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor.mG, + ih->data->plt->_plot.mPlotBackground.mPlotRegionBackColor.mB); + return att_buffer; +} + + +/* title color */ +static int iPPlotSetFGColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char rr, gg, bb; + if (iupStrToRGB(value, &rr, &gg, &bb)) + { + ih->data->plt->_plot.mPlotBackground.mTitleColor = PColor(rr, gg, bb); + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetFGColorAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d %d %d", + ih->data->plt->_plot.mPlotBackground.mTitleColor.mR, + ih->data->plt->_plot.mPlotBackground.mTitleColor.mG, + ih->data->plt->_plot.mPlotBackground.mTitleColor.mB); + return att_buffer; +} + + +/* plot title */ +static int iPPlotSetTitleAttrib(Ihandle* ih, const char* value) +{ + if (value && value[0] != 0) + ih->data->plt->_plot.mPlotBackground.mTitle = value; + else + ih->data->plt->_plot.mPlotBackground.mTitle.resize(0); + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetTitleAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(256); + strncpy(att_buffer, ih->data->plt->_plot.mPlotBackground.mTitle.c_str(), 256); + att_buffer[255]='\0'; + return att_buffer; +} + + +/* plot title font size */ +static int iPPlotSetTitleFontSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + ih->data->plt->_plot.mPlotBackground.mStyle.mFontSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetTitleFontSizeAttrib(Ihandle* ih) +{ + return iPPlotGetPlotFontSize(ih->data->plt->_plot.mPlotBackground.mStyle.mFontSize); +} + + +/* plot title font style */ +static int iPPlotSetTitleFontStyleAttrib(Ihandle* ih, const char* value) +{ + int style = iPPlotGetCDFontStyle(value); + if (style != -1) + { + ih->data->plt->_plot.mPlotBackground.mStyle.mFontStyle = style; + ih->data->plt->_redraw = 1; + } + return 0; +} + +/* legend font size */ +static int iPPlotSetLegendFontSizeAttrib(Ihandle* ih, const char* value) +{ + int ii, xx; + if (!iupStrToInt(value, &xx)) + return 0; + + for (ii = 0; ii < ih->data->plt->_plot.mPlotDataContainer.GetPlotCount(); ii++) + { + LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ii); + legend->mStyle.mFontSize = xx; + } + + ih->data->plt->_redraw = 1; + return 1; +} + +/* legend font style */ +static int iPPlotSetLegendFontStyleAttrib(Ihandle* ih, const char* value) +{ + int ii; + int style = iPPlotGetCDFontStyle(value); + if (style == -1) + return 0; + + for (ii = 0; ii < ih->data->plt->_plot.mPlotDataContainer.GetPlotCount(); ii++) + { + LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ii); + legend->mStyle.mFontStyle = style; + } + + ih->data->plt->_redraw = 1; + return 1; +} + +/* plot margins */ +static int iPPlotSetMarginLeftAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + ih->data->plt->_plot.mMargins.mLeft = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetMarginRightAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + ih->data->plt->_plot.mMargins.mRight = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetMarginTopAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + ih->data->plt->_plot.mMargins.mTop = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetMarginBottomAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + ih->data->plt->_plot.mMargins.mBottom = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetMarginLeftAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mLeft); + return att_buffer; +} + +static char* iPPlotGetMarginRightAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mRight); + return att_buffer; +} + +static char* iPPlotGetMarginTopAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mTop); + return att_buffer; +} + +static char* iPPlotGetMarginBottomAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", ih->data->plt->_plot.mMargins.mBottom); + return att_buffer; +} + +/* plot grid color */ +static int iPPlotSetGridColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char rr, gg, bb; + if (iupStrToRGB(value, &rr, &gg, &bb)) + { + ih->data->plt->_plot.mGridInfo.mGridColor = PColor(rr, gg, bb); + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetGridColorAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d %d %d", + ih->data->plt->_plot.mGridInfo.mGridColor.mR, + ih->data->plt->_plot.mGridInfo.mGridColor.mG, + ih->data->plt->_plot.mGridInfo.mGridColor.mB); + return att_buffer; +} + +/* plot grid line style */ +static int iPPlotSetGridLineStyleAttrib(Ihandle* ih, const char* value) +{ + ih->data->plt->_plot.mGridInfo.mStyle.mPenStyle = iPPlotGetCDPenStyle(value); + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetGridLineStyleAttrib(Ihandle* ih) +{ + return iPPlotGetPlotPenStyle(ih->data->plt->_plot.mGridInfo.mStyle.mPenStyle); +} + +/* grid */ +static int iPPlotSetGridAttrib(Ihandle* ih, const char* value) +{ + if (iupStrEqualNoCase(value, "VERTICAL")) /* vertical grid - X axis */ + { + ih->data->plt->_plot.mGridInfo.mXGridOn = true; + ih->data->plt->_plot.mGridInfo.mYGridOn = false; + } + else if (iupStrEqualNoCase(value, "HORIZONTAL")) /* horizontal grid - Y axis */ + { + ih->data->plt->_plot.mGridInfo.mYGridOn = true; + ih->data->plt->_plot.mGridInfo.mXGridOn = false; + } + else if (iupStrEqualNoCase(value, "YES")) + { + ih->data->plt->_plot.mGridInfo.mXGridOn = true; + ih->data->plt->_plot.mGridInfo.mYGridOn = true; + } + else + { + ih->data->plt->_plot.mGridInfo.mYGridOn = false; + ih->data->plt->_plot.mGridInfo.mXGridOn = false; + } + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetGridAttrib(Ihandle* ih) +{ + if (ih->data->plt->_plot.mGridInfo.mXGridOn && ih->data->plt->_plot.mGridInfo.mYGridOn) + return "YES"; + else if (ih->data->plt->_plot.mGridInfo.mYGridOn) + return "HORIZONTAL"; + else if (ih->data->plt->_plot.mGridInfo.mXGridOn) + return "VERTICAL"; + else + return "NO"; +} + +/* current dataset index */ +static int iPPlotSetCurrentAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + int imax = ih->data->plt->_plot.mPlotDataContainer.GetPlotCount(); + ih->data->plt->_currentDataSetIndex = ( (ii>=0) && (iidata->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetCurrentAttrib(Ihandle* ih) +{ + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", ih->data->plt->_currentDataSetIndex); + return att_buffer; +} + +/* remove a dataset */ +static int iPPlotSetRemoveAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + ih->data->plt->_plot.mPlotDataContainer.RemoveElement(ii); + ih->data->plt->_redraw = 1; + } + return 0; +} + +/* clear all datasets */ +static int iPPlotSetClearAttrib(Ihandle* ih, const char* value) +{ + ih->data->plt->_plot.mPlotDataContainer.ClearData(); + ih->data->plt->_redraw = 1; + return 0; +} + +/* =============================== */ +/* current plot dataset attributes */ +/* =============================== */ + +/* current plot line style */ +static int iPPlotSetDSLineStyleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + drawer->mStyle.mPenStyle = iPPlotGetCDPenStyle(value); + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetDSLineStyleAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + + return iPPlotGetPlotPenStyle(drawer->mStyle.mPenStyle); +} + +/* current plot line width */ +static int iPPlotSetDSLineWidthAttrib(Ihandle* ih, const char* value) +{ + int ii; + + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + if (iupStrToInt(value, &ii)) + { + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + drawer->mStyle.mPenWidth = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetDSLineWidthAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", drawer->mStyle.mPenWidth); + return att_buffer; +} + +/* current plot mark style */ +static int iPPlotSetDSMarkStyleAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + drawer->mStyle.mMarkStyle = iPPlotGetCDMarkStyle(value); + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetDSMarkStyleAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + + return iPPlotGetPlotMarkStyle(drawer->mStyle.mMarkStyle); +} + +/* current plot mark size */ +static int iPPlotSetDSMarkSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + if (iupStrToInt(value, &ii)) + { + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + drawer->mStyle.mMarkSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetDSMarkSizeAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", drawer->mStyle.mMarkSize); + return att_buffer; +} + +/* current dataset legend */ +static int iPPlotSetDSLegendAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex); + + if (value) + legend->mName = value; + else + legend->mName.resize(0); + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetDSLegendAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex); + char* att_buffer = iupStrGetMemory(256); + strncpy(att_buffer, legend->mName.c_str(), 255); + att_buffer[255]='\0'; + return att_buffer; +} + +/* current dataset line and legend color */ +static int iPPlotSetDSColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char rr, gg, bb; + + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + if (iupStrToRGB(value, &rr, &gg, &bb)) + { + LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex); + legend->mColor = PColor(rr, gg, bb); + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetDSColorAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + LegendData* legend = ih->data->plt->_plot.mPlotDataContainer.GetLegendData(ih->data->plt->_currentDataSetIndex); + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d %d %d", legend->mColor.mR, legend->mColor.mG, legend->mColor.mB); + return att_buffer; +} + +/* show values */ +static int iPPlotSetDSShowValuesAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + + if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + drawer->mShowValues = true; + else + drawer->mShowValues = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetDSShowValuesAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + if (drawer->mShowValues) + return "YES"; + else + return "NO"; +} + +/* current dataset drawing mode */ +static int iPPlotSetDSModeAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + DataDrawerBase *theDataDrawer = NULL; + ih->data->plt->_plot.mXAxisSetup.mDiscrete = false; + + if(iupStrEqualNoCase(value, "BAR")) + { + theDataDrawer = new BarDataDrawer(); + ih->data->plt->_plot.mXAxisSetup.mDiscrete = true; + } + else if(iupStrEqualNoCase(value, "MARK")) + theDataDrawer = new MarkDataDrawer(0); + else if(iupStrEqualNoCase(value, "MARKLINE")) + theDataDrawer = new MarkDataDrawer(1); + else /* LINE */ + theDataDrawer = new LineDataDrawer(); + + ih->data->plt->_plot.mPlotDataContainer.SetDataDrawer(ih->data->plt->_currentDataSetIndex, theDataDrawer); + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetDSModeAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + DataDrawerBase* drawer = ih->data->plt->_plot.mPlotDataContainer.GetDataDrawer(ih->data->plt->_currentDataSetIndex); + + return (char*)drawer->mMode; +} + +/* allows selection and editing */ +static int iPPlotSetDSEditAttrib(Ihandle* ih, const char* value) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + PlotDataSelection* dataselect = ih->data->plt->_plot.mPlotDataContainer.GetPlotDataSelection(ih->data->plt->_currentDataSetIndex); + + if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + dataselect->resize(ih->data->plt->_plot.mPlotDataContainer.GetConstYData(ih->data->plt->_currentDataSetIndex)->GetSize()); + else + dataselect->clear(); + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetDSEditAttrib(Ihandle* ih) +{ + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return NULL; + + PlotDataSelection* dataselect = ih->data->plt->_plot.mPlotDataContainer.GetPlotDataSelection(ih->data->plt->_currentDataSetIndex); + if (dataselect->empty()) + return "NO"; + else + return "YES"; +} + +/* remove a sample */ +static int iPPlotSetDSRemoveAttrib(Ihandle* ih, const char* value) +{ + int ii; + + if (ih->data->plt->_currentDataSetIndex < 0 || + ih->data->plt->_currentDataSetIndex >= ih->data->plt->_plot.mPlotDataContainer.GetPlotCount()) + return 0; + + if (iupStrToInt(value, &ii)) + { + RemoveSample(ih->data->plt->_plot, ih->data->plt->_currentDataSetIndex, ii); + ih->data->plt->_redraw = 1; + } + return 0; +} + +/* ========== */ +/* axis props */ +/* ========== */ + +/* ========== */ +/* axis props */ +/* ========== */ + +/* axis title */ +static int iPPlotSetAXSXLabelAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (value) + axis->mLabel = value; + else + axis->mLabel = ""; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYLabelAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (value) + axis->mLabel = value; + else + axis->mLabel = ""; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXLabelAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(256); + strncpy(att_buffer, axis->mLabel.c_str(), 255); + att_buffer[255]='\0'; + return att_buffer; +} + +static char* iPPlotGetAXSYLabelAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(256); + strncpy(att_buffer, axis->mLabel.c_str(), 255); + att_buffer[255]='\0'; + return att_buffer; +} + +/* axis title position */ +static int iPPlotSetAXSXLabelCenteredAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mLabelCentered = true; + else + axis->mLabelCentered = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYLabelCenteredAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mLabelCentered = true; + else + axis->mLabelCentered = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXLabelCenteredAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mLabelCentered) + return "YES"; + else + return "NO"; +} + +static char* iPPlotGetAXSYLabelCenteredAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mLabelCentered) + return "YES"; + else + return "NO"; +} + +/* axis, ticks and label color */ +static int iPPlotSetAXSXColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char rr, gg, bb; + if (iupStrToRGB(value, &rr, &gg, &bb)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mColor = PColor(rr, gg, bb); + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYColorAttrib(Ihandle* ih, const char* value) +{ + unsigned char rr, gg, bb; + if (iupStrToRGB(value, &rr, &gg, &bb)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mColor = PColor(rr, gg, bb); + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXColorAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d %d %d", + axis->mColor.mR, + axis->mColor.mG, + axis->mColor.mB); + return att_buffer; +} + +static char* iPPlotGetAXSYColorAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d %d %d", + axis->mColor.mR, + axis->mColor.mG, + axis->mColor.mB); + return att_buffer; +} + +/* autoscaling */ +static int iPPlotSetAXSXAutoMinAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mAutoScaleMin = true; + else + axis->mAutoScaleMin = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYAutoMinAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mAutoScaleMin = true; + else + axis->mAutoScaleMin = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXAutoMinAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mAutoScaleMin) + return "YES"; + else + return "NO"; +} + +static char* iPPlotGetAXSYAutoMinAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mAutoScaleMin) + return "YES"; + else + return "NO"; +} + +/* autoscaling */ +static int iPPlotSetAXSXAutoMaxAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mAutoScaleMax = true; + else + axis->mAutoScaleMax = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYAutoMaxAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mAutoScaleMax = true; + else + axis->mAutoScaleMax = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXAutoMaxAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mAutoScaleMax) + return "YES"; + else + return "NO"; +} + +static char* iPPlotGetAXSYAutoMaxAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mAutoScaleMax) + return "YES"; + else + return "NO"; +} + +/* min visible val */ +static int iPPlotSetAXSXMinAttrib(Ihandle* ih, const char* value) +{ + float xx; + if (iupStrToFloat(value, &xx)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mMin = xx; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYMinAttrib(Ihandle* ih, const char* value) +{ + float xx; + if (iupStrToFloat(value, &xx)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mMin = xx; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXMinAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%g", axis->mMin); + return att_buffer; +} + +static char* iPPlotGetAXSYMinAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%g", axis->mMin); + return att_buffer; +} + +/* max visible val */ +static int iPPlotSetAXSXMaxAttrib(Ihandle* ih, const char* value) +{ + float xx; + if (iupStrToFloat(value, &xx)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mMax = xx; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYMaxAttrib(Ihandle* ih, const char* value) +{ + float xx; + if (iupStrToFloat(value, &xx)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mMax = xx; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXMaxAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%g", axis->mMax); + return att_buffer; +} + +static char* iPPlotGetAXSYMaxAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%g", axis->mMax); + return att_buffer; +} + +/* values from left/top to right/bottom */ +static int iPPlotSetAXSXReverseAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mAscending = false; // inverted + else + axis->mAscending = true; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYReverseAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mAscending = false; // inverted + else + axis->mAscending = true; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXReverseAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mAscending) + return "NO"; /* inverted */ + else + return "YES"; +} + +static char* iPPlotGetAXSYReverseAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mAscending) + return "NO"; /* inverted */ + else + return "YES"; +} + +/* axis mode */ +static int iPPlotSetAXSXCrossOriginAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mCrossOrigin = true; + else + axis->mCrossOrigin = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYCrossOriginAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mCrossOrigin = true; + else + axis->mCrossOrigin = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXCrossOriginAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mCrossOrigin) + return "YES"; + else + return "NO"; +} + +static char* iPPlotGetAXSYCrossOriginAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mCrossOrigin) + return "YES"; + else + return "NO"; +} + +/* log/lin scale */ +static int iPPlotSetAXSXScaleAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "LIN")) + { + axis->mLogScale = false; + } + else if(iupStrEqualNoCase(value, "LOG10")) + { + axis->mLogScale = true; + axis->mLogBase = 10.0; + } + else if(iupStrEqualNoCase(value, "LOG2")) + { + axis->mLogScale = true; + axis->mLogBase = 2.0; + } + else + { + axis->mLogScale = true; + axis->mLogBase = (float)M_E; + } + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYScaleAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "LIN")) + { + axis->mLogScale = false; + } + else if(iupStrEqualNoCase(value, "LOG10")) + { + axis->mLogScale = true; + axis->mLogBase = 10.0; + } + else if(iupStrEqualNoCase(value, "LOG2")) + { + axis->mLogScale = true; + axis->mLogBase = 2.0; + } + else + { + axis->mLogScale = true; + axis->mLogBase = (float)M_E; + } + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXScaleAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + + if (axis->mLogScale) + { + if (axis->mLogBase == 10.0) + strcpy(att_buffer, "LOG10"); + else if (axis->mLogBase == 2.0) + strcpy(att_buffer, "LOG2"); + else + strcpy(att_buffer, "LOGN"); + } + else + strcpy(att_buffer, "LIN"); + + return att_buffer; +} + +static char* iPPlotGetAXSYScaleAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + + if (axis->mLogScale) + { + if (axis->mLogBase == 10.0) + strcpy(att_buffer, "LOG10"); + else if (axis->mLogBase == 2.0) + strcpy(att_buffer, "LOG2"); + else + strcpy(att_buffer, "LOGN"); + } + else + strcpy(att_buffer, "LIN"); + + return att_buffer; +} + +/* axis label font size */ +static int iPPlotSetAXSXFontSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mStyle.mFontSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYFontSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mStyle.mFontSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXFontSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + return iPPlotGetPlotFontSize(axis->mStyle.mFontSize); +} + +static char* iPPlotGetAXSYFontSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + return iPPlotGetPlotFontSize(axis->mStyle.mFontSize); +} + +/* axis label font style */ +static int iPPlotSetAXSXFontStyleAttrib(Ihandle* ih, const char* value) +{ + int style = iPPlotGetCDFontStyle(value); + if (style != -1) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mStyle.mFontStyle = style; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYFontStyleAttrib(Ihandle* ih, const char* value) +{ + int style = iPPlotGetCDFontStyle(value); + if (style != -1) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mStyle.mFontStyle = style; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXFontStyleAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + return iPPlotGetPlotFontStyle(axis->mStyle.mFontStyle); +} + +static char* iPPlotGetAXSYFontStyleAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + return iPPlotGetPlotFontStyle(axis->mStyle.mFontStyle); +} + +/* automatic tick size */ +static int iPPlotSetAXSXAutoTickSizeAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mTickInfo.mAutoTickSize = true; + else + axis->mTickInfo.mAutoTickSize = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYAutoTickSizeAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mTickInfo.mAutoTickSize = true; + else + axis->mTickInfo.mAutoTickSize = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXAutoTickSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mTickInfo.mAutoTickSize) + return "YES"; + else + return "NO"; +} + +static char* iPPlotGetAXSYAutoTickSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mTickInfo.mAutoTickSize) + return "YES"; + else + return "NO"; +} + +/* size of ticks (in pixels) */ +static int iPPlotSetAXSXTickSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mTickInfo.mMinorTickScreenSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYTickSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mTickInfo.mMinorTickScreenSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXTickSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", axis->mTickInfo.mMinorTickScreenSize); + return att_buffer; +} + +static char* iPPlotGetAXSYTickSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", axis->mTickInfo.mMinorTickScreenSize); + return att_buffer; +} + +/* size of major ticks (in pixels) */ +static int iPPlotSetAXSXTickMajorSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mTickInfo.mMajorTickScreenSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYTickMajorSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mTickInfo.mMajorTickScreenSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXTickMajorSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", axis->mTickInfo.mMajorTickScreenSize); + return att_buffer; +} + +static char* iPPlotGetAXSYTickMajorSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", axis->mTickInfo.mMajorTickScreenSize); + return att_buffer; +} + +/* axis ticks font size */ +static int iPPlotSetAXSXTickFontSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mTickInfo.mStyle.mFontSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYTickFontSizeAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mTickInfo.mStyle.mFontSize = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXTickFontSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontSize); +} + +static char* iPPlotGetAXSYTickFontSizeAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontSize); +} + +/* axis ticks number font style */ +static int iPPlotSetAXSXTickFontStyleAttrib(Ihandle* ih, const char* value) +{ + int style = iPPlotGetCDFontStyle(value); + if (style != -1) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mTickInfo.mStyle.mFontStyle = style; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYTickFontStyleAttrib(Ihandle* ih, const char* value) +{ + int style = iPPlotGetCDFontStyle(value); + if (style != -1) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mTickInfo.mStyle.mFontStyle = style; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXTickFontStyleAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontStyle); +} + +static char* iPPlotGetAXSYTickFontStyleAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + return iPPlotGetPlotFontSize(axis->mTickInfo.mStyle.mFontStyle); +} + +/* axis ticks number format */ +static int iPPlotSetAXSXTickFormatAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (value && value[0]!=0) + axis->mTickInfo.mFormatString = value; + else + axis->mTickInfo.mFormatString = "%.0f"; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYTickFormatAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (value && value[0]!=0) + axis->mTickInfo.mFormatString = value; + else + axis->mTickInfo.mFormatString = "%.0f"; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXTickFormatAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(256); + strncpy(att_buffer, axis->mTickInfo.mFormatString.c_str(), 255); + att_buffer[255]='\0'; + return att_buffer; +} + +static char* iPPlotGetAXSYTickFormatAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(256); + strncpy(att_buffer, axis->mTickInfo.mFormatString.c_str(), 255); + att_buffer[255]='\0'; + return att_buffer; +} + +/* axis ticks */ +static int iPPlotSetAXSXTickAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mTickInfo.mTicksOn = true; + else + axis->mTickInfo.mTicksOn = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYTickAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mTickInfo.mTicksOn = true; + else + axis->mTickInfo.mTicksOn = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXTickAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mTickInfo.mTicksOn) + return "YES"; + else + return "NO"; +} + +static char* iPPlotGetAXSYTickAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mTickInfo.mTicksOn) + return "YES"; + else + return "NO"; +} + +/* major tick spacing */ +static int iPPlotSetAXSXTickMajorSpanAttrib(Ihandle* ih, const char* value) +{ + float xx; + if (iupStrToFloat(value, &xx)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mTickInfo.mMajorTickSpan = xx; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYTickMajorSpanAttrib(Ihandle* ih, const char* value) +{ + float xx; + if (iupStrToFloat(value, &xx)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mTickInfo.mMajorTickSpan = xx; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXTickMajorSpanAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%g", axis->mTickInfo.mMajorTickSpan); + return att_buffer; +} + +static char* iPPlotGetAXSYTickMajorSpanAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%g", axis->mTickInfo.mMajorTickSpan); + return att_buffer; +} + +/* number of ticks between major ticks */ +static int iPPlotSetAXSXTickDivisionAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + axis->mTickInfo.mTickDivision = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static int iPPlotSetAXSYTickDivisionAttrib(Ihandle* ih, const char* value) +{ + int ii; + if (iupStrToInt(value, &ii)) + { + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + axis->mTickInfo.mTickDivision = ii; + ih->data->plt->_redraw = 1; + } + return 0; +} + +static char* iPPlotGetAXSXTickDivisionAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", axis->mTickInfo.mTickDivision); + return att_buffer; +} + +static char* iPPlotGetAXSYTickDivisionAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + char* att_buffer = iupStrGetMemory(30); + sprintf(att_buffer, "%d", axis->mTickInfo.mTickDivision); + return att_buffer; +} + +/* auto tick spacing */ +static int iPPlotSetAXSXAutoTickAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mTickInfo.mAutoTick = true; + else + axis->mTickInfo.mAutoTick = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static int iPPlotSetAXSYAutoTickAttrib(Ihandle* ih, const char* value) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if(iupStrEqualNoCase(value, "YES") || iupStrEqualNoCase(value, "ON")) + axis->mTickInfo.mAutoTick = true; + else + axis->mTickInfo.mAutoTick = false; + + ih->data->plt->_redraw = 1; + return 0; +} + +static char* iPPlotGetAXSXAutoTickAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mXAxisSetup; + + if (axis->mTickInfo.mAutoTick) + return "YES"; + else + return "NO"; +} + +static char* iPPlotGetAXSYAutoTickAttrib(Ihandle* ih) +{ + AxisSetup* axis = &ih->data->plt->_plot.mYAxisSetup; + + if (axis->mTickInfo.mAutoTick) + return "YES"; + else + return "NO"; +} + +/* MouseButton */ +void PPainterIup::MouseButton(int btn, int stat, int x, int y, char *r) +{ + PMouseEvent theEvent; + int theModifierKeys = 0; + + theEvent.mX = x; + theEvent.mY = y; + + if(btn == IUP_BUTTON1) + { + theEvent.mType = ( stat!=0 ? (PMouseEvent::kDown) : (PMouseEvent::kUp) ); + _mouseDown = ( stat!=0 ? 1 : 0 ); + } + else return; + + _mouse_ALT = 0; + _mouse_SHIFT = 0; + _mouse_CTRL = 0; + + if (iup_isalt(r)) /* signal Alt */ + { + theModifierKeys = (theModifierKeys | PMouseEvent::kAlt); + _mouse_ALT = 1; + } + if (iup_iscontrol(r)) /* signal Ctrl */ + { + theModifierKeys = (theModifierKeys | PMouseEvent::kControl); + _mouse_SHIFT = 1; + } + if (iup_isshift(r)) /* signal Shift */ + { + theModifierKeys = (theModifierKeys | PMouseEvent::kShift); + _mouse_CTRL = 1; + } + theEvent.SetModifierKeys (theModifierKeys); + + if( _InteractionContainer->HandleMouseEvent(theEvent)) + { + this->Draw(1); + } + else + { + /* ignore the event */ + } +} + +/* MouseMove */ +void PPainterIup::MouseMove(int x, int y) +{ + PMouseEvent theEvent; + int theModifierKeys = 0; + + if(!_mouseDown ) return; + + theEvent.mX = x; + theEvent.mY = y; + + theEvent.mType = PMouseEvent::kMove; + if(_mouse_ALT) /* signal Alt */ + { + theModifierKeys = (theModifierKeys | PMouseEvent::kAlt); + } + if(_mouse_SHIFT) /* signal Shift */ + { + theModifierKeys = (theModifierKeys | PMouseEvent::kControl); + } + if(_mouse_CTRL) /* signal Ctrl */ + { + theModifierKeys = (theModifierKeys | PMouseEvent::kShift); + } + theEvent.SetModifierKeys (theModifierKeys); + + if(_InteractionContainer->HandleMouseEvent(theEvent)) + { + this->Draw(1); + } + else + { + /* ignore the event */ + } +} + +/* KeyPress */ +void PPainterIup::KeyPress(int c, int press) +{ + int theModifierKeys = 0; + int theRepeatCount = 0; + PKeyEvent::EKey theKeyCode = PKeyEvent::kNone; + char theChar = 0; + + if(!press) return; + + switch(c) + { + case K_cX: /* CTRL + X */ + theModifierKeys = PMouseEvent::kControl; + theKeyCode = PKeyEvent::kChar; + theChar = 'x'; + break; + case K_cY: /* CTRL + Y */ + theModifierKeys = PMouseEvent::kControl; + theKeyCode = PKeyEvent::kChar; + theChar = 'y'; + break; + case K_cR: /* CTRL + R */ + theModifierKeys = PMouseEvent::kControl; + theKeyCode = PKeyEvent::kChar; + theChar = 'r'; + break; + case K_cUP: /* CTRL + Arrow */ + theModifierKeys = PMouseEvent::kControl; + case K_UP: /* Arrow */ + theKeyCode = PKeyEvent::kArrowUp; + break; + case K_cDOWN: /* CTRL + Arrow */ + theModifierKeys = PMouseEvent::kControl; + case K_DOWN: /* Arrow */ + theKeyCode = PKeyEvent::kArrowDown; + break; + case K_cLEFT: /* CTRL + Arrow */ + theModifierKeys = PMouseEvent::kControl; + case K_LEFT: /* Arrow */ + theKeyCode = PKeyEvent::kArrowLeft; + break; + case K_cRIGHT: /* CTRL + Arrow */ + theModifierKeys = PMouseEvent::kControl; + case K_RIGHT: /* Arrow */ + theKeyCode = PKeyEvent::kArrowRight; + break; + case K_cDEL: /* CTRL + Arrow */ + theModifierKeys = PMouseEvent::kControl; + case K_DEL: /* Arrow */ + theKeyCode = PKeyEvent::kDelete; + break; + } + + PKeyEvent theEvent (theKeyCode, theRepeatCount, theModifierKeys, theChar); + + if(_InteractionContainer->HandleKeyEvent(theEvent)) + { + this->Draw(1); + } + else + { + /* ignore the event */ + } +} + +/* Draw */ +void PPainterIup::Draw(int force) +{ + if (!_cddbuffer) + return; + + cdCanvasActivate(_cddbuffer); + + if (force || _redraw) + { + cdCanvasClear(_cddbuffer); + _plot.Draw(*this); + _redraw = 0; + } + + cdCanvasFlush(_cddbuffer); +} + +/* Resize */ +void PPainterIup::Resize() +{ + if (!_cddbuffer) + { + /* update canvas size */ + cdCanvasActivate(_cdcanvas); + + /* this can fail if canvas size is zero */ + if (IupGetInt(_ih, "USE_IMAGERGB")) + _cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, _cdcanvas); + else + _cddbuffer = cdCreateCanvas(CD_DBUFFER, _cdcanvas); + } + + if (!_cddbuffer) + return; + + /* update canvas size */ + cdCanvasActivate(_cddbuffer); + + _redraw = 1; + + return; +} + +/* send plot to some other device */ +void PPainterIup::DrawTo(cdCanvas *usrCnv) +{ + cdCanvas *old_cddbuffer = _cddbuffer; + cdCanvas *old_cdcanvas = _cdcanvas; + + _cdcanvas = _cddbuffer = usrCnv; + + if(!_cddbuffer) + return; + + Draw(1); + + _cddbuffer = old_cddbuffer; + _cdcanvas = old_cdcanvas; +} + +void PPainterIup::FillArrow(int inX1, int inY1, int inX2, int inY2, int inX3, int inY3) +{ + if (!_cddbuffer) + return; + + cdCanvasBegin(_cddbuffer, CD_FILL); + cdCanvasVertex(_cddbuffer, inX1, cdCanvasInvertYAxis(_cddbuffer, inY1)); + cdCanvasVertex(_cddbuffer, inX2, cdCanvasInvertYAxis(_cddbuffer, inY2)); + cdCanvasVertex(_cddbuffer, inX3, cdCanvasInvertYAxis(_cddbuffer, inY3)); + cdCanvasEnd(_cddbuffer); +} + +/* DrawLine */ +void PPainterIup::DrawLine(float inX1, float inY1, float inX2, float inY2) +{ + if (!_cddbuffer) + return; + + cdfCanvasLine(_cddbuffer, inX1, cdfCanvasInvertYAxis(_cddbuffer, inY1), + inX2, cdfCanvasInvertYAxis(_cddbuffer, inY2)); +} + +/* FillRect */ +void PPainterIup::FillRect(int inX, int inY, int inW, int inH) +{ + if (!_cddbuffer) + return; + + cdCanvasBox(_cddbuffer, inX, inX+inW, + cdCanvasInvertYAxis(_cddbuffer, inY), + cdCanvasInvertYAxis(_cddbuffer, inY + inH - 1)); +} + +/* InvertRect */ +void PPainterIup::InvertRect(int inX, int inY, int inW, int inH) +{ + long cprev; + + if (!_cddbuffer) + return; + + cdCanvasWriteMode(_cddbuffer, CD_XOR); + cprev = cdCanvasForeground(_cddbuffer, CD_WHITE); + cdCanvasRect(_cddbuffer, inX, inX + inW - 1, + cdCanvasInvertYAxis(_cddbuffer, inY), + cdCanvasInvertYAxis(_cddbuffer, inY + inH - 1)); + cdCanvasWriteMode(_cddbuffer, CD_REPLACE); + cdCanvasForeground(_cddbuffer, cprev); +} + +/* SetClipRect */ +void PPainterIup::SetClipRect(int inX, int inY, int inW, int inH) +{ + if (!_cddbuffer) + return; + + cdCanvasClipArea(_cddbuffer, inX, inX + inW - 1, + cdCanvasInvertYAxis(_cddbuffer, inY), + cdCanvasInvertYAxis(_cddbuffer, inY + inH - 1)); + cdCanvasClip(_cddbuffer, CD_CLIPAREA); +} + +/* GetWidth */ +long PPainterIup::GetWidth() const +{ + int iret; + + if (!_cddbuffer) + return IUP_DEFAULT; + + cdCanvasGetSize(_cddbuffer, &iret, NULL, NULL, NULL); + + return (long)iret; +} + +/* GetHeight */ +long PPainterIup::GetHeight() const +{ + int iret; + + if (!_cddbuffer) + return IUP_NOERROR; + + cdCanvasGetSize(_cddbuffer, NULL, &iret, NULL, NULL); + + return (long)iret; +} + +/* SetLineColor */ +void PPainterIup::SetLineColor(int inR, int inG, int inB) +{ + if (!_cddbuffer) + return; + + cdCanvasForeground(_cddbuffer, cdEncodeColor((unsigned char)inR, + (unsigned char)inG, + (unsigned char)inB)); +} + +/* SetFillColor */ +void PPainterIup::SetFillColor(int inR, int inG, int inB) +{ + if (!_cddbuffer) + return; + + cdCanvasForeground(_cddbuffer, cdEncodeColor((unsigned char)inR, + (unsigned char)inG, + (unsigned char)inB)); +} + +/* CalculateTextDrawSize */ +long PPainterIup::CalculateTextDrawSize(const char *inString) +{ + int iw; + + if (!_cddbuffer) + return IUP_NOERROR; + + cdCanvasGetTextSize(_cddbuffer, const_cast(inString), &iw, NULL); + + return iw; +} + +/* GetFontHeight */ +long PPainterIup::GetFontHeight() const +{ + int ih; + + if (!_cddbuffer) + return IUP_NOERROR; + + cdCanvasGetFontDim(_cddbuffer, NULL, &ih, NULL, NULL); + + return ih; +} + +/* DrawText */ +/* this call leave all the hard job of alignment on painter side */ +void PPainterIup::DrawText(int inX, int inY, short align, const char *inString) +{ + if (!_cddbuffer) + return; + + cdCanvasTextAlignment(_cddbuffer, align); + cdCanvasText(_cddbuffer, inX, cdCanvasInvertYAxis(_cddbuffer, inY), const_cast(inString)); +} + +/* DrawRotatedText */ +void PPainterIup::DrawRotatedText(int inX, int inY, float inDegrees, short align, const char *inString) +{ + double aprev; + + if (!_cddbuffer) + return; + + cdCanvasTextAlignment(_cddbuffer, align); + aprev = cdCanvasTextOrientation(_cddbuffer, -inDegrees); + cdCanvasText(_cddbuffer, inX, cdCanvasInvertYAxis(_cddbuffer, inY), const_cast(inString)); + cdCanvasTextOrientation(_cddbuffer, aprev); +} + +void PPainterIup::SetStyle(const PStyle &inStyle) +{ + if (!_cddbuffer) + return; + + cdCanvasLineWidth(_cddbuffer, inStyle.mPenWidth); + cdCanvasLineStyle(_cddbuffer, inStyle.mPenStyle); + + cdCanvasNativeFont(_cddbuffer, IupGetAttribute(_ih, "FONT")); + + if (inStyle.mFontStyle != -1 || inStyle.mFontSize != 0) + cdCanvasFont(_cddbuffer, NULL, inStyle.mFontStyle, inStyle.mFontSize); + + cdCanvasMarkType(_cddbuffer, inStyle.mMarkStyle); + cdCanvasMarkSize(_cddbuffer, inStyle.mMarkSize); +} + +int iPPlotMapMethod(Ihandle* ih) +{ + int old_gdi = 0; + + if (IupGetInt(ih, "USE_GDI+")) + old_gdi = cdUseContextPlus(1); + + ih->data->plt->_cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!ih->data->plt->_cdcanvas) + return IUP_ERROR; + + /* this can fail if canvas size is zero */ + if (IupGetInt(ih, "USE_IMAGERGB")) + ih->data->plt->_cddbuffer = cdCreateCanvas(CD_DBUFFERRGB, ih->data->plt->_cdcanvas); + else + ih->data->plt->_cddbuffer = cdCreateCanvas(CD_DBUFFER, ih->data->plt->_cdcanvas); + + if (IupGetInt(ih, "USE_GDI+")) + cdUseContextPlus(old_gdi); + + ih->data->plt->_redraw = 1; + + return IUP_NOERROR; +} + +void iPPlotDestroyMethod(Ihandle* ih) +{ + delete ih->data->plt; +} + +int iPPlotCreateMethod(Ihandle* ih, void **params) +{ + (void)params; + + /* free the data alocated by IupCanvas */ + if (ih->data) free(ih->data); + ih->data = iupALLOCCTRLDATA(); + + /* Initializing object with no cd canvases */ + ih->data->plt = new PPainterIup(ih); + + /* IupCanvas callbacks */ + IupSetCallback(ih, "ACTION", (Icallback)iPPlotRedraw_CB); + IupSetCallback(ih, "RESIZE_CB", (Icallback)iPPlotResize_CB); + IupSetCallback(ih, "BUTTON_CB", (Icallback)iPPlotMouseButton_CB); + IupSetCallback(ih, "MOTION_CB", (Icallback)iPPlotMouseMove_CB); + IupSetCallback(ih, "KEYPRESS_CB", (Icallback)iPPlotKeyPress_CB); + + return IUP_NOERROR; +} + +static Iclass* iupPPlotGetClass(void) +{ + Iclass* ic = iupClassNew(iupCanvasGetClass()); + + ic->name = "pplot"; + ic->format = NULL; /* none */ + ic->nativetype = IUP_TYPECANVAS; + ic->childtype = IUP_CHILDNONE; + ic->is_interactive = 1; + ic->has_attrib_id = 1; /* has attributes with IDs that must be parsed */ + + /* Class functions */ + ic->Create = iPPlotCreateMethod; + ic->Destroy = iPPlotDestroyMethod; + ic->Map = iPPlotMapMethod; + + /* IupPPlot Callbacks */ + iupClassRegisterCallback(ic, "POSTDRAW_CB", "v"); + iupClassRegisterCallback(ic, "PREDRAW_CB", "v"); + iupClassRegisterCallback(ic, "DELETE_CB", "iiff"); + iupClassRegisterCallback(ic, "DELETEBEGIN_CB", ""); + iupClassRegisterCallback(ic, "DELETEEND_CB", ""); + iupClassRegisterCallback(ic, "SELECT_CB", "iiffi"); + iupClassRegisterCallback(ic, "SELECTBEGIN_CB", ""); + iupClassRegisterCallback(ic, "SELECTEND_CB", ""); + iupClassRegisterCallback(ic, "EDIT_CB", "iiffvv"); + iupClassRegisterCallback(ic, "EDITBEGIN_CB", ""); + iupClassRegisterCallback(ic, "EDITEND_CB", ""); + + /* Visual */ + iupClassRegisterAttribute(ic, "BGCOLOR", iPPlotGetBGColorAttrib, iPPlotSetBGColorAttrib, IUPAF_SAMEASSYSTEM, "255 255 255", IUPAF_NOT_MAPPED); + iupClassRegisterAttribute(ic, "FGCOLOR", iPPlotGetFGColorAttrib, iPPlotSetFGColorAttrib, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED); + + /* IupPPlot only */ + + iupClassRegisterAttribute(ic, "REDRAW", NULL, iPPlotSetRedrawAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLE", iPPlotGetTitleAttrib, iPPlotSetTitleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLEFONTSIZE", iPPlotGetTitleFontSizeAttrib, iPPlotSetTitleFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "TITLEFONTSTYLE", NULL, iPPlotSetTitleFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LEGENDSHOW", iPPlotGetLegendShowAttrib, iPPlotSetLegendShowAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LEGENDPOS", iPPlotGetLegendPosAttrib, iPPlotSetLegendPosAttrib, IUPAF_SAMEASSYSTEM, "TOPRIGHT", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LEGENDFONTSIZE", NULL, iPPlotSetLegendFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "LEGENDFONTSTYLE", NULL, iPPlotSetLegendFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARGINLEFT", iPPlotGetMarginLeftAttrib, iPPlotSetMarginLeftAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARGINRIGHT", iPPlotGetMarginRightAttrib, iPPlotSetMarginRightAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARGINTOP", iPPlotGetMarginTopAttrib, iPPlotSetMarginTopAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "MARGINBOTTOM", iPPlotGetMarginBottomAttrib, iPPlotSetMarginBottomAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "GRIDLINESTYLE", iPPlotGetGridLineStyleAttrib, iPPlotSetGridLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "GRIDCOLOR", iPPlotGetGridColorAttrib, iPPlotSetGridColorAttrib, IUPAF_SAMEASSYSTEM, "200 200 200", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "GRID", iPPlotGetGridAttrib, iPPlotSetGridAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "DS_LINESTYLE", iPPlotGetDSLineStyleAttrib, iPPlotSetDSLineStyleAttrib, IUPAF_SAMEASSYSTEM, "CONTINUOUS", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_LINEWIDTH", iPPlotGetDSLineWidthAttrib, iPPlotSetDSLineWidthAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_MARKSTYLE", iPPlotGetDSMarkStyleAttrib, iPPlotSetDSMarkStyleAttrib, IUPAF_SAMEASSYSTEM, "X", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_MARKSIZE", iPPlotGetDSMarkSizeAttrib, iPPlotSetDSMarkSizeAttrib, IUPAF_SAMEASSYSTEM, "7", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_LEGEND", iPPlotGetDSLegendAttrib, iPPlotSetDSLegendAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_COLOR", iPPlotGetDSColorAttrib, iPPlotSetDSColorAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_SHOWVALUES", iPPlotGetDSShowValuesAttrib, iPPlotSetDSShowValuesAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_MODE", iPPlotGetDSModeAttrib, iPPlotSetDSModeAttrib, IUPAF_SAMEASSYSTEM, "LINE", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_EDIT", iPPlotGetDSEditAttrib, iPPlotSetDSEditAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "DS_REMOVE", NULL, iPPlotSetDSRemoveAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "AXS_XLABEL", iPPlotGetAXSXLabelAttrib, iPPlotSetAXSXLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YLABEL", iPPlotGetAXSYLabelAttrib, iPPlotSetAXSYLabelAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XLABELCENTERED", iPPlotGetAXSXLabelCenteredAttrib, iPPlotSetAXSXLabelCenteredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YLABELCENTERED", iPPlotGetAXSYLabelCenteredAttrib, iPPlotSetAXSYLabelCenteredAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XCOLOR", iPPlotGetAXSXColorAttrib, iPPlotSetAXSXColorAttrib, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YCOLOR", iPPlotGetAXSYColorAttrib, iPPlotSetAXSYColorAttrib, IUPAF_SAMEASSYSTEM, "0 0 0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XAUTOMIN", iPPlotGetAXSXAutoMinAttrib, iPPlotSetAXSXAutoMinAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YAUTOMIN", iPPlotGetAXSYAutoMinAttrib, iPPlotSetAXSYAutoMinAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XAUTOMAX", iPPlotGetAXSXAutoMaxAttrib, iPPlotSetAXSXAutoMaxAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YAUTOMAX", iPPlotGetAXSYAutoMaxAttrib, iPPlotSetAXSYAutoMaxAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XMIN", iPPlotGetAXSXMinAttrib, iPPlotSetAXSXMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YMIN", iPPlotGetAXSYMinAttrib, iPPlotSetAXSYMinAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XMAX", iPPlotGetAXSXMaxAttrib, iPPlotSetAXSXMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YMAX", iPPlotGetAXSYMaxAttrib, iPPlotSetAXSYMaxAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XREVERSE", iPPlotGetAXSXReverseAttrib, iPPlotSetAXSXReverseAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YREVERSE", iPPlotGetAXSYReverseAttrib, iPPlotSetAXSYReverseAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XCROSSORIGIN", iPPlotGetAXSXCrossOriginAttrib, iPPlotSetAXSXCrossOriginAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YCROSSORIGIN", iPPlotGetAXSYCrossOriginAttrib, iPPlotSetAXSYCrossOriginAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XSCALE", iPPlotGetAXSXScaleAttrib, iPPlotSetAXSXScaleAttrib, IUPAF_SAMEASSYSTEM, "LIN", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YSCALE", iPPlotGetAXSYScaleAttrib, iPPlotSetAXSYScaleAttrib, IUPAF_SAMEASSYSTEM, "LIN", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XFONTSIZE", iPPlotGetAXSXFontSizeAttrib, iPPlotSetAXSXFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YFONTSIZE", iPPlotGetAXSYFontSizeAttrib, iPPlotSetAXSYFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XFONTSTYLE", iPPlotGetAXSXFontStyleAttrib, iPPlotSetAXSXFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YFONTSTYLE", iPPlotGetAXSYFontStyleAttrib, iPPlotSetAXSYFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICK", iPPlotGetAXSXTickAttrib, iPPlotSetAXSXTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICK", iPPlotGetAXSYTickAttrib, iPPlotSetAXSYTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICKSIZE", iPPlotGetAXSXTickSizeAttrib, iPPlotSetAXSXTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICKSIZE", iPPlotGetAXSYTickSizeAttrib, iPPlotSetAXSYTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICKFORMAT", iPPlotGetAXSXTickFormatAttrib, iPPlotSetAXSXTickFormatAttrib, IUPAF_SAMEASSYSTEM, "%.0f", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICKFORMAT", iPPlotGetAXSYTickFormatAttrib, iPPlotSetAXSYTickFormatAttrib, IUPAF_SAMEASSYSTEM, "%.0f", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICKFONTSIZE", iPPlotGetAXSXTickFontSizeAttrib, iPPlotSetAXSXTickFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICKFONTSIZE", iPPlotGetAXSYTickFontSizeAttrib, iPPlotSetAXSYTickFontSizeAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICKFONTSTYLE", iPPlotGetAXSXTickFontStyleAttrib, iPPlotSetAXSXTickFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICKFONTSTYLE", iPPlotGetAXSYTickFontStyleAttrib, iPPlotSetAXSYTickFontStyleAttrib, NULL, NULL, IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XAUTOTICK", iPPlotGetAXSXAutoTickAttrib, iPPlotSetAXSXAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YAUTOTICK", iPPlotGetAXSYAutoTickAttrib, iPPlotSetAXSYAutoTickAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XAUTOTICKSIZE", iPPlotGetAXSXAutoTickSizeAttrib, iPPlotSetAXSXAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YAUTOTICKSIZE", iPPlotGetAXSYAutoTickSizeAttrib, iPPlotSetAXSYAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICKMAJORSPAN", iPPlotGetAXSXTickMajorSpanAttrib, iPPlotSetAXSXTickMajorSpanAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICKMAJORSPAN", iPPlotGetAXSYTickMajorSpanAttrib, iPPlotSetAXSYTickMajorSpanAttrib, IUPAF_SAMEASSYSTEM, "1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICKDIVISION", iPPlotGetAXSXTickDivisionAttrib, iPPlotSetAXSXTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICKDIVISION", iPPlotGetAXSYTickDivisionAttrib, iPPlotSetAXSYTickDivisionAttrib, IUPAF_SAMEASSYSTEM, "5", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XAUTOTICKSIZE", iPPlotGetAXSXAutoTickSizeAttrib, iPPlotSetAXSXAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YAUTOTICKSIZE", iPPlotGetAXSYAutoTickSizeAttrib, iPPlotSetAXSYAutoTickSizeAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_XTICKMAJORSIZE", iPPlotGetAXSXTickMajorSizeAttrib, iPPlotSetAXSXTickMajorSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "AXS_YTICKMAJORSIZE", iPPlotGetAXSYTickMajorSizeAttrib, iPPlotSetAXSYTickMajorSizeAttrib, IUPAF_SAMEASSYSTEM, "8", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + iupClassRegisterAttribute(ic, "REMOVE", NULL, iPPlotSetRemoveAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CLEAR", NULL, iPPlotSetClearAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "COUNT", iPPlotGetCountAttrib, NULL, NULL, NULL, IUPAF_READONLY|IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + iupClassRegisterAttribute(ic, "CURRENT", iPPlotGetCurrentAttrib, iPPlotSetCurrentAttrib, IUPAF_SAMEASSYSTEM, "-1", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT); + + return ic; +} + +/* user level call: create control */ +Ihandle* IupPPlot(void) +{ + return IupCreate("pplot"); +} + +void IupPPlotOpen(void) +{ + if (!IupGetGlobal("_IUP_PPLOT_OPEN")) + { + iupRegisterClass(iupPPlotGetClass()); + IupSetGlobal("_IUP_PPLOT_OPEN", "1"); + } +} diff --git a/iup/srcpplot/iup_pplot.def b/iup/srcpplot/iup_pplot.def new file mode 100755 index 0000000..8143bab --- /dev/null +++ b/iup/srcpplot/iup_pplot.def @@ -0,0 +1,11 @@ +EXPORTS + IupPPlotOpen + IupPPlot + IupPPlotBegin + IupPPlotAdd + IupPPlotAddStr + IupPPlotEnd + IupPPlotInsertStr + IupPPlotInsert + IupPPlotTransform + IupPPlotPaintTo diff --git a/iup/srcpplot/iup_pplot.dep b/iup/srcpplot/iup_pplot.dep new file mode 100644 index 0000000..6542ce3 --- /dev/null +++ b/iup/srcpplot/iup_pplot.dep @@ -0,0 +1,12 @@ +$(OBJDIR)/iupPPlot.o: iupPPlot.cpp iupPPlot.h +$(OBJDIR)/iupPPlotInteraction.o: iupPPlotInteraction.cpp iupPPlotInteraction.h \ + iupPPlot.h +$(OBJDIR)/iup_pplot.o: iup_pplot.cpp ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcbs.h ../include/iup_pplot.h \ + ../../cd/include/cd.h ../../cd/include/cdiup.h \ + ../../cd/include/cddbuf.h ../../cd/include/cdirgb.h \ + ../../cd/include/cdgdiplus.h ../src/iup_class.h ../src/iup_table.h \ + ../src/iup_classbase.h ../src/iup_register.h ../src/iup_object.h \ + ../src/iup_class.h ../src/iup_attrib.h ../src/iup_str.h \ + ../src/iup_drv.h ../src/iup_stdcontrols.h ../src/iup_assert.h \ + iupPPlot.h iupPPlotInteraction.h iuppplot.hpp diff --git a/iup/srcpplot/iuppplot.hpp b/iup/srcpplot/iuppplot.hpp new file mode 100755 index 0000000..62e3db7 --- /dev/null +++ b/iup/srcpplot/iuppplot.hpp @@ -0,0 +1,137 @@ +/* + * IupPPlot component - private include file + * + * Description : A component, derived from PPlot and IUP canvas + * Remark : Depend on libs IUP, CD, IUPCD + */ + + +#ifndef __IUP_PPLOT_H +#define __IUP_PPLOT_H + +/* + PPainterIup class definition +*/ + + +class PostPainterCallbackIup: public PDrawer +{ + public: + PostPainterCallbackIup(PPlot &inPPlot, Ihandle* inHandle); + virtual bool Draw (Painter &inPainter); + protected: + Ihandle *_ih; // IUP handle +}; + +class PrePainterCallbackIup: public PDrawer +{ + public: + PrePainterCallbackIup(PPlot &inPPlot, Ihandle* inHandle); + virtual bool Draw (Painter &inPainter); + protected: + Ihandle *_ih; // IUP handle +}; + +class PDeleteInteractionIup: public PDeleteInteraction +{ + public: + PDeleteInteractionIup(PPlot &inPPlot, Ihandle* inHandle): + PDeleteInteraction(inPPlot), _ih(inHandle) {} + + protected: + Ihandle *_ih; // IUP handle + bool DeleteNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData); +}; + +class PSelectionInteractionIup: public PSelectionInteraction +{ + public: + PSelectionInteractionIup(PPlot &inPPlot, Ihandle* inHandle): + PSelectionInteraction(inPPlot), _ih(inHandle) {} + + protected: + Ihandle *_ih; // IUP handle + bool SelectNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inSelect); +}; + +class PEditInteractionIup: public PEditInteraction +{ + public: + PEditInteractionIup (PPlot &inPPlot, Ihandle* inHandle): + PEditInteraction(inPPlot), _ih(inHandle) {} + + virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent); + virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot); + + protected: + Ihandle *_ih; // IUP handle + void HandleCursorKey (const PlotDataSelection *inPlotDataSelection, PlotDataBase *inXData, PlotDataBase *inYData, int inIndex); + bool EditNotify(int inIndex, int inSampleIndex, float inX, float inY, float *inNewX, float *inNewY); +}; + +class InteractionContainerIup: public InteractionContainer +{ + public: + InteractionContainerIup(PPlot &inPPlot, Ihandle* inHandle); + + PZoomInteraction mZoomInteraction; + PSelectionInteractionIup mSelectionInteraction; + PEditInteractionIup mEditInteraction; + PDeleteInteractionIup mDeleteInteraction; + PCrosshairInteraction mCrosshairInteraction; + + PostPainterCallbackIup mPostPainterCallback; + PrePainterCallbackIup mPrePainterCallback; +}; + +class PPainterIup: public Painter +{ + public: + PPainterIup(Ihandle *ih); + virtual ~PPainterIup(); + cdCanvas *_cdcanvas; /* iup drawing surface */ + cdCanvas *_cddbuffer; /* double buffer drawing surface */ + PPlot _plot; /* plot data holder */ + int _redraw; /* must update the double buffer before flush */ + int _currentDataSetIndex; /* dataset index used for DS_ attributes in SetAttribute and GetAttribute */ + + // Called from C functions + void Draw(int force); // paint the stuff + void Resize(); // called when resizing + void MouseButton(int btn, int stat, int x, int y, char *r); // mouse event + void MouseMove(int x, int y); // mouse event + void KeyPress(int c, int press); // keyboard event + void DrawTo(cdCanvas *usrCnv); // send plot to some user defined device + + protected: + InteractionContainer *_InteractionContainer; + Ihandle *_ih; // IUP handle + short int _mouseDown; + short int _mouse_ALT; + short int _mouse_SHIFT; + short int _mouse_CTRL; + + PPainterIup() { }; + + virtual void FillArrow(int inX1, int inY1, int inX2, int inY2, int inX3, int inY3); + virtual void DrawLine(float inX1, float inY1, float inX2, float inY2); + virtual void FillRect(int inX, int inY, int inW, int inH); + virtual void InvertRect(int inX, int inY, int inW, int inH); + virtual void SetClipRect(int inX, int inY, int inW, int inH); + virtual long GetWidth() const; + virtual long GetHeight() const; + virtual void SetLineColor(int inR, int inG, int inB); + virtual void SetFillColor(int inR, int inG, int inB); + virtual long CalculateTextDrawSize(const char *inString); + virtual long GetFontHeight() const; + virtual void DrawText(int inX, int inY, short align, const char *inString); + virtual void DrawRotatedText(int inX, int inY, float inDegrees, + short align, const char *inString); + virtual void SetStyle(const PStyle &inStyle); + + private: + +}; // PPainterIup + + +#endif /* #ifndef __IUP_PPLOT_HPP */ diff --git a/iup/srcpplot/make_uname b/iup/srcpplot/make_uname new file mode 100755 index 0000000..cc4b881 --- /dev/null +++ b/iup/srcpplot/make_uname @@ -0,0 +1,3 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/srcpplot/make_uname.bat b/iup/srcpplot/make_uname.bat new file mode 100755 index 0000000..f0a0722 --- /dev/null +++ b/iup/srcpplot/make_uname.bat @@ -0,0 +1,4 @@ +@echo off +REM This builds all the libraries of the folder for 1 uname + +call tecmake %1 %2 %3 %4 %5 %6 diff --git a/iup/srcview/Makefile b/iup/srcview/Makefile new file mode 100755 index 0000000..1779960 --- /dev/null +++ b/iup/srcview/Makefile @@ -0,0 +1,9 @@ + +.PHONY: do_all iupview iupviewgtk +do_all: iupview + +iupview: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak + +iupviewgtk: + @$(MAKE) --no-print-directory -f ../tecmake_compact.mak USE_GTK=Yes diff --git a/iup/srcview/config.mak b/iup/srcview/config.mak new file mode 100755 index 0000000..4967582 --- /dev/null +++ b/iup/srcview/config.mak @@ -0,0 +1,59 @@ +PROJNAME = iup +APPNAME = iupview +OPT = YES + +SRC = iup_view.c + +IUP := .. + +LINKER = $(CPPC) + +USE_CD = Yes +USE_IUPCONTROLS = Yes +USE_IUP3 = Yes + +# ifdef USE_GTK +# ifndef GTK_DEFAULT +# # Build GTK version in IRIX,SunOS,AIX,Win32 +# APPNAME = iupviewgtk +# endif +# else +# ifdef GTK_DEFAULT +# # Build Motif version in Linux,Darwin,FreeBSD +# USE_MOTIF = Yes +# APPNAME = iupviewmot +# endif +# endif + +ifeq "$(TEC_UNAME)" "SunOS510x86" + DEFINES = USE_NO_OPENGL +else + USE_OPENGL = Yes +endif + +USE_IM = Yes +ifdef USE_IM + DEFINES += USE_IM + ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS = iupim iupimglib + else + IUPLIB = $(IUP)/lib/$(TEC_UNAME) + SLIB = $(IUPLIB)/libiupim.a $(IUPLIB)/libiupimglib.a + endif +endif + +USE_STATIC = Yes + +ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + SRC += ../etc/iup.rc +endif + +INCLUDES = ../src + +ifeq ($(TEC_UNAME), vc8) + ifdef DBG + #debug info not working for vc8 linker + define DBG + endef + endif +endif diff --git a/iup/srcview/iup_view.c b/iup/srcview/iup_view.c new file mode 100755 index 0000000..f6d400b --- /dev/null +++ b/iup/srcview/iup_view.c @@ -0,0 +1,851 @@ +#include +#include +#include +#include +#include + +#include "iup.h" +#include "iupcontrols.h" +#include "iupgl.h" +#include "iup_str.h" + + +#define MAX_NAMES 500 + +#ifdef USE_IM +#include "iupim.h" +#endif + +/* IupImage internal function, used only here */ +int iupSaveImageAsText(Ihandle* ih, FILE* packfile, const char* format, const char* name); + +/* IupImageLib internal function, used only here */ +void iupImageLibLoadAll(void); + +static int close_cb(void) +{ + return IUP_CLOSE; +} + +static int about_cb(void) +{ + IupMessage("About", " IupView\n\n" + "Show dialogs and popup menus\n" + "defined in LED files.\n" + "Can show all defined images.\n" + "Can import and export images.\n" + ); + return IUP_DEFAULT; +} + +static int inactivetoggle_cb(Ihandle* self, int v) +{ + Ihandle* tabs = (Ihandle*)IupGetAttribute(self, "TABS"); + Ihandle* child = IupGetNextChild(tabs, NULL); + while(child) + { + IupSetAttribute(child, "ACTIVE", v?"NO":"YES"); + child = IupGetNextChild(tabs, child); + } + return IUP_DEFAULT; +} + +static int imagebutton_cb(Ihandle* self) +{ + Ihandle* label = (Ihandle*)IupGetAttribute(self, "_INFO_LABEL"); + IupSetAttribute(label, "TITLE", IupGetAttribute(self, "_INFO")); + return IUP_DEFAULT; +} + +static int showallimages_cb(void) +{ + Ihandle *dialog, *box, *files, *tabs, *toggle, *label; + Ihandle* params[500]; + char *names[MAX_NAMES]; + int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES); + files = IupUser(); + for (i = 0; i < num_names; i++) + { + Ihandle* elem = IupGetHandle(names[i]); + char* type = IupGetClassType(elem); + + if (iupStrEqual(type, "image")) + { + Ihandle *tbox, *lbox, *button; + + /* show only loaded images */ + char* file_title = IupGetAttribute(elem, "_FILE_TITLE"); + if (!file_title) + continue; + + tbox = (Ihandle*)IupGetAttribute(files, file_title); + if (!tbox) + { + tbox = IupVbox(NULL); + IupSetAttribute(files, file_title, (char*)tbox); + IupSetAttribute(tbox, "TABTITLE", file_title); + params[n] = tbox; + n++; + } + + lbox = (Ihandle*)IupGetAttribute(tbox, file_title); + if (!lbox || IupGetInt(lbox, "LINE_COUNT") == 10) + { + lbox = IupHbox(NULL); + IupAppend(tbox, lbox); + IupSetAttribute(tbox, file_title, (char*)lbox); + IupSetAttribute(lbox, "LINE_COUNT", "0"); + } + + button = IupButton("", NULL); + IupSetAttribute(button, "IMAGE", names[i]); + IupSetfAttribute(button, "_INFO", "%s [%d,%d]", names[i], IupGetInt(elem, "WIDTH"), IupGetInt(elem, "HEIGHT")); + IupSetCallback(button, "ACTION", (Icallback)imagebutton_cb); + IupAppend(lbox, button); + IupSetfAttribute(lbox, "LINE_COUNT", "%d", IupGetInt(lbox, "LINE_COUNT")+1); + } + } + + if (n == 0) + { + IupMessage("Error", "No images."); + return IUP_DEFAULT; + } + + params[n] = NULL; + + box = IupVbox(toggle = IupToggle("INACTIVE", NULL), + tabs = IupTabsv(params), + label = IupLabel(""), + NULL); + IupSetAttribute(box, "MARGIN", "10x10"); + IupSetAttribute(box, "GAP", "10"); + IupSetAttribute(tabs, "ALIGNMENT", "NW"); + IupSetAttribute(tabs, "SIZE", "150x80"); + IupSetCallback(toggle, "ACTION", (Icallback)inactivetoggle_cb); + IupSetAttribute(toggle, "TABS", (char*)tabs); + IupSetAttribute(label, "EXPAND", "HORIZONTAL"); + + dialog = IupDialog(box); + IupSetAttribute(dialog, "TITLE", "All Images"); + IupSetCallback(dialog, "CLOSE_CB", (Icallback)close_cb); + IupSetAttribute(dialog, "_INFO_LABEL", (char*)label); + + IupPopup(dialog, IUP_CENTER, IUP_CENTER); + + IupDestroy(dialog); + IupDestroy(files); + + return IUP_DEFAULT; +} + +static char* getfileformat(int all) +{ +#define NUM_FORMATS 8 + int ret, count = NUM_FORMATS; + static char *options[NUM_FORMATS] = { + "led", + "lua", + "c", + "h", + "ico", + "bmp", + "gif", + "png" + }; + + if (!all) + count = 4; + + ret = IupListDialog(1,"File Format",count,options,1,10,count+1,NULL); + if (ret == -1) + return NULL; + else + return options[ret]; +} + +static char* StrUpper(const char* sstr) +{ + static char buf[10]; + char* dstr = &buf[0]; + for (; *sstr; sstr++, dstr++) + *dstr = (char)toupper(*sstr); + *dstr = 0; + return buf; +} + +static char* getfolder(void) +{ + static char folder[1024]; + Ihandle *filedlg = IupFileDlg(); + + IupSetAttribute(filedlg, "DIALOGTYPE", "DIR"); + IupSetAttribute(filedlg, "TITLE", "Select Folder for Images"); + + IupPopup(filedlg, IUP_CENTER, IUP_CENTER); + + if (IupGetInt(filedlg, "STATUS") != -1) + { + strcpy(folder, IupGetAttribute(filedlg, "VALUE")); + IupDestroy(filedlg); + return folder; + } + + IupDestroy(filedlg); + return NULL; +} + +static int saveallimages_cb(void) +{ + char *names[MAX_NAMES]; + char* folder; + int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES); + + char* imgtype = getfileformat(1); + if (!imgtype) + return IUP_DEFAULT; + + folder = getfolder(); + if (!folder) + return IUP_DEFAULT; + + for (i = 0; i < num_names; i++) + { + Ihandle* elem = IupGetHandle(names[i]); + char* type = IupGetClassType(elem); + + if (iupStrEqual(type, "image")) + { + char file_name[1024] = ""; + + /* save only loaded images */ + char* file_title = IupGetAttribute(elem, "_FILE_TITLE"); + if (!file_title) + continue; + + strcpy(file_name, folder); + strcat(file_name, "/"); + strcat(file_name, file_title); + strcat(file_name, "_"); + strcat(file_name, names[i]); + strcat(file_name, "."); + strcat(file_name, imgtype); + + if (!IupSaveImageAsText(elem, file_name, imgtype, names[i])) + { +#ifdef USE_IM + if (!IupSaveImage(elem, file_name, StrUpper(imgtype))) /* already displayed an error message */ + return IUP_DEFAULT; +#else + IupMessage("Error", "Failed to save the image."); + return IUP_DEFAULT; +#endif + } + + n++; + } + } + + if (n == 0) + { + IupMessage("Error", "No images."); + return IUP_DEFAULT; + } + + return IUP_DEFAULT; +} + +static int GetSaveAsFile(char* file, const char* imgtype) +{ + Ihandle *gf; + int ret; + char *value; + + gf = IupFileDlg(); + IupSetAttribute(gf, "DIALOGTYPE", "SAVE"); + IupSetfAttribute(gf, "TITLE", "Save %s File", imgtype); + IupSetfAttribute(gf, "FILTER", "*.%s", imgtype); + IupSetAttribute(gf, "FILE", file); + IupPopup(gf, IUP_CENTER, IUP_CENTER); + + value = IupGetAttribute( gf, "VALUE" ); + if (value) strcpy( file, value ); + ret = IupGetInt( gf, "STATUS" ); + + IupDestroy(gf); + + return ret; +} + +static void replaceDot(char* file_name) +{ + /* replace all "." by "_" */ + /* replace all "-" by "_" */ + while(*file_name) + { + if (*file_name == '.') + *file_name = '_'; + if (*file_name == '-') + *file_name = '_'; + + file_name++; + } +} + +static char* strdup_free(const char* str, char* str_ptr) +{ + int len = strlen(str); + char* tmp = malloc(len+1); + memcpy(tmp, str, len+1); + free(str_ptr); + return tmp; +} + +static char* mainGetFileTitle(const char* file_name) +{ + int i, last = 1, len = strlen(file_name); + char* file_title = malloc(len+1); + char* dot, *ft_str = file_title; + + memcpy(file_title, file_name, len+1); + + dot = strchr(file_title, '.'); + if (dot) *dot = 0; + + for(i = len-1; i >= 0; i--) + { + if (last && file_title[i] == '.') + { + /* cut last "." forward */ + file_title[i] = 0; + last = 0; + } + + if (file_title[i] == '\\' || file_title[i] == '/') + { + replaceDot(file_title+i+1); + return strdup_free(file_title+i+1, ft_str); + } + } + + replaceDot(file_title); + return strdup_free(file_title, ft_str); +} + +static int saveallimagesone_cb(void) +{ + char file_name[1024] = "*."; + char *names[MAX_NAMES]; + int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES); + FILE* packfile = NULL; + + char* imgtype = getfileformat(0); + if (!imgtype) + return IUP_DEFAULT; + + strcat(file_name, imgtype); + if (GetSaveAsFile(file_name, imgtype) == -1) + return IUP_DEFAULT; + + for (i = 0; i < num_names; i++) + { + Ihandle* elem = IupGetHandle(names[i]); + char* type = IupGetClassType(elem); + + if (iupStrEqual(type, "image")) + { + /* save only loaded images */ + char* file_title = IupGetAttribute(elem, "_FILE_TITLE"); + if (!file_title) + { + names[i] = NULL; + continue; + } + + if (!packfile) + packfile = fopen(file_name, "wb"); + + if (!packfile) + { + IupMessage("Error", "Failed to open the file."); + return IUP_DEFAULT; + } + + if (!iupSaveImageAsText(elem, packfile, imgtype, names[i])) + { + fclose(packfile); + IupMessage("Error", "Failed to write to the file."); + return IUP_DEFAULT; + } + + n++; + } + else + names[i] = NULL; + } + + if (packfile) + { + if (iupStrEqualNoCase(imgtype, "c")) /* only for C files */ + { + char* title = mainGetFileTitle(file_name); + fprintf(packfile, "void load_all_images_%s(void)\n{\n", title); + free(title); + + for (i = 0; i < num_names; i++) + { + if (names[i]) + fprintf(packfile, " IupSetHandle(\"IUP_%s\", load_image_%s());\n", names[i], names[i]); + } + fprintf(packfile, "}\n\n"); + } + + fclose(packfile); + } + + if (n == 0) + { + IupMessage("Error", "No images."); + return IUP_DEFAULT; + } + + return IUP_DEFAULT; +} + +static int saveimage_cb(Ihandle* self) +{ + Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList"); + char* name = IupGetAttribute(list, IupGetAttribute(list, "VALUE")); + + if (name) /* the list may be empty */ + { + Ihandle* elem = IupGetHandle(name); + char* type = IupGetClassType(elem); + + if (iupStrEqual(type, "image")) + { + char file_name[1024]; + + char* imgtype = getfileformat(1); + if (!imgtype) + return IUP_DEFAULT; + + sprintf(file_name, "%s.%s", name, imgtype); + if (GetSaveAsFile(file_name, imgtype) != -1) + { + if (!IupSaveImageAsText(elem, file_name, imgtype, name)) +#ifdef USE_IM + IupSaveImage(elem, file_name, StrUpper(imgtype)); /* already displayed an error message */ +#else + IupMessage("Error", "Failed to save the image."); +#endif + } + } + else + IupMessage("Error", "Not an image."); + } + else + IupMessage("Error", "No elements."); + + return IUP_DEFAULT; +} + +static int hideelem_cb(Ihandle* self) +{ + Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList"); + char* name = IupGetAttribute(list, IupGetAttribute(list, "VALUE")); + + if (name) /* the list may be empty */ + { + Ihandle* elem = IupGetHandle(name); + char* type = IupGetClassName(elem); + + if (iupStrEqual(type, "dialog")) + IupHide(elem); + else + { + Ihandle* dialog = IupGetDialog(elem); + if (dialog) + IupHide(dialog); + else + IupMessage("Error", "Will only hide dialogs."); + } + } + else + IupMessage("Error", "No elements."); + + return IUP_DEFAULT; +} + +static int showelem_cb(Ihandle* self) +{ + Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList"); + char* name = IupGetAttribute(list, IupGetAttribute(list, "VALUE")); + + if (name) /* the list may be empty */ + { + Ihandle* elem = IupGetHandle(name); + char* type = IupGetClassName(elem); + + if (iupStrEqual(type, "dialog")) + IupShow(elem); + else + { + Ihandle* dialog = IupGetDialog(elem); + if (dialog) + IupShow(dialog); + else + { + if (iupStrEqual(type, "menu")) + IupPopup(elem, IUP_MOUSEPOS, IUP_MOUSEPOS); + else + IupMessage("Error", "Will only show dialogs and independent menus."); + } + } + } + else + IupMessage("Error", "No elements."); + + return IUP_DEFAULT; +} + +static int list_dbclick_cb(Ihandle* self, int i, char *t) +{ + (void)i; + (void)t; + showelem_cb(self); + return IUP_DEFAULT; +} + +static int list_cb(Ihandle* self, char *t, int i, int v) +{ + if (v == 1) + { + char str_elem[100]; + Ihandle* elem = IupGetHandle(t); + Ihandle* label = (Ihandle*)IupGetAttribute(self, "mainLabel"); + sprintf(str_elem, "FileTitle: %s - Type: %s", IupGetAttribute(elem, "_FILE_TITLE"), IupGetClassName(elem)); + IupStoreAttribute(label, "TITLE", str_elem); + } + (void)i; + return IUP_DEFAULT; +} + +static void mainUpdateInternals(void) +{ + char *names[MAX_NAMES]; + int i, num_names = IupGetAllNames(names, MAX_NAMES); + for (i = 0; i < num_names; i++) + { + Ihandle* elem = IupGetHandle(names[i]); + + if (!IupGetAttribute(elem, "_FILE_TITLE")) + IupSetAttribute(elem, "_INTERNAL", "YES"); + } +} + +static int destroyall_cb(Ihandle* self) +{ + char *names[MAX_NAMES]; + Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList"); + int i, num_names = IupGetAllNames(names, MAX_NAMES); + for (i = 0; i < num_names; i++) + { + Ihandle* elem = IupGetHandle(names[i]); + + if (elem && IupGetInt(elem, "_INTERNAL") == 0) + { + char* type = IupGetClassName(elem); + + if (iupStrEqual(type, "dialog")) + IupDestroy(elem); + else + { + Ihandle* dialog = IupGetDialog(elem); + if (!dialog) + IupDestroy(elem); + } + } + } + IupSetAttribute(list, "1", NULL); + IupSetAttribute(list, "VALUE", "1"); + return IUP_DEFAULT; +} + +static void mainUpdateList(Ihandle* self, const char* file_name) +{ + char *names[MAX_NAMES]; + char str_item[20]; + Ihandle* list = (Ihandle*)IupGetAttribute(self, "mainList"); + int i, n = 0, num_names = IupGetAllNames(names, MAX_NAMES); + char* file_title = mainGetFileTitle(file_name); + for (i = 0; i < num_names; i++) + { + Ihandle* elem = IupGetHandle(names[i]); + + if (IupGetInt(elem, "_INTERNAL") == 0) + { + sprintf(str_item, "%d", n+1); + IupSetAttribute(list, str_item, names[i]); + + if (!IupGetAttribute(elem, "_FILE_TITLE")) + IupStoreAttribute(elem, "_FILE_TITLE", file_title); + n++; + } + } + sprintf(str_item, "%d", n+1); + IupSetAttribute(list, str_item, NULL); + + if (n != 0) + { + IupSetAttribute(list, "VALUE", "1"); + list_cb(list, IupGetAttribute(list, "1"), -1, 1); + } + + free(file_title); +} + +static int loadimagelib_cb(Ihandle* self) +{ + mainUpdateInternals(); + + iupImageLibLoadAll(); + + mainUpdateList(self, "ImageLib"); + + return IUP_DEFAULT; +} + +static int loadled_cb(Ihandle* self) +{ + char file_name[1024] = "./*.led"; + int ret = IupGetFile(file_name); + if (ret == 0) + { + char* error; + + mainUpdateInternals(); + + error = IupLoad(file_name); + if (error) + IupMessage("Error", error); + else + mainUpdateList(self, file_name); + } + return IUP_DEFAULT; +} + +#ifdef USE_IM +#ifdef WIN32 +static char* ParseFile(const char* dir, const char* FileName, int *offset) +{ + const char* file = FileName; + while (*file != 0 && *file != '|') + file++; + + if (file == FileName) + return NULL; + + { + int size = file - FileName + 1; + int dir_size = strlen(dir); + char* file_name = malloc(size+dir_size+1); + memcpy(file_name, dir, dir_size); + file_name[dir_size] = '\\'; + memcpy(file_name+dir_size+1, FileName, size-1); + file_name[size+dir_size] = 0; + *offset += size; + return file_name; + } +} + +static char* ParseDir(const char* FileName, int *offset) +{ + const char* file = FileName; + while (*file != 0 && *file != '|') + file++; + + if (*file == 0) + return NULL; + + { + int size = file - FileName + 1; + char* dir = malloc(size); + memcpy(dir, FileName, size-1); + dir[size-1] = 0; + *offset = size; + return dir; + } +} +#endif + +static void LoadImageFile(Ihandle* self, const char* file_name) +{ + Ihandle* new_image = IupLoadImage(file_name); + if (new_image) + { + char* file_title = mainGetFileTitle(file_name); + IupSetHandle(file_title, new_image); + free(file_title); + mainUpdateList(self, file_name); + } +} + +static int GetOpenFileName(char* file) +{ + Ihandle *gf; + int ret; + char *value; + + gf = IupFileDlg(); + IupSetAttribute(gf, "DIALOGTYPE", "OPEN"); + IupSetAttribute(gf, "TITLE", "Load Image File(s)"); + IupSetAttribute(gf, "MULTIPLEFILES", "YES"); + IupPopup(gf, IUP_CENTER, IUP_CENTER); + + value = IupGetAttribute(gf, "VALUE"); + if (value) strcpy(file, value); + ret = IupGetInt(gf, "STATUS"); + + IupDestroy(gf); + + return ret; +} + +static int loadimage_cb(Ihandle* self) +{ + char FileName[2000] = "*.*"; + + /* Retrieve a file name */ + if (GetOpenFileName(FileName) == -1) + return IUP_DEFAULT; + + mainUpdateInternals(); + +#ifdef WIN32 + /* parse multiple files */ + { + int offset; + char* file_name; + char* dir = ParseDir(FileName, &offset); + if (dir) + { + while ((file_name = ParseFile(dir, FileName + offset, &offset)) != NULL) + { + LoadImageFile(self, file_name); + free(file_name); + } + free(dir); + } + else + LoadImageFile(self, FileName); + } +#else + LoadImageFile(self, FileName); +#endif + + return IUP_DEFAULT; +} +#endif + +static int dropfile_cb(Ihandle *self, char* file_name) +{ + char* error; + + mainUpdateInternals(); + + error = IupLoad(file_name); + if (error) + IupMessage("Error", error); + else + mainUpdateList(self, file_name); + + return IUP_DEFAULT; +} + +static Ihandle* mainDialog(void) +{ + Ihandle *main_dialog, *box, *menu, *list, *label; + + menu = IupMenu( + IupSubmenu("File", IupMenu( + IupSetCallbacks(IupItem("Load Led...", NULL), "ACTION", (Icallback)loadled_cb, NULL), + IupSetCallbacks(IupItem("Load Image Lib", NULL), "ACTION", (Icallback)loadimagelib_cb, NULL), + IupSeparator(), +#ifdef USE_IM + IupSetCallbacks(IupItem("Import Image(s)...", NULL), "ACTION", (Icallback)loadimage_cb, NULL), +#endif + IupSeparator(), + IupSetCallbacks(IupItem("Exit", NULL), "ACTION", (Icallback)close_cb, NULL), + NULL)), + IupSubmenu("Element", IupMenu( + IupSetCallbacks(IupItem("Show...", NULL), "ACTION", (Icallback)showelem_cb, NULL), + IupSetCallbacks(IupItem("Hide...", NULL), "ACTION", (Icallback)hideelem_cb, NULL), + IupSeparator(), + IupSetCallbacks(IupItem("Destroy All...", NULL), "ACTION", (Icallback)destroyall_cb, NULL), + IupSetCallbacks(IupItem("Show All Images...", NULL), "ACTION", (Icallback)showallimages_cb, NULL), + IupSeparator(), + IupSetCallbacks(IupItem("Save Image...", NULL), "ACTION", (Icallback)saveimage_cb, NULL), + IupSetCallbacks(IupItem("Save All Images...", NULL), "ACTION", (Icallback)saveallimages_cb, NULL), + IupSetCallbacks(IupItem("Save All Images (One File)...", NULL), "ACTION", (Icallback)saveallimagesone_cb, NULL), + NULL)), + IupSubmenu("Help", IupMenu( + IupSetCallbacks(IupItem("About...", NULL), "ACTION", (Icallback)about_cb, NULL), + NULL)), + NULL + ); + IupSetHandle("mainMenu", menu); + + box = IupVbox( + IupLabel("Elements:"), + list = IupList(NULL), + IupSetAttributes(IupFill(), "SIZE=2"), + IupFrame(label = IupLabel("")), + NULL); + IupSetAttribute(box, "MARGIN", "10x10"); + IupSetCallback(list, "ACTION", (Icallback)list_cb); + IupSetCallback(list, "DBLCLICK_CB", (Icallback)list_dbclick_cb); + + IupSetAttribute(list, "SIZE", "150x80"); + IupSetAttribute(list, "EXPAND", "YES"); + IupSetAttribute(label, "EXPAND", "HORIZONTAL"); + + main_dialog = IupDialog(box); + IupSetAttribute(main_dialog, "TITLE", "IupView"); + IupSetAttribute(main_dialog, "MENU", "mainMenu"); + IupSetAttribute(main_dialog, "mainList", (char*)list); + IupSetAttribute(main_dialog, "mainLabel", (char*)label); + IupSetCallback(main_dialog, "CLOSE_CB", (Icallback)close_cb); + IupSetCallback(main_dialog, "DROPFILES_CB", (Icallback)dropfile_cb); + + IupSetAttribute(menu, "mainList", (char*)list); + IupSetAttribute(menu, "mainLabel", (char*)label); + + return main_dialog; +} + +int main (int argc, char **argv) +{ + Ihandle* main_dialog; + + IupOpen(&argc, &argv); +#ifndef USE_NO_OPENGL + IupGLCanvasOpen(); +#endif + IupControlsOpen(); + IupImageLibOpen(); + + mainUpdateInternals(); + + main_dialog = mainDialog(); + IupShow(main_dialog); + + IupMainLoop(); + destroyall_cb(main_dialog); + IupDestroy(main_dialog); + + IupControlsClose(); + IupClose(); + return 0; +} + diff --git a/iup/srcview/iupview b/iup/srcview/iupview new file mode 100755 index 0000000..940f9ab --- /dev/null +++ b/iup/srcview/iupview @@ -0,0 +1,6 @@ +#!/bin/csh +# Script generated automatically by tecmake v3.19 +# Remove the comment bellow to set the LD_LIBRARY_PATH if needed. +#setenv LD_LIBRARY_PATH /lib/${TEC_UNAME}:/lib/${TEC_UNAME}:$LD_LIBRARY_PATH +if ( -r app.env ) source app.env +exec ../bin/$TEC_UNAME/iupview $* diff --git a/iup/srcview/iupview.bat b/iup/srcview/iupview.bat new file mode 100644 index 0000000..22f8434 --- /dev/null +++ b/iup/srcview/iupview.bat @@ -0,0 +1,3 @@ +@echo off +REM Script generated automatically by tecmake v3.20 +..\bin\Win64\iupview.exe %* diff --git a/iup/srcview/iupview.dep b/iup/srcview/iupview.dep new file mode 100644 index 0000000..4e8b9dc --- /dev/null +++ b/iup/srcview/iupview.dep @@ -0,0 +1,3 @@ +$(OBJDIR)/iup_view.o: iup_view.c ../include/iup.h ../include/iupkey.h \ + ../include/iupdef.h ../include/iupcontrols.h ../include/iupgl.h \ + ../src/iup_str.h ../include/iupim.h diff --git a/iup/srcview/make_uname b/iup/srcview/make_uname new file mode 100755 index 0000000..153c2d7 --- /dev/null +++ b/iup/srcview/make_uname @@ -0,0 +1,4 @@ +# This builds the executable for 1 uname + +tecmake relink $1 $2 $3 $4 $5 $6 $7 $8 +#tecmake USE_GTK=Yes relink $1 $2 $3 $4 $5 $6 $7 $8 diff --git a/iup/srcview/make_uname.bat b/iup/srcview/make_uname.bat new file mode 100755 index 0000000..ab63bd3 --- /dev/null +++ b/iup/srcview/make_uname.bat @@ -0,0 +1,26 @@ +@echo off + +if "%1"=="" goto iupexe32 +if "%1"=="vc8" goto iupexe32 +if "%1"=="vc8_64" goto iupexe64 +if "%1"=="all" goto iupexe +goto end + +:iupexe32 +call tecmake vc8 relink %2 %3 %4 %5 %6 %7 +#call tecmake vc8 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7 +goto end + +:iupexe64 +call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7 +#call tecmake vc8_64 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7 +goto end + +:iupexe +call tecmake vc8 relink %2 %3 %4 %5 %6 %7 +#call tecmake vc8 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7 +call tecmake vc8_64 relink %2 %3 %4 %5 %6 %7 +#call tecmake vc8_64 "USE_GTK=Yes" relink %2 %3 %4 %5 %6 %7 +goto end + +:end diff --git a/iup/tecmake_compact.mak b/iup/tecmake_compact.mak new file mode 100755 index 0000000..08e642e --- /dev/null +++ b/iup/tecmake_compact.mak @@ -0,0 +1,1172 @@ +#-------------------------------------------------------------------------# +#- Tecmake (Compact Version) -# +#- Generic Makefile to build applications and libraries at TeCGraf -# +#- The user makefile usually has the name "config.mak". -# +#-------------------------------------------------------------------------# + +# Tecmake Version +VERSION = 3.19 + +# First target +.PHONY: build +build: tecmake + + +#---------------------------------# +# System Variables Definitions + +# Base Defintions +TEC_SYSNAME:=$(shell uname -s) +TEC_SYSVERSION:=$(shell uname -r|cut -f1 -d.) +TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.) +TEC_SYSARCH:=$(shell uname -m) + +# Fixes +ifeq ($(TEC_SYSNAME), SunOS) + TEC_SYSARCH:=$(shell uname -p) +endif +ifeq ($(TEC_SYSNAME), IRIX) + TEC_SYSARCH:=$(shell uname -p) +endif +ifeq ($(TEC_SYSNAME), FreeBSD) + TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.|cut -f1 -d-) +endif +ifeq ($(TEC_SYSNAME), AIX) + TEC_SYSVERSION:=$(shell uname -v) + TEC_SYSMINOR:=$(shell uname -r) + TEC_SYSARCH:=ppc +endif +ifeq ($(TEC_SYSNAME), Darwin) + TEC_SYSARCH:=$(shell uname -p) +endif + +ifeq ($(TEC_SYSARCH), powerpc) + TEC_SYSARCH:=ppc +endif +ifeq ($(TEC_SYSARCH), i686) + TEC_SYSARCH:=x86 +endif +ifeq ($(TEC_SYSARCH), i386) + TEC_SYSARCH:=x86 +endif +ifeq ($(TEC_SYSARCH), x86_64) + TEC_SYSARCH:=x64 +endif + +# Compose +TEC_SYSRELEASE:=$(TEC_SYSVERSION).$(TEC_SYSMINOR) +TEC_UNAME:=$(TEC_SYSNAME)$(TEC_SYSVERSION)$(TEC_SYSMINOR) + +# Linux 2.4 and GCC 3.x +ifeq ($(TEC_UNAME), Linux24) + GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.) + ifeq ($(GCCVER), 3) + TEC_UNAME:=$(TEC_UNAME)g3 + endif +endif + +# Linux 2.6 and GCC 4.x +ifeq ($(TEC_UNAME), Linux26) + GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.) + ifeq ($(GCCVER), 4) + TEC_UNAME:=$(TEC_UNAME)g4 + endif +endif + +# Linux and PowerPC +ifeq ($(TEC_SYSNAME), Linux) + ifeq ($(TEC_SYSARCH), ppc) + TEC_UNAME:=$(TEC_UNAME)ppc + endif +endif + +# 64-bits Linux +ifeq ($(TEC_SYSARCH), x64) + BUILD_64=Yes + TEC_UNAME:=$(TEC_UNAME)_64 +endif + +ifeq ($(TEC_SYSARCH), ia64) + BUILD_64=Yes + TEC_UNAME:=$(TEC_UNAME)_ia64 +endif + +# Solaris and Intel +ifeq ($(TEC_SYSNAME), SunOS) + ifeq ($(TEC_SYSARCH) , x86) + TEC_UNAME:=$(TEC_UNAME)x86 + endif +endif + +# Darwin and Intel +ifeq ($(TEC_SYSNAME), Darwin) +ifeq ($(TEC_SYSARCH), x86) + TEC_UNAME:=$(TEC_UNAME)x86 + endif +endif + +# System Info +.PHONY: sysinfo +sysinfo: + @echo ''; echo 'Tecmake - System Info' + @echo 'TEC_SYSNAME = $(TEC_SYSNAME)' + @echo 'TEC_SYSVERSION = $(TEC_SYSVERSION)' + @echo 'TEC_SYSMINOR = $(TEC_SYSMINOR)' + @echo 'TEC_SYSARCH = $(TEC_SYSARCH)' + @echo 'TEC_UNAME = $(TEC_UNAME)'; echo '' + +#---------------------------------# +# Directories Definitions +PROJDIR = .. +SRCDIR = . +OBJROOT = $(PROJDIR)/obj + + +#---------------------------------# +# Byte Order and Word Size + +ifneq ($(findstring x86, $(TEC_SYSARCH)), ) + TEC_BYTEORDER = TEC_LITTLEENDIAN +else +ifeq ($(TEC_SYSARCH), arm) + TEC_BYTEORDER = TEC_LITTLEENDIAN +else + TEC_BYTEORDER = TEC_LITTLEENDIAN +endif +endif + +ifeq ($(TEC_SYSARCH), x64) + TEC_WORDSIZE = TEC_64 +else +ifdef BUILD_64 + TEC_WORDSIZE = TEC_64 +else + TEC_WORDSIZE = TEC_32 +endif +endif + +# Itanium Exception +ifeq ($(TEC_SYSARCH), ia64) + TEC_BYTEORDER = TEC_LITTLEENDIAN + TEC_WORDSIZE = TEC_64 +endif + + +#---------------------------------# +# Compilation Flags +STDFLAGS := -Wall +STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_SYSNAME)=$(TEC_SYSRELEASE) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15 +STDINCS := +OPTFLAGS := -O3 +STDLFLAGS := r +DEBUGFLAGS := -g +STDLDFLAGS := -shared +DLIBEXT := so + +ifneq ($(findstring Linux, $(TEC_UNAME)), ) + GTK_DEFAULT := +endif +ifneq ($(findstring Darwin, $(TEC_UNAME)), ) + GTK_DEFAULT := +endif +ifneq ($(findstring FreeBSD, $(TEC_UNAME)), ) + GTK_DEFAULT := +endif +ifneq ($(findstring Linux24, $(TEC_UNAME)), ) + GTK_DEFAULT := +endif + +#---------------------------------# +# Build Tools + +CC := $(TEC_TOOLCHAIN)gcc +CPPC := $(TEC_TOOLCHAIN)g++ +FF := $(TEC_TOOLCHAIN)g77 +RANLIB := $(TEC_TOOLCHAIN)ranlib +AR := $(TEC_TOOLCHAIN)ar +DEBUGGER := $(TEC_TOOLCHAIN)gdb +RCC := $(TEC_TOOLCHAIN)windres +LD := $(TEC_TOOLCHAIN)gcc + +ifeq ($(TEC_UNAME), gcc2) + ifdef USE_GCC_2 + CC := $(CC)-2 + CPPC := $(CPPC)-2 + FF := $(FF)-2 + endif +endif + + +#---------------------------------# +# User Configuration File + +MAKENAME = config.mak + +ifdef MF + MAKENAME = $(MF).mak +endif + +################### +include $(MAKENAME) +################### + + +#---------------------------------# +# Definitions of public variables + +ifdef LIBNAME + TARGETNAME = $(LIBNAME) + MAKETYPE = LIB +else + TARGETNAME = $(APPNAME) + MAKETYPE = APP +endif + +ifndef TARGETNAME + $(error LIBNAME nor APPNAME defined in $(MAKENAME)) +endif + +PROJNAME ?= $(TARGETNAME) + +DEPEND := $(TARGETNAME).dep + +ifdef DEPENDDIR + DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME) +endif + +SRCLUADIR ?= $(SRCDIR) +LOHDIR ?= $(SRCLUADIR) + +ifeq ($(MAKETYPE), APP) + TARGETROOT ?= $(PROJDIR)/bin +else + TARGETROOT ?= $(PROJDIR)/lib +endif + +ifneq ($(PROJNAME), $(TARGETNAME)) + OBJROOT := $(OBJROOT)/$(TARGETNAME) +endif + +ifdef DBG + STDFLAGS += $(DEBUGFLAGS) + STDDEFS += -DDEBUG +else + STDDEFS += -DNDEBUG + ifdef OPT + STDFLAGS += $(OPTFLAGS) + ifeq ($(findstring gcc, $(TEC_UNAME)), ) + STRIP ?= Yes + endif + endif +endif + +ifdef BUILD_64 + ifneq ($(findstring SunOS, $(TEC_UNAME)), ) + USE_CC = Yes + BUILD_64_DIR = Yes + endif + ifneq ($(findstring AIX, $(TEC_UNAME)), ) + USE_CC = Yes + BUILD_64_DIR = Yes + endif + ifneq ($(findstring IRIX, $(TEC_UNAME)), ) + USE_CC = Yes + BUILD_64_DIR = Yes + endif +endif + +ifdef USE_CC + CC := cc + CPPC := CC + STDFLAGS = + ifdef USE_CC_DIR + TEC_UNAME := $(TEC_UNAME)cc + endif +endif + +ifdef BUILD_64 + ifdef BUILD_64_DIR + TEC_UNAME := $(TEC_UNAME)_64 + endif +endif + +ifneq ($(findstring gcc, $(TEC_UNAME)), ) + ifeq ($(MAKETYPE), APP) + TEC_UNAME_DIR ?= $(TEC_SYSNAME) + endif +endif + +TEC_UNAME_DIR ?= $(TEC_UNAME) +ifdef DBG + ifdef DBG_DIR + TEC_UNAME_DIR := $(TEC_UNAME_DIR)d + endif +endif + +OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR) +TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR) + +# Change linker if any C++ source +ifndef LINKER + ifneq "$(findstring .cpp, $(SRC))" "" + LINKER := $(CPPC) + else + LINKER := $(CC) + endif +endif + + +#---------------------------------# +# LO and LOH Suffix + +ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN) + ifeq ($(TEC_WORDSIZE), TEC_64) + LO_SUFFIX ?= _be64 + else + LO_SUFFIX ?= _be32 + endif +else + ifeq ($(TEC_WORDSIZE), TEC_64) + LO_SUFFIX ?= _le64 + else + LO_SUFFIX ?= + endif +endif + + +#---------------------------------# +# Platform specific variables + +# Definicoes para o X11 +X11_LIBS := Xmu Xt Xext X11 +#X11_LIB := +#X11_INC := #include + +# Definicoes para o OpenGL +OPENGL_LIBS := GLU GL +#OPENGL_LIB := +#OPENGL_INC := #include and possibly +MOTIFGL_LIB := GLw #include + +# Definicoes para o Motif +#MOTIF_LIB := +#MOTIF_INC := #include + +# Definicoes para o GLUT +#GLUT_LIB := +#GLUT_INC := + + +ifneq ($(findstring cygw, $(TEC_UNAME)), ) + NO_DYNAMIC ?= Yes + ifdef BUILD_64 + X11_LIB := /usr/X11R6/lib64 + else + X11_LIB := /usr/X11R6/lib + endif + X11_INC := /usr/X11R6/include + MOTIFGL_LIB := +endif + +ifneq ($(findstring Linux, $(TEC_UNAME)), ) + ifdef BUILD_64 + ifeq ($(TEC_SYSARCH), ia64) + STDFLAGS += -fPIC + X11_LIB := /usr/X11R6/lib + else + STDFLAGS += -m64 -fPIC + X11_LIB := /usr/X11R6/lib64 + endif + else + X11_LIB := /usr/X11R6/lib + endif + X11_INC := /usr/X11R6/include + MOTIFGL_LIB := +endif + +ifneq ($(findstring IRIX, $(TEC_UNAME)), ) # any IRIX + LD = ld + STDLDFLAGS := -elf -shared -rdata_shared -soname lib$(TARGETNAME).so + RANLIB := /bin/true + X11_LIBS := Xmu Xt X11 + ifdef BUILD_64 + ifdef USE_CC + STDFLAGS += -64 -KPIC + STDLDFLAGS += -64 + LINKER += -64 + endif + X11_LIB := /usr/lib64 + MOTIF_LIB := /usr/Motif-2.1/lib64 + else + X11_LIB := /usr/lib32 + MOTIF_LIB := /usr/Motif-2.1/lib32 + endif + MOTIF_INC = /usr/Motif-2.1/include +endif + +ifneq ($(findstring AIX, $(TEC_UNAME)), ) + NO_DYNAMIC ?= Yes + ifdef BUILD_64 + ifdef USE_CC + STDFLAGS += -q64 # to compilers C and C++ + STDLFLAGS := -X64 $(STDLFLAGS) # to librarian + STDLDFLAGS += -64 + LINKER += -q64 # to linker + endif + endif +endif + +ifneq ($(findstring HP-UX, $(TEC_UNAME)), ) + NO_DYNAMIC ?= Yes + MOTIF_INC := /usr/include/Motif2.1 + X11_LIBS := Xt Xext X11 + OPENGL_LIB := /opt/graphics/OpenGL/lib + OPENGL_INC := /opt/graphics/OpenGL/include + STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15 + CC := aCC + CPPC := aCC + LINKER := aCC +endif + +ifneq ($(findstring SunOS, $(TEC_UNAME)), ) + LD = ld + STDLDFLAGS := -G + X11_INC := /usr/openwin/share/include + X11_LIB := /usr/openwin/lib + MOTIF_INC := /usr/dt/share/include + MOTIF_LIB := /usr/dt/lib + OPENGL_INC := /usr/openwin/share/include/X11 + GLUT_LIB := /usr/local/glut-3.7/lib/glut + GLUT_INC := /usr/local/glut-3.7/include + ifdef BUILD_64 + ifdef USE_CC + STDFLAGS += -xarch=v9 -KPIC + # have to force these PATHs because of a conflict with standard PATHs + STDLDFLAGS += -64 -L/usr/lib/64 -L/usr/ucblib/sparcv9 + LINKER += -xarch=v9 + endif + endif +endif + +ifneq ($(findstring Darwin, $(TEC_UNAME)), ) + X11_LIBS := Xmu Xp Xt Xext X11 + X11_LIB := /usr/X11R6/lib + X11_INC := /usr/X11R6/include + MOTIF_INC := /usr/OpenMotif/include + MOTIF_LIB := /usr/OpenMotif/lib + ifdef BUILD_DYLIB + STDLDFLAGS := -dynamiclib -install_name lib$(TARGETNAME).dylib + DLIBEXT := dylib + else + STDLDFLAGS := -bundle -undefined dynamic_lookup + endif +endif + +ifneq ($(findstring FreeBSD, $(TEC_UNAME)), ) + X11_LIB := /usr/X11R6/lib + X11_INC := /usr/X11R6/include +endif + + +################################ +# Allows an extra configuration file. +ifdef EXTRA_CONFIG +include $(EXTRA_CONFIG) +endif +################################ + + +#---------------------------------# +# Tecgraf Libraries Location +TECTOOLS_HOME ?= ../.. + +IUP ?= $(TECTOOLS_HOME)/iup +CD ?= $(TECTOOLS_HOME)/cd +IM ?= $(TECTOOLS_HOME)/im +LUA ?= $(TECTOOLS_HOME)/lua +LUA51 ?= $(TECTOOLS_HOME)/lua5.1 + + +#---------------------------------# +# Pre-defined libraries + +# Library order: +# user + iupcd + cd + iup + motif + X +# Library path order is the oposite + +USE_MOTIF = Yes + +ifdef USE_LUA + LUASUFX := + LIBLUASUFX := 3 +endif + +ifdef USE_LUA4 + LUASUFX := 4 + LIBLUASUFX := 4 + override USE_LUA = Yes + LUA := $(LUA4) +endif + +ifdef USE_LUA5 + LUASUFX := 5 + LIBLUASUFX := 5 + override USE_LUA = Yes + LUA := $(LUA5) +endif + +ifdef USE_LUA50 + LUASUFX := 50 + LIBLUASUFX := 5 + override USE_LUA = Yes + LUA := $(LUA50) + NO_LUALIB := Yes +endif + +ifdef USE_LUA51 + LUASUFX := 5.1 + LIBLUASUFX := 51 + override USE_LUA = Yes + LUA := $(LUA51) + NO_LUALIB := Yes +endif + +ifdef USE_IUP3 + override USE_IUP = Yes +endif + +ifdef USE_IUP3BETA + IUP := $(IUP)3 +endif + +ifdef USE_IUPBETA + IUP := $(IUP)/beta +endif + +ifdef USE_CDBETA + CD := $(CD)/beta +endif + +ifdef USE_IMBETA + IM := $(IM)/beta +endif + +ifdef USE_GLUT + override USE_OPENGL = Yes +endif + +ifdef USE_IUPCONTROLS + override USE_CD = Yes + override USE_IUP = Yes + ifdef USE_IUPLUA + ifdef USE_STATIC + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupluacontrols$(LIBLUASUFX).a + else + LIBS += iupluacontrols$(LIBLUASUFX) + endif + override USE_CDLUA = Yes + endif + ifdef USE_STATIC + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupcontrols.a + else + LIBS += iupcontrols + endif +endif + +ifdef USE_IMLUA + override USE_IM = Yes + ifdef USE_STATIC + SLIB += $(IM)/lib/$(TEC_UNAME)/libimlua$(LIBLUASUFX).a + else + LIBS += imlua$(LIBLUASUFX) + endif +endif + +ifdef USE_CDLUA + override USE_CD = Yes + ifdef USE_STATIC + ifdef USE_IUP + ifdef USE_OLDNAMES + SLIB += $(CD)/lib/$(TEC_UNAME)/libcdluaiup$(LIBLUASUFX).a + endif + endif + SLIB += $(CD)/lib/$(TEC_UNAME)/libcdlua$(LIBLUASUFX).a + else + ifdef USE_IUP + ifdef USE_OLDNAMES + LIBS += cdluaiup$(LIBLUASUFX) + endif + endif + LIBS += cdlua$(LIBLUASUFX) + endif +endif + +ifdef USE_IUPLUA + override USE_IUP = Yes + ifdef USE_STATIC + ifdef USE_CD + ifndef USE_OLDNAMES + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupluacd$(LIBLUASUFX).a + endif + endif + ifdef USE_OPENGL + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupluagl$(LIBLUASUFX).a + endif + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiuplua$(LIBLUASUFX).a + else + ifdef USE_CD + ifndef USE_OLDNAMES + LIBS += iupluacd$(LIBLUASUFX) + endif + endif + ifdef USE_OPENGL + LIBS += iupluagl$(LIBLUASUFX) + endif + LIBS += iuplua$(LIBLUASUFX) + endif +endif + +ifdef USE_LUA + LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME) + ifdef USE_STATIC + ifndef NO_LUALIB + SLIB += $(LUA_LIB)/liblualib$(LUASUFX).a + endif + SLIB += $(LUA_LIB)/liblua$(LUASUFX).a + else + ifndef NO_LUALIB + LIBS += lualib$(LUASUFX) + endif + ifndef NO_LUALINK + LIBS += lua$(LUASUFX) + LDIR += $(LUA_LIB) + endif + endif + + LUA_INC ?= $(LUA)/include + INCLUDES += $(LUA_INC) + + LUA_BIN ?= $(LUA)/bin/$(TEC_UNAME) + BIN2C := $(LUA_BIN)/bin2c$(LUASUFX) + LUAC := $(LUA_BIN)/luac$(LUASUFX) + LUABIN := $(LUA_BIN)/lua$(LUASUFX) +endif + +ifdef USE_IUP + IUPSUFX := + ifdef USE_IUP3 + ifdef GTK_DEFAULT + ifdef USE_MOTIF + IUPSUFX := mot + else + override USE_GTK = Yes + endif + else + ifdef USE_GTK + IUPSUFX := gtk + else + override USE_MOTIF = Yes + endif + endif + else + override USE_MOTIF = Yes + endif + ifdef USE_STATIC + ifdef USE_CD + ifndef USE_OLDNAMES + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupcd.a + endif + endif + ifdef USE_OPENGL + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupgl.a + endif + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiup$(IUPSUFX).a + else + ifdef USE_CD + ifndef USE_OLDNAMES + LIBS += iupcd + endif + endif + ifdef USE_OPENGL + LIBS += iupgl + endif + LIBS += iup$(IUPSUFX) + LDIR += $(IUP)/lib/$(TEC_UNAME) + endif + INCLUDES += $(IUP)/include +endif + +ifdef USE_CD + override USE_X11 = Yes + ifdef USE_STATIC + ifdef USE_IUP + ifdef USE_OLDNAMES + SLIB += $(CD)/lib/$(TEC_UNAME)/libcdiup.a + endif + endif + ifdef USE_XRENDER + ifdef USE_OLDNAMES + SLIB += $(CD)/lib/$(TEC_UNAME)/libcdxrender.a + else + SLIB += $(CD)/lib/$(TEC_UNAME)/libcdcontextplus.a + endif + endif + SLIB += $(CD)/lib/$(TEC_UNAME)/libcd.a + ifdef USE_XRENDER + LIBS += Xrender Xft + else + ifndef USE_GTK + ifndef USE_OLDNAMES + # Freetype is included in GTK +# SLIB += $(CD)/lib/$(TEC_UNAME)/libfreetype.a + endif + endif + endif + else + ifdef USE_XRENDER + ifdef USE_OLDNAMES + LIBS += cdxrender + else + LIBS += cdcontextplus + endif + endif + LIBS += cd + LDIR += $(CD)/lib/$(TEC_UNAME) + ifdef USE_XRENDER + LIBS += Xrender Xft + else + ifndef USE_GTK + ifndef USE_OLDNAMES + # Freetype is included in GTK + LIBS += freetype + endif + endif + endif + endif + INCLUDES += $(CD)/include +endif + +ifdef USE_IM + ifdef USE_STATIC + SLIB += $(IM)/lib/$(TEC_UNAME)/libim.a + else + LIBS += im + LDIR += $(IM)/lib/$(TEC_UNAME) + endif + INCLUDES += $(IM)/include +endif + +# All except gcc in Windows (Cygwin) +ifeq ($(findstring gcc, $(TEC_UNAME)), ) + +ifdef USE_GLUT + LIBS += glut + LDIR += $(GLUT_LIB) + STDINCS += $(GLUT_INC) +endif + +ifdef USE_OPENGL + override USE_X11 = Yes + ifdef USE_MOTIF + LIBS += $(MOTIFGL_LIB) + endif + LIBS += $(OPENGL_LIBS) + LDIR += $(OPENGL_LIB) + STDINCS += $(OPENGL_INC) +endif + +ifdef USE_MOTIF + override USE_X11 = Yes + LIBS += Xm + LDIR += $(MOTIF_LIB) + STDINCS += $(MOTIF_INC) + ifneq ($(findstring Linux, $(TEC_UNAME)), ) + X11_LIBS := Xpm $(X11_LIBS) + endif + ifneq ($(findstring cygw, $(TEC_UNAME)), ) + X11_LIBS := Xpm $(X11_LIBS) + endif +endif + +ifdef USE_GTK +# ifneq ($(findstring Darwin, $(TEC_UNAME)), ) +# STDINCS += /Library/Frameworks/Gtk.framework/Headers +# STDINCS += /Library/Frameworks/GLib.framework/Headers +# STDINCS += /Library/Frameworks/Cairo.framework/Headers +# LFLAGS += -framework Gtk +# else + ifneq ($(findstring Darwin, $(TEC_UNAME)), ) + GTK_BASE := /sw + LDIR += /sw/lib + LIBS += freetype + else + GTK_BASE := /usr + endif + override USE_X11 = Yes + LIBS += gtk-x11-2.0 gdk-x11-2.0 gdk_pixbuf-2.0 pango-1.0 pangox-1.0 gobject-2.0 gmodule-2.0 glib-2.0 + STDINCS += $(GTK_BASE)/include/atk-1.0 $(GTK_BASE)/include/gtk-2.0 $(GTK_BASE)/include/cairo $(GTK_BASE)/include/pango-1.0 $(GTK_BASE)/include/glib-2.0 + ifeq ($(TEC_SYSARCH), x64) + STDINCS += $(GTK_BASE)/lib64/glib-2.0/include $(GTK_BASE)/lib64/gtk-2.0/include + else + ifeq ($(TEC_SYSARCH), ia64) + STDINCS += $(GTK_BASE)/lib64/glib-2.0/include $(GTK_BASE)/lib64/gtk-2.0/include + else + STDINCS += $(GTK_BASE)/lib/glib-2.0/include $(GTK_BASE)/lib/gtk-2.0/include + endif + endif + ifneq ($(findstring FreeBSD, $(TEC_UNAME)), ) + STDINCS += /lib/X11R6/include/gtk-2.0 + endif +# endif +endif + +ifdef USE_QT + override USE_X11 = Yes + LIBS += QtGui QtCore + QT_BASE_INC := /usr/include/qt4 + STDINCS += $(QT_BASE_INC) $(QT_BASE_INC)/QtCore $(QT_BASE_INC)/QtGui + STDDEFS += -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT +endif + +ifdef USE_X11 + LIBS += $(X11_LIBS) + LDIR += $(X11_LIB) + STDINCS += $(X11_INC) +endif + +LIBS += m + +else + # gcc in Windows + NO_DYNAMIC ?= Yes + STDDEFS += -DWIN32 + + ifdef USE_NOCYGWIN + STDFLAGS += -mno-cygwin + endif + + ifdef USE_GLUT + LIBS += glut32 + endif + + ifdef USE_OPENGL + LIBS += opengl32 glu32 glaux + endif + + LIBS += gdi32 winspool comdlg32 comctl32 ole32 + + ifdef USE_GTK + LIBS += gtk-win32-2.0 gdk-win32-2.0 gdk_pixbuf-2.0 pango-1.0 pangowin32-1.0 gobject-2.0 gmodule-2.0 glib-2.0 + #LDIR += $(GTK)/lib + GTK_INC = /usr + STDINCS += $(GTK_INC)/include/atk-1.0 $(GTK_INC)/include/gtk-2.0 $(GTK_INC)/include/cairo $(GTK_INC)/include/pango-1.0 $(GTK_INC)/include/glib-2.0 $(GTK_INC)/lib/glib-2.0/include $(GTK_INC)/lib/gtk-2.0/include + endif + + APPTYPE ?= windows + + ifeq ($(APPTYPE), windows) + LFLAGS += -mwindows + + ifdef USE_NOCYGWIN + LFLAGS += -mno-cygwin + endif + endif +endif + + +#---------------------------------# +# Building compilation flags that are sets + +INCLUDES := $(addprefix -I, $(INCLUDES)) +STDINCS := $(addprefix -I, $(STDINCS)) +EXTRAINCS := $(addprefix -I, $(EXTRAINCS)) +DEFINES := $(addprefix -D, $(DEFINES)) + +LIBS := $(addprefix -l, $(LIBS)) +ifdef LDIR + LDIR := $(addprefix -L, $(LDIR)) +endif + + +#---------------------------------# +# Definitions of private variables + +# Library flags for application and dynamic library linker +LFLAGS += $(LDIR) $(LIBS) +# C compiler flags +CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS) +# C++ compiler flags +CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS) + +# Sources with relative path +SOURCES := $(addprefix $(SRCDIR)/, $(SRC)) + +# Target for applications or libraries +ifeq ($(MAKETYPE), APP) + TARGET := $(TARGETDIR)/$(TARGETNAME) +else + ifeq ($(NO_DYNAMIC), Yes) + TARGET := $(TARGETDIR)/lib$(TARGETNAME).a + else + TARGET := $(TARGETDIR)/lib$(TARGETNAME).a $(TARGETDIR)/lib$(TARGETNAME).$(DLIBEXT) + endif +endif + +# OBJ: list of .o, without path +# OBJS: list of .o with relative path +OBJ = $(notdir $(SRC)) +OBJ := $(OBJ:.c=.o) +OBJ := $(OBJ:.cpp=.o) +OBJ := $(OBJ:.cxx=.o) +OBJ := $(OBJ:.cc=.o) +OBJ := $(OBJ:.f=.o) +OBJ := $(OBJ:.for=.o) +OBJ := $(OBJ:.rc=.ro) +OBJS = $(addprefix $(OBJDIR)/, $(OBJ)) + +# LOH: list of .loh, without path +# LOHS: list of .loh, with relative path +LO = $(notdir $(SRCLUA)) +LO := $(LO:.lua=$(LO_SUFFIX).lo) +LOS = $(addprefix $(OBJROOT)/, $(LO)) + +LOH = $(notdir $(SRCLUA)) +LOH := $(LOH:.lua=$(LO_SUFFIX).loh) +LOHS = $(addprefix $(LOHDIR)/, $(LOH)) + +# Construct VPATH variable +P-SRC = $(dir $(SRC)) +P-SRC += $(dir $(SRCLUA)) +VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir))) + + +#---------------------------------# +# Main Rule - Build Everything that it is necessary + +.PHONY: tecmake +ifeq ($(MAKETYPE), APP) + tecmake: print-start directories application scripts +else + ifeq ($(NO_DYNAMIC), Yes) + tecmake: print-start directories static-lib + else + tecmake: print-start directories static-lib dynamic-lib + endif +endif + +.PHONY: print-start +print-start: + @echo ''; echo 'Tecmake - Starting [ $(TARGETNAME):$(TEC_UNAME) ]' + + +#---------------------------------# +# Dynamic Library Build + +.PHONY: dynamic-lib +dynamic-lib: $(TARGETDIR)/lib$(TARGETNAME).$(DLIBEXT) + +$(TARGETDIR)/lib$(TARGETNAME).$(DLIBEXT) : $(LOHS) $(OBJS) $(EXTRADEPS) + $(LD) $(STDLDFLAGS) -o $@ $(OBJS) $(SLIB) $(LFLAGS) + @echo 'Tecmake - Dynamic Library ($@) Done.'; echo '' + + +#---------------------------------# +# Static Library Build + +.PHONY: static-lib +static-lib: $(TARGETDIR)/lib$(TARGETNAME).a + +$(TARGETDIR)/lib$(TARGETNAME).a : $(LOHS) $(OBJS) $(EXTRADEPS) + $(AR) $(STDLFLAGS) $@ $(OBJS) $(SLIB) $(LCFLAGS) + -$(RANLIB) $@ + @echo 'Tecmake - Static Library ($@) Done.'; echo '' + + +#---------------------------------# +# Application Build + +.PHONY: application +application: $(TARGETDIR)/$(TARGETNAME) + +$(TARGETDIR)/$(TARGETNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) + $(LINKER) -o $@ $(OBJS) $(SLIB) $(LFLAGS) + @if [ ! -z "$(STRIP)" ]; then \ + echo "Striping debug information" ;\ + strip $@ ;\ + fi + @echo 'Tecmake - Application ($@) Done.'; echo '' + + +#---------------------------------# +# Application Scripts + +# Script name +SRELEASE := $(SRCDIR)/$(TARGETNAME) + +.PHONY: scripts +ifdef NO_SCRIPTS + scripts: ; +else + scripts: $(SRELEASE) ; +endif + +$(SRELEASE): $(MAKENAME) + @echo 'Building script $(@F)' + @echo "#!/bin/csh" > $@ + @echo "# Script generated automatically by tecmake v$(VERSION)" >> $@ + @echo "# Remove the comment bellow to set the LD_LIBRARY_PATH if needed." >> $@ + @echo '#setenv LD_LIBRARY_PATH $(MYLIB1)/lib/$${TEC_UNAME}:$(MYLIB2)/lib/$${TEC_UNAME}:$$LD_LIBRARY_PATH' >> $@ + @echo 'if ( -r app.env ) source app.env' >> $@ + @echo 'exec $(TARGETROOT)/$$TEC_UNAME/$(TARGETNAME) $$*' >> $@ + @chmod a+x $@ + + +#---------------------------------# +# Directories Creation + +.PHONY: directories +directories: $(OBJDIR) $(TARGETDIR) $(EXTRADIR) $(LOHDIR) + +$(OBJDIR) $(TARGETDIR): + if [ ! -d $@ ] ; then mkdir -p $@ ; fi + +ifdef EXTRADIR + $(EXTRADIR): + if [ ! -d $@ ] ; then mkdir -p $@ ; fi +else + $(EXTRADIR): ; +endif + +ifdef LOHDIR + $(LOHDIR): + if [ ! -d $@ ] ; then mkdir -p $@ ; fi +else + $(LOHDIR): ; +endif + + +#---------------------------------# +# Compilation Rules + +$(OBJDIR)/%.o: $(SRCDIR)/%.c + @echo Compiling $( $@ + +$(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua + @echo Compiling $( $(DEPEND) + @which $(CPPC) 2> /dev/null 1>&2 ;\ + if [ $$? -eq 0 ]; then \ + echo "Building dependencies... (can be slow)" ;\ + $(CPPC) $(INCLUDES) $(DEFINES) $(STDDEFS) -MM $(SOURCES) | \ + sed -e '1,$$s/^\([^ ]\)/$$(OBJDIR)\/\1/' > $(DEPEND) ;\ + else \ + echo "" ;\ + echo "$(CPPC) not found. Dependencies can not be built." ;\ + echo "Must set USE_NODEPEND=Yes." ;\ + echo "" ;\ + exit 1 ;\ + fi + endif + +################### +ifndef USE_NODEPEND +include $(DEPEND) +endif +################### + + +#---------------------------------# +# Management Rules + +# make clean-extra +# Remove extra files +.PHONY: clean-extra +clean-extra: + rm -f $(DEPEND) $(SRELEASE) so_locations + +# make clean-lohs +# Remove Lua object inclusion files +.PHONY: clean-lohs +clean-lohs: + rm -f $(LOS) $(LOHS) + +# make clean-obj +# Remove object files +.PHONY: clean-obj +clean-obj: + rm -f $(OBJS) + +# make clean-target +# Remove target +.PHONY: clean-target +clean-target: + rm -f $(TARGET) + +# make clean +# Remove target and object files +.PHONY: clean +clean: clean-target clean-obj + +# make rebuild +# Remove symbols from executables +.PHONY: strip +strip: + test -r $(TARGETDIR)/$(TARGETNAME) && strip $(TARGETDIR)/$(TARGETNAME) + +# make rebuild +# Rebuild target and object files +.PHONY: rebuild +rebuild: clean-extra clean-lohs clean-obj clean-target tecmake + +# make relink +# Rebuild target without rebuilding object files +.PHONY: relink +relink: clean-target tecmake + +.PHONY: version +version: + @echo "Tecmake Compact Version $(VERSION)" + +#---------------------------------# diff --git a/iup/test/bigtest.c b/iup/test/bigtest.c new file mode 100755 index 0000000..713e752 --- /dev/null +++ b/iup/test/bigtest.c @@ -0,0 +1,194 @@ +#if 0 +/* To check for memory leaks */ +#define VLD_MAX_DATA_DUMP 80 +#include +#endif + +#include +#include +#include "iup.h" +#include "iupcontrols.h" +#include "iupkey.h" + +/* Must define BIG_TEST on the Project and include in the build all test files */ +#ifdef BIG_TEST +void ButtonTest(void); +void CanvasScrollbarTest(void); +void CanvasTest(void); +void CanvasCDDBufferTest(void); +void CanvasCDSimpleTest(void); +void DialogTest(void); +void FrameTest(void); +void TabsTest(void); +void SysInfoTest(void); +void GetColorTest(void); +#ifdef USE_OPENGL +void GLCanvasTest(void); +void GLCanvasCubeTest(void); +#endif +void HboxTest(void); +void IdleTest(void); +void LabelTest(void); +void ListTest(void); +void MatrixTest(void); +void MatrixCbModeTest(void); +void MatrixCbsTest(void); +void MdiTest(void); +void VboxTest(void); +void MenuTest(void); +void ColorBrowserTest(void); +void ColorbarTest(void); +void CellsNumberingTest(void); +void DialTest(void); +void GaugeTest(void); +void CellsDegradeTest(void); +void CellsCheckboardTest(void); +void ValTest(void); +void TreeTest(void); +void TrayTest(void); +void ToggleTest(void); +void TimerTest(void); +void TextSpinTest(void); +void TextTest(void); +void SpinTest(void); +void SampleTest(void); +void ProgressbarTest(void); +void PreDialogsTest(void); +#ifdef PPLOT_TEST +void PPlotTest(void); +#endif +void GetParamTest(void); +void ConfTest(void); +void ZboxTest(void); +void ScanfTest(void); +void SboxTest(void); +void ClipboardTest(void); + +void HelpTest(void) +{ + IupHelp("http://www.tecgraf.puc-rio.br/iup"); + //IupHelp("..\\html\\index.html"); +} + +typedef struct _TestItems{ + char* title; + void (*func)(void); +}TestItems; + +static TestItems test_list[] = { + {"Button", ButtonTest}, + {"Canvas", CanvasTest}, + {"CanvasCDSimpleTest", CanvasCDSimpleTest}, + {"CanvasCDDBuffer", CanvasCDDBufferTest}, + {"CanvasScrollbar", CanvasScrollbarTest}, + {"CellsCheckboard", CellsCheckboardTest}, + {"CellsDegrade", CellsDegradeTest}, + {"CellsNumbering", CellsNumberingTest}, + {"Class Conference", ConfTest}, + {"Clipboard", ClipboardTest}, + {"ColorBrowser", ColorBrowserTest}, + {"Colorbar", ColorbarTest}, + {"Dial", DialTest}, + {"Dialog", DialogTest}, + {"Frame", FrameTest}, +#ifdef USE_OPENGL + {"GLCanvas", GLCanvasTest}, + {"GLCanvasCube", GLCanvasCubeTest}, +#endif + {"Gauge", GaugeTest}, + {"GetColor", GetColorTest}, + {"GetParam", GetParamTest}, + {"Help", HelpTest}, + {"Hbox", HboxTest}, + {"Idle", IdleTest}, + {"Label", LabelTest}, + {"List", ListTest}, + {"Matrix", MatrixTest}, + {"MatrixCbMode", MatrixCbModeTest}, + {"MatrixCbs", MatrixCbsTest}, + {"Mdi", MdiTest}, + {"Menu", MenuTest}, +#ifdef PPLOT_TEST + {"PPlot", PPlotTest}, +#endif + {"PreDialogs", PreDialogsTest}, + {"Progressbar", ProgressbarTest}, + {"Sample", SampleTest}, + {"Sbox", SboxTest}, + {"Scanf", ScanfTest}, + {"Spin", SpinTest}, + {"SysInfo", SysInfoTest}, + {"Tabs", TabsTest}, + {"Text", TextTest}, + {"TextSpin", TextSpinTest}, + {"Timer", TimerTest}, + {"Toggle", ToggleTest}, + {"Tray", TrayTest}, + {"Tree", TreeTest}, + {"Val", ValTest}, + {"Vbox", VboxTest}, + {"Zbox", ZboxTest}, +}; + +static int k_enter_cb(Ihandle*ih) +{ + int pos = IupGetInt(ih, "VALUE"); + if (pos > 0) + test_list[pos-1].func(); + return IUP_DEFAULT; +} + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + (void)pressed; + if (but==IUP_BUTTON1 && iup_isdouble(status)) + { + int pos = IupConvertXYToPos(ih, x, y); + test_list[pos-1].func(); + return IUP_IGNORE; + } + return IUP_DEFAULT; +} + +static int close_cb(Ihandle *ih) +{ + (void)ih; + return IUP_CLOSE; +} + +int main(int argc, char* argv[]) +{ + int i, count = sizeof(test_list)/sizeof(TestItems); + char str[50]; + Ihandle *dlg, *list; + + IupOpen(&argc, &argv); + IupControlsOpen(); +// IupOldValOpen(); +// IupOldTabsOpen(); + + dlg = IupDialog(IupVbox(list = IupList(NULL), NULL)); + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupSetAttribute(dlg, "TITLE", "IupTests"); + IupSetCallback(dlg, "CLOSE_CB", close_cb); + + IupSetAttribute(list, "VISIBLELINES", "15"); + IupSetAttribute(list, "EXPAND", "YES"); + IupSetCallback(list, "BUTTON_CB", (Icallback)button_cb); + IupSetCallback(list, "K_CR", k_enter_cb); + + for (i=0; i +#include +#include "iup.h" +#include "iupkey.h" + +#define TEST_IMAGE_SIZE 20 + +static Ihandle* load_image_FileSave(void) +{ + unsigned char imgdata[] = { + 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 183, 182, 245, 255, 183, 182, 245, 255, 179, 178, 243, 255, 174, 173, 241, 255, 168, 167, 238, 255, 162, 161, 234, 255, 155, 154, 231, 255, 148, 147, 228, 255, 143, 142, 224, 255, 136, 135, 221, 255, 129, 128, 218, 255, 123, 122, 214, 255, 117, 116, 211, 255, 112, 111, 209, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 179, 178, 243, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 75, 88, 190, 255, 89, 88, 176, 255, 89, 88, 176, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 173, 172, 240, 255, 190, 189, 255, 255, 138, 137, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 63, 82, 184, 255, 51, 51, 103, 255, 86, 85, 170, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 167, 166, 237, 255, 190, 189, 255, 255, 129, 128, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 52, 77, 179, 255, 122, 121, 223, 255, 83, 82, 164, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 159, 158, 233, 255, 190, 189, 255, 255, 119, 118, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 40, 71, 173, 255, 114, 113, 215, 255, 80, 79, 159, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 152, 151, 229, 255, 190, 189, 255, 255, 110, 109, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 28, 65, 167, 255, 103, 103, 204, 255, 77, 77, 154, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 146, 145, 226, 255, 190, 189, 255, 255, 103, 102, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 189, 202, 225, 255, 17, 59, 161, 255, 92, 93, 194, 255, 74, 74, 148, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 139, 138, 223, 255, 188, 187, 255, 255, 183, 182, 255, 255, 96, 99, 201, 255, 86, 94, 196, 255, 75, 88, 190, 255, 63, 82, 184, 255, 52, 77, 179, 255, 40, 71, 173, 255, 28, 65, 167, 255, 17, 59, 161, 255, 92, 93, 193, 255, 84, 86, 186, 255, 71, 71, 143, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 132, 131, 219, 255, 180, 179, 255, 255, 174, 173, 255, 255, 164, 163, 252, 255, 143, 142, 244, 255, 135, 134, 236, 255, 129, 128, 230, 255, 122, 121, 223, 255, 114, 113, 215, 255, 108, 107, 209, 255, 92, 93, 193, 255, 84, 86, 186, 255, 76, 80, 178, 255, 68, 68, 137, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 124, 123, 215, 255, 170, 169, 255, 255, 160, 159, 251, 255, 148, 147, 245, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 82, 98, 118, 255, 91, 106, 125, 255, 84, 86, 186, 255, 76, 79, 178, 255, 68, 73, 170, 255, 65, 65, 131, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 118, 117, 212, 255, 160, 159, 255, 255, 145, 144, 245, 255, 135, 134, 236, 255, 75, 91, 113, 255, 0, 0, 0, 255, 52, 60, 71, 255, 206, 217, 233, 255, 212, 221, 236, 255, 103, 116, 133, 255, 67, 75, 174, 255, 68, 73, 170, 255, 60, 66, 163, 255, 62, 62, 125, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 112, 111, 209, 255, 154, 153, 255, 255, 135, 134, 236, 255, 129, 128, 230, 255, 75, 91, 113, 255, 52, 60, 71, 255, 104, 120, 141, 255, 216, 224, 237, 255, 224, 231, 241, 255, 115, 127, 143, 255, 53, 65, 163, 255, 60, 66, 162, 255, 53, 61, 156, 255, 60, 59, 120, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 108, 107, 207, 255, 143, 142, 243, 255, 129, 128, 230, 255, 36, 68, 170, 255, 33, 50, 71, 255, 171, 180, 195, 255, 179, 187, 198, 255, 188, 193, 202, 255, 196, 200, 206, 255, 72, 77, 86, 255, 51, 62, 158, 255, 54, 61, 156, 255, 49, 57, 152, 255, 57, 57, 114, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 108, 107, 207, 84, 101, 100, 195, 255, 86, 85, 170, 255, 83, 82, 164, 255, 80, 79, 159, 255, 77, 77, 154, 255, 74, 74, 148, 255, 71, 71, 143, 255, 68, 68, 137, 255, 65, 65, 131, 255, 60, 59, 120, 255, 60, 59, 120, 255, 57, 57, 114, 255, 55, 54, 110, 255, 255, 0, 255, 255, + 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +static unsigned char image_data_8_pressed [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,5,1,1,1,1,1,2,2,2,2,2,5,0,0,0,5, + 5,0,0,0,1,5,1,1,1,1,2,2,2,2,5,2,0,0,0,5, + 5,0,0,0,1,1,5,1,1,1,2,2,2,5,2,2,0,0,0,5, + 5,0,0,0,1,1,1,5,1,1,2,2,5,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,5,1,2,5,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,5,5,2,2,2,2,2,0,0,0,5, + 5,0,0,0,3,3,3,3,3,5,5,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,5,3,4,5,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,5,3,3,4,4,5,4,4,4,0,0,0,5, + 5,0,0,0,3,3,5,3,3,3,4,4,4,5,4,4,0,0,0,5, + 5,0,0,0,3,5,3,3,3,3,4,4,4,4,5,4,0,0,0,5, + 5,0,0,0,5,3,3,3,3,3,4,4,4,4,4,5,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +static unsigned char image_data_8_inactive [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +static unsigned char image_data_24 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*3] = +{ + 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, +}; + +static unsigned char image_data_32 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*4] = +{ + 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255, +}; + +static char* get_name(Ihandle* ih) +{ + return IupGetAttribute(ih, "NAME"); +} + +static int action_cb(Ihandle *ih) +{ + printf("ACTION(%s)\n", get_name(ih)); + return IUP_DEFAULT; +} + +static int getfocus_cb(Ihandle *ih) +{ + printf("GETFOCUS_CB(%s)\n", get_name(ih)); + return IUP_DEFAULT; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB(%s)\n", get_name(ih)); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB(%s)\n", get_name(ih)); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB(%s)\n", get_name(ih)); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + printf("ENTERWINDOW_CB(%s)\n", get_name(ih)); + return IUP_DEFAULT; +} + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + printf("BUTTON_CB(%s, but=%c (%d), x=%d, y=%d [%s])\n", get_name(ih),(char)but,pressed,x,y, status); + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ + if (iup_isprint(c)) + printf("K_ANY(%s, %d = %s \'%c\')\n", get_name(ih), c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%s, %d = %s)\n", get_name(ih), c, iupKeyCodeToName(c)); + printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE")); + return IUP_DEFAULT; +} + +static int active_cb(Ihandle *ih) +{ + static int active = 1; + Ihandle* dlg = IupGetDialog(ih); + Ihandle* box = IupGetChild(dlg, 0); + if (active) + IupSetAttribute(box, "ACTIVE", "NO"); + else + IupSetAttribute(box, "ACTIVE", "YES"); + active = !active; + IupSetAttribute(ih, "ACTIVE", "YES"); + return IUP_DEFAULT; +} + +static void set_callbacks(Ihandle* button) +{ + IupSetCallback(button, "ACTION", action_cb); +// IupSetCallback(button, "BUTTON_CB", (Icallback)button_cb); + + IupSetCallback(button, "K_ANY", (Icallback)k_any); + IupSetCallback(button, "HELP_CB", (Icallback)help_cb); + +// IupSetCallback(button, "GETFOCUS_CB", (Icallback)getfocus_cb); +// IupSetCallback(button, "KILLFOCUS_CB", (Icallback)killfocus_cb); +// IupSetCallback(button, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); +// IupSetCallback(button, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); +} + +static int show_cb(Ihandle *ih, int state) +{ + char* state_str[5] ={ + "SHOW", + "RESTORE", + "MINIMIZE", + "MAXIMIZE", + "HIDE" + }; + printf("SHOW_CB(%s, %s)\n", IupGetAttribute(ih, "TESTTITLE"), state_str[state]); + return IUP_DEFAULT; +} + +void ButtonTest(void) +{ + Ihandle *dlg, *button, *label, *image1, *image1i, *image1p, *image2, *image3, + *box1, *box2; + + /* IupImageLibOpen(); */ + + box1 = IupVbox(NULL); + IupSetAttribute(box1, "MARGIN", "5x5"); + IupSetAttribute(box1, "GAP", "5"); +// IupSetAttribute(box1, "BGCOLOR", "75 150 170"); +// IupSetAttribute(box1, "PADDING", "15x15"); + + button = IupButton("ACTIVE", NULL); + IupSetAttribute(button, "TITLE", "Button Text"); + IupSetCallback(button, "ACTION", active_cb); + IupAppend(box1, button); + + button = IupButton(NULL, NULL); + IupSetAttribute(button, "TITLE", "Text (çãí)"); +// IupSetAttribute(button, "TITLE", "Text"); + //IupSetAttribute(button, "TITLE", "Text &Button\nSecond Line"); + IupSetAttribute(button, "TIP", "Button Tip"); + //IupSetAttribute(button, "PADDING", "15x15"); + //IupSetAttribute(button, "BGCOLOR", "128 128 255"); + IupSetAttribute(button, "SIZE", "40"); +// IupSetAttribute(button, "FGCOLOR", "0 0 255"); +// IupSetAttribute(button, "RASTERSIZE", "200x100"); + IupSetAttribute(button, "ALIGNMENT", "ACENTER:ACENTER"); +// IupSetAttribute(button, "ALIGNMENT", "ALEFT:ATOP"); + IupSetAttribute(button, "NAME", "button1"); + set_callbacks(button); + IupAppend(box1, button); + + button = IupButton(NULL, NULL); + IupSetAttribute(button, "TITLE", "Text Button\nSecond Line"); + IupSetAttribute(button, "RASTERSIZE", "200x100"); + IupSetAttribute(button, "ALIGNMENT", "ACENTER:ACENTER"); + IupSetAttribute(button, "FONT", "Helvetica, 14"); + IupSetAttribute(button, "FLAT", "YES"); + IupSetAttribute(button, "NAME", "button2"); + set_callbacks(button); + IupAppend(box1, button); + + button = IupButton(NULL, NULL); + IupSetAttribute(button, "TITLE", "Text Button\nSecond Line"); + IupSetAttribute(button, "RASTERSIZE", "200x100"); + IupSetAttribute(button, "ALIGNMENT", "ARIGHT:ABOTTOM"); + IupSetAttribute(button, "MARKUP", "YES"); + IupSetAttribute(button, "NAME", "button3"); + IupSetAttribute(button, "CANFOCUS", "NO"); + set_callbacks(button); + IupAppend(box1, button); + + box2 = IupVbox(NULL); + IupSetAttribute(box2, "MARGIN", "5x5"); + IupSetAttribute(box2, "GAP", "5"); +// IupSetAttribute(box2, "BGCOLOR", "75 150 170"); +// IupSetAttribute(box2, "PADDING", "15x15"); + + image1 = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8); + IupSetAttribute(image1, "0", "BGCOLOR"); + IupSetAttribute(image1, "1", "255 0 0"); + IupSetAttribute(image1, "2", "0 255 0"); + IupSetAttribute(image1, "3", "0 0 255"); + IupSetAttribute(image1, "4", "255 255 255"); + IupSetAttribute(image1, "5", "0 0 0"); + + image1i = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_inactive); + IupSetAttribute(image1i, "0", "BGCOLOR"); + IupSetAttribute(image1i, "1", "255 0 0"); + IupSetAttribute(image1i, "2", "0 255 0"); + IupSetAttribute(image1i, "3", "0 0 255"); + IupSetAttribute(image1i, "4", "255 255 255"); + IupSetAttribute(image1i, "5", "0 0 0"); + + image1p = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_pressed); + IupSetAttribute(image1p, "0", "BGCOLOR"); + IupSetAttribute(image1p, "1", "255 0 0"); + IupSetAttribute(image1p, "2", "0 255 0"); + IupSetAttribute(image1p, "3", "0 0 255"); + IupSetAttribute(image1p, "4", "255 255 255"); + IupSetAttribute(image1p, "5", "0 0 0"); + + image2 = IupImageRGB(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_24); + + image3 = IupImageRGBA(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_32); + + button = IupButton(NULL, NULL); + IupSetAttribute(button, "TITLE", "Images"); + IupSetAttributeHandle(button, "IMAGE", load_image_FileSave()); + IupAppend(box2, button); + + button = IupButton(NULL, NULL); +// IupSetAttribute(button, "ALIGNMENT", "ALEFT:ATOP"); +// IupSetAttribute(button, "RASTERSIZE", "200x100"); +// IupSetAttribute(button, "IMAGEPOSITION", "BOTTOM"); + IupSetAttribute(button, "PADDING", "5x5"); +// IupSetAttribute(button, "TITLE", "Text1"); + IupSetAttribute(button, "FONT", "Helvetica, 14"); +// IupSetAttribute(button, "IMAGE", "IUP_Tecgraf"); + IupSetAttributeHandle(button, "IMAGE", image1); +// IupSetAttributeHandle(button, "IMINACTIVE", image1i); +// IupSetAttributeHandle(button, "XXX__IMPRESS", image1p); + IupSetAttribute(button, "TIP", "Image Label"); + IupSetAttribute(button, "NAME", "button4"); + set_callbacks(button); + IupAppend(box2, button); + + button = IupButton(NULL, NULL); + IupSetAttributeHandle(button, "IMAGE", image2); + IupSetAttribute(button, "TITLE", "Text2"); +// IupSetAttribute(button, "IMAGEPOSITION", "TOP"); +// IupSetAttribute(button, "SPACING", "30"); +// IupSetAttribute(button, "ALIGNMENT", "ALEFT"); +// IupSetAttribute(button, "RASTERSIZE", "200x100"); + IupSetAttribute(button, "FLAT", "YES"); + IupSetAttribute(button, "FOCUSONCLICK", "NO"); + IupSetAttribute(button, "NAME", "button5"); + set_callbacks(button); + IupAppend(box2, button); + + button = IupButton(NULL, NULL); + IupSetAttributeHandle(button, "IMAGE", image3); + IupSetAttribute(button, "TITLE", "Text3"); +// IupSetAttribute(button, "RASTERSIZE", "200x100"); +// IupSetAttribute(button, "ALIGNMENT", "ARIGHT"); + IupSetAttribute(button, "NAME", "button6"); + set_callbacks(button); + IupAppend(box2, button); + + label = IupLabel(NULL); + IupSetAttribute(label, "SEPARATOR", "VERTICAL"); + + dlg = IupDialog(IupHbox(box1, label, box2, NULL)); + IupSetAttribute(dlg, "TITLE", "IupButton Test"); +// IupSetAttribute(box1, "BGCOLOR", "128 0 0"); +// IupSetAttribute(dlg, "BGCOLOR", "0 128 0"); +// IupSetAttribute(dlg, "BACKGROUND", "0 0 128"); +// IupSetAttributeHandle(dlg, "BACKGROUND", image2); + + IupSetAttributeHandle(dlg, "STARTFOCUS", button); + + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ButtonTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/canvas.c b/iup/test/canvas.c new file mode 100755 index 0000000..d13945c --- /dev/null +++ b/iup/test/canvas.c @@ -0,0 +1,346 @@ +#include +#include +#include "iup.h" +#include "iupkey.h" + +static unsigned char matrx_img_cur_excel[15*15] = + { + 0,0,0,0,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 1,1,1,1,1,2,2,2,2,1,1,1,1,1,0, + 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1, + 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1, + 1,2,2,2,2,2,2,2,2,2,2,2,2,1,1, + 1,1,1,1,1,2,2,2,2,1,1,1,1,1,1, + 0,1,1,1,1,2,2,2,2,1,1,1,1,1,1, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,2,2,2,2,1,1,0,0,0,0, + 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0, + 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }; + +static unsigned char pixmap_cursor [ ] = +{ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,2,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +} ; + +//#define USE_GTK + +/* draw a rectangle that has w=600 always, white background and a red X */ +#ifdef USE_GTK +#include +static void drawTest(Ihandle *ih, int posx) +{ + GtkWidget* widget = (GtkWidget*)IupGetAttribute(ih, "WID"); + gdk_draw_arc (widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + TRUE, + 0, 0, widget->allocation.width, widget->allocation.height, + 0, 64 * 360); +} +#else +#ifdef WIN32 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0500 +#include +static void drawTest(Ihandle *ih, int posx) +{ + RECT rect; + int w, h; + HWND hWnd = (HWND)IupGetAttribute(ih, "HWND"); + HDC hDC = GetDC(hWnd); + + IupGetIntInt(ih, "DRAWSIZE", &w, &h); + + SetRect(&rect, 0, 0, w, h); + FillRect(hDC, &rect, GetStockObject(WHITE_BRUSH)); + + SelectObject(hDC, GetStockObject(DC_PEN)); + SetDCPenColor(hDC, RGB(255, 0, 0)); + + w = 600; /* virtual size */ + MoveToEx(hDC, -posx, 0, NULL); + LineTo(hDC, w-posx, h); + MoveToEx(hDC, -posx, h, NULL); + LineTo(hDC, w-posx, 0); + + ReleaseDC(hWnd, hDC); +} +#else +#include + +#define xCOLOR8TO16(_x) (_x*257) /* 65535/255 = 257 */ +static unsigned long xGetPixel(Display* dpy, unsigned char cr, unsigned char cg, unsigned char cb) +{ + XColor xc; + xc.red = xCOLOR8TO16(cr); + xc.green = xCOLOR8TO16(cg); + xc.blue = xCOLOR8TO16(cb); + xc.flags = DoRed | DoGreen | DoBlue; + + XAllocColor(dpy, DefaultColormap(dpy, XDefaultScreen(dpy)), &xc); + return xc.pixel; +} + +static void drawTest(Ihandle *ih, int posx) +{ + int w, h; + Display* dpy = (Display*)IupGetAttribute(ih, "XDISPLAY"); /* works for Motif and GTK */ + Drawable wnd = (Drawable)IupGetAttribute(ih, "XWINDOW"); + GC gc = XCreateGC(dpy, wnd, 0, NULL); + + IupGetIntInt(ih, "DRAWSIZE", &w, &h); + + XSetForeground(dpy, gc, xGetPixel(dpy, 255, 255, 255)); + XFillRectangle(dpy, wnd, gc, 0, 0, w, h); + + XSetForeground(dpy, gc, xGetPixel(dpy, 255, 0, 0)); + + w = 600; /* virtual size */ + XDrawLine(dpy, wnd, gc, -posx, 0, w-posx, h); + XDrawLine(dpy, wnd, gc, -posx, h, w-posx, 0); + + XFreeGC(dpy, gc); +} +#endif +#endif + +static int map_cb(Ihandle *ih) +{ + printf("MAP_CB()\n"); + return IUP_DEFAULT; +} + +static int action(Ihandle *ih, float posx, float posy) +{ + printf("ACTION(posx=%.2f, posy=%.2f)\n", posx, posy); + drawTest(ih, (int)posx); + return IUP_DEFAULT; +} + +static int scroll_cb(Ihandle *ih, int op, float posx, float posy) +{ + char* op2str[12] = {"SBUP", "SBDN", "SBPGUP", "SBPGDN", "SBPOSV", "SBDRAGV", + "SBLEFT", "SBRIGHT", "SBPGLEFT", "SBPGRIGHT", "SBPOSH", "SBDRAGH"}; + printf("SCROLL_CB(%s, posx=%.2f, posy=%.2f)\n", op2str[op], posx, posy); + IupRedraw(ih, 0); + return IUP_DEFAULT; +} + +static int dropfiles_cb(Ihandle *ih, const char* filename, int num, int x, int y) +{ + printf("DROPFILES_CB(%s, %d, x=%d, y=%d)\n", filename, num, x, y); + return IUP_DEFAULT; +} + +static int resize_cb(Ihandle *ih, int w, int h) +{ + printf("RESIZE_CB(%d, %d) RASTERSIZE=%s CLIENTSIZE=%s\n", w, h, IupGetAttribute(ih, "RASTERSIZE"), IupGetAttribute(ih, "CLIENTSIZE")); + + /* update page size */ + IupSetfAttribute(ih, "DX", "%d", w); + + return IUP_DEFAULT; +} + +static int getfocus_cb(Ihandle *ih) +{ + printf("GETFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB()\n"); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int focus_cb(Ihandle *ih, int focus) +{ + printf("FOCUS_CB(%d)\n", focus); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + printf("ENTERWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + if (but==IUP_BUTTON1 && pressed) + IupSetAttribute(ih, "CURSOR", "CROSS"); + if (but==IUP_BUTTON1 && !pressed) + IupSetAttribute(ih, "CURSOR", NULL); + printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s])\n",(char)but,pressed,x,y, status); + return IUP_DEFAULT; +} + +static int wheel_cb(Ihandle *ih,float delta,int x,int y,char* status) +{ + printf("WHEEL_CB(delta=%.2f, x=%d, y=%d [%s])\n",delta,x,y, status); + return IUP_DEFAULT; +} + +static int motion_cb(Ihandle *ih,int x,int y,char* status) +{ + printf("MOTION_CB(x=%d, y=%d [%s])\n",x,y, status); + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ + if (c == K_a) + IupSetAttribute(ih, "POSX", "100"); + + if (iup_isprint(c)) + printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c)); + printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE")); + return IUP_DEFAULT; +} + +static int keypress_cb(Ihandle *ih, int c, int pressed) +{ + if (iup_isprint(c)) + printf("KEYPRESS_CB(%d = %s \'%c\' (%d))\n", c, iupKeyCodeToName(c), (char)c, pressed); + else + printf("KEYPRESS_CB(%d = %s (%d))\n", c, iupKeyCodeToName(c), pressed); + return IUP_DEFAULT; +} + +void CanvasTest(void) +{ + Ihandle *dlg, *canvas, *box, *image; + + //image = IupImage(32, 32, pixmap_cursor); + //IupSetAttribute(image, "1", "255 0 0"); + //IupSetAttribute(image, "2", "128 0 0"); + //IupSetAttribute(image, "HOTSPOT", "21:10"); + + image = IupImage(15,15, matrx_img_cur_excel); + IupSetAttribute (image, "0", "BGCOLOR"); + IupSetAttribute (image, "1", "0 0 0"); + IupSetAttribute (image, "2", "255 255 255"); + IupSetAttribute (image, "HOTSPOT", "7:7"); + + box = IupVbox(NULL); + IupSetAttribute(box, "MARGIN", "5x5"); + + canvas = IupCanvas(NULL); + IupAppend(box, canvas); + IupSetAttribute(canvas, "RASTERSIZE", "300x200"); + IupSetAttribute(canvas, "TIP", "Canvas Tip"); + IupSetAttribute(canvas, "SCROLLBAR", "YES"); +// IupSetAttribute(canvas, "XAUTOHIDE", "NO"); + IupSetAttribute(canvas, "XMAX", "600"); + IupSetAttribute(canvas, "DX", "300"); /* use a 1x1 scale, this value is updated in RESIZE_CB, + so when the canvas is larger than 600 + it will hide the scrollbar */ + IupSetAttributeHandle(canvas, "CURSOR", image); + +// IupSetAttribute(canvas, "BORDER", "NO"); +// IupSetAttribute(canvas, "CURSOR", "CROSS"); + + IupSetCallback(canvas, "MAP_CB", (Icallback)map_cb); + + IupSetCallback(canvas, "KEYPRESS_CB", (Icallback)keypress_cb); + IupSetCallback(canvas, "K_ANY", (Icallback)k_any); + IupSetCallback(canvas, "HELP_CB", (Icallback)help_cb); + + IupSetCallback(canvas, "GETFOCUS_CB", (Icallback)getfocus_cb); + IupSetCallback(canvas, "KILLFOCUS_CB", (Icallback)killfocus_cb); + IupSetCallback(canvas, "FOCUS_CB", (Icallback)focus_cb); + IupSetCallback(canvas, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); + IupSetCallback(canvas, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + + IupSetCallback(canvas, "BUTTON_CB", (Icallback)button_cb); +// IupSetCallback(canvas, "MOTION_CB", (Icallback)motion_cb); + IupSetCallback(canvas, "SCROLL_CB", (Icallback)scroll_cb); +// IupSetCallback(canvas, "WHEEL_CB", (Icallback)wheel_cb); + + IupSetCallback(canvas, "RESIZE_CB", (Icallback)resize_cb); +// IupSetAttribute(canvas, "BGCOLOR", "255 128 128"); + IupSetCallback(canvas, "ACTION", (Icallback)action); + + // Windows and GTK Only + IupSetCallback(canvas, "DROPFILES_CB", (Icallback)dropfiles_cb); + +//{ +// Ihandle* cnv = IupCanvas(NULL); +// IupAppend(box, cnv); +// IupSetAttribute(cnv, "RASTERSIZE", "300x200"); +// IupSetAttribute(cnv, "CURSOR", "NONE"); +//} + + dlg = IupDialog(box); + IupSetAttribute(dlg, "TITLE", "IupCanvas Test"); + + IupShow(dlg); + IupSetAttribute(canvas, "RASTERSIZE", NULL); /* release the minimum limitation */ +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + CanvasTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/canvas_cddbuffer.c b/iup/test/canvas_cddbuffer.c new file mode 100755 index 0000000..dd7ce3e --- /dev/null +++ b/iup/test/canvas_cddbuffer.c @@ -0,0 +1,124 @@ +#include +#include +#include "iup.h" +#include "cd.h" +#include "cdiup.h" +#include "cddbuf.h" + + +static void appUpdateRender(cdCanvas *cddbuffer) +{ + int width, height; + + cdCanvasBackground(cddbuffer, CD_WHITE); + cdCanvasClear(cddbuffer); + + cdCanvasForeground(cddbuffer, CD_RED); + cdCanvasGetSize(cddbuffer, &width, &height, NULL, NULL); + cdCanvasLine(cddbuffer, 0, 0, width-1, height-1); + cdCanvasLine(cddbuffer, 0, height-1, width-1, 0); +} + +static int redraw_cb(Ihandle *ih) +{ + cdCanvas *cddbuffer = (cdCanvas*)IupGetAttribute(ih, "_APP_CDDBUFFER"); + if (!cddbuffer) + return IUP_DEFAULT; + + /* update display */ + cdCanvasFlush(cddbuffer); + return IUP_DEFAULT; +} + +static int resize_cb(Ihandle *ih) +{ + cdCanvas *cddbuffer = (cdCanvas*)IupGetAttribute(ih, "_APP_CDDBUFFER"); + if (!cddbuffer) + { + cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS"); + + /* update canvas size */ + cdCanvasActivate(cdcanvas); + + /* this can fail if canvas size is zero */ + cddbuffer = cdCreateCanvas(CD_DBUFFER, cdcanvas); + } + + if (!cddbuffer) + return IUP_DEFAULT; + + /* update size */ + cdCanvasActivate(cddbuffer); + + /* update render */ + appUpdateRender(cddbuffer); + + return IUP_DEFAULT; +} + +static int map_cb(Ihandle *ih) +{ + cdCanvas *cddbuffer, *cdcanvas; + + cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!cdcanvas) + return IUP_DEFAULT; + + /* this can fail if canvas size is zero */ + cddbuffer = cdCreateCanvas(CD_DBUFFER, cdcanvas); + + IupSetAttribute(ih, "_APP_CDCANVAS", (char*)cdcanvas); + IupSetAttribute(ih, "_APP_CDDBUFFER", (char*)cddbuffer); + + return IUP_DEFAULT; +} + +static int unmap_cb(Ihandle *ih) +{ + cdCanvas *cddbuffer = (cdCanvas*)IupGetAttribute(ih, "_APP_CDDBUFFER"); + cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS"); + + if (cddbuffer) + cdKillCanvas(cddbuffer); + + if (cdcanvas) + cdKillCanvas(cdcanvas); + + return IUP_DEFAULT; +} + +void CanvasCDDBufferTest(void) +{ + Ihandle *dlg, *canvas; + + canvas = IupCanvas(NULL); + IupSetAttribute(canvas, "RASTERSIZE", "300x200"); /* initial size */ + + IupSetCallback(canvas, "RESIZE_CB", (Icallback)resize_cb); + IupSetCallback(canvas, "ACTION", (Icallback)redraw_cb); + IupSetCallback(canvas, "MAP_CB", (Icallback)map_cb); + IupSetCallback(canvas, "UNMAP_CB", (Icallback)unmap_cb); + + dlg = IupDialog(canvas); + IupSetAttribute(dlg, "TITLE", "CD Double Buffer Test"); + + IupMap(dlg); + IupSetAttribute(canvas, "RASTERSIZE", NULL); /* release the minimum limitation */ + + IupShowXY(dlg,IUP_CENTER,IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + CanvasCDDBufferTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/canvas_cdsimple.c b/iup/test/canvas_cdsimple.c new file mode 100755 index 0000000..3a73c22 --- /dev/null +++ b/iup/test/canvas_cdsimple.c @@ -0,0 +1,91 @@ +#include +#include +#include "iup.h" +#include "cd.h" +#include "cdiup.h" +#include "cddbuf.h" + + +static int redraw_cb(Ihandle *ih) +{ + int width, height; + cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS"); + + cdCanvasBackground(cdcanvas, CD_WHITE); + cdCanvasClear(cdcanvas); + + cdCanvasForeground(cdcanvas, CD_RED); + cdCanvasGetSize(cdcanvas, &width, &height, NULL, NULL); + cdCanvasLine(cdcanvas, 0, 0, width-1, height-1); + cdCanvasLine(cdcanvas, 0, height-1, width-1, 0); + return IUP_DEFAULT; +} + +static int resize_cb(Ihandle *ih) +{ + cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS"); + + /* update canvas size */ + cdCanvasActivate(cdcanvas); + + return IUP_DEFAULT; +} + +static int map_cb(Ihandle *ih) +{ + cdCanvas *cdcanvas; + + cdcanvas = cdCreateCanvas(CD_IUP, ih); + if (!cdcanvas) + return IUP_DEFAULT; + + IupSetAttribute(ih, "_APP_CDCANVAS", (char*)cdcanvas); + + return IUP_DEFAULT; +} + +static int unmap_cb(Ihandle *ih) +{ + cdCanvas *cdcanvas = (cdCanvas*)IupGetAttribute(ih, "_APP_CDCANVAS"); + + if (cdcanvas) + cdKillCanvas(cdcanvas); + + return IUP_DEFAULT; +} + +void CanvasCDSimpleTest(void) +{ + Ihandle *dlg, *canvas; + + canvas = IupCanvas(NULL); + IupSetAttribute(canvas, "RASTERSIZE", "300x200"); /* initial size */ + + IupSetCallback(canvas, "RESIZE_CB", (Icallback)resize_cb); + IupSetCallback(canvas, "ACTION", (Icallback)redraw_cb); + IupSetCallback(canvas, "MAP_CB", (Icallback)map_cb); + IupSetCallback(canvas, "UNMAP_CB", (Icallback)unmap_cb); + + dlg = IupDialog(canvas); + IupSetAttribute(dlg, "TITLE", "CD Simple Buffer Test"); + + IupMap(dlg); + IupSetAttribute(canvas, "RASTERSIZE", NULL); /* release the minimum limitation */ + + IupShowXY(dlg,IUP_CENTER,IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + CanvasCDSimpleTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/canvas_scrollbar.c b/iup/test/canvas_scrollbar.c new file mode 100755 index 0000000..72749de --- /dev/null +++ b/iup/test/canvas_scrollbar.c @@ -0,0 +1,191 @@ +#include +#include +#include "iup.h" +#include "cd.h" +#include "cdiup.h" +#include "wd.h" + + +/* World: (0-600)x(0-400) + The canvas will be a window into that space. + If canvas is smaller than the virtual space, scrollbars are active. + The drawing is a red X connecting the corners of the world. +*/ +#define WORLD_W 600 +#define WORLD_H 400 +static int scale = 1; + +static void update_scrollbar(Ihandle* ih, int canvas_w, int canvas_h) +{ + /* update page size, it is always the client size of the canvas, + but must convert it to world coordinates. + If you change canvas size or scale must call this function. */ + double ww, wh; + if (scale > 0) + { + ww = (double)canvas_w/scale; + wh = (double)canvas_h/scale; + } + else + { + ww = canvas_w*abs(scale); + wh = canvas_h*abs(scale); + } + IupSetfAttribute(ih, "DX", "%f", ww); + IupSetfAttribute(ih, "DY", "%f", wh); +} + +static void update_viewport(Ihandle* ih, cdCanvas *canvas, float posx, float posy) +{ + int view_x, view_y, view_w, view_h; + + /* The CD viewport is the same area represented by the virtual space of the scrollbar, + but not using the same coordinates. */ + + /* posy is top-bottom, CD is bottom-top. + invert posy reference (YMAX-DY - POSY) */ + posy = WORLD_H-IupGetFloat(ih, "DY") - posy; + if (posy < 0) posy = 0; + + if (scale > 0) + { + view_w = WORLD_W*scale; + view_h = WORLD_H*scale; + view_x = (int)(posx*scale); + view_y = (int)(posy*scale); + } + else + { + view_w = WORLD_W/abs(scale); + view_h = WORLD_H/abs(scale); + view_x = (int)(posx/abs(scale)); + view_y = (int)(posy/abs(scale)); + } + + wdCanvasViewport(canvas, -view_x, view_w-1 - view_x, -view_y, view_h-1 - view_y); +} + +/************************************************************************************/ + +static int action(Ihandle *ih) +{ + cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS"); + + cdCanvasClear(canvas); + + cdCanvasForeground(canvas, CD_RED); + wdCanvasLine(canvas, 0, 0, WORLD_W, WORLD_H); + wdCanvasLine(canvas, 0, WORLD_H, WORLD_W, 0); + wdCanvasArc(canvas, WORLD_W/2, WORLD_H/2+WORLD_H/10, WORLD_W/10, WORLD_H/10, 0, 360); + + return IUP_DEFAULT; +} + +static int resize_cb(Ihandle *ih, int canvas_w, int canvas_h) +{ + cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS"); + + /* update CD canvas */ + cdCanvasActivate(canvas); + + update_scrollbar(ih, canvas_w, canvas_h); + update_viewport(ih, canvas, IupGetFloat(ih, "POSX"), IupGetFloat(ih, "POSY")); + return IUP_DEFAULT; +} + +static int scroll_cb(Ihandle *ih, int op, float posx, float posy) +{ + cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS"); + update_viewport(ih, canvas, posx, posy); + IupRedraw(ih, 0); + (void)op; + return IUP_DEFAULT; +} + +static int wheel_cb(Ihandle *ih,float delta,int x,int y,char* status) +{ + int canvas_w, canvas_h; + cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS"); + (void)x; + (void)y; + (void)status; + + if (scale+delta==0) /* skip 0 */ + { + if (scale > 0) + scale = -1; + else + scale = 1; + } + else + scale += (int)delta; + + cdCanvasGetSize(canvas, &canvas_w, &canvas_h, NULL, NULL); + update_scrollbar(ih, canvas_w, canvas_h); + update_viewport(ih, canvas, IupGetFloat(ih, "POSX"), IupGetFloat(ih, "POSY")); + IupRedraw(ih, 0); + return IUP_DEFAULT; +} + +static int map_cb(Ihandle *ih) +{ + cdCanvas *canvas = cdCreateCanvas(CD_IUP, ih); + + /* World size is fixed */ + wdCanvasWindow(canvas, 0, WORLD_W, 0, WORLD_H); + + /* handle scrollbar in world coordinates, so we only have to update DX/DY */ + IupSetAttribute(ih, "XMIN", "0"); + IupSetAttribute(ih, "YMIN", "0"); + IupSetfAttribute(ih, "XMAX", "%d", WORLD_W); + IupSetfAttribute(ih, "YMAX", "%d", WORLD_H); + + return IUP_DEFAULT; +} + +static int unmap_cb(Ihandle *ih) +{ + cdCanvas *canvas = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS"); + cdKillCanvas(canvas); + return IUP_DEFAULT; +} + +void CanvasScrollbarTest(void) +{ + Ihandle *dlg, *cnv; + + cnv = IupCanvas(NULL); + IupSetAttribute(cnv, "RASTERSIZE", "300x200"); /* initial size */ + IupSetAttribute(cnv, "SCROLLBAR", "YES"); + + IupSetCallback(cnv, "RESIZE_CB", (Icallback)resize_cb); + IupSetCallback(cnv, "ACTION", (Icallback)action); + IupSetCallback(cnv, "MAP_CB", (Icallback)map_cb); + IupSetCallback(cnv, "UNMAP_CB", (Icallback)unmap_cb); + IupSetCallback(cnv, "WHEEL_CB", (Icallback)wheel_cb); + IupSetCallback(cnv, "SCROLL_CB", (Icallback)scroll_cb); + + dlg = IupDialog(IupVbox(cnv, NULL)); + IupSetAttribute(dlg, "TITLE", "Scrollbar Test"); + IupSetAttribute(dlg, "MARGIN", "10x10"); + + IupMap(dlg); + IupSetAttribute(cnv, "RASTERSIZE", NULL); /* release the minimum limitation */ + + IupShowXY(dlg,IUP_CENTER,IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + CanvasScrollbarTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/cells_checkboard.c b/iup/test/cells_checkboard.c new file mode 100755 index 0000000..40cc0ef --- /dev/null +++ b/iup/test/cells_checkboard.c @@ -0,0 +1,83 @@ +#include +#include +#include + +#include "iup.h" +#include "cd.h" +#include "iupcontrols.h" + + +static int nlines_cb(Ihandle* ih) +{ + return 8; +} + +static int ncols_cb(Ihandle* ih) +{ + return 8; +} + +static int height_cb(Ihandle* ih, int i) +{ + return 50; +} + +static int width_cb(Ihandle* ih, int j) +{ + return 50; +} + +static int draw_cb(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax) +{ + if (((i%2) && (j%2)) || (((i+1)%2) && ((j+1)%2))) + cdForeground(CD_WHITE); + else + cdForeground(CD_BLACK); + + cdBox(xmin, xmax, ymin, ymax); + return IUP_DEFAULT; +} + +static Ihandle* create(void) +{ + Ihandle* cells = IupCells(); + + IupSetCallback(cells, "DRAW_CB", (Icallback)draw_cb); + IupSetCallback(cells, "WIDTH_CB", (Icallback)width_cb); + IupSetCallback(cells, "HEIGHT_CB", (Icallback)height_cb); + IupSetCallback(cells, "NLINES_CB", (Icallback)nlines_cb); + IupSetCallback(cells, "NCOLS_CB", (Icallback)ncols_cb); + + return cells; +} + +void CellsCheckboardTest(void) +{ + Ihandle* dlg = NULL; + Ihandle* cells = NULL; + + cells = create(); + dlg = IupDialog(cells); + + IupSetAttribute(dlg, "RASTERSIZE", "400x400"); + IupSetAttribute(dlg, "TITLE", "IupCells"); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER) ; + IupSetAttribute(dlg, "RASTERSIZE", NULL); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + CellsCheckboardTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/cells_degrade.c b/iup/test/cells_degrade.c new file mode 100755 index 0000000..30e969b --- /dev/null +++ b/iup/test/cells_degrade.c @@ -0,0 +1,150 @@ +#include +#include +#include + +#include "iup.h" +#include "cd.h" +#include "iupcontrols.h" + + +static int nlines_cb(Ihandle* ih) +{ + return 7; +} + +static int ncols_cb(Ihandle* ih) +{ + return 7; +} + +static int height_cb(Ihandle* ih, int i) +{ + return (int)(30 + i * 1.5); +} + +static int width_cb(Ihandle* ih, int j) +{ + return (int)(50 + j * 1.5); +} + +static int mouseclick_cb(Ihandle* ih, int b, char* m, int i, int j, int x, int y, char* r) +{ + printf("CLICK: %d: (%02d, %02d)\n", b, i, j); + return IUP_DEFAULT; +} + +static int scrolling_cb(Ihandle* ih, int i, int j) +{ + printf("SCROLL: (%02d, %02d)\n", i, j); + return IUP_DEFAULT; +} + +static int vspan_cb(Ihandle* ih, int i, int j) +{ + if (i == 1 && j == 1) + return 2; + + if (i == 5 && j == 5) + return 2; + + return 1; +} + +static int hspan_cb(Ihandle* ih, int i, int j) +{ + if (i == 1 && j == 1) + return 2; + + if (i == 5 && j == 5) + return 2; + + return 1; +} + +static int draw_cb(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax) +{ + static char buffer[64]; + int xm = (xmax + xmin) / 2; + int ym = (ymax + ymin) / 2; + + if (i == 1 && j == 2) + return IUP_DEFAULT; + if (i == 2 && j == 1) + return IUP_DEFAULT; + if (i == 2 && j == 2) + return IUP_DEFAULT; + if (i == 5 && j == 6) + return IUP_DEFAULT; + if (i == 6 && j == 5) + return IUP_DEFAULT; + if (i == 6 && j == 6) + return IUP_DEFAULT; + + if (i == 1 && j == 1) + cdForeground(CD_WHITE); + else + cdForeground(cdEncodeColor((unsigned char)(i*20), (unsigned char)(j*100), (unsigned char)(i+100))); + + cdBox(xmin, xmax, ymin, ymax); + cdTextAlignment(CD_CENTER); + cdForeground(CD_BLACK); + sprintf(buffer, "(%02d, %02d)", i, j); + cdText(xm, ym, buffer); + + return IUP_DEFAULT; +} + +static Ihandle* create(void) +{ + Ihandle* cells = IupCells(); + + IupSetCallback(cells, "MOUSECLICK_CB", (Icallback)mouseclick_cb); + IupSetCallback(cells, "DRAW_CB", (Icallback)draw_cb); + IupSetCallback(cells, "WIDTH_CB", (Icallback)width_cb); + IupSetCallback(cells, "HEIGHT_CB", (Icallback)height_cb); + IupSetCallback(cells, "NLINES_CB", (Icallback)nlines_cb); + IupSetCallback(cells, "NCOLS_CB", (Icallback)ncols_cb); + IupSetCallback(cells, "HSPAN_CB", (Icallback)hspan_cb); + IupSetCallback(cells, "VSPAN_CB", (Icallback)vspan_cb); + IupSetCallback(cells, "SCROLLING_CB", (Icallback)scrolling_cb); + + IupSetAttribute(cells, "BOXED", "NO"); + IupSetAttribute(cells, "RASTERSIZE", "395x255"); + + return cells; +} + +void CellsDegradeTest(void) +{ + Ihandle* dlg = NULL; + Ihandle* cells = NULL; + Ihandle* box = NULL; + + cells = create(); + + box = IupVbox(cells, NULL); + IupSetAttribute(box, "MARGIN", "10x10"); + + dlg = IupDialog(box); + + IupSetAttribute(dlg, "TITLE", "IupCells"); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER) ; + IupSetAttribute(cells, "RASTERSIZE", NULL); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + CellsDegradeTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/cells_numbering.c b/iup/test/cells_numbering.c new file mode 100755 index 0000000..7cb303f --- /dev/null +++ b/iup/test/cells_numbering.c @@ -0,0 +1,102 @@ +#include +#include +#include + +#include "iup.h" +#include "cd.h" +#include "iupcontrols.h" + + +static int nlines_cb(Ihandle* ih) +{ + return 20; +} + +static int ncols_cb(Ihandle* ih) +{ + return 50; +} + +static int height_cb(Ihandle* ih, int i) +{ + return 30; +} + +static int width_cb(Ihandle* ih, int j) +{ + return 70; +} + +static int mouseclick_cb(Ihandle* ih, int b, char* m, int i, int j, int x, int y, char* r) +{ + static char buffer[128]; + sprintf(buffer, "CLICK: %d: (%02d, %02d)\n", b, i, j); + + IupMessage("Hi!", buffer); + return IUP_DEFAULT; +} + +static int draw_cb(Ihandle* ih, int i, int j, int xmin, int xmax, int ymin, int ymax) +{ + static char buffer[64]; + int xm = (xmax + xmin) / 2; + int ym = (ymax + ymin) / 2; + + cdForeground(cdEncodeColor((unsigned char)(i*20), (unsigned char)(j*100), (unsigned char)(i+100))); + + cdBox(xmin, xmax, ymin, ymax); + cdTextAlignment(CD_CENTER); + cdForeground(CD_BLACK); + sprintf(buffer, "(%02d, %02d)", i, j); + cdText(xm, ym, buffer); + + return IUP_DEFAULT; +} + +static Ihandle* create(void) +{ + Ihandle* cells = IupCells(); + + IupSetCallback(cells, "MOUSECLICK_CB", (Icallback)mouseclick_cb); + IupSetCallback(cells, "DRAW_CB", (Icallback)draw_cb); + IupSetCallback(cells, "WIDTH_CB", (Icallback)width_cb); + IupSetCallback(cells, "HEIGHT_CB", (Icallback)height_cb); + IupSetCallback(cells, "NLINES_CB", (Icallback)nlines_cb); + IupSetCallback(cells, "NCOLS_CB", (Icallback)ncols_cb); + + IupSetAttribute(cells, "BOXED", "NO"); + + return cells; +} + +void CellsNumberingTest(void) +{ + Ihandle* dlg = NULL; + Ihandle* cells = NULL; + + IupControlsOpen(); + + cells = create(); + dlg = IupDialog(cells); + + IupSetAttribute(cells, "RASTERSIZE", "500x500"); + IupSetAttribute(dlg, "TITLE", "IupCells"); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER) ; + IupSetAttribute(cells, "RASTERSIZE", NULL); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + CellsNumberingTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/class_conf.c b/iup/test/class_conf.c new file mode 100755 index 0000000..4e73f3d --- /dev/null +++ b/iup/test/class_conf.c @@ -0,0 +1,278 @@ +#include +#include +#include + +#include + +#include "../src/iup_class.h" +#include "../src/iup_register.h" + +#define MAX_ITEMS 200 + +char* callback_str[] = {"idle", "", "Ii", "ccc", "d", "iiiic", + "ff", "fiis", "i", "iff", "ii", "iic", + "iiIII", "iii", "iiii", "iiiiii", "iiiiiis", + "iiiis", "iinsii", "iis", "is", "nii", + "nn", "s", "sii", "siii", "ss", "i=s", "ii=s", + "iiiiiiv"}; + +char currentClassName[256]; + +int compare(const void *a, const void *b) +{ + return strcmp( * ( char** ) a, * ( char** ) b ); +} + +/* Update callback labels */ +static int callbacksList_ActionCB (Ihandle *ih, char *callName, int pos, int state) +{ + char* temp; + char params[256], copy[2]; + int i = 0; + int returns = 0; + + if(!callName) + return 0; + + temp = iupClassGetDefaultAttribute(currentClassName, callName); + + copy[1] = '\0'; + sprintf(params, "%s", "Ihandle*"); + + IupSetAttribute(IupGetHandle("labelCallback"), "TITLE", callName); + + while(i < (int)strlen(temp)) + { + strncpy(copy, temp+i, 1); + + if(!strcmp(copy, "i")) + sprintf(params, "%s, %s", params, "int"); + else if(!strcmp(copy, "c")) + sprintf(params, "%s, %s", params, "unsigned char"); + else if(!strcmp(copy, "s")) + sprintf(params, "%s, %s", params, "char*"); + else if(!strcmp(copy, "f")) + sprintf(params, "%s, %s", params, "float"); + else if(!strcmp(copy, "d")) + sprintf(params, "%s, %s", params, "double"); + else if(!strcmp(copy, "I")) + sprintf(params, "%s, %s", params, "int*"); + else if(!strcmp(copy, "n")) + sprintf(params, "%s, %s", params, "Ihandle*"); + else if(!strcmp(copy, "v")) + sprintf(params, "%s, %s", params, "cdCanvas*"); + else if(!strcmp(copy, "=")) + { + returns = 1; + break; + } + + i++; + } + + if(returns) + sprintf(params, "%s (= char*)", params); + else if(!strcmp(callName, "HELP_CB")) + sprintf(params, "%s (= void)", params); + else + sprintf(params, "%s (= int)", params); + + if(!strcmp(temp, "idle")) + IupSetAttribute(IupGetHandle("labelParams"), "TITLE", "void"); + else + IupSetAttribute(IupGetHandle("labelParams"), "TITLE", params); + + (void)ih; + (void)pos; + (void)state; + + return IUP_DEFAULT; +} + +/* Update attribute labels */ +static int attributesList_ActionCB (Ihandle *ih, char *attribName, int pos, int state) +{ + char* temp; + + if(!attribName) + return 0; + + temp = iupClassGetDefaultAttribute(currentClassName, attribName); + + IupSetAttribute(IupGetHandle("labelAttribute"), "TITLE", attribName); + + if(!temp) + IupSetAttribute(IupGetHandle("labelDefault"), "TITLE", "NULL"); + else + IupSetAttribute(IupGetHandle("labelDefault"), "TITLE", temp); + + (void)ih; + (void)pos; + (void)state; + + return IUP_DEFAULT; +} + +static int classesList_ActionCB (Ihandle *ih, char *className, int pos, int state) +{ + int i, j, n; + char* temp; + char **names = (char **) malloc(MAX_ITEMS * sizeof(char *)); + int call_str = sizeof(callback_str) / sizeof(char*); + + n = IupGetClassAttributes(className, names, MAX_ITEMS); + + /* Sort names */ + qsort(names, n, sizeof(char*), compare); + + /* Clear lists */ + IupSetAttribute(IupGetHandle("listAttributes"), "REMOVEITEM", NULL); + IupSetAttribute(IupGetHandle("listCallbacks"), "REMOVEITEM", NULL); + + /* Populate attribute and callback lists */ + for (i = 0; i < n; i++) + { + temp = iupClassGetDefaultAttribute(className, names[i]); + + if(!temp) + { + /* No default value */ + IupSetAttribute(IupGetHandle("listAttributes"), "APPENDITEM", names[i]); + } + else + { + for(j = 0; j < call_str; j++) + { + /* callback attribute */ + if(!strcmp(temp, callback_str[j])) + { + IupSetAttribute(IupGetHandle("listCallbacks"), "APPENDITEM", names[i]); + break; + } + } + + if(j == call_str) + { + /* attribute w/ default value */ + IupSetAttribute(IupGetHandle("listAttributes"), "APPENDITEM", names[i]); + } + } + } + + /* Update labels (values) */ + IupSetAttribute(IupGetHandle("labelClass"), "TITLE", className); + strcpy(currentClassName, className); + + IupSetAttribute(IupGetHandle("labelAttribute"), "TITLE", NULL); + IupSetAttribute(IupGetHandle("labelDefault"), "TITLE", NULL); + IupSetAttribute(IupGetHandle("labelCallback"), "TITLE", NULL); + IupSetAttribute(IupGetHandle("labelParams"), "TITLE", NULL); + + + (void)ih; + (void)pos; + (void)state; + + return IUP_DEFAULT; +} + +void PopulateListOfClasses(void) +{ + int i, n; + char **list = (char **) malloc(MAX_ITEMS * sizeof(char *)); + + n = iupRegisterGetClasses(list, MAX_ITEMS); + + qsort(list, n, sizeof(char*), compare); + + for(i = 0; i < n; i++) + IupSetAttribute(IupGetHandle("listClasses"), "APPENDITEM", list[i]); +} + +void ConfTest(void) +{ + Ihandle *dialog, *box, *lists, *listClasses, *listAttributes, *listCallbacks; + Ihandle *labelAttribute, *labelDefault, *labelCallback, *labelParams, *labelClass; + + listClasses = IupList(NULL); /* list of registered classes */ + listAttributes = IupList(NULL); /* list of attributes of the selected class */ + listCallbacks = IupList(NULL); /* list of callbacks of the selected class */ + + labelClass = IupLabel(NULL); + + labelAttribute = IupLabel(NULL); + labelDefault = IupLabel(NULL); + labelCallback = IupLabel(NULL); + labelParams = IupLabel(NULL); + + IupSetAttributes(listClasses, "EDITBOX=NO, DROPDOWN=NO, NAME=listClasses, SIZE= 70x85"); + IupSetAttributes(listAttributes, "EDITBOX=NO, DROPDOWN=NO, NAME=listAttributes, SIZE=120x85"); + IupSetAttributes(listCallbacks, "EDITBOX=NO, DROPDOWN=NO, NAME=listCallbacks, SIZE=120x85"); + + IupSetAttribute(labelClass, "FONTSTYLE", "Bold"); + IupSetAttribute(labelClass, "FGCOLOR", "255 0 0"); + + IupSetAttribute(labelClass, "SIZE", "100x"); + IupSetAttribute(labelAttribute, "SIZE", "100x"); + IupSetAttribute(labelDefault, "SIZE", "100x"); + IupSetAttribute(labelCallback, "SIZE", "100x"); + IupSetAttribute(labelParams, "SIZE", "280x"); + + IupSetCallback(listClasses, "ACTION", (Icallback) classesList_ActionCB); + IupSetCallback(listAttributes, "ACTION", (Icallback) attributesList_ActionCB); + IupSetCallback(listCallbacks, "ACTION", (Icallback) callbacksList_ActionCB); + + IupSetHandle("listClasses", listClasses); + IupSetHandle("listAttributes", listAttributes); + IupSetHandle("listCallbacks", listCallbacks); + + IupSetHandle("labelClass", labelClass); + IupSetHandle("labelAttribute", labelAttribute); + IupSetHandle("labelDefault", labelDefault); + IupSetHandle("labelCallback", labelCallback); + IupSetHandle("labelParams", labelParams); + + lists = IupVbox( + IupHbox( + IupSetAttributes(IupFrame(IupVbox(listClasses, NULL)), "TITLE=CLASSES"), + IupSetAttributes(IupFrame(IupVbox(listAttributes, NULL)), "TITLE=ATTRIBUTES"), + IupSetAttributes(IupFrame(IupVbox(listCallbacks, NULL)), "TITLE=CALLBACKS"), + NULL), + IupHbox( + IupSetAttributes(IupFrame(IupHbox(IupVbox(IupLabel("Class: "), IupLabel("Attribute: "), + IupLabel("Default: "), IupLabel("Callback: "), + IupLabel("Parameters: "), NULL), + IupVbox(labelClass, labelAttribute, + labelDefault, labelCallback, + labelParams, NULL), + NULL)), "TITLE=DETAILS"), + NULL), + NULL); + + box = IupHbox(lists, NULL); + + IupSetAttributes(lists,"MARGIN=10x10, GAP=10"); + + dialog = IupDialog(box); + + IupSetAttribute(dialog, "TITLE", "Class Conference and Documentation"); + + IupShowXY(dialog, IUP_CENTER, IUP_CENTER); + + PopulateListOfClasses(); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ConfTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/clipboard.c b/iup/test/clipboard.c new file mode 100755 index 0000000..e4ea8c8 --- /dev/null +++ b/iup/test/clipboard.c @@ -0,0 +1,53 @@ +#include +#include + +#include "iup.h" +#include "iupkey.h" + + +static int copy_cb(Ihandle* ih) +{ + Ihandle* text = IupGetDialogChild(ih, "text"); + Ihandle* clipboard = IupClipboard(); + IupSetAttribute(clipboard, "TEXT", IupGetAttribute(text, "VALUE")); + IupDestroy(clipboard); + return IUP_DEFAULT; +} + +static int paste_cb(Ihandle* ih) +{ + Ihandle* text = IupGetDialogChild(ih, "text"); + Ihandle* clipboard = IupClipboard(); + IupSetAttribute(text, "VALUE", IupGetAttribute(clipboard, "TEXT")); + IupDestroy(clipboard); + return IUP_DEFAULT; +} + +void ClipboardTest(void) +{ + Ihandle *dlg = IupDialog(IupVbox( + IupSetAttributes(IupText(NULL), "SIZE=80x60, MULTILINE=YES, NAME=text, EXPAND=YES"), + IupSetCallbacks(IupButton("Copy", NULL), "ACTION", copy_cb, NULL), + IupSetCallbacks(IupButton("Paste", NULL), "ACTION", paste_cb, NULL), + NULL)); + IupSetAttribute(dlg, "GAP", "10"); + IupSetAttribute(dlg, "MARGIN", "20x20"); + + IupSetAttribute(dlg, "TITLE", "Clipboard Test"); + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ClipboardTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/colorbar.c b/iup/test/colorbar.c new file mode 100755 index 0000000..a24bbb1 --- /dev/null +++ b/iup/test/colorbar.c @@ -0,0 +1,162 @@ + +#include +#include + +#include "iup.h" +#include "cd.h" +#include "cdiup.h" +#include "iupcontrols.h" + +static Ihandle *canvas = NULL; +static cdCanvas *cdcanvas = NULL; + +static int redraw_cb(Ihandle* ih) +{ + if (!cdcanvas) + return IUP_DEFAULT; + + /* Activates canvas cdcanvas */ + cdActivate(cdcanvas); + cdClear(); + + /* Draws a rectangle on the canvas */ + cdBegin(CD_FILL); + cdVertex(50, 50); + cdVertex(150, 50); + cdVertex(100, 150); + cdEnd(); + + /* Function executed sucessfully */ + return IUP_DEFAULT; +} + +static int extended_cb(Ihandle* ih, int cell) +{ + printf("extended_cb(%d)\n", cell); + return IUP_DEFAULT; +} + +static char* cell_cb(Ihandle* ih, int cell) +{ + int ri, gi, bi; + static char str[30]; + + sprintf(str, "CELL%d", cell); + sscanf(IupGetAttribute(ih, str), "%d %d %d", &ri, &gi, &bi); + printf("cell_cb(%d): %d, %d, %d\n", cell, ri, gi, bi); + +/* + unsigned char r, g, b; + r = (unsigned char)ri; + g = (unsigned char)gi; + b = (unsigned char)bi; + if (IupGetColor(IUP_MOUSEPOS, IUP_MOUSEPOS, &r, &g, &b)) + { + sprintf(str, "%d %d %d", (int)r, (int)g, (int)b); + cdActivate( cdcanvas ) ; + cdForeground(cdEncodeColor(r, g, b)); + redraw_cb(canvas); + return str; + } +*/ + return NULL; +} + +static int select_cb(Ihandle* ih, int cell, int type) +{ + long cd_color; + char str[30]; + int ri, gi, bi; + + sprintf(str, "CELL%d", cell); + sscanf(IupGetAttribute(ih, str), "%d %d %d", &ri, &gi, &bi); + printf("select_cb(%d, %d): %d, %d, %d\n", cell, type, ri, gi, bi); + + cd_color = cdEncodeColor((unsigned char)ri,(unsigned char)gi,(unsigned char)bi); + + if (!cdcanvas) + return IUP_DEFAULT; + + cdActivate( cdcanvas ) ; + if (type == -1) + cdForeground(cd_color); + else + cdBackground(cd_color); + + redraw_cb(canvas); + + return IUP_DEFAULT; +} + +static int switch_cb(Ihandle* ih, int primcell, int seccell) +{ + long fgcolor; + if (!cdcanvas) + return IUP_DEFAULT; + printf("switch_cb(%d, %d)\n", primcell, seccell); + cdActivate(cdcanvas) ; + fgcolor = cdForeground(CD_QUERY); + cdForeground(cdBackground(CD_QUERY)); + cdBackground(fgcolor); + redraw_cb(canvas); + return IUP_DEFAULT; +} + +void ColorbarTest(void) +{ + Ihandle *dlg, *cb; + + IupControlsOpen(); + + /* Creates a canvas associated with the redraw action */ + canvas = IupCanvas(NULL) ; + IupSetCallback(canvas, "ACTION", (Icallback)redraw_cb); + IupSetAttribute(canvas, "RASTERSIZE", "200x300"); + + cb = IupColorbar(); + IupSetAttribute(cb, "RASTERSIZE", "70x"); + IupSetAttribute(cb, "EXPAND", "VERTICAL"); + IupSetAttribute(cb, "NUM_PARTS", "2"); + IupSetAttribute(cb, "SHOW_SECONDARY", "YES"); + IupSetAttribute(cb, "PREVIEW_SIZE", "60"); +// IupSetAttribute(cb, "ACTIVE", "NO"); +// IupSetAttribute(cb, "BGCOLOR", "128 0 255"); + + IupSetCallback(cb, "SELECT_CB", (Icallback)select_cb); + IupSetCallback(cb, "CELL_CB", (Icallback)cell_cb); + IupSetCallback(cb, "SWITCH_CB", (Icallback)switch_cb); + IupSetCallback(cb, "EXTENDED_CB", (Icallback)extended_cb); + + dlg = IupDialog(IupHbox(canvas, cb, NULL)); + IupSetAttribute(dlg, "MARGIN", "5x5"); + + IupSetAttribute(dlg, "TITLE", "IupColorbar"); + + /* Maps the dlg. This must be done before the creation of the CD canvas. + Could also use MAP_CB callback. */ + IupMap(dlg); + + cdcanvas = cdCreateCanvas(CD_IUP, canvas); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); + + IupMainLoop(); + + IupDestroy(dlg); + IupClose(); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ColorbarTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/colorbrowser.c b/iup/test/colorbrowser.c new file mode 100755 index 0000000..9ee594a --- /dev/null +++ b/iup/test/colorbrowser.c @@ -0,0 +1,91 @@ +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +static Ihandle *label_red, *label_green, *label_blue, *label_color; + +static void clrbrwsr_update_text(unsigned char r, unsigned char g, unsigned char b, char* hsi) +{ + float h, s, i; + sscanf(hsi, "%f %f %f", &h, &s, &i); + IupSetfAttribute(label_red, "TITLE", "R:%3d H:%3.0f", (int)r, (double)h); + IupSetfAttribute(label_green, "TITLE", "G:%3d S:%1.2f", (int)g, (double)s); + IupSetfAttribute(label_blue, "TITLE", "B:%3d I:%1.2f", (int)b, (double)i); + IupSetfAttribute(label_color, "BGCOLOR", "%d %d %d", (int)r, (int)g, (int)b); +} + +static int clrbrwsr_drag_cb(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b) +{ + (void)ih; + printf("DRAG_CB(%d, %d, %d)\n", (int)r, (int)g, (int)b); + clrbrwsr_update_text(r, g, b, IupGetAttribute(ih, "HSI")); + return IUP_DEFAULT; +} + +static int clrbrwsr_change_cb(Ihandle* ih, unsigned char r, unsigned char g, unsigned char b) +{ + (void)ih; + printf("CHANGE_CB(%d, %d, %d)\n", (int)r, (int)g, (int)b); + clrbrwsr_update_text(r, g, b, IupGetAttribute(ih, "HSI")); + return IUP_DEFAULT; +} + +void ColorBrowserTest(void) +{ + Ihandle *dlg, *hbox_final, *vbox, *clrbrwsr; + + label_red = IupLabel(NULL); + IupSetAttribute(label_red, "SIZE", "100x10"); + IupSetAttribute(label_red, "FONT", "Courier, 12"); + label_green = IupLabel(NULL); + IupSetAttribute(label_green, "SIZE", "100x10"); + IupSetAttribute(label_green, "FONT", "Courier, 12"); + label_blue = IupLabel(NULL); + IupSetAttribute(label_blue, "SIZE", "100x10"); + IupSetAttribute(label_blue, "FONT", "Courier, 12"); + + label_color = IupLabel(NULL); + IupSetAttribute(label_color, "RASTERSIZE", "50x50"); + + clrbrwsr = IupColorBrowser(); +// IupSetAttribute(clrbrwsr, "ACTIVE", "NO"); +// IupSetAttribute(clrbrwsr, "BGCOLOR", "128 128 255"); + IupSetAttribute(clrbrwsr, "EXPAND", "YES"); + IupSetAttribute(clrbrwsr, "RGB", "128 0 128"); + clrbrwsr_update_text(128, 0, 128, IupGetAttribute(clrbrwsr, "HSI")); + + IupSetCallback(clrbrwsr, "CHANGE_CB", (Icallback)clrbrwsr_change_cb); + IupSetCallback(clrbrwsr, "DRAG_CB", (Icallback)clrbrwsr_drag_cb); + + vbox = IupVbox( + label_red, + label_green, + label_blue, + label_color, + NULL); + + hbox_final = IupHbox (clrbrwsr, vbox, NULL); + IupSetAttribute(hbox_final, "MARGIN", "10x10"); + + dlg = IupDialog (hbox_final); + IupSetAttribute(dlg, "TITLE", "IupColorBrowser Test"); + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + ColorBrowserTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/config.mak b/iup/test/config.mak new file mode 100755 index 0000000..2764e6c --- /dev/null +++ b/iup/test/config.mak @@ -0,0 +1,115 @@ +APPNAME = iuptest +APPTYPE = CONSOLE + +INCLUDES = ../include + +ifdef USE_GTK + ifndef GTK_DEFAULT + # Build GTK version in IRIX,SunOS,AIX,Win32 + APPNAME = iuptestgtk + endif +else + ifdef GTK_DEFAULT + # Build Motif version in Linux,Darwin,FreeBSD + USE_MOTIF = Yes + APPNAME = iuptestmot + endif +endif + +USE_IUP3 = Yes +USE_STATIC = Yes +IUP = .. + +#TEC_UNAME_DIR = Win32.$(TEC_UNAME) +#DBG = Yes + +# Must uncomment all SRC lines +DEFINES = BIG_TEST +SRC += bigtest.c + +SRC += tray.c +SRC += dialog.c +SRC += predialogs.c +SRC += timer.c +SRC += label.c +SRC += canvas.c +SRC += frame.c +SRC += idle.c +SRC += button.c +SRC += toggle.c +SRC += vbox.c +SRC += hbox.c +SRC += progressbar.c +SRC += text.c +SRC += val.c +SRC += tabs.c +SRC += sample.c +SRC += menu.c +SRC += spin.c +SRC += text_spin.c +SRC += list.c +SRC += sysinfo.c +SRC += mdi.c +SRC += getparam.c +SRC += getcolor.c +SRC += class_conf.c +SRC += tree.c +SRC += zbox.c +SRC += scanf.c +SRC += sbox.c +SRC += clipboard.c + + +#ifneq ($(findstring Win, $(TEC_SYSNAME)), ) +# LIBS += iupimglib +#else +# SLIB += $(IUP)/lib/$(TEC_UNAME)/libiupimglib.a +#endif + +USE_CD = Yes +SRC += canvas_scrollbar.c +SRC += canvas_cddbuffer.c +SRC += canvas_cdsimple.c + +USE_OPENGL = Yes +DEFINES += USE_OPENGL +SRC += glcanvas.c +SRC += glcanvas_cube.c + +USE_IUPCONTROLS = Yes +SRC += colorbrowser.c +SRC += dial.c +SRC += colorbar.c +SRC += cells_numbering.c +SRC += cells_degrade.c +SRC += cells_checkboard.c +SRC += gauge.c +SRC += matrix.c +SRC += matrix_cbs.c +SRC += matrix_cbmode.c + +LINKER = g++ +DEFINES += PPLOT_TEST +SRC += pplot.c +ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + LIBS += iup_pplot +# LIBS += cdpdflib +# LDIR += $(IUP)/lib/$(TEC_UNAME) +else + SLIB += $(IUP)/lib/$(TEC_UNAME)/libiup_pplot.a +# SLIB += $(CD)/lib/$(TEC_UNAME)/libcdpdflib.a +endif + +ifneq ($(findstring Win, $(TEC_SYSNAME)), ) + SRC += iuptest.rc +else + ifneq ($(findstring cygw, $(TEC_UNAME)), ) + SRC += iuptest.rc + endif +endif + +#ifneq ($(findstring Win, $(TEC_SYSNAME)), ) +# USE_GDIPLUS=Yes +#else +# USE_XRENDER=Yes +#endif diff --git a/iup/test/dial.c b/iup/test/dial.c new file mode 100755 index 0000000..727934c --- /dev/null +++ b/iup/test/dial.c @@ -0,0 +1,111 @@ +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB(%s)\n", IupGetName(ih)); + return IUP_DEFAULT; +} + +static void printdial(Ihandle* ih, double a, char* color) +{ + Ihandle* label = NULL; + char* u = NULL; + char* type = IupGetAttribute(ih, "TYPE"); + + switch(type[0]) + { + case 'V': + label = IupGetHandle("lbl_v"); + u = "deg"; + break; + case 'H': + label = IupGetHandle("lbl_h"); + u = "rad"; + break; + case 'C': + label = IupGetHandle("lbl_c"); + u = "deg"; + break; + } + + if (label) + { + IupSetfAttribute(label, "TITLE", "%.3g %s", a, u); + IupSetAttribute(label, "BGCOLOR", color); + } +} + +static int mousemove(Ihandle* ih, double a) +{ + printdial(ih, a, "0 255 0"); + return IUP_DEFAULT; +} + +static int button_press(Ihandle* ih, double a) +{ + printdial(ih, a, "255 0 0"); + return IUP_DEFAULT; +} + +static int button_release(Ihandle* ih, double a) +{ + printdial(ih, a, NULL); + return IUP_DEFAULT; +} + +void DialTest(void) +{ + char *error = NULL; + Ihandle *dlg, *dial_h, *dial_v, *dial_c; + + error = IupLoad("dial.led"); + if (error) + { + error = IupLoad("../test/dial.led"); + if (error) + { + IupMessage("%s\n", error); + return; + } + } + + dlg = IupGetHandle("dlg"); + dial_h = IupGetHandle("dial_h"); + dial_v = IupGetHandle("dial_v"); + dial_c = IupGetHandle("dial_c"); + + IupSetFunction("dial_mousemove", (Icallback)mousemove); + IupSetFunction("dial_buttonpress", (Icallback)button_press); + IupSetFunction("dial_buttonrelease", (Icallback)button_release); + + IupSetCallback(dial_h, "HELP_CB", help_cb); + IupSetCallback(dial_v, "HELP_CB", help_cb); + + IupSetAttribute(dial_h, "EXPAND", "HORIZONTAL"); + IupSetAttribute(dial_v, "EXPAND", "VERTICAL"); + +// IupSetAttribute(dlg, "HELPBUTTON", "YES"); +// IupSetAttribute(dlg, "DIALOGFRAME", "YES"); + + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + DialTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/dial.led b/iup/test/dial.led new file mode 100755 index 0000000..8157cb7 --- /dev/null +++ b/iup/test/dial.led @@ -0,0 +1,49 @@ +lbl_h = LABEL[SIZE=50x]("0") +lbl_v = LABEL[SIZE=50x]("0") +lbl_c = LABEL[SIZE=50x]("0") + +dial_v = DIAL +[ + UNIT=DEGREES, + MOUSEMOVE_CB="dial_mousemove", + BUTTON_PRESS_CB="dial_buttonpress", + BUTTON_RELEASE_CB="dial_buttonrelease" +] ("VERTICAL") + +dial_h = DIAL +[ + DENSITY=0.1, + MOUSEMOVE_CB="dial_mousemove", + BUTTON_PRESS_CB="dial_buttonpress", + BUTTON_RELEASE_CB="dial_buttonrelease" +] ("HORIZONTAL") + +dial_c = DIAL +[ + UNIT=DEGREES, + MOUSEMOVE_CB="dial_mousemove", + BUTTON_PRESS_CB="dial_buttonpress", + BUTTON_RELEASE_CB="dial_buttonrelease" +] ("CIRCULAR") + +dlg = DIALOG[TITLE="IupDial Test"] +( + VBOX[MARGIN=10x10, GAP=10] + ( + HBOX[ALIGNMENT=ACENTER] + ( + dial_v, + lbl_v + ), + HBOX[ALIGNMENT=ACENTER] + ( + dial_h, + lbl_h + ), + HBOX[ALIGNMENT=ACENTER] + ( + dial_c, + lbl_c + ) + ) +) diff --git a/iup/test/dialog.c b/iup/test/dialog.c new file mode 100755 index 0000000..f8097c9 --- /dev/null +++ b/iup/test/dialog.c @@ -0,0 +1,473 @@ +#if 0 +/* To check for memory leaks */ +#define VLD_MAX_DATA_DUMP 80 +#include +#endif + +#include +#include +#include "iup.h" +#include "iupkey.h" + +static unsigned char pixmap_x [ ] = +{ + 1,2,3,3,3,3,3,3,3,2,1, + 2,1,2,3,3,3,3,3,2,1,2, + 0,2,1,2,3,3,3,2,1,2,0, + 0,0,2,1,2,3,2,1,2,0,0, + 0,0,0,2,1,2,1,2,0,0,0, + 0,0,0,0,2,1,2,0,0,0,0, + 0,0,0,2,1,2,1,2,0,0,0, + 0,0,2,1,2,3,2,1,2,0,0, + 0,2,1,2,3,3,3,2,1,2,0, + 2,1,2,3,3,3,3,3,2,1,2, + 1,2,3,3,3,3,3,3,3,2,1 +}; + +static unsigned char pixmap_cursor [ ] = +{ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,2,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +} ; + +static int close_cb(Ihandle *ih) +{ + printf("CLOSE_CB(%s) with IupDestroy\n", IupGetAttribute(ih, "TESTTITLE")); + IupDestroy(ih); + return IUP_IGNORE; +} + +static int close_cb2(Ihandle *ih) +{ + printf("CLOSE_CB(%s) with IUP_IGNORE\n", IupGetAttribute(ih, "TESTTITLE")); + return IUP_IGNORE; +} + +static int show_cb(Ihandle *ih, int state) +{ + char* state_str[5] ={ + "SHOW", + "RESTORE", + "MINIMIZE", + "MAXIMIZE", + "HIDE" + }; + printf("SHOW_CB(%s, %s)\n", IupGetAttribute(ih, "TESTTITLE"), state_str[state]); + return IUP_DEFAULT; +} + +static int map_cb(Ihandle *ih) +{ + printf("MAP_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE")); + return IUP_DEFAULT; +} + +static int dropfiles_cb(Ihandle *ih, const char* filename, int num, int x, int y) +{ + printf("DROPFILES_CB(%s, %s, %d, %d, %d)\n", IupGetAttribute(ih, "TESTTITLE"), filename, num, x, y); + return IUP_DEFAULT; +} + +static int resize_cb(Ihandle *ih, int w, int h) +{ + printf("RESIZE_CB(%s, %d, %d) RASTERSIZE=%s\n", IupGetAttribute(ih, "TESTTITLE"), w, h, IupGetAttribute(ih, "RASTERSIZE")); + return IUP_DEFAULT; +} + +static int move_cb(Ihandle *ih, int x, int y) +{ + printf("MOVE_CB(%s, %d, %d)\n", IupGetAttribute(ih, "TESTTITLE"), x, y); + return IUP_DEFAULT; +} + +static int getfocus_cb(Ihandle *ih) +{ + printf("GETFOCUS_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE")); + return IUP_DEFAULT; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE")); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE")); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE")); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + printf("ENTERWINDOW_CB(%s)\n", IupGetAttribute(ih, "TESTTITLE")); + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static void new_dialog(int test, char* tip); + +static int k_any(Ihandle *ih, int c) +{ + if (iup_isprint(c)) + printf("K_ANY(%s, %d = %s \'%c\')", IupGetAttribute(ih, "TESTTITLE"), c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%s, %d = %s)", IupGetAttribute(ih, "TESTTITLE"), c, iupKeyCodeToName(c)); + printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE")); + + switch(c) + { + case K_r: + IupSetAttribute(ih, "RASTERSIZE", "300x300"); + IupRefresh(ih); + break; + case K_1: + new_dialog(1, "SIZE=FULLxFULL + IupShow.\n" + "Check also F1 = RASTERSIZE+IupRefresh.\n" + "close_cb returns IGNORE."); + break; + case K_2: + new_dialog(2, "Only common dlg decorations.\n" + "ShowXY.\n" + "min/max size."); + break; + case K_3: + new_dialog(3, "NO decorations"); + break; + case K_4: + new_dialog(4, "PLACEMENT.\n" + "Repeat key to test variations."); + break; + case K_5: + new_dialog(5, "IupPopup"); + break; + case K_6: + new_dialog(6, "FULLSCREEN"); + break; + case K_p: + { + static int count = 0; + if (count == 0) + IupSetAttribute(ih, "PLACEMENT", "MAXIMIZED"); + else if (count == 1) + IupSetAttribute(ih, "PLACEMENT", "MINIMIZED"); + else if (count == 2) + IupSetAttribute(ih, "PLACEMENT", "NORMAL"); + else + IupSetAttribute(ih, "PLACEMENT", "FULL"); + + count++; + if (count == 4) // cicle from 0 to 3 + count = 0; + + IupShow(ih); + } + break; + case K_s: + IupShow(IupGetHandle("_MAIN_DIALOG_TEST_")); + break; + case K_f: + if (IupGetInt(ih, "FULLSCREEN")) + IupSetAttribute(ih, "FULLSCREEN", "NO"); + else + IupSetAttribute(ih, "FULLSCREEN", "YES"); + break; + case K_ESC: + IupDestroy(ih); + return IUP_IGNORE; + case K_c: + return IUP_CLOSE; + case K_h: + IupHide(ih); + break; + } + return IUP_DEFAULT; +} + +static void new_dialog(int test, char* tip) +{ + Ihandle *dlg = IupDialog(NULL); + IupSetAttribute(dlg, "TIP", tip); + IupSetfAttribute(dlg, "_TEST_", "%d", test); + + if (test == 0) + { + char* msg = "Press a key for a dialog test:\n" + "1 = new with SIZE=FULLxFULL\n" + "2 = new with dialog decorations\n" + "3 = new with NO decorations\n" + "4 = new changing PLACEMENT\n" + "5 = new using IupPopup\n" + "6 = new with FULLSCREEN=YES\n" + "p = PLACEMENT=MAXIMIZED\n" + "pp = PLACEMENT=MINIMIZED\n" + "ppp = PLACEMENT=NORMAL\n" + "pppp = PLACEMENT=FULL\n" + "s = IupShow(main)\n" + "f = toggle FULLSCREEN state\n" + "c = return IUP_CLOSE;\n" + "h = IupHide\n" + "r = RASTERSIZE+IupRefresh\n" + "Esc = quit"; + IupAppend(dlg, IupVbox(IupLabel(msg), NULL)); + + IupSetHandle("_MAIN_DIALOG_TEST_", dlg); + } + else + { + IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + IupSetAttribute(dlg, "CURSOR", "CROSS"); + } + + if (test != 3) + IupSetfAttribute(dlg, "TITLE", "dlg%d", test); + IupSetfAttribute(dlg, "TESTTITLE", "dlg%d", test); + + if (test == 1) + IupSetAttribute(dlg, "SIZE", "FULLxFULL"); + else if (test != 6) + IupSetAttribute(dlg, "RASTERSIZE", "500x500"); + + if (test == 2) + { + IupSetAttribute(dlg, "CURSOR", "DLG_CURSOR"); + IupSetAttribute(dlg, "ICON", "DLG_ICON"); + IupSetAttribute(dlg, "MINSIZE", "300x300"); + IupSetAttribute(dlg, "MAXSIZE", "600x600"); +// IupSetAttribute(dlg, "FONTSIZE", "20"); + + { + static int count = 0; + if (count == 1) + { +// IupSetAttribute(dlg, "FONT", "TIMES_ITALIC_14"); + IupSetAttribute(dlg, "FONT", "Times, Italic 14"); +// IupSetAttribute(dlg, "FONT", "Times, Underline Italic Strikeout -14"); + IupSetAttribute(dlg, "TIPBGCOLOR", "255 128 128"); + IupSetAttribute(dlg, "TIPFGCOLOR", "0 92 255"); + + // Windows Only + IupSetAttribute(dlg, "TIPBALLON", "YES"); + IupSetAttribute(dlg, "TIPBALLONTITLE", "Tip Title Test"); + IupSetAttribute(dlg, "TIPBALLONTITLEICON", "2"); + //IupSetAttribute(dlg, "TIPDELAY", "5000"); + } + if (count == 2) + { + // Windows Only + IupSetAttribute(dlg, "TOPMOST", "YES"); + IupSetAttribute(dlg, "OPACITY", "128"); + IupSetAttribute(dlg, "TOOLBOX", "YES"); + } + count++; + } + } + + if (test == 3) + { + IupSetAttribute(dlg, "BGCOLOR", "255 0 255"); + IupSetAttribute(dlg, "RESIZE", "NO"); + IupSetAttribute(dlg, "MENUBOX", "NO"); + IupSetAttribute(dlg, "MAXBOX", "NO"); + IupSetAttribute(dlg, "MINBOX", "NO"); + IupSetAttribute(dlg, "BORDER", "NO"); + + IupSetAttribute(dlg, "RASTERSIZE", "500x500"); + } + + if (test == 5) + { + IupSetAttribute(dlg, "DIALOGFRAME", "YES"); + + // Windows Only + IupSetAttribute(dlg, "HELPBUTTON", "YES"); + } + + if (test == 1) + IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb2); + else + IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb); + + IupSetCallback(dlg, "SHOW_CB", (Icallback)show_cb); + IupSetCallback(dlg, "MAP_CB", (Icallback)map_cb); + IupSetCallback(dlg, "K_ANY", (Icallback)k_any); + IupSetCallback(dlg, "GETFOCUS_CB", (Icallback)getfocus_cb); + IupSetCallback(dlg, "KILLFOCUS_CB", (Icallback)killfocus_cb); + IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb); + IupSetCallback(dlg, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); + IupSetCallback(dlg, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + IupSetCallback(dlg, "RESIZE_CB", (Icallback)resize_cb); + IupSetCallback(dlg, "MOVE_CB", (Icallback)move_cb); + + // Windows and GTK Only + IupSetCallback(dlg, "DROPFILES_CB", (Icallback)dropfiles_cb); + + if (test == 0 || test == 1) + IupShow(dlg); + else if (test == 3) + IupShowXY(dlg, IUP_RIGHT, IUP_CENTER); + else if (test == 2) + IupShowXY(dlg, 100, 100); + else if (test == 4) + { + static int count = 0; + if (count == 0) + { + IupSetAttribute(dlg, "PLACEMENT", "MINIMIZED"); + IupSetfAttribute(dlg, "TIP", "%s%s", IupGetAttribute(dlg, "TIP"), "\n.PLACEMENT=MINIMIZED."); + } + else if (count == 1) + { + IupSetAttribute(dlg, "PLACEMENT", "MAXIMIZED"); + IupSetfAttribute(dlg, "TIP", "%s%s", IupGetAttribute(dlg, "TIP"), "\n.PLACEMENT=MAXIMIZED."); + } + else + { + IupSetAttribute(dlg, "PLACEMENT", "FULL"); + IupSetfAttribute(dlg, "TIP", "%s%s", IupGetAttribute(dlg, "TIP"), "\n.PLACEMENT=FULL."); + } + + count++; + if (count == 3) // cicle from 0 to 2 + count = 0; + + IupShow(dlg); + } + else if (test == 5) + { + IupPopup(dlg, IUP_CURRENT, IUP_CURRENT); + } + else if (test == 6) + { + IupSetAttribute(dlg, "FULLSCREEN", "YES"); + IupShow(dlg); + } +} + +static void create_images(void) +{ + Ihandle *image; + + image = IupImage(11, 11, pixmap_x); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "0 1 0"); + IupSetAttribute(image, "2", "255 0 0"); + IupSetAttribute(image, "3", "255 255 0"); + IupSetHandle("DLG_ICON", image); + + image = IupImage(32, 32, pixmap_cursor); + IupSetAttribute(image, "0", "BGCOLOR"); /* always for cursor */ + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "128 0 0"); + IupSetAttribute(image, "HOTSPOT", "21:10"); + IupSetHandle("DLG_CURSOR", image); +} + +void DialogTest(void) +{ + create_images(); + + new_dialog(0, "IupDialog as a main window,\n" + "all decorations.\n" + "rastersize+centered."); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + DialogTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif + +/***************************************** +--------------TESTS------------------- + +to check IUP sizes x Native sizes: +in UNIX use xwininfo +in Windows use Spy++ +take screen shots, measure dlg sizes if necessary + +0- with all decorations + check: TITLE + TIP + CURSOR + BGCOLOR + RASTERSIZE (check window real size - 500x500) + CLOSE_CB, SHOW_CB, MAP_CB, K_ANY, GETFOCUS_CB, KILLFOCUS_CB, + HELP_CB, ENTERWINDOW_CB, LEAVEWINDOW_CB, RESIZE_CB + Close_cb using IupDestroy + closing main window will close child dialogs + Esc - call IupDestroy + 'h' = IupHide - no destroy + 'c' = return IUP_CLOSE - no destroy + +1- SIZE = FULLxFULL (check window real size) + press 'r' to change - RASTERSIZE+IupRefresh (300x300) + close_cb with IGNORE + +2- ShowXY (check position) + MINSIZE (300x300) and MAXSIZE (600x600) + Custom Icon and Cursor + +3- no decorations + +4- 1o. PLACEMENT MINIMIZED + 2o. PLACEMENT MAXIMIZED + 3o. PLACEMENT FULL + (press 'p' to change placement any time) + +5- only "dlg" decorations + IupPopup + 'c' = return IUP_CLOSE - no destroy + 'h' = IupHide - no destroy + 's' = IupShow for dialog0 + +6- FULLSCREEN + (press 'f' to change fullscreen any time) + +*/ diff --git a/iup/test/file_large.xbm b/iup/test/file_large.xbm new file mode 100755 index 0000000..c2095e9 --- /dev/null +++ b/iup/test/file_large.xbm @@ -0,0 +1,14 @@ +#define file_large_xbm_width 32 +#define file_large_xbm_height 32 +static char file_large_xbm_bits[] = { + 0xF0, 0xFF, 0x3F, 0x00, 0x10, 0x00, 0x60, 0x00, 0x10, 0x00, 0xA0, 0x00, + 0x10, 0x00, 0x20, 0x01, 0x10, 0x00, 0x20, 0x02, 0x10, 0x00, 0x20, 0x04, + 0x10, 0x00, 0x20, 0x08, 0x10, 0x00, 0xE0, 0x1F, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x10, 0xF0, 0xFF, 0xFF, 0x1F }; diff --git a/iup/test/frame.c b/iup/test/frame.c new file mode 100755 index 0000000..2bcd128 --- /dev/null +++ b/iup/test/frame.c @@ -0,0 +1,68 @@ +#include +#include +#include "iup.h" + +void FrameTest(void) +{ + Ihandle *dlg, *frame1, *frame2; + + frame1 = IupFrame + ( + IupVbox + ( + IupLabel("Label1"), + IupSetAttributes(IupLabel("Label2"), "SIZE=70x"), + IupLabel("Label3"), + NULL + ) + ); + + frame2 = IupFrame + ( + IupVbox + ( + IupSetAttributes(IupLabel("Label4"), "EXPAND=HORIZONTAL"), + IupLabel("Label5"), + IupLabel("Label6"), + NULL + ) + ); + + IupSetAttribute(frame1, "TITLE", "Title Text"); +// IupSetAttribute(frame1, "FGCOLOR", "255 0 0"); +// IupSetAttribute(frame1, "BGCOLOR", "0 128 0"); + IupSetAttribute(frame2, "SUNKEN", "YES"); + + IupSetAttribute(frame1, "MARGIN", "0x0"); + IupSetAttribute(frame2, "MARGIN", "0x0"); +// IupSetAttribute(frame2, "BGCOLOR", "0 128 0"); + dlg = IupDialog(IupHbox(frame1, frame2, NULL)); + + IupSetAttribute(dlg, "TITLE", "IupFrame Test"); + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupSetAttribute(dlg, "GAP", "5"); + IupSetAttribute(dlg, "FONTSIZE", "14"); +// IupSetAttribute(dlg, "RASTERSIZE", "300x200"); +// IupSetAttribute(dlg, "BGCOLOR", "0 128 0"); + + IupShow(dlg); + printf("RASTERSIZE(%s)\n", IupGetAttribute(frame1, "RASTERSIZE")); + printf("CLIENTSIZE(%s)\n", IupGetAttribute(frame1, "CLIENTSIZE")); + printf("RASTERSIZE(%s)\n", IupGetAttribute(frame2, "RASTERSIZE")); + printf("CLIENTSIZE(%s)\n", IupGetAttribute(frame2, "CLIENTSIZE")); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + FrameTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/gauge.c b/iup/test/gauge.c new file mode 100755 index 0000000..12e3c76 --- /dev/null +++ b/iup/test/gauge.c @@ -0,0 +1,305 @@ +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +static float increment = 0.01f; +static Ihandle *gauge; +static Ihandle *btn_pause; +static Ihandle *timer; + +static unsigned char pixmap_play[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_restart[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_rewind[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_forward[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_pause[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static void createimg_s (void) +{ + Ihandle *img_restart, *img_play, *img_forward, *img_rewind, *img_pause; + + img_restart = IupImage(22,22, pixmap_restart); + img_play = IupImage(22,22, pixmap_play); + img_forward = IupImage(22,22, pixmap_forward); + img_rewind = IupImage(22,22, pixmap_rewind); + img_pause = IupImage(22,22, pixmap_pause); + + IupSetHandle ("img_restart", img_restart); + IupSetHandle ("img_play", img_play); + IupSetHandle ("img_forward", img_forward); + IupSetHandle ("img_rewind", img_rewind); + IupSetHandle ("img_pause", img_pause); + + IupSetAttribute (img_restart, "1", "0 0 0"); + IupSetAttribute (img_restart, "2", "BGCOLOR"); + IupSetAttribute (img_play, "1", "0 0 0"); + IupSetAttribute (img_play, "2", "BGCOLOR"); + IupSetAttribute (img_forward, "1", "0 0 0"); + IupSetAttribute (img_forward, "2", "BGCOLOR"); + IupSetAttribute (img_rewind, "1", "0 0 0"); + IupSetAttribute (img_rewind, "2", "BGCOLOR"); + IupSetAttribute (img_pause, "1", "0 0 0"); + IupSetAttribute (img_pause, "2", "BGCOLOR"); +} + +static int time_cb(void) +{ + float value = IupGetFloat(gauge, "VALUE"); + value += increment; + if (value > 1) value = 0; /* start over */ + IupSetfAttribute(gauge, "VALUE", "%f", (double)value); + return IUP_DEFAULT; +} + +static int btn_pause_cb(void) +{ + if (!IupGetInt(timer, "RUN")) + { + IupSetAttribute(timer, "RUN", "YES"); + IupSetAttribute(btn_pause, "IMAGE", "img_pause"); + } + else + { + IupSetAttribute(timer, "RUN", "NO"); + IupSetAttribute(btn_pause, "IMAGE", "img_play"); + } + + return IUP_DEFAULT; +} + +static int btn_restart_cb(void) +{ + IupSetAttribute(gauge, "VALUE", "0"); + return IUP_DEFAULT; +} + +static int btn_accelerate_cb(void) +{ + increment *= 2; + return IUP_DEFAULT; +} + +static int btn_decelerate_cb(void) +{ + increment /= 2; + return IUP_DEFAULT; +} + +static int btn_show1_cb(void) +{ + if (!IupGetInt(gauge, "DASHED")) + IupSetAttribute(gauge, "DASHED", "YES"); + else + IupSetAttribute(gauge, "DASHED", "NO"); + + return IUP_DEFAULT; +} + +static int btn_show2_cb(void) +{ + if (!IupGetInt(gauge, "SHOW_TEXT")) + IupSetAttribute(gauge, "SHOW_TEXT", "YES"); + else + IupSetAttribute(gauge, "SHOW_TEXT", "NO"); + + return IUP_DEFAULT; +} + +void GaugeTest(void) +{ + Ihandle *dlg, *vbox, *hbox; + Ihandle *btn_restart, *btn_accelerate, *btn_decelerate, *btn_show1, *btn_show2; + + timer = IupTimer(); + IupSetCallback(timer, "ACTION_CB", (Icallback)time_cb); + IupSetAttribute(timer, "TIME", "100"); + + gauge = IupGauge(); + + IupSetAttribute(gauge, "EXPAND", "YES"); +// IupSetAttribute(gauge, "BGCOLOR", "255 0 128"); +// IupSetAttribute(gauge, "FGCOLOR", "0 128 0"); + + btn_restart = IupButton(NULL, NULL); + btn_pause = IupButton(NULL, NULL); + btn_accelerate = IupButton(NULL, NULL); + btn_decelerate = IupButton(NULL, NULL); + btn_show1 = IupButton("Dashed", NULL); + btn_show2 = IupButton("Text", NULL); + + createimg_s(); + + IupSetAttribute(btn_restart, "IMAGE", "img_restart"); + IupSetAttribute(btn_restart, "TIP", "Restart" ); + IupSetAttribute(btn_pause, "IMAGE", "img_pause"); + IupSetAttribute(btn_pause, "TIP", "Play/Pause"); + IupSetAttribute(btn_accelerate, "IMAGE", "img_forward"); + IupSetAttribute(btn_accelerate, "TIP", "Accelerate"); + IupSetAttribute(btn_decelerate, "IMAGE", "img_rewind"); + IupSetAttribute(btn_decelerate, "TIP", "Decelerate"); + IupSetAttribute(btn_show1, "TIP", "Dashed or Continuous"); + IupSetAttribute(btn_show2, "TIP", "Text or None"); + + hbox = IupHbox + ( + IupFill(), + btn_pause, + btn_restart, + btn_decelerate, + btn_accelerate, + btn_show1, + btn_show2, + IupFill(), + NULL + ); + + vbox = IupVbox(gauge, hbox, NULL); + IupSetAttribute(vbox, "MARGIN", "10x10"); + IupSetAttribute(vbox, "GAP", "5"); + + dlg = IupDialog(vbox); + + IupSetAttribute(dlg, "TITLE", "IupGauge Test"); + + IupSetCallback(btn_pause, "ACTION", (Icallback) btn_pause_cb); + IupSetCallback(btn_restart, "ACTION", (Icallback) btn_restart_cb); + IupSetCallback(btn_accelerate, "ACTION", (Icallback) btn_accelerate_cb); + IupSetCallback(btn_decelerate, "ACTION", (Icallback) btn_decelerate_cb); + IupSetCallback(btn_show1, "ACTION", (Icallback) btn_show1_cb); + IupSetCallback(btn_show2, "ACTION", (Icallback) btn_show2_cb); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); + + IupSetAttribute(timer, "RUN", "YES"); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + GaugeTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/getcolor.c b/iup/test/getcolor.c new file mode 100755 index 0000000..02ceb8d --- /dev/null +++ b/iup/test/getcolor.c @@ -0,0 +1,28 @@ +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +void GetColorTest(void) +{ + unsigned char r = 10, g = 100, b = 25; + if (IupGetColor(100, 100, &r, &g, &b)) + printf("RGB = %d, %d, %d Hex=[%.2X%.2X%.2X]\n", r, g, b, r, g, b); +} + + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + GetColorTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/getparam.c b/iup/test/getparam.c new file mode 100755 index 0000000..fbda6bb --- /dev/null +++ b/iup/test/getparam.c @@ -0,0 +1,98 @@ +/* IupGetParam Example in C + Shows a dialog with all the possible fields. +*/ +#include +#include + +#include +#include + +static int param_action(Ihandle* dialog, int param_index, void* user_data) +{ + switch(param_index) + { + case -1: + printf("IupGetParam - OK\n"); + break; + case -2: + printf("IupGetParam - Map\n"); + break; + case -3: + printf("IupGetParam - Cancel\n"); + break; +// case 1: +// return 0; + default: + { + Ihandle* param; + char param_str[50]; + sprintf(param_str, "PARAM%d", param_index); + param = (Ihandle*)IupGetAttribute(dialog, param_str); + printf("%s = %s\n", param_str, IupGetAttribute(param, "VALUE")); + break; + } + } + return 1; +} + +void GetParamTest(void) +{ + int pboolean = 1; + int pinteger = 3456; + float preal = 3.543f; + int pinteger2 = 192; + float preal2 = 0.5f; + float pangle = 90; + char pstring[100] = "string text"; + char pcolor[100] = "255 0 128"; + int plist = 2; + char pstring2[200] = "second text\nsecond line"; + char file_name[500] = "test.jpg"; + + if (!IupGetParam("Title", param_action, 0, + "Boolean: %b[No,Yes]\n" + "Integer: %i\n" + "Real 1: %r\n" + "Sep1 %t\n" + "Integer: %i[0,255]\n" + "Real 2: %r[-1.5,1.5,0.05]\n" + "Sep2 %t\n" + "Angle: %a[0,360]\n" + "String: %s\n" + "List: %l|item1|item2|item3|\n" + "File: %f[OPEN|*.bmp;*.jpg|CURRENT|NO|NO]\n" + "Color: %c{Color Tip}\n" + "Sep3 %t\n" + "Multiline: %m\n", + &pboolean, &pinteger, &preal, &pinteger2, &preal2, &pangle, pstring, &plist, file_name, pcolor, pstring2, NULL)) + return; + + IupMessagef("IupGetParam", + "Boolean Value: %d\n" + "Integer: %d\n" + "Real 1: %g\n" + "Integer: %d\n" + "Real 2: %g\n" + "Angle: %g\n" + "String: %s\n" + "List Index: %d\n" + "FileName: %s\n" + "Color: %s\n" + "Multiline: %s", + pboolean, pinteger, (double)preal, pinteger2, (double)preal2, (double)pangle, pstring, plist, file_name, pcolor, pstring2); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + GetParamTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/glcanvas.c b/iup/test/glcanvas.c new file mode 100755 index 0000000..6a34c29 --- /dev/null +++ b/iup/test/glcanvas.c @@ -0,0 +1,77 @@ +#ifdef USE_OPENGL +#ifdef WIN32 +#include +#endif +#include + +#include +#include + +#include "iup.h" +#include "iupgl.h" + + +static int action(Ihandle *ih) +{ + IupGLMakeCurrent(ih); + + glClearColor(1.0, 0.0, 1.0, 1.f); /* pink */ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glColor3f(1.0,0.0,0.0); /* red */ + glBegin(GL_QUADS); + glVertex2f(0.9f,0.9f); + glVertex2f(0.9f,-0.9f); + glVertex2f(-0.9f,-0.9f); + glVertex2f(-0.9f,0.9f); + glEnd(); + + IupGLSwapBuffers(ih); + + return IUP_DEFAULT; +} + +void GLCanvasTest(void) +{ + Ihandle *dlg, *canvas, *box; + + IupGLCanvasOpen(); + + box = IupVbox(NULL); + IupSetAttribute(box, "MARGIN", "5x5"); + + canvas = IupGLCanvas(NULL); + IupSetCallback(canvas, "ACTION", action); + IupSetAttribute(canvas, "BUFFER", "DOUBLE"); + IupSetAttribute(canvas, "BORDER", "NO"); + IupSetAttribute(canvas, "RASTERSIZE", "300x200"); + IupAppend(box, canvas); + + dlg = IupDialog(box); + IupSetAttribute(dlg, "TITLE", "IupGLCanvas Test"); + + IupMap(dlg); + IupGLMakeCurrent(canvas); + printf("Vendor: %s\n", glGetString(GL_VENDOR)); + printf("Renderer: %s\n", glGetString(GL_RENDERER)); + printf("Version: %s\n", glGetString(GL_VERSION)); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupGLCanvasOpen(); + + GLCanvasTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif +#endif diff --git a/iup/test/glcanvas_cube.c b/iup/test/glcanvas_cube.c new file mode 100755 index 0000000..3bd5ec5 --- /dev/null +++ b/iup/test/glcanvas_cube.c @@ -0,0 +1,234 @@ +#ifdef USE_OPENGL +#ifdef WIN32 +#include +#endif +#include +#include + +#include +#include +#include + +#include "iup.h" +#include "iupgl.h" + + +typedef struct _color3D +{ + double r; + double g; + double b; +} color3D; + +static void add_color_vertex(const color3D* c) +{ + glColor3d(c->r, c->g, c->b); + glVertex3d(c->r, c->g, c->b); +} + +static void draw_cube_face(const color3D* c1, const color3D* c2, const color3D* c3, const color3D* c4) +{ + color3D cm; + cm.r = (c1->r + c2->r + c3->r + c4->r)/4; + cm.g = (c1->g + c2->g + c3->g + c4->g)/4; + cm.b = (c1->b + c2->b + c3->b + c4->b)/4; + + add_color_vertex(&cm); + add_color_vertex(c1); + add_color_vertex(c2); + + add_color_vertex(&cm); + add_color_vertex(c2); + add_color_vertex(c3); + + add_color_vertex(&cm); + add_color_vertex(c3); + add_color_vertex(c4); + + add_color_vertex(&cm); + add_color_vertex(c4); + add_color_vertex(c1); +} + +const color3D c3D_black = {0.0, 0.0, 0.0}; +const color3D c3D_red = {1.0, 0.0, 0.0}; +const color3D c3D_green = {0.0, 1.0, 0.0}; +const color3D c3D_blue = {0.0, 0.0, 1.0}; +const color3D c3D_cian = {0.0, 1.0, 1.0}; +const color3D c3D_magenta = {1.0, 0.0, 1.0}; +const color3D c3D_yellow = {1.0, 1.0, 0.0}; +const color3D c3D_white = {1.0, 1.0, 1.0}; + +static void draw_cube(void) +{ + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glBegin(GL_TRIANGLES); + + draw_cube_face(&c3D_black, &c3D_blue, &c3D_magenta, &c3D_red); + draw_cube_face(&c3D_black, &c3D_green, &c3D_cian, &c3D_blue); + draw_cube_face(&c3D_black, &c3D_red, &c3D_yellow, &c3D_green); + draw_cube_face(&c3D_white, &c3D_cian, &c3D_blue, &c3D_magenta); + draw_cube_face(&c3D_white, &c3D_cian, &c3D_green, &c3D_yellow); + draw_cube_face(&c3D_white, &c3D_magenta, &c3D_red, &c3D_yellow); + + glEnd(); +} + +static void init(void) +{ + glClearColor(0.5,0.5,0.5,0.0); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45, 1, 1, 10); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt (0.5, 0.5, 3.0, /* posicao do observador */ + 0.5, 0.5, 0.0, /* ponto de referencia */ + 0.0, 1.0, 0.0); /* vup */ + glEnable(GL_DEPTH_TEST); + glClearDepth (1.0); +} + +static void unproject (double x2, double y2, double *x3, double *y3, double *z3) +{ + double mv[16]; + double pm[16]; + int vp[4]; + + glGetDoublev (GL_MODELVIEW_MATRIX, mv); + glGetDoublev (GL_PROJECTION_MATRIX, pm); + glGetIntegerv (GL_VIEWPORT, vp); + gluUnProject (x2, y2, 0.0, + mv, pm, vp, + x3, y3, z3); +} + +static int pos_x, pos_y; +static int move = 0; + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + (void)ih; + (void)status; + + if (but==IUP_BUTTON1) + { + if (pressed) + { + pos_x = x; + pos_y = y; + move = 1; + } + else + { + move = 0; + } + } + return IUP_DEFAULT; +} + +#define INVERT_Y(_y) (height-y) + +static int motion_cb(Ihandle *ih,int x,int y,char* status) +{ + (void)status; + + if (move) + { + double dif_x, dif_y; + double dx, dy, dz; + double x1, y1, z1; + double x2, y2, z2; + double angle, norma; + int height = IupGetInt2(ih, "RASTERSIZE"); + + IupGLMakeCurrent(ih); + + dif_x = x - pos_x; + dif_y = y - pos_y; + + pos_x = x; + pos_y = y; + + angle = sqrt(dif_x*dif_x + dif_y*dif_y); + + unproject (pos_x, INVERT_Y(pos_y), &x1, &y1, &z1); + unproject ((double)(dif_y+pos_x), (double)(dif_x+INVERT_Y(pos_y)), &x2, &y2, &z2); + dx = x2-x1; dy = y2-y1; dz = z2-z1; + norma = sqrt(dx*dx + dy*dy + dz*dz); + dx /= norma; dy /= norma; dz /= norma; + + glTranslated(0.5, 0.5, 0.5); + glRotated (angle, dx, dy, dz); + glTranslated(-0.5, -0.5, -0.5); + + draw_cube(); + + IupGLSwapBuffers(ih); + } + return IUP_DEFAULT; +} + +static int action(Ihandle *ih) +{ + IupGLMakeCurrent(ih); + + glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + + draw_cube(); + + IupGLSwapBuffers(ih); + + return IUP_DEFAULT; +} + +void GLCanvasCubeTest(void) +{ + Ihandle *dlg, *canvas, *box; + + IupGLCanvasOpen(); + + box = IupVbox(NULL); + IupSetAttribute(box, "MARGIN", "5x5"); + + canvas = IupGLCanvas(NULL); + IupSetCallback(canvas, "ACTION", action); + IupSetCallback(canvas, "BUTTON_CB", (Icallback)button_cb); + IupSetCallback(canvas, "MOTION_CB", (Icallback)motion_cb); + IupSetAttribute(canvas, "BUFFER", "DOUBLE"); + IupSetAttribute(canvas, "RASTERSIZE", "300x300"); + IupAppend(box, canvas); + + dlg = IupDialog(IupSetAttributes(IupFrame(box), "TITLE=Teste")); + IupSetAttribute(dlg, "TITLE", "IupGLCanvas Test"); + IupSetAttribute(dlg, "COMPOSITED", "NO"); + + IupMap(dlg); + + IupGLMakeCurrent(canvas); + init(); + printf("Vendor: %s\n", glGetString(GL_VENDOR)); + printf("Renderer: %s\n", glGetString(GL_RENDERER)); + printf("Version: %s\n", glGetString(GL_VERSION)); + IupSetAttribute(canvas, "RASTERSIZE", NULL); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + GLCanvasCubeTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif +#endif diff --git a/iup/test/hbox.c b/iup/test/hbox.c new file mode 100755 index 0000000..44f0f02 --- /dev/null +++ b/iup/test/hbox.c @@ -0,0 +1,114 @@ +#include +#include +#include "iup.h" + +void HboxTest(void) +{ + /* IUP identifiers */ + Ihandle *fr1, *fr2, *fr3, *dlg; + Ihandle *b11, *b12, *b13; + Ihandle *b21, *b22, *b23; + Ihandle *b31, *b32, *b33; + Ihandle *h1, *h2, *h3; + + /* Creates frame with three top aligned buttons */ + fr1 = IupFrame + ( + h1 = IupHbox + ( +// IupFill(), + b11=IupButton("1", NULL), + b12=IupButton("2", NULL), + b13=IupButton("3", NULL), +// IupFill(), + NULL + ) + ); +// IupSetAttribute(fr1, "TITLE", "ALIGNMENT=ATOP"); + IupSetAttribute(fr1, "TITLE", "IupHbox"); + IupSetAttribute(b11, "SIZE", "10x10"); + IupSetAttribute(b12, "SIZE", "20x16"); + IupSetAttribute(b13, "SIZE", "30x20"); + IupSetAttributes(h1, "ALIGNMENT=ATOP"); /* Sets hbox's alignment, gap and size */ + IupSetAttribute(h1, "HOMOGENEOUS", "YES"); + IupSetAttribute(h1, "EXPANDCHILDREN", "YES"); +// IupSetAttribute(b12, "VISIBLE", "NO"); +// IupSetAttribute(b12, "FLOATING", "YES"); + + /* Creates frame with three buttons */ + fr2 = IupFrame + ( + h2=IupHbox + ( + IupFill(), + b21=IupButton("1", NULL), + b22=IupButton("2", NULL), + b23=IupButton("3", NULL), + IupFill(), + NULL + ) + ); + IupSetAttribute(fr2, "TITLE", "ALIGNMENT=ACENTER, GAP=20"); + IupSetAttribute(b21, "SIZE", "30x30"); + IupSetAttribute(b22, "SIZE", "30x40"); + IupSetAttribute(b23, "SIZE", "30x50"); + IupSetAttributes(h2, "ALIGNMENT=ACENTER, GAP=20"); /* Sets hbox's alignment and gap */ + + /* Creates frame with three bottom aligned buttons */ + fr3 = IupFrame + ( + h3=IupHbox + ( + IupFill(), + b31=IupButton ("1", NULL), + b32=IupButton ("2", NULL), + b33=IupButton ("3", NULL), + IupFill(), + NULL + ) + ); + IupSetAttribute(fr3, "TITLE", "ALIGNMENT=ABOTTOM, MARGIN=10x10"); + IupSetAttribute(b31, "SIZE", "30x30"); + IupSetAttribute(b32, "SIZE", "30x40"); + IupSetAttribute(b33, "SIZE", "30x50"); + IupSetAttributes(h3, "ALIGNMENT=ABOTTOM, MARGIN=10x10"); /* Sets hbox's alignment and size */ + + /* Creates dlg with the three frames */ + dlg = IupDialog + ( + IupVbox + ( + fr1, + fr2, + fr3, + NULL + ) + ); + + IupSetAttribute(dlg, "TITLE", "IupHbox Test"); /* Sets dlg's title */ + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupSetAttribute(dlg, "GAP", "10"); + IupSetAttribute(fr1, "MARGIN", "0x0"); /* avoid attribute propagation */ + IupSetAttribute(fr2, "MARGIN", "0x0"); + IupSetAttribute(fr3, "MARGIN", "0x0"); + IupSetAttribute(fr1, "GAP", "0"); + IupSetAttribute(fr2, "GAP", "0"); + IupSetAttribute(fr3, "GAP", "0"); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); /* Shows dlg in the center of the screen */ +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + HboxTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/idle.c b/iup/test/idle.c new file mode 100755 index 0000000..f9681ba --- /dev/null +++ b/iup/test/idle.c @@ -0,0 +1,55 @@ +#include +#include +#include "iup.h" + +static int idle_count = 0; + +static int idle(void) +{ + printf("IDLE_ACTION(count = %d)\n", idle_count); + idle_count++; + +// if (idle_count == 10000) +// return IUP_IGNORE; + + return IUP_DEFAULT; +} + +static int motion_cb(Ihandle* ih) +{ + printf("MOTION_CB()\n"); + if (idle_count > 30000) + IupSetFunction ("IDLE_ACTION", NULL); + return IUP_DEFAULT; +} + +void IdleTest(void) +{ + Ihandle* dlg, *canvas; + + canvas = IupCanvas(NULL); + IupSetCallback(canvas, "MOTION_CB", motion_cb); + + dlg = IupDialog(canvas); + IupSetAttribute(dlg, "TITLE", "Idle Test"); + IupSetAttribute(dlg, "RASTERSIZE", "500x500"); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); + + IupSetFunction ("IDLE_ACTION", (Icallback)idle); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + IdleTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/iuptest.rc b/iup/test/iuptest.rc new file mode 100755 index 0000000..94e5ca1 --- /dev/null +++ b/iup/test/iuptest.rc @@ -0,0 +1,31 @@ +TECGRAF_ICON ICON "../etc/tecgraf.ico" +TECGRAF_BITMAP BITMAP "../test/tecgraf.bmp" + +CURSOR_PEN CURSOR "../etc/pen.cur" + +/* To avoid the inclusion of */ +#define WS_CHILD 0x40000000L +#define WS_VISIBLE 0x10000000L +#define WS_CLIPSIBLINGS 0x04000000L +#define DS_3DLOOK 0x0004L +#define DS_CONTROL 0x0400L +#define SS_OWNERDRAW 0x0000000DL +#define WS_EX_STATICEDGE 0x00020000L + +#define IUP_PREVIEWCANVAS 3000 + +iupPreviewDlg DIALOG DISCARDABLE 0, 0, 250, 95 +STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IUP_PREVIEWCANVAS, "STATIC", SS_OWNERDRAW, 70, 0, 120, 90, WS_EX_STATICEDGE +END + +#ifndef IUP_DLL +/* The following line will enable Windows XP Visual Styles */ +#ifdef WIN64 +1 24 "../etc/iup64.manifest" +#else +1 24 "../etc/iup.manifest" +#endif +#endif diff --git a/iup/test/label.c b/iup/test/label.c new file mode 100755 index 0000000..1eea959 --- /dev/null +++ b/iup/test/label.c @@ -0,0 +1,217 @@ +#include +#include +#include "iup.h" + + +#define TEST_IMAGE_SIZE 20 + +static unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +static unsigned char image_data_24 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*3] = +{ + 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,000,000,000, + 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, +}; + +static unsigned char image_data_32 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE*4] = +{ + 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,000,000,255,255,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,255, + 000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255,000,000,000,255, +}; + +static int enter_cb(Ihandle *ih) +{ + Ihandle *box = IupGetChild(ih, 0); + if (IupGetInt(box, "ACTIVE")) + IupSetAttribute(box, "ACTIVE", "NO"); + else + IupSetAttribute(box, "ACTIVE", "YES"); + return IUP_DEFAULT; +} + +void LabelTest(void) +{ + Ihandle *dlg, *label, *image1, *image2, *image3, + *box1, *box2, *fill; + + box1 = IupVbox(NULL); + IupSetAttribute(box1, "MARGIN", "5x5"); + IupSetAttribute(box1, "GAP", "5"); + IupSetAttribute(box1, "BGCOLOR", "75 150 170"); + IupSetAttribute(box1, "PADDING", "5x5"); + + label = IupLabel(NULL); + IupSetAttribute(label, "TITLE", "Text Labels (çãí)"); + IupSetAttribute(label, "BGCOLOR", IupGetGlobal("DLGBGCOLOR")); + IupSetAttribute(label, "PADDING", "0x0"); + IupSetAttribute(label, "TIP", "Text Label"); + IupAppend(box1, label); + + label = IupLabel(NULL); + IupSetAttribute(label, "SEPARATOR", "HORIZONTAL"); + IupAppend(box1, label); + + label = IupLabel(NULL); + IupSetAttribute(label, "TITLE", "Text &Label\nSecond Line"); + IupSetAttribute(label, "FGCOLOR", "0 0 255"); + IupSetAttribute(label, "RASTERSIZE", "150x70"); +// IupSetAttribute(label, "RASTERSIZE", "30x70"); +// IupSetAttribute(label, "WORDWRAP", "YES"); +// IupSetAttribute(label, "ELLIPSIS", "YES"); + IupSetAttribute(label, "ALIGNMENT", "ALEFT:ATOP"); + IupAppend(box1, label); + + label = IupLabel(NULL); + IupSetAttribute(label, "TITLE", "Text Label\nSecond Line"); + IupSetAttribute(label, "RASTERSIZE", "150x70"); + IupSetAttribute(label, "ALIGNMENT", "ACENTER:ACENTER"); + IupSetAttribute(label, "FONT", "Helvetica, 14"); +// IupSetAttribute(label, "FONTSIZE", "14"); +// IupSetAttribute(label, "FONTSTYLE", "Italic"); + IupAppend(box1, label); + + label = IupLabel(NULL); + IupSetAttribute(label, "TITLE", "Text Label\nSecond Line"); + IupSetAttribute(label, "RASTERSIZE", "150x70"); + IupSetAttribute(label, "ALIGNMENT", "ARIGHT:ABOTTOM"); + IupSetAttribute(label, "MARKUP", "YES"); + IupAppend(box1, label); + + box2 = IupVbox(NULL); + IupSetAttribute(box2, "MARGIN", "5x5"); + IupSetAttribute(box2, "GAP", "5"); + IupSetAttribute(box2, "BGCOLOR", "75 150 170"); + IupSetAttribute(box2, "PADDING", "5x5"); + + image1 = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8); + IupSetAttribute(image1, "0", "BGCOLOR"); + IupSetAttribute(image1, "1", "255 0 0"); + IupSetAttribute(image1, "2", "0 255 0"); + IupSetAttribute(image1, "3", "0 0 255"); + IupSetAttribute(image1, "4", "255 255 255"); + IupSetAttribute(image1, "5", "0 0 0"); + + label = IupLabel(NULL); + IupSetAttributeHandle(label, "IMAGE", image1); + //IupSetAttribute(label, "IMAGE", "TECGRAF_BITMAP"); + //IupSetAttribute(label, "IMAGE", "../test/tecgraf.bmp"); + //IupSetAttribute(label, "IMAGE", "../test/file_large.xbm"); + //IupSetAttribute(label, "IMAGE", "gtk-open"); + IupSetAttribute(label, "BGCOLOR", IupGetGlobal("DLGBGCOLOR")); + IupSetAttribute(label, "PADDING", "0x0"); + IupSetAttribute(label, "TIP", "Image Label"); + IupAppend(box2, label); + + label = IupLabel(NULL); + IupSetAttribute(label, "SEPARATOR", "HORIZONTAL"); + IupAppend(box2, label); + + fill = IupFill(); + IupSetAttribute(fill, "SIZE", "20"); + IupAppend(box2, fill); + + label = IupLabel(NULL); + IupSetAttributeHandle(label, "IMAGE", image1); + IupSetAttribute(label, "RASTERSIZE", "150x50"); + IupAppend(box2, label); + + image2 = IupImageRGB(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_24); + + label = IupLabel(NULL); + IupSetAttributeHandle(label, "IMAGE", image2); + IupSetAttribute(label, "RASTERSIZE", "150x50"); + IupSetAttribute(label, "ALIGNMENT", "ACENTER"); + IupAppend(box2, label); + + image3 = IupImageRGBA(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_32); + + label = IupLabel(NULL); + IupSetAttributeHandle(label, "IMAGE", image3); + IupSetAttribute(label, "RASTERSIZE", "150x50"); + IupSetAttribute(label, "ALIGNMENT", "ARIGHT"); + IupAppend(box2, label); + + label = IupLabel(NULL); + IupSetAttribute(label, "SEPARATOR", "VERTICAL"); + + dlg = IupDialog(IupHbox(box1, label, box2, NULL)); + IupSetAttribute(dlg, "TITLE", "IupLabel Test"); +// IupSetAttribute(dlg, "BACKGROUND", "0 0 128"); +// IupSetAttributeHandle(dlg, "BACKGROUND", image2); + IupSetCallback(dlg, "ENTERWINDOW_CB", enter_cb); + + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + LabelTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/list.c b/iup/test/list.c new file mode 100755 index 0000000..5db582b --- /dev/null +++ b/iup/test/list.c @@ -0,0 +1,366 @@ +#include +#include +#include +#include + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s]) - [pos=%d]\n",(char)but,pressed,x,y, status, IupConvertXYToPos(ih, x, y)); + return IUP_DEFAULT; +} + +static int motion_cb(Ihandle *ih,int x,int y,char* status) +{ + printf("MOTION_CB(x=%d, y=%d [%s]) - [pos=%d]\n",x,y, status,IupConvertXYToPos(ih, x, y)); + return IUP_DEFAULT; +} + +static int multilist_cb (Ihandle *ih, char *s) +{ + printf("MULTISELECT_CB(%s)\n", s); + return IUP_DEFAULT; +} + +static int list_cb (Ihandle *ih, char *t, int i, int v) +{ + printf("ACTION(%s - %d %d)\n", t, i, v); + return IUP_DEFAULT; +} + +static int dropdown_cb(Ihandle *ih, int state) +{ + printf("DROPDOWN_CB(%d)\n", state); + return IUP_DEFAULT; +} + +static int dblclick_cb(Ihandle *ih, int pos, char *text) +{ + printf("DBLCLICK_CB(%d - %s)\n", pos, text); + return IUP_DEFAULT; +} + +static int edit_cb (Ihandle *ih, int c, char *after) +{ + printf("EDIT_CB(%d - %s)\n", c, after); + return IUP_DEFAULT; +} + +static int caret_cb(Ihandle *ih, int lin, int col) +{ + printf("CARET_CB(%d, %d)\n", lin, col); + return IUP_DEFAULT; +} + +static int btok_cb(Ihandle *ih) +{ + printf("Default Enter\n"); + return IUP_DEFAULT; +} + +static int btcancel_cb(Ihandle *ih) +{ + printf("Default Esc\n"); + return IUP_DEFAULT; +} + +static int selectedtext_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(text, "VALUE", IupGetAttribute(list, "SELECTEDTEXT")); + return IUP_DEFAULT; +} + +static int selection_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(text, "VALUE", IupGetAttribute(list, "SELECTION")); + return IUP_DEFAULT; +} + +static int getcaret_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(text, "VALUE", IupGetAttribute(list, "CARET")); + return IUP_DEFAULT; +} + +static int getvalue_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(text, "VALUE", IupGetAttribute(list, "VALUE")); + return IUP_DEFAULT; +} + +static int getcount_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + printf("COUNT=%s\n", IupGetAttribute(list, "COUNT")); + return IUP_DEFAULT; +} + +static int append_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(list, "APPEND", IupGetAttribute(text, "VALUE")); + return IUP_DEFAULT; +} + +static int readonly_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(list, "READONLY", IupGetAttribute(text, "VALUE")); + return IUP_DEFAULT; +} + +static int setvalue_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(list, "VALUE", IupGetAttribute(text, "VALUE")); + return IUP_DEFAULT; +} + +static int insertitem_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(list, "INSERTITEM3", IupGetAttribute(text, "VALUE")); + return IUP_DEFAULT; +} + +static int appenditem_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(list, "APPENDITEM", IupGetAttribute(text, "VALUE")); + return IUP_DEFAULT; +} + +static int removeitem_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(list, "REMOVEITEM", IupGetAttribute(text, "VALUE")); + return IUP_DEFAULT; +} + +static int topitem_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute(list, "TOPITEM", IupGetAttribute(text, "VALUE")); + return IUP_DEFAULT; +} + +static int showdropdown_cb(Ihandle *ih) +{ + Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); + IupSetAttribute(list, "SHOWDROPDOWN", "YES"); + return IUP_DEFAULT; +} + +static void setactivelist(Ihandle* ih) +{ + Ihandle* dialog = IupGetDialog(ih); + Ihandle* label = (Ihandle*)IupGetAttribute(dialog, "_LABEL"); + IupSetAttribute(dialog, "_ACTIVE_LIST", (char*)ih); + IupSetAttribute(label, "TITLE", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE")); +} + +static int getfocus_cb(Ihandle *ih) +{ + setactivelist(ih); + printf("GETFOCUS_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE")); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE")); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE")); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + setactivelist(ih); + printf("ENTERWINDOW_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE")); + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ + if (iup_isprint(c)) + printf("K_ANY(%s, %d = %s \'%c\')\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%s, %d = %s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c)); + return IUP_CONTINUE; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB(%s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE")); + return IUP_DEFAULT; +} + +static void set_callbacks(Ihandle* list) +{ + IupSetCallback(list, "ACTION", (Icallback)list_cb); + IupSetCallback(list, "DBLCLICK_CB", (Icallback)dblclick_cb); + IupSetCallback(list, "DROPDOWN_CB", (Icallback)dropdown_cb); + IupSetCallback(list, "EDIT_CB", (Icallback)edit_cb); + IupSetCallback(list, "CARET_CB", (Icallback)caret_cb); +// IupSetCallback(list, "BUTTON_CB", (Icallback)button_cb); +// IupSetCallback(list, "MOTION_CB", (Icallback)motion_cb); + + //IupSetCallback(list, "GETFOCUS_CB", getfocus_cb); + //IupSetCallback(list, "KILLFOCUS_CB", killfocus_cb); + + IupSetCallback(list, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); + //IupSetCallback(list, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + + //IupSetCallback(list, "K_ANY", (Icallback)k_any); + //IupSetCallback(list, "HELP_CB", (Icallback)help_cb); + +// IupSetAttribute(list, "DROPEXPAND", "NO"); +// IupSetAttribute(list, "AUTOHIDE", "NO"); +// IupSetAttribute(list, "SCROLLBAR", "NO"); + + IupSetAttribute(list, "VISIBLE_ITEMS", "3"); +// IupSetAttribute(list, "VISIBLECOLUMNS", "7"); + IupSetAttribute(list, "VISIBLELINES", "4"); +} + +void ListTest(void) +{ + Ihandle *dlg, *list1, *list2, *list3, *list4, *text, *btok, *btcancel, + *box, *lists, *buttons1, *buttons2, *buttons3, *label; + + list1 = IupList(NULL); + list2 = IupList(NULL); + list3 = IupList(NULL); + list4 = IupList(NULL); + + IupSetAttributes(list1, "1=\"US$ 1000\", 2=\"US$ 2000\", 3=\"US$ 300.000.000\", 4=\"US$ 4000\"," + "EDITBOX=YES, DROPDOWN=YES, TIP=Edit+Drop, VALUE=\"Edit Here\", NAME=list1"); + IupSetAttributes(list2, "1=\"Banana\", 2=\"Apple\", 3=\"Orange\", 4=\"Strawberry\", 5=\"Grape\"," + "DROPDOWN=YES, NAME=list2, TIP=Drop, VALUE=2, SORT=YES"); + IupSetAttributes(list3, "1=\"Char A\", 2=\"Char B\", 3=\"Char CCCCC\", 4=\"Char D\", 5=\"Char E\", 6=\"Char F\"," + "EDITBOX=YES, NAME=list3, TIP=Edit+List, VALUE=\"Edit Here\""); +// IupSetAttributes(list4, "1=\"Number 1\", 2=\"Number 2\", 3=\"Number 3\", 4=\"Number 4\", 5=\"Number 5\", 6=\"Number 6\", 7=\"Number 7\"," +// "MULTIPLE=YES, NAME=list4, TIP=List, VALUE=+--++--"); + IupSetAttributes(list4, "1=\"Number 3\", 2=\"Number 4\", 3=\"Number 2\", 4=\"Number 1\", 5=\"Number 6\", 6=\"Number 5\", 7=\"Number 7\"," + "MULTIPLE=YES, NAME=list4, TIP=List, SORT=YES, VALUE=+--++--"); + + set_callbacks(list1); + set_callbacks(list2); + set_callbacks(list3); + set_callbacks(list4); + + //IupSetAttributes(list2, "6=\"R$ 1000\", 7=\"R$ 2000\", 8=\"R$ 123456789\", 9=\"R$ 4000\", 10=\"R$ 5000\","); + //IupSetAttributes(list2, "11=\"R$ 1000\", 12=\"R$ 2000\", 13=\"R$ 123456789\", 14=\"R$ 4000\", 15=\"R$ 5000\","); + //IupSetAttributes(list2, "16=\"R$ 1000\", 17=\"R$ 2000\", 18=\"R$ 123456789\", 19=\"R$ 4000\", 20=\"R$ 5000\","); + + IupSetCallback(list4, "MULTISELECT_CB", (Icallback)multilist_cb); + +// IupSetAttribute(list1, "READONLY", "YES"); +// IupSetAttribute(list3, "READONLY", "YES"); +// IupSetAttribute(list1, "PADDING", "10x10"); +// IupSetAttribute(list3, "PADDING", "10x10"); + +// IupSetAttribute(list3, "SPACING", "10"); +// IupSetAttribute(list4, "SPACING", "10"); + + printf("COUNT(list1)=%s\n", IupGetAttribute(list1, "COUNT")); + printf("COUNT(list2)=%s\n", IupGetAttribute(list2, "COUNT")); + printf("COUNT(list3)=%s\n", IupGetAttribute(list3, "COUNT")); + printf("COUNT(list4)=%s\n", IupGetAttribute(list4, "COUNT")); + + lists = IupHbox( + IupVbox( + IupSetAttributes(IupFrame(IupVbox(list1, NULL)), "TITLE=EDITBOX+DROPDOWN"), + IupSetAttributes(IupFrame(IupVbox(list2, NULL)), "TITLE=DROPDOWN"), + NULL), + IupSetAttributes(IupFrame(IupVbox(list3, NULL)), "TITLE=EDITBOX"), + IupSetAttributes(IupFrame(IupVbox(list4, NULL)), "TITLE=MULTIPLE"), + IupVbox( + btok = IupSetCallbacks(IupButton("Default Enter", NULL), "ACTION", btok_cb, NULL), + btcancel = IupSetCallbacks(IupButton("Default Esc", NULL), "ACTION", btcancel_cb, NULL), + NULL), + NULL); + + text = IupText(NULL); + IupSetAttribute(text, "EXPAND", "HORIZONTAL"); + IupSetAttribute(text, "NAME", "text"); + + buttons1 = IupHbox( + IupSetCallbacks(IupButton("Get(VALUE)", NULL), "ACTION", getvalue_cb, NULL), + IupSetCallbacks(IupButton("Set(VALUE)", NULL), "ACTION", setvalue_cb, NULL), + IupSetCallbacks(IupButton("Get(COUNT)", NULL), "ACTION", getcount_cb, NULL), + NULL); + buttons2 = IupHbox( + IupSetCallbacks(IupButton("INSERTITEM3", NULL), "ACTION", insertitem_cb, NULL), + IupSetCallbacks(IupButton("APPENDITEM", NULL), "ACTION", appenditem_cb, NULL), + IupSetCallbacks(IupButton("REMOVEITEM", NULL), "ACTION", removeitem_cb, NULL), + IupSetCallbacks(IupButton("SHOWDROPDOWN", NULL), "ACTION", showdropdown_cb, NULL), + IupSetCallbacks(IupButton("TOPITEM", NULL), "ACTION", topitem_cb, NULL), + NULL); + buttons3 = IupHbox( + IupSetCallbacks(IupButton("APPEND", NULL), "ACTION", append_cb, NULL), + IupSetCallbacks(IupButton("Get(CARET)", NULL), "ACTION", getcaret_cb, NULL), + IupSetCallbacks(IupButton("Set(READONLY)", NULL), "ACTION", readonly_cb, NULL), + IupSetCallbacks(IupButton("Get(SELECTEDTEXT)", NULL), "ACTION", selectedtext_cb, NULL), + IupSetCallbacks(IupButton("Get(SELECTION)", NULL), "ACTION", selection_cb, NULL), + NULL); + + box = IupVbox(lists, IupHbox(IupLabel("Attrib. Value: "), text, NULL), buttons1, buttons2, buttons3, IupHbox(IupLabel("Current List: "), label = IupLabel(NULL), NULL), NULL); + IupSetAttributes(buttons1,"MARGIN=5x5, GAP=5"); + IupSetAttributes(buttons2,"MARGIN=5x5, GAP=5"); + IupSetAttributes(buttons3,"MARGIN=5x5, GAP=5"); + IupSetAttributes(lists,"MARGIN=10x10, GAP=10"); + IupSetAttribute(label,"EXPAND", "HORIZONTAL"); + + dlg = IupDialog(box); + IupSetAttribute(dlg, "TITLE", "IupList Test"); + IupSetAttributeHandle(dlg, "DEFAULTENTER", btok); + IupSetAttributeHandle(dlg, "DEFAULTESC", btcancel); + IupSetAttribute(dlg, "_LABEL", (char*)label); + +// IupSetAttribute(box, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BACKGROUND", "200 10 80"); +// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation + +// IupSetAttribute(dlg, "FONT", "Helvetica, 24"); +// IupSetAttribute(box, "FGCOLOR", "255 0 0"); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ListTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/make_uname b/iup/test/make_uname new file mode 100755 index 0000000..ae0ab49 --- /dev/null +++ b/iup/test/make_uname @@ -0,0 +1,4 @@ +#This builds all the libraries of the folder for 1 uname + +tecmake relink $1 $2 $3 $4 $5 $6 $7 +tecmake USE_GTK=Yes relink $1 $2 $3 $4 $5 $6 $7 diff --git a/iup/test/matrix.c b/iup/test/matrix.c new file mode 100755 index 0000000..280ffdb --- /dev/null +++ b/iup/test/matrix.c @@ -0,0 +1,115 @@ +#include +#include +#include +#include + +#undef __IUPDEF_H +#include "iup.h" +#include "iupcontrols.h" + +static int dropcheck_cb(Ihandle *self, int lin, int col) +{ + if (lin == 3 && col == 1) + return IUP_DEFAULT; + return IUP_IGNORE; +} + +static Ihandle* create_matrix(void) +{ + Ihandle* mat = IupMatrix(NULL); + + IupSetAttribute(mat, "NUMCOL", "15"); + IupSetAttribute(mat, "NUMLIN", "20"); +// IupSetAttribute(mat, "NUMCOL", "2"); +// IupSetAttribute(mat, "NUMLIN", "3"); + + IupSetAttribute(mat, "0:0", "Inflation"); + IupSetAttribute(mat, "1:0", "Medicine\nPharma"); + IupSetAttribute(mat, "2:0", "Food"); + IupSetAttribute(mat, "3:0", "Energy"); + IupSetAttribute(mat, "0:1", "January 2000"); + IupSetAttribute(mat, "0:2", "February 2000"); + IupSetAttribute(mat, "1:1", "5.6\n3.33"); + IupSetAttribute(mat, "2:1", "2.2"); + IupSetAttribute(mat, "3:1", "7.2"); + IupSetAttribute(mat, "1:2", "4.5"); + IupSetAttribute(mat, "2:2", "8.1"); + IupSetAttribute(mat, "3:2", "3.4"); + IupSetAttribute(mat, "3:3", "Font Test"); + IupSetAttribute(mat, "WIDTH2", "90"); + IupSetAttribute(mat, "HEIGHT2", "30"); + IupSetAttribute(mat,"SORTSIGN2","DOWN"); +// IupSetAttribute(mat, "WIDTHDEF", "34"); + IupSetAttribute(mat,"MULTILINE", "YES"); + IupSetAttribute(mat,"RESIZEMATRIX", "YES"); + IupSetAttribute(mat,"USETITLESIZE", "YES"); + //IupSetAttribute(mat,"SCROLLBAR", "NO"); + //IupSetAttribute(mat, "BGCOLOR1:2", "255 92 255"); + //IupSetAttribute(mat, "BGCOLOR2:*", "92 92 255"); + //IupSetAttribute(mat, "BGCOLOR*:3", "255 92 92"); + //IupSetAttribute(mat, "FGCOLOR1:2", "255 0 0"); + //IupSetAttribute(mat, "FGCOLOR2:*", "0 128 0"); + //IupSetAttribute(mat, "FGCOLOR*:3", "0 0 255"); + //IupSetAttribute(mat, "FONT1:2", "Helvetica, 24"); + //IupSetAttribute(mat, "FONT2:*", "Courier, 14"); + //IupSetAttribute(mat, "FONT*:3", "Times, Bold 14"); + //IupSetAttribute(mat, "ALIGNMENT2", "ARIGHT"); +// IupSetAttribute(mat, "ACTIVE", "NO"); + + IupSetAttribute(mat,"MARKMODE","CELL"); +// IupSetAttribute(mat,"MARKMODE","LIN"); +// IupSetAttribute(mat,"MARKMULTIPLE","NO"); + IupSetAttribute(mat,"MARKMULTIPLE","YES"); +// IupSetAttribute(mat,"MARKAREA","NOT_CONTINUOUS"); + IupSetAttribute(mat,"MARK2:2","YES"); + IupSetAttribute(mat,"MARK2:3","YES"); + IupSetAttribute(mat,"MARK3:3","YES"); + + +// IupSetAttribute(mat,"MARKMODE","LINCOL"); + + //IupSetAttribute(mat, "NUMCOL_VISIBLE_LAST", "YES"); + //IupSetAttribute(mat, "NUMLIN_VISIBLE_LAST", "YES"); + IupSetAttribute(mat, "WIDTHDEF", "15"); + IupSetAttribute(mat, "20:15", "The End"); + IupSetAttribute(mat, "10:0", "Middle Line"); + IupSetAttribute(mat, "15:0", "Middle Line"); + IupSetAttribute(mat, "0:7", "Middle Column"); + IupSetAttribute(mat, "0:11", "Middle Column"); + IupSetAttribute(mat, "20:0", "Line Title Test"); + IupSetAttribute(mat, "0:15", "Column Title Test"); + IupSetAttribute(mat, "NUMCOL_VISIBLE", "6"); + IupSetAttribute(mat, "NUMLIN_VISIBLE", "8"); + + IupSetCallback(mat, "DROPCHECK_CB", (Icallback)dropcheck_cb); + + return mat; +} + +void MatrixTest(void) +{ + Ihandle* dlg, *box; + + box = IupVbox(create_matrix(), NULL); + IupSetAttribute(box, "MARGIN", "10x10"); + + dlg = IupDialog(box); + IupSetAttribute(dlg, "TITLE", "IupMatrix Simple Test"); + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + MatrixTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/matrix_cbmode.c b/iup/test/matrix_cbmode.c new file mode 100755 index 0000000..0d0e17c --- /dev/null +++ b/iup/test/matrix_cbmode.c @@ -0,0 +1,85 @@ +#include +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +static char data[3][3][50] = +{ + {"1:1", "1:2", "1:3"}, + {"2:1", "2:2", "2:3"}, + {"3:1", "3:2", "3:3"}, +}; + + +static char* value_cb(Ihandle *self, int lin, int col) +{ + if (lin == 0 || col == 0) + return "Title"; + return data[lin-1][col-1]; +} + +static int value_edit_cb(Ihandle *self, int lin, int col, char* newvalue) +{ + strcpy(data[lin-1][col-1], newvalue); + return IUP_DEFAULT; +} + +static Ihandle* create_matrix(void) +{ + Ihandle* mat = IupMatrix(NULL); + + IupSetAttribute(mat, "NUMCOL", "3"); + IupSetAttribute(mat, "NUMLIN", "3"); + + IupSetAttribute(mat, "NUMCOL_VISIBLE", "3"); + IupSetAttribute(mat, "NUMLIN_VISIBLE", "3"); + +// IupSetAttribute(mat, "WIDTH2", "90"); +// IupSetAttribute(mat, "HEIGHT2", "30"); +// IupSetAttribute(mat, "WIDTHDEF", "34"); +// IupSetAttribute(mat,"RESIZEMATRIX", "YES"); + IupSetAttribute(mat,"SCROLLBAR", "NO"); + IupSetCallback(mat,"VALUE_CB",(Icallback)value_cb); + IupSetCallback(mat,"VALUE_EDIT_CB",(Icallback)value_edit_cb); + +// IupSetAttribute(mat, "HEIGHT0", "10"); +// IupSetAttribute(mat, "WIDTH0", "90"); +// IupSetAttribute(mat,"MARKMODE","LIN"); +// IupSetAttribute(mat,"MARKMULTIPLE","NO"); + + //IupSetAttribute(mat, "NUMCOL_VISIBLE_LAST", "YES"); + //IupSetAttribute(mat, "NUMLIN_VISIBLE_LAST", "YES"); +// IupSetAttribute(mat, "WIDTHDEF", "15"); + + return mat; +} + +void MatrixCbModeTest(void) +{ + Ihandle* dlg, *box; + + box = IupVbox(create_matrix(), NULL); + IupSetAttribute(box, "MARGIN", "10x10"); + + dlg = IupDialog(box); + IupSetAttribute(dlg, "TITLE", "IupMatrix Simple Test"); + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + MatrixCbModeTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/matrix_cbs.c b/iup/test/matrix_cbs.c new file mode 100755 index 0000000..1b7afb9 --- /dev/null +++ b/iup/test/matrix_cbs.c @@ -0,0 +1,341 @@ +#include +#include +#include + +#include "iup.h" +#include "iupcontrols.h" +#include + +static int leave(Ihandle *self, int lin, int col) +{ + printf("leaveitem_cb(%d, %d)\n", lin, col); + //if(lin == 3 && col ==2) + // return IUP_IGNORE; /* notice that this will lock the matrix in this cell */ + return IUP_DEFAULT; +} + +static char* value(Ihandle *self, int lin, int col) +{ + static char str[50]; + sprintf(str, "%d-%d", lin, col); + return str; +} + +static int enter(Ihandle *self, int lin, int col) +{ + printf("enteritem_cb(%d, %d)\n", lin, col); + if(lin == 2 && col == 2) + { + IupSetAttribute(IupGetHandle("mat1"), "REDRAW", "ALL"); + IupSetAttribute(IupGetHandle("mat2"), "REDRAW", "ALL"); + IupSetAttribute(IupGetHandle("mat3"), "REDRAW", "ALL"); + IupSetAttribute(IupGetHandle("mat4"), "REDRAW", "ALL"); + IupSetAttribute(IupGetHandle("mat5"), "REDRAW", "ALL"); + IupSetAttribute(IupGetHandle("mat6"), "REDRAW", "ALL"); + } + return IUP_DEFAULT; +} + +static int dropselect(Ihandle *self, int lin, int col, Ihandle *drop, char *t, int i, int v) +{ + printf("dropselect_cb(%d, %d)\n", lin, col); + return IUP_DEFAULT; +} + +int mdrop = 1; +static int dropcheck(Ihandle *self, int lin, int col) +{ + if(lin == 1 && col == 1) + { + if (mdrop) + return IUP_DEFAULT; + else + return IUP_IGNORE; + } + return IUP_IGNORE; +} + +static int click(Ihandle *self, int lin, int col) +{ + char* value = IupMatGetAttribute(self, "", lin, col); + if (!value) value = "NULL"; + printf("click_cb(%d, %d)\n", lin, col); + printf(" VALUE%d:%d = %s\n", lin, col, value); + return IUP_DEFAULT; +} + +static int drop(Ihandle *self, Ihandle *drop, int lin, int col) +{ + printf("drop_cb(%d, %d)\n", lin, col); + if(lin == 1 && col == 1 && mdrop) + { + IupSetAttribute(drop, "1", "A - Test of Very Big String for Dropdown!"); + IupSetAttribute(drop, "2", "B"); + IupSetAttribute(drop, "3", "C"); + IupSetAttribute(drop, "4", "XXX"); + IupSetAttribute(drop, "5", "5"); + IupSetAttribute(drop, "6", "6"); + IupSetAttribute(drop, "7", "7"); + IupSetAttribute(drop, "8", NULL); + return IUP_DEFAULT; + } + return IUP_IGNORE; +} + +static int edition(Ihandle *self, int lin, int col, int mode) +{ + printf("edition_cb(lin=%d, col=%d, mode=%d)\n", lin, col, mode); + if (mode==1) + { + IupSetAttribute(self, "CARET", "3"); + + if(lin == 3 && col == 2) + return IUP_IGNORE; + } + + //if(lin == 1 && col == 1 && mode==0 && mdrop == 1) + //{ + // mdrop = 0; + // IupSetAttribute(self, "EDIT_MODE", "NO"); + // IupSetAttribute(self, "EDIT_MODE", "YES"); + // return IUP_IGNORE; + //} + + return IUP_DEFAULT; +} + +static int drawcb(Ihandle *h, int lin, int col,int x1, int x2, int y1, int y2) +{ + if (lin < 4) + return IUP_IGNORE; + + cdForeground(CD_RED); + cdLine(x1, y1, x2, y2); + cdLine(x1, y2, x2, y1); + + { + char s[50]; + sprintf(s, "%d:%d", lin, col); + cdTextAlignment(CD_CENTER); + cdText((x1+x2)/2, (y1+y2)/2, s); + } + + return IUP_DEFAULT; +} + +static int actioncb(Ihandle *h, int c, int lin, int col, int active, char* after) +{ + printf("action_cb(lin=%d, col=%d, active=%d, after=%s)\n", lin, col, active, after); + if (lin == 2 && col == 3 && active && after) + { + char str[100]; + strcpy(str, after); + strcat(str, "xxx"); + IupStoreAttribute(h,"VALUE", str); + + IupSetAttribute(h,"CARET","1"); + + IupSetAttribute(h,"REDRAW","ALL"); + } + + return IUP_DEFAULT; +} + + +static Ihandle *create_mat(void) +{ + Ihandle *mat = IupMatrix(NULL); + static int mati = 1; + char name[30]; + + sprintf(name, "mat%d", mati); + mati++; + + IupSetHandle(name, mat); + + IupSetAttribute(mat,"NUMCOL","15"); + IupSetAttribute(mat,"NUMLIN","18"); + + IupSetAttribute(mat,"NUMCOL_VISIBLE","5"); + IupSetAttribute(mat,"NUMLIN_VISIBLE","8"); + +// IupSetAttribute(mat,"EXPAND", "NO"); +// IupSetAttribute(mat,"SCROLLBAR", "NO"); + IupSetAttribute(mat,"RESIZEMATRIX", "YES"); + + IupSetAttribute(mat,"MARKMODE", "CELL"); +// IupSetAttribute(mat,"MARKMODE", "LINCOL"); + IupSetAttribute(mat,"MARKMULTIPLE", "YES"); +// IupSetAttribute(mat,"MARKAREA", "NOT_CONTINUOUS"); + IupSetAttribute(mat, "MARKAREA", "CONTINUOUS"); + + IupSetAttribute(mat,"0:0","Inflation"); + IupSetAttribute(mat,"1:0","Medicine "); + IupSetAttribute(mat,"2:0","Food"); + IupSetAttribute(mat,"3:0","Energy"); + IupSetAttribute(mat,"0:1","January 2000"); + IupSetAttribute(mat,"0:2","February 2000"); + IupSetAttribute(mat,"1:1","5.6"); + IupSetAttribute(mat,"2:1","2.2"); + IupSetAttribute(mat,"3:1","7.2"); + IupSetAttribute(mat,"1:2","4.5"); + IupSetAttribute(mat,"2:2","8.1"); + IupSetAttribute(mat,"3:2","3.4 (RO)"); + +// IupSetAttribute(mat,"BGCOLOR1:*","255 128 0"); + IupSetAttribute(mat,"BGCOLOR2:1","255 128 0"); + IupSetAttribute(mat,"FGCOLOR2:0","255 0 128"); +// IupSetAttribute(mat,"BGCOLOR0:*","255 0 128"); + IupSetAttribute(mat,"FGCOLOR1:1","255 0 128"); + IupSetAttribute(mat,"BGCOLOR3:*","255 128 0"); + IupSetAttribute(mat,"BGCOLOR*:4","255 128 0"); + //IupSetAttribute(mat,"FONT2:*", "Times New Roman:BOLD:8"); + //IupSetAttribute(mat,"FONT*:2", "Courier::12"); + IupSetAttribute(mat,"SORTSIGN1","UP"); +// IupSetAttribute(mat,"SORTSIGN2","DOWN"); + IupSetAttribute(mat,"FRAMEVERTCOLOR2:2","255 255 255"); + +// IupSetAttribute(mat,"MARKAREA","NOT_CONTINUOUS"); +// IupSetAttribute(mat,"MARKMULTIPLE","YES"); + + IupSetCallback(mat,"LEAVEITEM_CB",(Icallback)leave); + IupSetCallback(mat,"ENTERITEM_CB",(Icallback)enter); + IupSetCallback(mat,"DROPSELECT_CB",(Icallback)dropselect); + IupSetCallback(mat,"DROP_CB",(Icallback)drop); + IupSetCallback(mat,"DROPCHECK_CB",(Icallback)dropcheck); + IupSetCallback(mat,"EDITION_CB",(Icallback)edition); + IupSetCallback(mat,"CLICK_CB",(Icallback)click); + IupSetCallback(mat,"DRAW_CB",(Icallback)drawcb); + IupSetCallback(mat,"ACTION_CB",(Icallback)actioncb); + +// IupSetCallback(mat,"VALUE_CB",(Icallback)value); +// IupSetAttribute(mat,"WIDTH0","24"); +// IupSetAttribute(mat,"HEIGHT0","8"); + +// iupmaskMatSet(mat, IUPMASK_FLOAT, 0, 1, 2, 1) ; + + return mat; +} + + +static int redraw(Ihandle *self) +{ + IupSetAttribute(IupGetHandle("mat1"),"REDRAW","ALL"); + IupSetAttribute(IupGetHandle("mat2"),"REDRAW","ALL"); + //IupSetAttribute(IupGetHandle("mat3"),"REDRAW","ALL"); + //IupSetAttribute(IupGetHandle("mat4"),"REDRAW","ALL"); + //IupSetAttribute(IupGetHandle("mat5"),"REDRAW","ALL"); + //IupSetAttribute(IupGetHandle("mat6"),"REDRAW","ALL"); + + //Ihandle* mat = IupGetHandle("mat1"); + //if (IupGetInt(mat, "VISIBLE")) + //{ + // IupSetAttribute(mat,"VISIBLE","NO"); + // IupStoreAttribute(mat, "OLD_SIZE", IupGetAttribute(mat, "RASTERSIZE")); + // IupSetAttribute(mat, "RASTERSIZE", "1x1"); + //} + //else + //{ + // IupStoreAttribute(mat, "RASTERSIZE", IupGetAttribute(mat, "OLD_SIZE")); + // IupSetAttribute(mat,"VISIBLE","YES"); + //} + + return IUP_DEFAULT; +} + +static int removeline(Ihandle *self) +{ + IupSetAttribute(IupGetHandle("mat1"),"DELLIN","1"); + return IUP_DEFAULT; +} + +static int addline(Ihandle *self) +{ + IupSetAttribute(IupGetHandle("mat1"),"ADDLIN","0"); + return IUP_DEFAULT; +} + +static int removecol(Ihandle *self) +{ + IupSetAttribute(IupGetHandle("mat1"),"DELCOL","1"); + return IUP_DEFAULT; +} + +static int addcol(Ihandle *self) +{ + IupSetAttribute(IupGetHandle("mat1"),"ADDCOL","0"); + return IUP_DEFAULT; +} + +static int bt_cb(Ihandle *self) +{ + printf("DEFAULTENTER\n"); + return IUP_DEFAULT; +} + +static void createmenu(void) +{ + Ihandle* menu = IupMenu( + IupSubmenu("submenu", IupMenu(IupItem("item1","x"), IupItem("item2","x"), NULL)), + IupItem("remove line","removeline"), + IupItem("add line","addline"), + IupItem("remove col","removecol"), + IupItem("add col","addcol"), + IupItem("redraw","redraw"), + NULL); + IupSetHandle("mymenu", menu); +} + +void MatrixCbsTest(void) +{ + Ihandle *dlg, *bt; + + IupSetFunction("removeline", (Icallback)removeline); + IupSetFunction("addline", (Icallback)addline); + IupSetFunction("removecol", (Icallback)removecol); + IupSetFunction("addcol", (Icallback)addcol); + IupSetFunction("redraw", (Icallback)redraw); + + createmenu(); + + bt = IupButton("Button", NULL); + IupSetCallback(bt, "ACTION", bt_cb); + + dlg = IupDialog( +// IupZbox( + IupTabs( + IupSetAttributes( + IupVbox((create_mat()), bt, IupText(""), IupLabel("Label Text"), IupVal("HORIZONTAL"), + NULL), "MARGIN=10x10, GAP=10, TABTITLE=Test1"), + IupSetAttributes( + IupVbox(IupFrame(create_mat()), IupText(""), IupLabel("Label Text"), IupVal("HORIZONTAL"), +// NULL), "BGCOLOR=\"0 255 255\", MARGIN=10x10, GAP=10, TABTITLE=Test2,FONT=HELVETICA_ITALIC_14"), +// NULL), "FONT=HELVETICA_NORMAL_12, BGCOLOR=\"0 255 255\", MARGIN=10x10, GAP=10, TABTITLE=Test2"), + NULL), "BGCOLOR=\"0 255 255\", MARGIN=10x10, GAP=10, TABTITLE=Test2"), + NULL)); + IupSetAttribute(dlg,"TITLE", "IupMatrix"); + IupSetAttribute(dlg,"MENU", "mymenu"); + IupSetAttributeHandle(dlg,"DEFAULTENTER", bt); +// IupSetAttribute(dlg,"BGCOLOR", "255 0 255"); + + //IupSetAttribute(dlg,"COMPOSITED", "YES"); + //IupSetAttribute(dlg,"OPACITY", "192"); + + IupShowXY(dlg,IUP_CENTER,IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + MatrixCbsTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/mdi.c b/iup/test/mdi.c new file mode 100755 index 0000000..e483ba8 --- /dev/null +++ b/iup/test/mdi.c @@ -0,0 +1,150 @@ +#include +#include +#include + + +static int mdi_tilehoriz(Ihandle* ih) +{ + IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "TILEHORIZONTAL"); + return IUP_DEFAULT; +} + +static int mdi_tilevert(Ihandle* ih) +{ + IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "TILEVERTICAL"); + return IUP_DEFAULT; +} + +static int mdi_cascade(Ihandle* ih) +{ + IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "CASCADE"); + return IUP_DEFAULT; +} + +static int mdi_icon(Ihandle* ih) +{ + IupSetAttribute(IupGetDialog(ih), "MDIARRANGE", "ICON"); + return IUP_DEFAULT; +} + +static int mdi_next(Ihandle* ih) +{ + IupSetAttribute(IupGetDialog(ih), "MDIACTIVATE", "NEXT"); + return IUP_DEFAULT; +} + +static int mdi_previous(Ihandle* ih) +{ + IupSetAttribute(IupGetDialog(ih), "MDIACTIVATE", "PREVIOUS"); + return IUP_DEFAULT; +} + +static int mdi_closeall(Ihandle* ih) +{ + IupSetAttribute(IupGetDialog(ih), "MDICLOSEALL", NULL); + return IUP_DEFAULT; +} + +static int mdi_activate(Ihandle* ih) +{ + printf("mdi_activate(%s)\n", IupGetName(ih)); + return IUP_DEFAULT; +} + +static int mdi_new(Ihandle* ih) +{ + static int id = 0; + Ihandle *box, *cnv, *dlg; + + cnv = IupCanvas(NULL); + IupSetAttribute(cnv,"BGCOLOR","128 255 0"); + + box = IupVbox(cnv, NULL); + IupSetAttribute(box,"MARGIN","5x5"); + + dlg = IupDialog(box); + IupSetfAttribute(dlg,"TITLE","MDI Child (%d)", id); id++; + IupSetAttribute(dlg,"MDICHILD","YES"); + IupSetAttribute(dlg,"PARENTDIALOG","mdiFrame"); + IupSetCallback(dlg,"MDIACTIVATE_CB",(Icallback)mdi_activate); + IupSetAttribute(dlg,"RASTERSIZE","300x300"); +// IupSetAttribute(dlg, "PLACEMENT", "MAXIMIZED"); + + IupShow(dlg); + + return IUP_DEFAULT; +} + +static void createMenu(void) +{ + Ihandle* winmenu; + Ihandle* mnu = IupMenu( + IupSubmenu("MDI",IupMenu( + IupItem("New", "mdi_new"), + NULL)), + IupSubmenu("Window", winmenu = IupMenu( + IupItem("Tile Horizontal", "mdi_tilehoriz"), + IupItem("Tile Vertical", "mdi_tilevert"), + IupItem("Cascade", "mdi_cascade"), + IupItem("Icon Arrange", "mdi_icon"), + IupItem("Close All", "mdi_closeall"), + IupSeparator(), + IupItem("Next", "mdi_next"), + IupItem("Previous", "mdi_previous"), + NULL)), + NULL); + IupSetHandle("mnu",mnu); + IupSetHandle("mdiMenu",winmenu); + + IupSetFunction("mdi_new", (Icallback)mdi_new); + IupSetFunction("mdi_tilehoriz", (Icallback)mdi_tilehoriz); + IupSetFunction("mdi_tilevert", (Icallback)mdi_tilevert); + IupSetFunction("mdi_cascade", (Icallback)mdi_cascade); + IupSetFunction("mdi_icon", (Icallback)mdi_icon); + IupSetFunction("mdi_next", (Icallback)mdi_next); + IupSetFunction("mdi_previous", (Icallback)mdi_previous); + IupSetFunction("mdi_closeall", (Icallback)mdi_closeall); +} + +static Ihandle* createFrame(void) +{ + Ihandle *dlg, *cnv; + cnv = IupCanvas( NULL); + IupSetAttribute(cnv,"MDICLIENT","YES"); + IupSetAttribute(cnv,"MDIMENU","mdiMenu"); + + dlg = IupDialog(cnv); + IupSetAttribute(dlg,"TITLE","MDI Frame"); + IupSetAttribute(dlg,"MDIFRAME","YES"); + IupSetAttribute(dlg,"RASTERSIZE","800x600"); + IupSetAttribute(dlg,"MENU","mnu"); + IupSetHandle("mdiFrame", dlg); + + return dlg; +} + +void MdiTest(void) +{ + Ihandle* dlg; + + createMenu(); + + dlg = createFrame(); +// IupSetAttribute(dlg, "PLACEMENT", "MAXIMIZED"); + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + MdiTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/menu.c b/iup/test/menu.c new file mode 100755 index 0000000..6f20b9e --- /dev/null +++ b/iup/test/menu.c @@ -0,0 +1,396 @@ +#include +#include + +#include + +static Ihandle* load_image_Tecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 95, 108, 1, 90, 100, 117, 99, 123, 138, 166, 126, 137, 152, 181, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 105, 123, 147, 122, 137, 165, 255, 136, 152, 183, 255, 132, 149, 179, 250, 133, 149, 178, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 100, 115, 43, 111, 125, 150, 253, 140, 158, 190, 255, 135, 151, 182, 255, 132, 149, 179, 255, 131, 147, 177, 217, 153, 164, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 134, 148, 134, 151, 182, 255, 137, 154, 185, 255, 115, 129, 154, 252, 114, 128, 155, 255, 130, 146, 175, 255, 132, 147, 175, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 162, 3, 108, 121, 145, 230, 144, 162, 195, 255, 137, 154, 185, 197, 74, 79, 86, 45, 41, 46, 55, 246, 120, 134, 162, 255, 129, 145, 174, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 101, 113, 48, 124, 139, 167, 255, 144, 161, 194, 255, 138, 155, 186, 67, 0, 0, 0, 0, 49, 54, 62, 150, 87, 98, 118, 255, 128, 144, 173, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 132, 105, 137, 154, 185, 255, 139, 156, 188, 231, 143, 159, 187, 3, 0, 0, 0, 0, 64, 68, 76, 61, 70, 79, 95, 255, 127, 143, 172, 254, 134, 149, 175, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 121, 142, 153, 141, 159, 191, 255, 139, 156, 188, 164, 0, 0, 0, 0, 0, 0, 0, 0, 79, 82, 87, 3, 69, 77, 92, 241, 122, 137, 165, 255, 127, 142, 170, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 122, 146, 191, 145, 163, 196, 255, 139, 156, 188, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 86, 101, 190, 115, 129, 156, 255, 126, 141, 170, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 125, 149, 227, 150, 168, 201, 255, 141, 157, 188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, 107, 144, 113, 127, 153, 255, 125, 140, 169, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 165, 167, 2, 112, 125, 150, 252, 155, 173, 203, 255, 143, 159, 189, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 94, 110, 109, 114, 128, 155, 255, 125, 140, 168, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 120, 130, 149, 33, 48, 53, 59, 69, 43, 46, 52, 100, 50, 54, 59, 137, 116, 130, 156, 255, 155, 171, 201, 255, 105, 118, 142, 155, 104, 117, 141, 151, 105, 118, 141, 151, 105, 118, 142, 151, 101, 113, 136, 185, 111, 124, 150, 255, 116, 130, 156, 220, 112, 125, 148, 95, 115, 127, 150, 67, 123, 134, 156, 33, 168, 176, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 147, 5, 109, 121, 142, 71, 106, 118, 140, 140, 105, 117, 140, 197, 107, 120, 144, 242, 120, 135, 162, 255, 123, 137, 163, 255, 44, 49, 58, 255, 28, 32, 39, 255, 125, 139, 164, 255, 150, 167, 197, 255, 138, 155, 186, 255, 131, 148, 178, 255, 125, 141, 170, 255, 119, 134, 162, 255, 114, 128, 154, 255, 108, 122, 147, 255, 104, 117, 141, 255, 102, 115, 138, 255, 103, 116, 139, 255, 107, 120, 145, 255, 111, 124, 149, 245, 113, 126, 151, 200, 113, 127, 152, 140, 116, 129, 154, 71, 122, 135, 158, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 128, 145, 14, 106, 118, 140, 130, 104, 116, 139, 234, 105, 118, 142, 255, 128, 144, 173, 255, 147, 165, 199, 255, 157, 177, 213, 255, 150, 168, 202, 255, 140, 156, 187, 229, 41, 45, 52, 196, 39, 43, 51, 183, 130, 143, 168, 255, 144, 161, 192, 233, 109, 122, 145, 109, 105, 116, 138, 109, 99, 110, 130, 109, 92, 103, 123, 109, 91, 100, 117, 145, 97, 109, 131, 255, 95, 106, 128, 248, 74, 83, 97, 193, 64, 72, 85, 227, 56, 63, 75, 255, 55, 62, 75, 255, 65, 73, 88, 255, 90, 101, 121, 255, 111, 125, 150, 255, 114, 128, 154, 236, 116, 129, 155, 130, 127, 140, 165, 16, 0, 0, 0, 0, + 95, 101, 113, 22, 103, 115, 137, 220, 103, 116, 140, 255, 110, 123, 148, 255, 146, 165, 198, 255, 147, 165, 197, 232, 142, 158, 188, 147, 131, 144, 169, 78, 115, 123, 139, 20, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 68, 128, 142, 167, 255, 144, 162, 193, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 107, 31, 120, 135, 163, 255, 133, 150, 180, 231, 0, 0, 0, 0, 0, 0, 0, 0, 86, 89, 93, 20, 50, 54, 61, 73, 37, 40, 46, 141, 33, 36, 42, 230, 46, 52, 63, 255, 107, 120, 144, 255, 116, 130, 157, 255, 118, 133, 159, 223, 132, 147, 174, 24, + 76, 83, 95, 114, 104, 117, 140, 255, 105, 117, 141, 255, 118, 133, 160, 253, 139, 155, 184, 116, 134, 143, 161, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 100, 110, 74, 122, 137, 163, 255, 143, 160, 191, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 120, 31, 123, 138, 166, 255, 136, 153, 183, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 93, 97, 5, 42, 45, 51, 111, 86, 97, 117, 253, 118, 133, 160, 255, 119, 133, 161, 255, 133, 149, 180, 116, + 46, 50, 56, 109, 67, 76, 91, 255, 105, 118, 142, 255, 107, 120, 145, 254, 112, 125, 149, 131, 127, 139, 161, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 98, 109, 74, 116, 130, 156, 255, 142, 159, 190, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 122, 31, 128, 143, 172, 255, 141, 157, 185, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 137, 163, 7, 122, 136, 162, 122, 120, 135, 162, 254, 121, 136, 164, 255, 136, 152, 184, 255, 126, 141, 168, 116, + 71, 74, 79, 17, 31, 35, 41, 206, 42, 47, 57, 255, 77, 87, 105, 255, 103, 116, 140, 255, 110, 124, 149, 239, 112, 125, 150, 157, 115, 128, 153, 89, 122, 134, 158, 30, 147, 158, 177, 2, 0, 0, 0, 0, 81, 87, 96, 65, 109, 123, 148, 255, 141, 158, 190, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 103, 112, 31, 135, 151, 180, 255, 141, 156, 183, 231, 0, 0, 0, 0, 153, 164, 183, 1, 134, 147, 171, 30, 124, 138, 165, 84, 123, 138, 165, 154, 122, 137, 164, 235, 127, 143, 172, 255, 140, 157, 189, 255, 144, 162, 195, 255, 129, 144, 172, 218, 126, 138, 161, 22, + 0, 0, 0, 0, 64, 68, 73, 7, 39, 43, 49, 118, 32, 36, 42, 225, 30, 35, 42, 255, 50, 57, 68, 255, 72, 81, 97, 255, 91, 102, 123, 255, 105, 118, 142, 255, 113, 127, 152, 240, 115, 129, 155, 204, 111, 124, 149, 196, 111, 125, 150, 255, 126, 141, 170, 234, 119, 133, 159, 120, 120, 134, 160, 116, 121, 135, 161, 117, 121, 135, 162, 119, 116, 130, 155, 152, 127, 142, 170, 255, 125, 140, 168, 248, 123, 138, 166, 199, 130, 145, 173, 235, 140, 155, 183, 255, 143, 160, 190, 255, 143, 161, 193, 255, 147, 165, 199, 255, 145, 164, 197, 255, 132, 148, 177, 230, 127, 140, 166, 126, 124, 134, 151, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 141, 144, 3, 55, 58, 63, 58, 37, 40, 46, 126, 34, 38, 44, 184, 34, 38, 44, 235, 35, 39, 47, 254, 49, 55, 66, 255, 64, 72, 87, 255, 77, 87, 104, 255, 88, 98, 118, 255, 96, 108, 130, 255, 103, 116, 139, 255, 108, 122, 147, 255, 113, 127, 153, 255, 118, 133, 160, 255, 124, 140, 168, 255, 133, 148, 176, 255, 141, 156, 183, 255, 146, 161, 187, 255, 144, 159, 186, 255, 131, 146, 174, 254, 127, 141, 168, 237, 126, 141, 168, 188, 123, 137, 162, 131, 112, 123, 143, 61, 128, 132, 140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 19, 64, 68, 73, 56, 53, 57, 65, 82, 62, 67, 76, 116, 66, 74, 89, 255, 95, 107, 129, 255, 80, 88, 103, 155, 81, 90, 105, 151, 86, 95, 112, 151, 95, 104, 122, 151, 98, 109, 128, 180, 124, 139, 166, 255, 109, 122, 146, 218, 100, 110, 128, 84, 96, 104, 118, 56, 105, 109, 117, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 2, 74, 83, 98, 252, 131, 147, 178, 255, 140, 155, 184, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 134, 157, 114, 151, 169, 203, 255, 123, 138, 165, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 76, 90, 224, 122, 137, 165, 255, 136, 152, 182, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 139, 165, 147, 146, 164, 198, 255, 122, 137, 165, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 69, 81, 191, 110, 124, 149, 255, 134, 151, 181, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 170, 193, 142, 160, 192, 255, 122, 137, 164, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 63, 74, 150, 94, 105, 127, 255, 133, 149, 179, 166, 0, 0, 0, 0, 0, 0, 0, 0, 115, 119, 128, 5, 130, 145, 174, 242, 137, 154, 186, 255, 125, 139, 166, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 58, 66, 102, 72, 81, 97, 255, 132, 148, 178, 236, 148, 161, 187, 5, 0, 0, 0, 0, 110, 121, 140, 64, 140, 157, 189, 255, 127, 142, 171, 254, 131, 144, 169, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 65, 71, 43, 47, 52, 63, 255, 127, 143, 172, 255, 132, 148, 177, 75, 0, 0, 0, 0, 121, 134, 158, 160, 139, 156, 188, 255, 123, 138, 165, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 36, 39, 46, 227, 106, 119, 143, 255, 130, 145, 175, 203, 114, 125, 147, 51, 123, 138, 166, 247, 131, 147, 177, 255, 123, 138, 165, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 41, 47, 143, 68, 77, 93, 255, 128, 144, 174, 255, 126, 141, 170, 252, 129, 145, 174, 255, 123, 138, 166, 255, 127, 141, 167, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 68, 73, 40, 34, 38, 46, 250, 117, 131, 158, 255, 126, 142, 171, 255, 124, 140, 168, 255, 125, 139, 166, 214, 140, 152, 172, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 44, 50, 134, 58, 66, 79, 255, 123, 138, 166, 255, 123, 138, 166, 250, 127, 140, 165, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 46, 50, 55, 83, 82, 89, 102, 123, 106, 116, 136, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(32, 32, imgdata); + return image; +} + +static Ihandle* load_image_LogoTecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4, + 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154, + 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153, + 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static Ihandle* load_image_Test(void) +{ + unsigned char imgdata[] = + { + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5, + 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5, + 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5, + 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5, + 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5, + 5,0,1,1,1,1,1,1,2,2,2,2,2,2,0,5, + 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5, + 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5, + 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5, + 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5, + 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5, + 5,0,3,3,3,3,3,3,4,4,4,4,4,4,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + }; + + Ihandle* image = IupImage(16, 16, imgdata); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "0 255 0"); + IupSetAttribute(image, "3", "0 0 255"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + return image; +} + +static Ihandle* load_image_Test_pressed(void) +{ + static unsigned char imgdata[] = + { + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,5,1,1,1,1,1,2,2,2,2,2,5,0,5, + 5,0,1,5,1,1,1,1,2,2,2,2,5,2,0,5, + 5,0,1,1,5,1,1,1,2,2,2,5,2,2,0,5, + 5,0,1,1,1,5,1,1,2,2,5,2,2,2,0,5, + 5,0,1,1,1,1,5,1,2,5,2,2,2,2,0,5, + 5,0,1,1,1,1,1,5,5,2,2,2,2,2,0,5, + 5,0,3,3,3,3,3,5,5,4,4,4,4,4,0,5, + 5,0,3,3,3,3,5,3,4,5,4,4,4,4,0,5, + 5,0,3,3,3,5,3,3,4,4,5,4,4,4,0,5, + 5,0,3,3,5,3,3,3,4,4,4,5,4,4,0,5, + 5,0,3,5,3,3,3,3,4,4,4,4,5,4,0,5, + 5,0,5,3,3,3,3,3,4,4,4,4,4,5,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + }; + + Ihandle* image = IupImage(16, 16, imgdata); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "0 255 0"); + IupSetAttribute(image, "3", "0 0 255"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + return image; +} + +static int item_add_cb(Ihandle* ih) +{ + Ihandle* item = IupItem("New Appended Item", "item_cb"); + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + IupAppend(IupGetParent(ih), item); /* after the last item */ + IupMap(item); + return IUP_DEFAULT; +} + +static int item_insert_cb(Ihandle* ih) +{ + Ihandle* ref_item = IupGetChild(IupGetParent(ih), 4); /* before the first appended item, just after the separator */ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + if (ref_item) + { + Ihandle* item = IupItem("New Inserted Item", "item_cb"); + IupInsert(IupGetParent(ih), ref_item, item); + IupMap(item); + } + return IUP_DEFAULT; +} + +static int item_remove_cb(Ihandle* ih) +{ + Ihandle* item = IupGetNextChild(IupGetParent(ih), IupGetNextChild(IupGetParent(ih), ih)); /* the next after the separator */ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + if (item) + IupDestroy(item); + return IUP_DEFAULT; +} + +static int item_image_cb(Ihandle* ih) +{ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + ih = IupGetNextChild(IupGetParent(ih), ih); + if (IupGetAttributeHandle(ih, "IMAGE")) + IupSetAttribute(ih, "IMAGE", NULL); + else + IupSetAttribute(ih, "IMAGE", "image_test"); + return IUP_DEFAULT; +} + +static int item_active_cb(Ihandle* ih) +{ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + ih = IupGetNextChild(IupGetParent(ih), ih); + if (IupGetInt(ih, "ACTIVE")) + IupSetAttribute(ih, "ACTIVE", "NO"); + else + IupSetAttribute(ih, "ACTIVE", "YES"); + return IUP_DEFAULT; +} + +static int item_rename_cb(Ihandle* ih) +{ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + ih = IupGetNextChild(IupGetParent(ih), ih); + IupSetAttribute(ih, "TITLE", "New Title"); + return IUP_DEFAULT; +} + +static int item_toggle_cb(Ihandle* ih) +{ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + if (IupGetInt(ih, "VALUE")) + IupSetAttribute(ih, "VALUE", "OFF"); + else + IupSetAttribute(ih, "VALUE", "ON"); + + return IUP_DEFAULT; +} + +static int item_cb (Ihandle* ih) +{ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + return IUP_DEFAULT; +} + +static int item_close_cb (Ihandle* ih) +{ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + return IUP_CLOSE; +} + +static int item_help_cb (Ihandle* ih) +{ + printf("HELP_CB(%s)\n", IupGetAttribute(ih, "TITLE")); + return IUP_DEFAULT; +} + +static int item_destroy_cb (Ihandle* ih) +{ + printf("ACTION(%s)\n", IupGetAttribute(ih, "TITLE")); + IupDestroy(IupGetDialog(ih)); + return IUP_DEFAULT; +} + +static int highlight_cb(Ihandle* ih) +{ + printf("HIGHLIGHT_CB(%s)\n", IupGetAttribute(ih, "TITLE")); + return IUP_DEFAULT; +} + +static int open_cb(Ihandle* ih) +{ + printf("OPEN_CB(Menu of %s)\n", IupGetAttribute(IupGetParent(ih), "TITLE")); + return IUP_DEFAULT; +} + +static int menuclose_cb(Ihandle* ih) +{ + printf("MENUCLOSE_CB(Menu of %s)\n", IupGetAttribute(IupGetParent(ih), "TITLE")); + return IUP_DEFAULT; +} + +static void show_popup(void) +{ + Ihandle* menu_file = IupMenu( + IupSetAttributes(IupItem("Item with Image", "item_cb"), "IMAGE=image_tec"), + IupSetCallbacks(IupSetAttributes(IupItem("Toggle using VALUE", NULL), "VALUE=ON, KEY=K_V"), "ACTION", item_toggle_cb, "HIGHLIGHT_CB", highlight_cb, NULL), + IupSetAttributes(IupItem("Auto &Toggle", "item_cb"), "AUTOTOGGLE=YES, VALUE=OFF, IMAGE=image_test, IMPRESS=image_test_pressed"), + IupSeparator(), + IupSetCallbacks(IupItem("E&xit (Close)", NULL), "ACTION", item_close_cb, NULL), + NULL); + Ihandle* menu = IupMenu( + IupSetCallbacks(IupSetAttributes(IupSubmenu("Submenu", menu_file), "KEY=K_S, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL), + IupSetCallbacks(IupItem("Item", "item_cb"), "HIGHLIGHT_CB", highlight_cb, NULL), + IupSetCallbacks(IupSetAttributes(IupItem("Item", "item_cb"), "VALUE=ON"), "HIGHLIGHT_CB", highlight_cb, NULL), + IupSetCallbacks(IupSetAttributes(IupItem("Item", "item_cb"), "KEY=K_I, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL), + NULL); + IupSetCallbacks(menu_file, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL); + IupSetCallbacks(menu, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL); + IupPopup(menu, IUP_MOUSEPOS, IUP_MOUSEPOS); + IupDestroy(menu); +} + +static int k_m(Ihandle *ih) +{ + (void)ih; + show_popup(); + return IUP_DEFAULT; +} + +static int button(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + (void)x; + (void)y; + (void)status; + (void)ih; + + if (but==IUP_BUTTON3 && pressed) + show_popup(); + + return IUP_DEFAULT; +} + +static int killfocus(Ihandle *ih) +{ + (void)ih; + printf("KILLFOCUS(canvas)\n"); + return IUP_DEFAULT; +} + +static int getfocus(Ihandle *ih) +{ + (void)ih; + printf("GETFOCUS(canvas)\n"); + return IUP_DEFAULT; +} + +void MenuTest(void) +{ + Ihandle *dlg, *canvas, *menu, + *menu_file, *menu_edit, *menu_help, + *menu_create; + + IupSetHandle("image_tec", load_image_LogoTecgraf()); + IupSetHandle("image_test", load_image_Test()); + IupSetHandle("image_test_pressed", load_image_Test_pressed()); + + /* Creates menu create */ + menu_create = IupMenu( + IupItem("Line", "item_cb"), + IupItem("Circle", "item_cb"), + IupSetCallbacks(IupSubmenu("Triangle", IupSetAttributes(IupMenu( + IupSetCallbacks(IupSetAttributes(IupItem("Equilateral", "item_cb"), "VALUE=ON"), "HIGHLIGHT_CB", highlight_cb, NULL), + IupSetCallbacks(IupItem("Isoceles", "item_cb"), "HIGHLIGHT_CB", highlight_cb, NULL), + IupSetCallbacks(IupItem("Scalenus", "item_cb"), "HIGHLIGHT_CB", highlight_cb, NULL), + NULL), "RADIO=YES")), "HIGHLIGHT_CB", highlight_cb, NULL), + NULL); + IupSetCallbacks(menu_create, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL); +// IupSetAttribute(menu_create, "BGCOLOR", "92 92 255"); + + /* Creates three menus that will be inside submenus */ + menu_file = IupMenu( + IupSetAttributes(IupItem("Item with Image \tCtrl+M", "item_cb"), "IMAGE=image_tec"), + IupSetCallbacks(IupSetAttributes(IupItem("Toggle using &VALUE", NULL), "VALUE=ON, KEY=KcV"), "ACTION", item_toggle_cb, NULL), + IupSetAttributes(IupItem("Auto &Toggle Text", "item_cb"), "AUTOTOGGLE=YES, VALUE=OFF"), + IupSetAttributes(IupItem("Auto &Toggle Image", "item_cb"), "AUTOTOGGLE=YES, VALUE=OFF, IMAGE=image_test, IMPRESS=image_test_pressed"), + IupItem("Big Image", "item_cb"), + IupSeparator(), + IupSetCallbacks(IupItem("Exit (Destroy)", NULL), "ACTION", item_destroy_cb, NULL), + IupSetCallbacks(IupItem("E&xit (Close)", NULL), "ACTION", item_close_cb, NULL), + NULL); + menu_edit = IupMenu( + IupSetCallbacks(IupItem("Active Next", NULL), "ACTION", item_active_cb, NULL), + IupSetCallbacks(IupItem("Rename Next", NULL), "ACTION", item_rename_cb, NULL), + IupSetCallbacks(IupItem("Set Next Image", NULL), "ACTION", item_image_cb, NULL), + IupSetAttributes(IupItem("Item w/ Acc\tCtrl+A", "item_cb"), "IMAGE=dummy"), + IupSeparator(), + IupSetAttributes(IupSubmenu("Create", menu_create), "IMAGE=image_tec"), + NULL); + menu_help = IupMenu( + IupSetCallbacks(IupItem("Append", NULL), "ACTION", item_add_cb, "HELP_CB", item_help_cb, NULL), + IupSetCallbacks(IupItem("Insert", NULL), "ACTION", item_insert_cb, "HELP_CB", item_help_cb, NULL), + IupSetCallbacks(IupItem("Remove", NULL), "ACTION", item_remove_cb, "HELP_CB", item_help_cb, NULL), + IupSeparator(), + NULL); + + IupSetAttributeHandle(IupGetChild(menu_file, 4), "TITLEIMAGE", load_image_Tecgraf()); + IupSetCallbacks(menu_edit, "OPEN_CB", open_cb, "MENUCLOSE_CB", menuclose_cb, NULL); + + /* Creates main menu with file menu */ + menu = IupMenu( + IupSetCallbacks(IupSetAttributes(IupSubmenu("Submenu", menu_file), "KEY=K_S, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL), + IupSetCallbacks(IupSubmenu("&Edit", menu_edit), "HIGHLIGHT_CB", highlight_cb, NULL), + IupSubmenu("Help", menu_help), + IupSetCallbacks(IupSetAttributes(IupItem("Item", "item_cb"), "KEY=K_I, IMAGE=image_tec"), "HIGHLIGHT_CB", highlight_cb, NULL), + NULL); + + /* Registers callbacks */ + IupSetFunction("item_cb", item_cb); + //IupSetAttribute(menu, "BGCOLOR", "92 92 255"); + //IupSetAttribute(menu, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation + + canvas = IupCanvas(NULL); + IupSetCallback(canvas, "BUTTON_CB", (Icallback)button); + IupSetCallback(canvas, "K_m", (Icallback)k_m); +// IupSetCallback(canvas, "KILLFOCUS_CB", killfocus); +// IupSetCallback(canvas, "GETFOCUS_CB", getfocus); + + dlg = IupDialog(canvas); + IupSetAttributeHandle(dlg, "MENU", menu); + IupSetAttributes(dlg, "TITLE=\"IupMenu Test\", SIZE=QUARTERxQUARTER"); + + /* Shows dlg in the center of the screen */ + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + MenuTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/ole.cpp b/iup/test/ole.cpp new file mode 100755 index 0000000..c3da5fc --- /dev/null +++ b/iup/test/ole.cpp @@ -0,0 +1,108 @@ +#include +#include + +#include +#include + +#include +#include + + +#ifndef BIG_TEST +static Ihandle *IupOleCreateBrowser(void) +{ + Ihandle *browser=IupOleControl("Shell.Explorer.2"); + IupSetAttribute(browser,"DESIGNMODE", "NO"); + return browser; +} + +static WCHAR* Char2Wide(const char* str) +{ + if (str) + { + int n = strlen(str)+1; + WCHAR* wstr = (WCHAR*)malloc(n * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, str, -1, wstr, n); + return wstr; + } + return NULL; +} + +static IWebBrowser2 *IupOleGetWebBrowserInterface(Ihandle *browser) +{ + IWebBrowser2 *pweb = (IWebBrowser2*)IupGetAttribute(browser, "IUP_IWebBrowser2"); + if (!pweb) + { + IUnknown *punk = (IUnknown*)IupGetAttribute(browser,"IUNKNOWN"); + punk->QueryInterface(IID_IWebBrowser2, (void **) &pweb); + punk->Release(); + IupSetAttribute(browser, "IUP_IWebBrowser2", (char*)pweb); + } + return pweb; +} + +static void IupOleNavigate(Ihandle *browser,char *fname) +{ + IWebBrowser2 *pweb = IupOleGetWebBrowserInterface(browser); + WCHAR* url = Char2Wide(fname); + pweb->Navigate(url, NULL, NULL, NULL, NULL); + free(url); +} + +static void IupOleClose(Ihandle* browser) +{ + IWebBrowser2 *pweb = IupOleGetWebBrowserInterface(browser); + pweb->Release(); +} + +static int load_cb(Ihandle* ih) +{ + Ihandle* txt = (Ihandle*)IupGetAttribute(ih, "MY_TEXT"); + Ihandle* browser = (Ihandle*)IupGetAttribute(ih, "MY_BROWSER"); + IupOleNavigate(browser, IupGetAttribute(txt, "VALUE")); + return IUP_DEFAULT; +} + +static int close_cb(Ihandle* ih) +{ + Ihandle* browser = (Ihandle*)IupGetAttribute(ih, "MY_BROWSER"); + IupOleClose(browser); + return IUP_DEFAULT; +} + +void OleTest(void) +{ + Ihandle* txt, *bt; + Ihandle * browser = IupOleCreateBrowser(); + + // Creates a dlg containing the OLE control + Ihandle* dlg = IupDialog(IupVbox(IupHbox(txt = IupText(""), bt = IupButton("Load", NULL), NULL), browser, NULL)); + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupSetAttribute(dlg, "GAP", "10"); + IupSetAttribute(dlg, "TITLE", "IupOle"); + IupSetAttribute(dlg, "MY_TEXT", (char*)txt); + IupSetAttribute(dlg, "MY_BROWSER", (char*)browser); + IupSetAttribute(txt, "EXPAND", "HORIZONTAL"); +// IupSetAttribute(txt, "VALUE", "d:/test.doc"); + IupSetCallback(bt, "ACTION", (Icallback)load_cb); + IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb); + IupSetAttributeHandle(dlg, "DEFAULTENTER", bt); + + // Shows dlg + IupShow(dlg); +} + +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupOleControlOpen(); + + OleTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/pplot.c b/iup/test/pplot.c new file mode 100755 index 0000000..639aa34 --- /dev/null +++ b/iup/test/pplot.c @@ -0,0 +1,699 @@ +/* + * IupPPlot Test + * Description : Create all built-in plots. + * It is organised as two side-by-side panels: + * - left panel for current plot control + * - right panel containg tabbed plots + * Remark : depend on libs IUP, CD, IUP_PPLOT + */ + +#include +#include +#include +#include + + +#include "iup.h" +#include "iupcontrols.h" +#include "iup_pplot.h" + +#include +#include +#include +#include + + +#define MAXPLOT 6 /* room for examples */ + + +static Ihandle *plot[MAXPLOT] = {NULL}; /* PPlot controls */ +static Ihandle *dial1, *dial2, /* dials for zooming */ + *tgg1, *tgg2, /* autoscale on|off toggles */ + *tgg3, *tgg4, /* grid show|hide toggles */ + *tgg5, /* legend show|hide toggle */ + *tabs; /* tabbed control */ + +static int delete_cb(Ihandle* ih, int index, int sample_index, float x, float y) +{ + printf("DELETE_CB(%d, %d, %g, %g)\n", index, sample_index, x, y); + return IUP_DEFAULT; +} + +static int select_cb(Ihandle* ih, int index, int sample_index, float x, float y, int select) +{ + printf("SELECT_CB(%d, %d, %g, %g, %d)\n", index, sample_index, x, y, select); + return IUP_DEFAULT; +} + +static int edit_cb(Ihandle* ih, int index, int sample_index, float x, float y, float *new_x, float *new_y) +{ + printf("EDIT_CB(%d, %d, %g, %g, %g, %g)\n", index, sample_index, x, y, *new_x, *new_y); + return IUP_DEFAULT; +} + +static int postdraw_cb(Ihandle* ih, cdCanvas* cnv) +{ + int ix, iy; + + IupPPlotTransform(ih, 0.003f, 0.02f, &ix, &iy); + cdCanvasFont(cnv, NULL, CD_BOLD, 10); + cdCanvasTextAlignment(cnv, CD_SOUTH); + cdCanvasText(cnv, ix, iy, "My Inline Legend"); + printf("POSTDRAW_CB()\n"); + + return IUP_DEFAULT; +} + +static int predraw_cb(Ihandle* ih, cdCanvas* cnv) +{ + printf("PREDRAW_CB()\n"); + return IUP_DEFAULT; +} + +static void InitPlots(void) +{ + int theI; + float x, y, theFac; + + /* PLOT 0 - MakeExamplePlot1 */ + IupSetAttribute(plot[0], "TITLE", "AutoScale"); + IupSetAttribute(plot[0], "MARGINTOP", "40"); + IupSetAttribute(plot[0], "MARGINLEFT", "40"); + IupSetAttribute(plot[0], "MARGINBOTTOM", "50"); + IupSetAttribute(plot[0], "TITLEFONTSIZE", "16"); + IupSetAttribute(plot[0], "LEGENDSHOW", "YES"); + IupSetAttribute(plot[0], "AXS_XLABEL", "gnu (Foo)"); + IupSetAttribute(plot[0], "AXS_YLABEL", "Space (m^3)"); + IupSetAttribute(plot[0], "AXS_YFONTSIZE", "8"); + IupSetAttribute(plot[0], "AXS_YTICKFONTSIZE", "8"); + IupSetAttribute(plot[0], "AXS_XFONTSIZE", "10"); + IupSetAttribute(plot[0], "AXS_YFONTSIZE", "10"); + IupSetAttribute(plot[0], "AXS_XLABELCENTERED", "NO"); + IupSetAttribute(plot[0], "AXS_YLABELCENTERED", "NO"); + +// IupSetAttribute(plot[0], "USE_IMAGERGB", "YES"); +// IupSetAttribute(plot[0], "USE_GDI+", "YES"); + + theFac = (float)1.0/(100*100*100); + IupPPlotBegin(plot[0], 0); + for (theI=-100; theI<=100; theI++) + { + x = (float)(theI+50); + y = theFac*theI*theI*theI; + IupPPlotAdd(plot[0], x, y); + } + IupPPlotEnd(plot[0]); + IupSetAttribute(plot[0], "DS_LINEWIDTH", "3"); + IupSetAttribute(plot[0], "DS_LEGEND", "Line"); + + theFac = (float)2.0/100; + IupPPlotBegin(plot[0], 0); + for (theI=-100; theI<=100; theI++) + { + x = (float)theI; + y = -theFac*theI; + IupPPlotAdd(plot[0], x, y); + } + IupPPlotEnd(plot[0]); + IupSetAttribute(plot[0], "DS_LEGEND", "Curve 1"); + + IupPPlotBegin(plot[0], 0); + for (theI=-100; theI<=100; theI++) + { + x = (float)(0.01*theI*theI-30); + y = (float)0.01*theI; + IupPPlotAdd(plot[0], x, y); + } + IupPPlotEnd(plot[0]); + IupSetAttribute(plot[0], "DS_LEGEND", "Curve 2"); + + + /* PLOT 1 - MakeExamplePlot2 */ + IupSetAttribute(plot[1], "TITLE", "No Autoscale+No CrossOrigin"); + IupSetAttribute(plot[1], "TITLEFONTSIZE", "16"); + IupSetAttribute(plot[1], "MARGINTOP", "40"); + IupSetAttribute(plot[1], "MARGINLEFT", "65"); + IupSetAttribute(plot[1], "MARGINBOTTOM", "60"); + IupSetAttribute(plot[1], "BGCOLOR", "0 192 192"); + IupSetAttribute(plot[1], "AXS_XLABEL", "Tg (X)"); + IupSetAttribute(plot[1], "AXS_YLABEL", "Tg (Y)"); + IupSetAttribute(plot[1], "AXS_XAUTOMIN", "NO"); + IupSetAttribute(plot[1], "AXS_XAUTOMAX", "NO"); + IupSetAttribute(plot[1], "AXS_YAUTOMIN", "NO"); + IupSetAttribute(plot[1], "AXS_YAUTOMAX", "NO"); + IupSetAttribute(plot[1], "AXS_XMIN", "10"); + IupSetAttribute(plot[1], "AXS_XMAX", "60"); + IupSetAttribute(plot[1], "AXS_YMIN", "-0.5"); + IupSetAttribute(plot[1], "AXS_YMAX", "0.5"); + IupSetAttribute(plot[1], "AXS_XCROSSORIGIN", "NO"); + IupSetAttribute(plot[1], "AXS_YCROSSORIGIN", "NO"); + IupSetAttribute(plot[1], "AXS_XFONTSTYLE", "BOLD"); + IupSetAttribute(plot[1], "AXS_YFONTSTYLE", "BOLD"); + IupSetAttribute(plot[1], "AXS_XREVERSE", "YES"); + IupSetAttribute(plot[1], "GRIDCOLOR", "128 255 128"); + IupSetAttribute(plot[1], "GRIDLINESTYLE", "DOTTED"); + IupSetAttribute(plot[1], "GRID", "YES"); + IupSetAttribute(plot[1], "LEGENDSHOW", "YES"); + + theFac = (float)1.0/(100*100*100); + IupPPlotBegin(plot[1], 0); + for (theI=0; theI<=100; theI++) + { + x = (float)(theI); + y = theFac*theI*theI*theI; + IupPPlotAdd(plot[1], x, y); + } + IupPPlotEnd(plot[1]); + + theFac = (float)2.0/100; + IupPPlotBegin(plot[1], 0); + for (theI=0; theI<=100; theI++) + { + x = (float)(theI); + y = -theFac*theI; + IupPPlotAdd(plot[1], x, y); + } + IupPPlotEnd(plot[1]); + + /* PLOT 2 - MakeExamplePlot4 */ + IupSetAttribute(plot[2], "TITLE", "Log Scale"); + IupSetAttribute(plot[2], "TITLEFONTSIZE", "16"); + IupSetAttribute(plot[2], "MARGINTOP", "40"); + IupSetAttribute(plot[2], "MARGINLEFT", "70"); + IupSetAttribute(plot[2], "MARGINBOTTOM", "60"); + IupSetAttribute(plot[2], "GRID", "YES"); + IupSetAttribute(plot[2], "AXS_XSCALE", "LOG10"); + IupSetAttribute(plot[2], "AXS_YSCALE", "LOG2"); + IupSetAttribute(plot[2], "AXS_XLABEL", "Tg (X)"); + IupSetAttribute(plot[2], "AXS_YLABEL", "Tg (Y)"); + IupSetAttribute(plot[2], "AXS_XFONTSTYLE", "BOLD"); + IupSetAttribute(plot[2], "AXS_YFONTSTYLE", "BOLD"); + + theFac = (float)100.0/(100*100*100); + IupPPlotBegin(plot[2], 0); + for (theI=0; theI<=100; theI++) + { + x = (float)(0.0001+theI*0.001); + y = (float)(0.01+theFac*theI*theI*theI); + IupPPlotAdd(plot[2], x, y); + } + IupPPlotEnd(plot[2]); + IupSetAttribute(plot[2], "DS_COLOR", "100 100 200"); + + /* PLOT 3 - MakeExamplePlot5 */ + IupSetAttribute(plot[3], "TITLE", "Bar Mode"); + IupSetAttribute(plot[3], "TITLEFONTSIZE", "16"); + IupSetAttribute(plot[3], "MARGINTOP", "40"); + IupSetAttribute(plot[3], "MARGINLEFT", "30"); + IupSetAttribute(plot[3], "MARGINBOTTOM", "30"); + + { + const char * kLables[12] = {"jan","feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"}; + const float kData[12] = {1,2,3,4,5,6,7,8,9,0,1,2}; + IupPPlotBegin(plot[3], 1); + for (theI=0; theI<12; theI++) + IupPPlotAddStr(plot[3], kLables[theI], kData[theI]); + } + IupPPlotEnd(plot[3]); + IupSetAttribute(plot[3], "DS_COLOR", "100 100 200"); + IupSetAttribute(plot[3], "DS_MODE", "BAR"); + + /* PLOT 4 - MakeExamplePlot6 */ + IupSetAttribute(plot[4], "TITLE", "Marks Mode"); + IupSetAttribute(plot[4], "TITLEFONTSIZE", "16"); + IupSetAttribute(plot[4], "MARGINTOP", "40"); + IupSetAttribute(plot[4], "MARGINLEFT", "45"); + IupSetAttribute(plot[4], "MARGINBOTTOM", "40"); + IupSetAttribute(plot[4], "AXS_XAUTOMIN", "NO"); + IupSetAttribute(plot[4], "AXS_XAUTOMAX", "NO"); + IupSetAttribute(plot[4], "AXS_YAUTOMIN", "NO"); + IupSetAttribute(plot[4], "AXS_YAUTOMAX", "NO"); + IupSetAttribute(plot[4], "AXS_XMIN", "0"); + IupSetAttribute(plot[4], "AXS_XMAX", "0.011"); + IupSetAttribute(plot[4], "AXS_YMIN", "0"); + IupSetAttribute(plot[4], "AXS_YMAX", "0.22"); + IupSetAttribute(plot[4], "AXS_XCROSSORIGIN", "NO"); + IupSetAttribute(plot[4], "AXS_YCROSSORIGIN", "NO"); + IupSetAttribute(plot[4], "AXS_XTICKFORMAT", "%1.3f"); + IupSetAttribute(plot[4], "LEGENDSHOW", "YES"); + IupSetAttribute(plot[4], "LEGENDPOS", "BOTTOMRIGHT"); + + theFac = (float)100.0/(100*100*100); + IupPPlotBegin(plot[4], 0); + for (theI=0; theI<=10; theI++) + { + x = (float)(0.0001+theI*0.001); + y = (float)(0.01+theFac*theI*theI); + IupPPlotAdd(plot[4], x, y); + } + IupPPlotEnd(plot[4]); + IupSetAttribute(plot[4], "DS_MODE", "MARKLINE"); + IupSetAttribute(plot[4], "DS_SHOWVALUES", "YES"); + + IupPPlotBegin(plot[4], 0); + for (theI=0; theI<=10; theI++) + { + x = (float)(0.0001+theI*0.001); + y = (float)(0.2-theFac*theI*theI); + IupPPlotAdd(plot[4], x, y); + } + IupPPlotEnd(plot[4]); + IupSetAttribute(plot[4], "DS_MODE", "MARK"); + IupSetAttribute(plot[4], "DS_MARKSTYLE", "HOLLOW_CIRCLE"); + + /* PLOT 5 - MakeExamplePlot8 */ + IupSetAttribute(plot[5], "TITLE", "Data Selection and Editing"); + IupSetAttribute(plot[5], "TITLEFONTSIZE", "16"); + IupSetAttribute(plot[5], "MARGINTOP", "40"); + + theFac = (float)100.0/(100*100*100); + IupPPlotBegin(plot[5], 0); + for (theI=-10; theI<=10; theI++) + { + x = (float)(0.001*theI); + y = (float)(0.01+theFac*theI*theI*theI); + IupPPlotAdd(plot[5], x, y); + } + IupPPlotEnd(plot[5]); + IupSetAttribute(plot[5], "DS_COLOR", "100 100 200"); + IupSetAttribute(plot[5], "DS_EDIT", "YES"); + IupSetCallback(plot[5], "DELETE_CB", (Icallback)delete_cb); + IupSetCallback(plot[5], "SELECT_CB", (Icallback)select_cb); + IupSetCallback(plot[5], "POSTDRAW_CB", (Icallback)postdraw_cb); + IupSetCallback(plot[5], "PREDRAW_CB", (Icallback)predraw_cb); + IupSetCallback(plot[5], "EDIT_CB", (Icallback)edit_cb); + +} + +static int tabs_get_index(void) +{ + Ihandle *curr_tab = IupGetHandle(IupGetAttribute(tabs, "VALUE")); + char *ss = IupGetAttribute(curr_tab, "TABTITLE"); + ss += 5; /* Skip "Plot " */ + return atoi(ss); +} + +/* Some processing required by current tab change: the controls at left + will be updated according to current plot props */ +static int tabs_tabchange_cb(Ihandle* self, Ihandle* new_tab) +{ + int ii=0; + + char *ss = IupGetAttribute(new_tab, "TABTITLE"); + ss += 5; /* Skip "Plot " */ + ii = atoi(ss); + + /* autoscaling X axis */ + if (IupGetInt(plot[ii], "AXS_XAUTOMIN") && IupGetInt(plot[ii], "AXS_XAUTOMAX")) { + IupSetAttribute(tgg2, "VALUE", "ON"); + IupSetAttribute(dial2, "ACTIVE", "NO"); + } + else { + IupSetAttribute(tgg2, "VALUE", "OFF"); + IupSetAttribute(dial2, "ACTIVE", "YES"); + } + /* autoscaling Y axis */ + if (IupGetInt(plot[ii], "AXS_YAUTOMIN") && IupGetInt(plot[ii], "AXS_YAUTOMAX")) { + IupSetAttribute(tgg1, "VALUE", "ON"); + IupSetAttribute(dial1, "ACTIVE", "NO"); + } + else { + IupSetAttribute(tgg1, "VALUE", "OFF"); + IupSetAttribute(dial1, "ACTIVE", "YES"); + } + + /* grid */ + if (IupGetInt(plot[ii], "GRID")) + { + IupSetAttribute(tgg3, "VALUE", "ON"); + IupSetAttribute(tgg4, "VALUE", "ON"); + } + else + { + /* X axis */ + if (*IupGetAttribute(plot[ii], "GRID") == 'V') + IupSetAttribute(tgg3, "VALUE", "ON"); + else + IupSetAttribute(tgg3, "VALUE", "OFF"); + /* Y axis */ + if (*IupGetAttribute(plot[ii], "GRID") == 'H') + IupSetAttribute(tgg4, "VALUE", "ON"); + else + IupSetAttribute(tgg4, "VALUE", "OFF"); + } + + /* legend */ + if (IupGetInt(plot[ii], "LEGENDSHOW")) + IupSetAttribute(tgg5, "VALUE", "ON"); + else + IupSetAttribute(tgg5, "VALUE", "OFF"); + + return IUP_DEFAULT; +} + +/* show/hide V grid */ +static int tgg3_cb(Ihandle *self, int v) +{ + int ii = tabs_get_index(); + + if (v) + { + if (IupGetInt(tgg4, "VALUE")) + IupSetAttribute(plot[ii], "GRID", "YES"); + else + IupSetAttribute(plot[ii], "GRID", "VERTICAL"); + } + else + { + if (!IupGetInt(tgg4, "VALUE")) + IupSetAttribute(plot[ii], "GRID", "NO"); + else + IupSetAttribute(plot[ii], "GRID", "HORIZONTAL"); + } + + IupSetAttribute(plot[ii], "REDRAW", NULL); + + return IUP_DEFAULT; +} + + +/* show/hide H grid */ +static int tgg4_cb(Ihandle *self, int v) +{ + int ii = tabs_get_index(); + + if (v) + { + if (IupGetInt(tgg3, "VALUE")) + IupSetAttribute(plot[ii], "GRID", "YES"); + else + IupSetAttribute(plot[ii], "GRID", "HORIZONTAL"); + } + else + { + if (!IupGetInt(tgg3, "VALUE")) + IupSetAttribute(plot[ii], "GRID", "NO"); + else + IupSetAttribute(plot[ii], "GRID", "VERTICAL"); + } + + IupSetAttribute(plot[ii], "REDRAW", NULL); + + return IUP_DEFAULT; +} + + +/* show/hide legend */ +static int tgg5_cb(Ihandle *self, int v) +{ + int ii = tabs_get_index(); + + if (v) + IupSetAttribute(plot[ii], "LEGENDSHOW", "YES"); + else + IupSetAttribute(plot[ii], "LEGENDSHOW", "NO"); + + IupSetAttribute(plot[ii], "REDRAW", NULL); + + return IUP_DEFAULT; +} + + +/* autoscale Y */ +static int tgg1_cb(Ihandle *self, int v) +{ + int ii = tabs_get_index(); + + if (v) { + IupSetAttribute(dial1, "ACTIVE", "NO"); + IupSetAttribute(plot[ii], "AXS_YAUTOMIN", "YES"); + IupSetAttribute(plot[ii], "AXS_YAUTOMAX", "YES"); + } + else { + IupSetAttribute(dial1, "ACTIVE", "YES"); + IupSetAttribute(plot[ii], "AXS_YAUTOMIN", "NO"); + IupSetAttribute(plot[ii], "AXS_YAUTOMAX", "NO"); + } + + IupSetAttribute(plot[ii], "REDRAW", NULL); + + return IUP_DEFAULT; +} + + +/* autoscale X */ +static int tgg2_cb(Ihandle *self, int v) +{ + int ii = tabs_get_index(); + + if (v) { + IupSetAttribute(dial2, "ACTIVE", "NO"); + IupSetAttribute(plot[ii], "AXS_XAUTOMIN", "YES"); + IupSetAttribute(plot[ii], "AXS_XAUTOMAX", "YES"); + } + else { + IupSetAttribute(dial2, "ACTIVE", "YES"); + IupSetAttribute(plot[ii], "AXS_XAUTOMIN", "NO"); + IupSetAttribute(plot[ii], "AXS_XAUTOMAX", "NO"); + } + + IupSetAttribute(plot[ii], "REDRAW", NULL); + + return IUP_DEFAULT; +} + + +/* Y zoom */ +static int dial1_btndown_cb(Ihandle *self, double angle) +{ + int ii = tabs_get_index(); + + IupStoreAttribute(plot[ii], "OLD_YMIN", IupGetAttribute(plot[ii], "AXS_YMIN")); + IupStoreAttribute(plot[ii], "OLD_YMAX", IupGetAttribute(plot[ii], "AXS_YMAX")); + + return IUP_DEFAULT; +} + +static int dial1_btnup_cb(Ihandle *self, double angle) +{ + int ii = tabs_get_index(); + double x1, x2, xm; + char *ss; + + x1 = IupGetFloat(plot[ii], "OLD_YMIN"); + x2 = IupGetFloat(plot[ii], "OLD_YMAX"); + + ss = IupGetAttribute(plot[ii], "AXS_YMODE"); + if ( ss && ss[3]=='2' ) { + /* LOG2: one circle will zoom 2 times */ + xm = 4.0 * fabs(angle) / 3.141592; + if (angle>0.0) { x2 /= xm; x1 *= xm; } + else { x2 *= xm; x1 /= xm; } + } + if ( ss && ss[3]=='1' ) { + /* LOG10: one circle will zoom 10 times */ + xm = 10.0 * fabs(angle) / 3.141592; + if (angle>0.0) { x2 /= xm; x1 *= xm; } + else { x2 *= xm; x1 /= xm; } + } + else { + /* LIN: one circle will zoom 2 times */ + xm = (x1 + x2) / 2.0; + x1 = xm - (xm - x1)*(1.0-angle*1.0/3.141592); + x2 = xm + (x2 - xm)*(1.0-angle*1.0/3.141592); + } + + if (x1 +#include +#include + +#include "iup.h" +#include "iupkey.h" +#include "iupcontrols.h" + + +#ifdef WIN32 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0500 +#include +static void drawTest(Ihandle* ih) +{ + RECT rect; + HDC hDC = (HDC)IupGetAttribute(ih, "PREVIEWDC"); + int w = IupGetInt(ih, "PREVIEWWIDTH"); + int h = IupGetInt(ih, "PREVIEWHEIGHT"); + + SetRect(&rect, 0, 0, w, h); + FillRect(hDC, &rect, GetStockObject(WHITE_BRUSH)); + + SelectObject(hDC, GetStockObject(DC_PEN)); + SetDCPenColor(hDC, RGB(255, 0, 0)); + + MoveToEx(hDC, 0, 0, NULL); + LineTo(hDC, w-1, h-1); + MoveToEx(hDC, 0, h-1, NULL); + LineTo(hDC, w-1, 0); +} +#else +#include + +#define xCOLOR8TO16(_x) (_x*257) /* 65535/255 = 257 */ +static unsigned long xGetPixel(Display* dpy, unsigned char cr, unsigned char cg, unsigned char cb) +{ + XColor xc; + xc.red = xCOLOR8TO16(cr); + xc.green = xCOLOR8TO16(cg); + xc.blue = xCOLOR8TO16(cb); + xc.flags = DoRed | DoGreen | DoBlue; + + XAllocColor(dpy, DefaultColormap(dpy, XDefaultScreen(dpy)), &xc); + return xc.pixel; +} + +static void drawTest(Ihandle* ih) +{ + GC gc = (GC)IupGetAttribute(ih, "PREVIEWDC"); + Display* dpy = (Display*)IupGetAttribute(ih, "XDISPLAY"); + Drawable wnd = (Drawable)IupGetAttribute(ih, "XWINDOW"); + int w = IupGetInt(ih, "PREVIEWWIDTH"); + int h = IupGetInt(ih, "PREVIEWHEIGHT"); + + XSetForeground(dpy, gc, xGetPixel(dpy, 255, 255, 255)); + XFillRectangle(dpy, wnd, gc, 0, 0, w, h); + + XSetForeground(dpy, gc, xGetPixel(dpy, 255, 0, 0)); + + XDrawLine(dpy, wnd, gc, 0, 0, w-1, h-1); + XDrawLine(dpy, wnd, gc, 0, h-1, w-1, 0); +} +#endif + +#ifdef USE_OPENGL +#include +#include "iupgl.h" + +static void drawTestGL(Ihandle* ih) +{ + Ihandle* glcanvas = IupGetAttributeHandle(ih, "PREVIEWGLCANVAS"); + if (glcanvas) + { + int w = IupGetInt(ih, "PREVIEWWIDTH"); + int h = IupGetInt(ih, "PREVIEWHEIGHT"); + + IupGLMakeCurrent(glcanvas); + glViewport(0,0,w,h); + + glClearColor(1.0, 0.0, 1.0, 1.f); /* pink */ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glColor3f(1.0,0.0,0.0); /* red */ + glBegin(GL_QUADS); + glVertex2f(0.9f,0.9f); + glVertex2f(0.9f,-0.9f); + glVertex2f(-0.9f,-0.9f); + glVertex2f(-0.9f,0.9f); + glEnd(); + + IupGLSwapBuffers(glcanvas); + } + else + drawTest(ih); +} + +#endif + +static int close_cb(Ihandle *ih) +{ + printf("CLOSE_CB\n"); + IupDestroy(ih); + return IUP_IGNORE; +} + +static int help_cb(Ihandle* ih) +{ + (void)ih; + printf("HELP_CB\n"); + return IUP_DEFAULT; +} + +static int file_cb(Ihandle* ih, const char* filename, const char* status) +{ + (void)ih; + printf("FILE_CB(%s - %s)\n", status, filename); + + if (strcmp(status, "PAINT")==0) + { + printf(" SIZE(%s x %s)\n", IupGetAttribute(ih, "PREVIEWWIDTH"), IupGetAttribute(ih, "PREVIEWHEIGHT")); +#ifdef USE_OPENGL + drawTestGL(ih); +#else + drawTest(ih); +#endif + } + return IUP_DEFAULT; +} + +static void new_message(char* type, char* buttons) +{ + Ihandle* dlg = IupMessageDlg(); + + if (strcmp(type, "ERROR")!=0) + IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + IupSetAttribute(dlg, "DIALOGTYPE", type); + IupSetAttribute(dlg, "TITLE", "IupMessageDlg Test"); + IupSetAttribute(dlg, "BUTTONS", buttons); + IupSetAttribute(dlg, "VALUE", "Message Text\nSecond Line"); + if (strcmp(type, "WARNING")==0) + IupSetAttribute(dlg, "BUTTONDEFAULT", "2"); + if (strcmp(type, "INFORMATION")!=0) + IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb); + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + + printf("BUTTONRESPONSE(%s)\n", IupGetAttribute(dlg, "BUTTONRESPONSE")); + + IupDestroy(dlg); +} + +static void new_color(void) +{ + Ihandle* dlg = IupColorDlg(); + + IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + IupSetAttribute(dlg, "VALUE", "128 0 255"); + IupSetAttribute(dlg, "ALPHA", "142"); + //IupSetAttribute(dlg, "COLORTABLE", ";;177 29 234;;;0 0 23;253 20 119"); + IupSetAttribute(dlg, "SHOWHEX", "YES"); + IupSetAttribute(dlg, "SHOWCOLORTABLE", "YES"); + //IupSetAttribute(dlg, "SHOWALPHA", "YES"); + IupSetAttribute(dlg, "TITLE", "IupColorDlg Test"); + IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb); + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + + if (IupGetInt(dlg, "STATUS")) + { + printf("OK\n"); + printf(" VALUE(%s)\n", IupGetAttribute(dlg, "VALUE")); + printf(" COLORTABLE(%s)\n", IupGetAttribute(dlg, "COLORTABLE")); + } + else + printf("CANCEL\n"); + + IupDestroy(dlg); +} + +static void new_font(void) +{ + Ihandle* dlg = IupFontDlg(); + + IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + IupSetAttribute(dlg, "COLOR", "128 0 255"); + IupSetAttribute(dlg, "VALUE", "Times New Roman, Bold 20"); + IupSetAttribute(dlg, "TITLE", "IupFontDlg Test"); + IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb); + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + + if (IupGetInt(dlg, "STATUS")) + { + printf("OK\n"); + printf(" VALUE(%s)\n", IupGetAttribute(dlg, "VALUE")); + printf(" COLOR(%s)\n", IupGetAttribute(dlg, "COLOR")); + } + else + printf("CANCEL\n"); + + IupDestroy(dlg); +} + +static void new_file(char* dialogtype, int preview) +{ + Ihandle *dlg = IupFileDlg(); + + IupSetAttribute(dlg, "PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + IupSetAttribute(dlg, "DIALOGTYPE", dialogtype); + IupSetAttribute(dlg, "TITLE", "IupFileDlg Test"); + IupSetAttribute(dlg, "DIRECTORY", "/tecgraf/iup"); + if (strcmp(dialogtype, "DIR")!=0) + { + IupSetAttributes(dlg, "FILTER = \"*.bmp\", FILTERINFO = \"Bitmap Files\""); + IupSetAttribute(dlg, "EXTFILTER", "Text files|*.txt;*.doc|Image files|*.jpg;*.bmp;*.gif|"); +// IupSetAttribute(dlg, "FILE", "/tecgraf/im/test.bmp"); + IupSetAttribute(dlg, "FILE", "test.bmp"); + } + IupSetCallback(dlg, "HELP_CB", (Icallback)help_cb); +// IupSetAttributes(dlg, "FILE = \"\\tecgraf\\iup\\test.bmp\""); // OK +// IupSetAttributes(dlg, "FILE = \"/tecgraf/iup/test.bmp\""); // OK +// IupSetAttributes(dlg, "FILE = \"test.bmp\", DIRECTORY = \"/tecgraf/iup\""); // OK +// IupSetAttributes(dlg, "FILE = \"test.bmp\", DIRECTORY = \"\\tecgraf\\iup\""); // OK +// IupSetAttribute(dlg, "NOCHANGEDIR", "NO"); +// IupSetAttribute(dlg, "MULTIPLEFILES", "YES"); + + if (preview) + { + IupSetAttribute(dlg, "SHOWPREVIEW", "YES"); + IupSetCallback(dlg, "FILE_CB", (Icallback)file_cb); + +#ifdef USE_OPENGL + if (preview==2) + { + Ihandle* glcanvas = IupGLCanvas(NULL); + IupSetAttribute(glcanvas, "BUFFER", "DOUBLE"); + IupSetAttributeHandle(dlg, "PREVIEWGLCANVAS", glcanvas); + } +#endif + } + + IupPopup(dlg, IUP_CENTERPARENT, IUP_CENTERPARENT); + + switch(IupGetInt(dlg, "STATUS")) + { + case 1: + printf("OK\n"); + printf(" New file - VALUE(%s)\n", IupGetAttribute(dlg, "VALUE")); + break; + case 0 : + printf("OK\n"); + printf(" File exists - VALUE(%s)\n", IupGetAttribute(dlg, "VALUE")); + break; + case -1 : + printf("CANCEL\n"); + break; + } + + IupDestroy(dlg); +} + +static void new_alarm(void) +{ + int ret; + IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + ret = IupAlarm ("IupAlarm Test", "Message Text\nSecond Line", "But 1", "Button 2", "B3"); + IupSetGlobal("PARENTDIALOG", NULL); + //int ret = IupAlarm ("IupAlarm Test", "Message Text\nSecond Line\nVery long long long long long long long long long long long long text", "But 1", "Button 2", "B3"); + printf("Button(%d)\n", ret); +} + +static void new_gettext(void) +{ + int ret; + char text[1024] = "text first line\nsecond line"; + IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + ret = IupGetText("IupGetText Text", text); + IupSetGlobal("PARENTDIALOG", NULL); + if (ret) + { + printf("OK\n"); + printf("Text(%s)\n", text); + } + else + printf("CANCEL\n"); +} + +static void new_getfile(void) +{ + int ret; + char filename[1024] = "*.*"; + IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + ret = IupGetFile(filename); + IupSetGlobal("PARENTDIALOG", NULL); + if (ret!=-1) + { + printf("OK\n"); + if (ret == 0) + printf("File(%s)\n", filename); + else + printf("New File(%s)\n", filename); + } + else + printf("CANCEL\n"); +} + +static void new_list(void) +{ + int ret; + int size = 8 ; + int marks[8] = { 0,0,0,0,1,1,0,0 }; + const char *options[] = { + "Blue" , + "Red" , + "Green" , + "Yellow" , + "Black" , + "White" , + "Gray" , + "Brown" } ; + + IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + ret = IupListDialog(2,"IupListDialog Test",size,options,0,8,5,marks); + IupSetGlobal("PARENTDIALOG", NULL); + + if (ret == -1) + { + printf("CANCEL\n"); + } + else + { + int i; + char selection[80] = ""; + printf("OK\n"); + + for(i = 0 ; i < size ; i++) + { + if(marks[i]) + { + char temp[10]; + sprintf(temp,"%s\n",options[i]); + strcat(selection,temp); + } + } + + printf(" Options (%s)\n", selection); + } +} + +static int k_any(Ihandle *ih, int c) +{ + switch(c) + { + case K_m: + IupSetGlobal("PARENTDIALOG", "_MAIN_DIALOG_TEST_"); + IupMessage("IupMessage Test", "Message Text\nSecond Line."); + IupSetGlobal("PARENTDIALOG", NULL); + break; + case K_e: + new_message("ERROR", NULL); + break; + case K_i: + new_message("INFORMATION", NULL); + break; + case K_w: + new_message("WARNING", "OKCANCEL"); + break; + case K_q: + new_message("QUESTION", "YESNO"); + break; + case K_c: + new_color(); + break; + case K_f: + new_font(); + break; + case K_o: + new_file("OPEN", 0); + break; + case K_O: + new_file("OPEN", 1); + break; + case K_G: + new_file("OPEN", 2); + break; + case K_s: + new_file("SAVE", 0); + break; + case K_d: + new_file("DIR", 0); + break; + case K_a: + new_alarm(); + break; + case K_g: + new_getfile(); + break; + case K_t: + new_gettext(); + break; + case K_l: + new_list(); + break; + case K_ESC: + IupDestroy(ih); + return IUP_IGNORE; + } + return IUP_DEFAULT; +} + +void PreDialogsTest(void) +{ + char* msg = "Press a key for a pre-defined dialog:\n" + "e = IupMessageDlg(ERROR)\n" + "i = IupMessageDlg(INFORMATION)\n" + "w = IupMessageDlg(WARNING)\n" + "q = IupMessageDlg(QUESTION)\n" + "--------------------\n" + "o = IupFileDlg(OPEN)\n" + "O = IupFileDlg(OPEN+PREVIEW)\n" + "G = IupFileDlg(OPEN+PREVIEW+OPENGL)\n" + "s = IupFileDlg(SAVE)\n" + "d = IupFileDlg(DIR)\n" + "--------------------\n" + "c = IupColorDlg\n" + "f = IupFontDlg\n" + "--------------------\n" + "m = IupMessage\n" + "a = IupAlarm\n" + "t = IupGetText\n" + "g = IupGetFile\n" + "l = IupListDialog\n" + "--------------------\n" + "Esc = quit"; + Ihandle *dlg = IupDialog(IupVbox(IupLabel(msg), NULL)); + +#ifdef USE_OPENGL + IupGLCanvasOpen(); +#endif + + IupSetHandle("_MAIN_DIALOG_TEST_", dlg); + + IupSetAttribute(dlg, "TITLE", "Pre-defined Dialogs Test"); + IupSetAttribute(dlg, "MARGIN", "10x10"); + + IupSetCallback(dlg, "K_ANY", (Icallback)k_any); + IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb); + + IupShow(dlg); +} + + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + +#ifdef USE_OPENGL + IupGLCanvasOpen(); +#endif + + PreDialogsTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/progressbar.c b/iup/test/progressbar.c new file mode 100755 index 0000000..26b8bfd --- /dev/null +++ b/iup/test/progressbar.c @@ -0,0 +1,330 @@ +#include +#include + +#include "iup.h" +#include "iupcontrols.h" + +static float increment = 0.01f; +static Ihandle *progressbar1; +static Ihandle *progressbar2; +static Ihandle *btn_pause; +static Ihandle *timer = NULL; + +static unsigned char pixmap_play[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_restart[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_rewind[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_forward[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static unsigned char pixmap_pause[] = +{ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + ,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; + +static void createimg_s (void) +{ + Ihandle *img_restart, *img_play, *img_forward, *img_rewind, *img_pause; + + img_restart = IupImage(22,22, pixmap_restart); + img_play = IupImage(22,22, pixmap_play); + img_forward = IupImage(22,22, pixmap_forward); + img_rewind = IupImage(22,22, pixmap_rewind); + img_pause = IupImage(22,22, pixmap_pause); + + IupSetHandle ("img_restart", img_restart); + IupSetHandle ("img_play", img_play); + IupSetHandle ("img_forward", img_forward); + IupSetHandle ("img_rewind", img_rewind); + IupSetHandle ("img_pause", img_pause); + + IupSetAttribute (img_restart, "1", "0 0 0"); + IupSetAttribute (img_restart, "2", "BGCOLOR"); + IupSetAttribute (img_play, "1", "0 0 0"); + IupSetAttribute (img_play, "2", "BGCOLOR"); + IupSetAttribute (img_forward, "1", "0 0 0"); + IupSetAttribute (img_forward, "2", "BGCOLOR"); + IupSetAttribute (img_rewind, "1", "0 0 0"); + IupSetAttribute (img_rewind, "2", "BGCOLOR"); + IupSetAttribute (img_pause, "1", "0 0 0"); + IupSetAttribute (img_pause, "2", "BGCOLOR"); +} + +static int time_cb(void) +{ + float value = IupGetFloat(progressbar1, "VALUE"); + value += increment; + if (value > 1) value = 0; /* start over */ + IupSetfAttribute(progressbar1, "VALUE", "%f", (double)value); + + value = IupGetFloat(progressbar2, "VALUE"); + value += increment*50; + if (value > 50) value = 0; /* start over */ + IupSetfAttribute(progressbar2, "VALUE", "%f", (double)value); + return IUP_DEFAULT; +} + +static int btn_pause_cb(void) +{ + if (!IupGetInt(timer, "RUN")) + { + IupSetAttribute(timer, "RUN", "YES"); + IupSetAttribute(btn_pause, "IMAGE", "img_pause"); + } + else + { + IupSetAttribute(timer, "RUN", "NO"); + IupSetAttribute(btn_pause, "IMAGE", "img_play"); + } + + return IUP_DEFAULT; +} + + +static int unmap_cb(Ihandle* ih) +{ + IupDestroy(timer); + timer = NULL; + return IUP_DEFAULT; +} + +static int btn_restart_cb(void) +{ + IupSetAttribute(progressbar1, "VALUE", "0"); + IupSetAttribute(progressbar2, "VALUE", "0"); + return IUP_DEFAULT; +} + +static int btn_accelerate_cb(void) +{ + increment *= 2; + return IUP_DEFAULT; +} + +static int btn_decelerate_cb(void) +{ + increment /= 2; + return IUP_DEFAULT; +} + +static int btn_show1_cb(void) +{ + if (!IupGetInt(progressbar1, "DASHED")) + IupSetAttribute(progressbar1, "DASHED", "YES"); + else + IupSetAttribute(progressbar1, "DASHED", "NO"); + + return IUP_DEFAULT; +} + +static int btn_show2_cb(void) +{ + if (!IupGetInt(progressbar1, "MARQUEE")) + IupSetAttribute(progressbar1, "MARQUEE", "YES"); + else + IupSetAttribute(progressbar1, "MARQUEE", "NO"); + + return IUP_DEFAULT; +} + +void ProgressbarTest(void) +{ + Ihandle *dlg, *vbox, *hbox; + Ihandle *btn_restart, *btn_accelerate, *btn_decelerate, *btn_show1, *btn_show2; + + if (timer) + IupDestroy(timer); + timer = IupTimer(); + IupSetCallback(timer, "ACTION_CB", (Icallback)time_cb); + IupSetAttribute(timer, "TIME", "100"); + + progressbar1 = IupProgressBar(); + progressbar2 = IupProgressBar(); + + IupSetAttribute(progressbar1, "EXPAND", "YES"); + //IupSetAttribute(progressbar1, "DASHED", "YES"); + IupSetAttribute(progressbar1, "MARQUEE", "YES"); + + IupSetAttribute(progressbar2, "ORIENTATION", "VERTICAL"); + IupSetAttribute(progressbar2, "BGCOLOR", "255 0 128"); + IupSetAttribute(progressbar2, "FGCOLOR", "0 128 0"); + IupSetAttribute(progressbar2, "RASTERSIZE", "30x100"); + IupSetAttribute(progressbar2, "MAX", "50"); + IupSetAttribute(progressbar2, "VALUE", "25"); + + btn_restart = IupButton(NULL, NULL); + btn_pause = IupButton(NULL, NULL); + btn_accelerate = IupButton(NULL, NULL); + btn_decelerate = IupButton(NULL, NULL); + btn_show1 = IupButton("Dashed", NULL); + btn_show2 = IupButton("Marquee", NULL); + + createimg_s(); + + IupSetAttribute(btn_restart, "IMAGE", "img_restart"); + IupSetAttribute(btn_restart, "TIP", "Restart" ); + IupSetAttribute(btn_pause, "IMAGE", "img_pause"); + IupSetAttribute(btn_pause, "TIP", "Play/Pause"); + IupSetAttribute(btn_accelerate, "IMAGE", "img_forward"); + IupSetAttribute(btn_accelerate, "TIP", "Accelerate"); + IupSetAttribute(btn_decelerate, "IMAGE", "img_rewind"); + IupSetAttribute(btn_decelerate, "TIP", "Decelerate"); + IupSetAttribute(btn_show1, "TIP", "Dashed or Continuous"); + IupSetAttribute(btn_show2, "TIP", "Marquee or Defined"); + + hbox = IupHbox + ( + IupFill(), + btn_pause, + btn_restart, + btn_decelerate, + btn_accelerate, + btn_show1, + btn_show2, + IupFill(), + NULL + ); + + vbox = IupHbox(IupVbox(progressbar1, hbox, NULL), progressbar2, NULL); + IupSetAttribute(vbox, "MARGIN", "10x10"); + IupSetAttribute(vbox, "GAP", "5"); + + dlg = IupDialog(vbox); + + IupSetAttribute(dlg, "TITLE", "IupProgressBar Test"); + IupSetCallback(dlg, "UNMAP_CB", (Icallback) unmap_cb); + + IupSetCallback(btn_pause, "ACTION", (Icallback) btn_pause_cb); + IupSetCallback(btn_restart, "ACTION", (Icallback) btn_restart_cb); + IupSetCallback(btn_accelerate, "ACTION", (Icallback) btn_accelerate_cb); + IupSetCallback(btn_decelerate, "ACTION", (Icallback) btn_decelerate_cb); + IupSetCallback(btn_show1, "ACTION", (Icallback) btn_show1_cb); + IupSetCallback(btn_show2, "ACTION", (Icallback) btn_show2_cb); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); + + IupSetAttribute(timer, "RUN", "YES"); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ProgressbarTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/sample.c b/iup/test/sample.c new file mode 100755 index 0000000..e99617d --- /dev/null +++ b/iup/test/sample.c @@ -0,0 +1,407 @@ +#include +#include +#include + +static Ihandle* load_image_Tecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 95, 108, 1, 90, 100, 117, 99, 123, 138, 166, 126, 137, 152, 181, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 105, 123, 147, 122, 137, 165, 255, 136, 152, 183, 255, 132, 149, 179, 250, 133, 149, 178, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 100, 115, 43, 111, 125, 150, 253, 140, 158, 190, 255, 135, 151, 182, 255, 132, 149, 179, 255, 131, 147, 177, 217, 153, 164, 188, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 134, 148, 134, 151, 182, 255, 137, 154, 185, 255, 115, 129, 154, 252, 114, 128, 155, 255, 130, 146, 175, 255, 132, 147, 175, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 159, 162, 3, 108, 121, 145, 230, 144, 162, 195, 255, 137, 154, 185, 197, 74, 79, 86, 45, 41, 46, 55, 246, 120, 134, 162, 255, 129, 145, 174, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 101, 113, 48, 124, 139, 167, 255, 144, 161, 194, 255, 138, 155, 186, 67, 0, 0, 0, 0, 49, 54, 62, 150, 87, 98, 118, 255, 128, 144, 173, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 113, 132, 105, 137, 154, 185, 255, 139, 156, 188, 231, 143, 159, 187, 3, 0, 0, 0, 0, 64, 68, 76, 61, 70, 79, 95, 255, 127, 143, 172, 254, 134, 149, 175, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 121, 142, 153, 141, 159, 191, 255, 139, 156, 188, 164, 0, 0, 0, 0, 0, 0, 0, 0, 79, 82, 87, 3, 69, 77, 92, 241, 122, 137, 165, 255, 127, 142, 170, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 122, 146, 191, 145, 163, 196, 255, 139, 156, 188, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 86, 101, 190, 115, 129, 156, 255, 126, 141, 170, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 125, 149, 227, 150, 168, 201, 255, 141, 157, 188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, 107, 144, 113, 127, 153, 255, 125, 140, 169, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 165, 167, 2, 112, 125, 150, 252, 155, 173, 203, 255, 143, 159, 189, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 94, 110, 109, 114, 128, 155, 255, 125, 140, 168, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 167, 181, 1, 120, 130, 149, 33, 48, 53, 59, 69, 43, 46, 52, 100, 50, 54, 59, 137, 116, 130, 156, 255, 155, 171, 201, 255, 105, 118, 142, 155, 104, 117, 141, 151, 105, 118, 141, 151, 105, 118, 142, 151, 101, 113, 136, 185, 111, 124, 150, 255, 116, 130, 156, 220, 112, 125, 148, 95, 115, 127, 150, 67, 123, 134, 156, 33, 168, 176, 190, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 129, 147, 5, 109, 121, 142, 71, 106, 118, 140, 140, 105, 117, 140, 197, 107, 120, 144, 242, 120, 135, 162, 255, 123, 137, 163, 255, 44, 49, 58, 255, 28, 32, 39, 255, 125, 139, 164, 255, 150, 167, 197, 255, 138, 155, 186, 255, 131, 148, 178, 255, 125, 141, 170, 255, 119, 134, 162, 255, 114, 128, 154, 255, 108, 122, 147, 255, 104, 117, 141, 255, 102, 115, 138, 255, 103, 116, 139, 255, 107, 120, 145, 255, 111, 124, 149, 245, 113, 126, 151, 200, 113, 127, 152, 140, 116, 129, 154, 71, 122, 135, 158, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 128, 145, 14, 106, 118, 140, 130, 104, 116, 139, 234, 105, 118, 142, 255, 128, 144, 173, 255, 147, 165, 199, 255, 157, 177, 213, 255, 150, 168, 202, 255, 140, 156, 187, 229, 41, 45, 52, 196, 39, 43, 51, 183, 130, 143, 168, 255, 144, 161, 192, 233, 109, 122, 145, 109, 105, 116, 138, 109, 99, 110, 130, 109, 92, 103, 123, 109, 91, 100, 117, 145, 97, 109, 131, 255, 95, 106, 128, 248, 74, 83, 97, 193, 64, 72, 85, 227, 56, 63, 75, 255, 55, 62, 75, 255, 65, 73, 88, 255, 90, 101, 121, 255, 111, 125, 150, 255, 114, 128, 154, 236, 116, 129, 155, 130, 127, 140, 165, 16, 0, 0, 0, 0, + 95, 101, 113, 22, 103, 115, 137, 220, 103, 116, 140, 255, 110, 123, 148, 255, 146, 165, 198, 255, 147, 165, 197, 232, 142, 158, 188, 147, 131, 144, 169, 78, 115, 123, 139, 20, 0, 0, 0, 0, 0, 0, 0, 0, 91, 97, 108, 68, 128, 142, 167, 255, 144, 162, 193, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 100, 107, 31, 120, 135, 163, 255, 133, 150, 180, 231, 0, 0, 0, 0, 0, 0, 0, 0, 86, 89, 93, 20, 50, 54, 61, 73, 37, 40, 46, 141, 33, 36, 42, 230, 46, 52, 63, 255, 107, 120, 144, 255, 116, 130, 157, 255, 118, 133, 159, 223, 132, 147, 174, 24, + 76, 83, 95, 114, 104, 117, 140, 255, 105, 117, 141, 255, 118, 133, 160, 253, 139, 155, 184, 116, 134, 143, 161, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 100, 110, 74, 122, 137, 163, 255, 143, 160, 191, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 114, 120, 31, 123, 138, 166, 255, 136, 153, 183, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 93, 97, 5, 42, 45, 51, 111, 86, 97, 117, 253, 118, 133, 160, 255, 119, 133, 161, 255, 133, 149, 180, 116, + 46, 50, 56, 109, 67, 76, 91, 255, 105, 118, 142, 255, 107, 120, 145, 254, 112, 125, 149, 131, 127, 139, 161, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 98, 109, 74, 116, 130, 156, 255, 142, 159, 190, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 115, 122, 31, 128, 143, 172, 255, 141, 157, 185, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 137, 163, 7, 122, 136, 162, 122, 120, 135, 162, 254, 121, 136, 164, 255, 136, 152, 184, 255, 126, 141, 168, 116, + 71, 74, 79, 17, 31, 35, 41, 206, 42, 47, 57, 255, 77, 87, 105, 255, 103, 116, 140, 255, 110, 124, 149, 239, 112, 125, 150, 157, 115, 128, 153, 89, 122, 134, 158, 30, 147, 158, 177, 2, 0, 0, 0, 0, 81, 87, 96, 65, 109, 123, 148, 255, 141, 158, 190, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 103, 112, 31, 135, 151, 180, 255, 141, 156, 183, 231, 0, 0, 0, 0, 153, 164, 183, 1, 134, 147, 171, 30, 124, 138, 165, 84, 123, 138, 165, 154, 122, 137, 164, 235, 127, 143, 172, 255, 140, 157, 189, 255, 144, 162, 195, 255, 129, 144, 172, 218, 126, 138, 161, 22, + 0, 0, 0, 0, 64, 68, 73, 7, 39, 43, 49, 118, 32, 36, 42, 225, 30, 35, 42, 255, 50, 57, 68, 255, 72, 81, 97, 255, 91, 102, 123, 255, 105, 118, 142, 255, 113, 127, 152, 240, 115, 129, 155, 204, 111, 124, 149, 196, 111, 125, 150, 255, 126, 141, 170, 234, 119, 133, 159, 120, 120, 134, 160, 116, 121, 135, 161, 117, 121, 135, 162, 119, 116, 130, 155, 152, 127, 142, 170, 255, 125, 140, 168, 248, 123, 138, 166, 199, 130, 145, 173, 235, 140, 155, 183, 255, 143, 160, 190, 255, 143, 161, 193, 255, 147, 165, 199, 255, 145, 164, 197, 255, 132, 148, 177, 230, 127, 140, 166, 126, 124, 134, 151, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 141, 144, 3, 55, 58, 63, 58, 37, 40, 46, 126, 34, 38, 44, 184, 34, 38, 44, 235, 35, 39, 47, 254, 49, 55, 66, 255, 64, 72, 87, 255, 77, 87, 104, 255, 88, 98, 118, 255, 96, 108, 130, 255, 103, 116, 139, 255, 108, 122, 147, 255, 113, 127, 153, 255, 118, 133, 160, 255, 124, 140, 168, 255, 133, 148, 176, 255, 141, 156, 183, 255, 146, 161, 187, 255, 144, 159, 186, 255, 131, 146, 174, 254, 127, 141, 168, 237, 126, 141, 168, 188, 123, 137, 162, 131, 112, 123, 143, 61, 128, 132, 140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 94, 98, 19, 64, 68, 73, 56, 53, 57, 65, 82, 62, 67, 76, 116, 66, 74, 89, 255, 95, 107, 129, 255, 80, 88, 103, 155, 81, 90, 105, 151, 86, 95, 112, 151, 95, 104, 122, 151, 98, 109, 128, 180, 124, 139, 166, 255, 109, 122, 146, 218, 100, 110, 128, 84, 96, 104, 118, 56, 105, 109, 117, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 176, 2, 74, 83, 98, 252, 131, 147, 178, 255, 140, 155, 184, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 134, 157, 114, 151, 169, 203, 255, 123, 138, 165, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 76, 90, 224, 122, 137, 165, 255, 136, 152, 182, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 139, 165, 147, 146, 164, 198, 255, 122, 137, 165, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 69, 81, 191, 110, 124, 149, 255, 134, 151, 181, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 170, 193, 142, 160, 192, 255, 122, 137, 164, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 63, 74, 150, 94, 105, 127, 255, 133, 149, 179, 166, 0, 0, 0, 0, 0, 0, 0, 0, 115, 119, 128, 5, 130, 145, 174, 242, 137, 154, 186, 255, 125, 139, 166, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 58, 66, 102, 72, 81, 97, 255, 132, 148, 178, 236, 148, 161, 187, 5, 0, 0, 0, 0, 110, 121, 140, 64, 140, 157, 189, 255, 127, 142, 171, 254, 131, 144, 169, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 65, 71, 43, 47, 52, 63, 255, 127, 143, 172, 255, 132, 148, 177, 75, 0, 0, 0, 0, 121, 134, 158, 160, 139, 156, 188, 255, 123, 138, 165, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 36, 39, 46, 227, 106, 119, 143, 255, 130, 145, 175, 203, 114, 125, 147, 51, 123, 138, 166, 247, 131, 147, 177, 255, 123, 138, 165, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 41, 47, 143, 68, 77, 93, 255, 128, 144, 174, 255, 126, 141, 170, 252, 129, 145, 174, 255, 123, 138, 166, 255, 127, 141, 167, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 68, 73, 40, 34, 38, 46, 250, 117, 131, 158, 255, 126, 142, 171, 255, 124, 140, 168, 255, 125, 139, 166, 214, 140, 152, 172, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 44, 50, 134, 58, 66, 79, 255, 123, 138, 166, 255, 123, 138, 166, 250, 127, 140, 165, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 156, 158, 1, 46, 50, 55, 83, 82, 89, 102, 123, 106, 116, 136, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(32, 32, imgdata); + return image; +} + +static Ihandle* load_image_LogoTecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4, + 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154, + 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153, + 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +static unsigned char img_bits1[] = +{ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1 +,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1 +,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1 +,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1 +,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1 +,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1 +,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1 +,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,0,2,0,2,0,2,2,0,2,2,2,0,0,0,2,2,2,0,0,2,0,2,2,0,0,0,2,2,2 +,2,2,2,0,2,0,0,2,0,0,2,0,2,0,2,2,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2 +,2,2,2,0,2,0,2,2,0,2,2,0,2,2,2,2,2,0,2,0,2,2,2,0,2,0,2,2,2,0,2,2 +,2,2,2,0,2,0,2,2,0,2,2,0,2,2,0,0,0,0,2,0,2,2,2,0,2,0,0,0,0,0,2,2 +,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,0,2,0,2,2,2,0,2,0,2,2,2,2,2,2 +,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2 +,2,2,2,0,2,0,2,2,0,2,2,0,2,2,0,0,0,0,2,2,0,0,2,0,2,2,0,0,0,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1 +,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1 +,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1 +,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +}; + +static unsigned char img_bits2[] = +{ + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2 +,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2 +,2,2,2,2,2,2,2,2,2,2,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2 +,2,2,2,2,2,2,2,2,2,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2 +,2,2,2,2,2,2,2,2,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 +,3,3,3,0,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 +,3,3,3,0,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 +,3,3,3,0,3,0,3,0,3,3,0,3,3,3,1,1,0,3,3,3,0,0,3,0,3,3,0,0,0,3,3,3 +,3,3,3,0,3,0,0,3,0,0,3,0,3,0,1,1,3,0,3,0,3,3,0,0,3,0,3,3,3,0,3,3 +,3,3,3,0,3,0,3,3,0,3,3,0,3,3,1,1,3,0,3,0,3,3,3,0,3,0,3,3,3,0,3,3 +,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +,3,3,3,0,3,0,3,3,0,3,3,0,3,0,1,1,3,0,3,0,3,3,0,0,3,0,3,3,3,0,3,3 +,3,3,3,0,3,0,3,3,0,3,3,0,3,3,1,1,0,0,3,3,0,0,3,0,3,3,0,0,0,3,3,3 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,0,3,3,3,0,3,3,3,3,3,3,3,3 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,0,0,0,3,3,3,3,3,3,3,3,3 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 +,2,2,2,2,2,2,2,3,3,3,3,3,3,3,1,1,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,2,2,2,3,3,3,3,3,3,3,3,1,1,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +}; + +static int valuechanged_cb(Ihandle *ih) +{ + printf("VALUECHANGED_CB(%s)=%s\n", IupGetClassName(ih), IupGetAttribute(ih, "VALUE")); + return IUP_DEFAULT; +} + +static int getfocus_cb(Ihandle *ih) +{ + printf("GETFOCUS_CB(%s)\n", IupGetClassName(ih)); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB(%s)\n", IupGetClassName(ih)); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB(%s)\n", IupGetClassName(ih)); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + printf("ENTERWINDOW_CB(%s)\n", IupGetClassName(ih)); + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ + if (iup_isprint(c)) + printf("K_ANY(%s, %d = %s \'%c\')\n", IupGetClassName(ih), c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%s, %d = %s)\n", IupGetClassName(ih), c, iupKeyCodeToName(c)); + return IUP_CONTINUE; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB(%s)\n", IupGetClassName(ih)); + return IUP_DEFAULT; +} + +static Ihandle* set_callbacks(Ihandle* ih) +{ + IupSetCallback(ih, "VALUECHANGED_CB", (Icallback)valuechanged_cb); + +// IupSetCallback(ih, "GETFOCUS_CB", (Icallback)getfocus_cb); +// IupSetCallback(ih, "KILLFOCUS_CB", (Icallback)killfocus_cb); + +// IupSetCallback(ih, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); +// IupSetCallback(ih, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + +// IupSetCallback(ih, "K_ANY", (Icallback)k_any); +// IupSetCallback(ih, "HELP_CB", (Icallback)help_cb); + + return ih; +} + +void SampleTest(void) +{ + Ihandle *mnu, *_hbox_1, *_cnv_1, *_vbox_1, *dlg, *img, + *_frm_1, *_frm_2, *_frm_3, *_frm_4, *_frm_5, *pbar, *val, *tabs, + *_list_1, *_list_2, *_list_3, *_text_1, *_ml_1, *tree; + + //img = IupImage(32,32, img_bits1); + //IupSetHandle ("img1", img); + //IupSetAttribute (img, "0", "0 0 0"); + //IupSetAttribute (img, "1", "BGCOLOR"); + //IupSetAttribute (img, "2", "255 0 0"); + + img = load_image_Tecgraf(); + IupSetHandle ("img1", img); + + img = IupImage(32,32, img_bits2); + IupSetHandle ("img2", img); + IupSetAttribute (img, "0", "0 0 0"); + IupSetAttribute (img, "1", "0 255 0"); + IupSetAttribute (img, "2", "BGCOLOR"); + IupSetAttribute (img, "3", "255 0 0"); + + mnu = IupMenu( + IupSubmenu("IupSubmenu 1", IupMenu( + IupSetAttributes(IupItem("IupItem 1 Checked", NULL), "VALUE=ON"), + IupSeparator(), + IupSetAttributes(IupItem("IupItem 2 Disabled", NULL), "ACTIVE=NO"), + NULL)), + IupItem("IupItem 3", NULL), + IupItem("IupItem 4", NULL), + NULL); + IupSetHandle("mnu",mnu); + + _frm_1 = IupFrame( + IupVbox( + set_callbacks(IupSetAttributes(IupButton("Button Text", NULL), "PADDING=5x5")), + set_callbacks(IupSetAttributes(IupButton("Text", NULL), "IMAGE=img1, PADDING=5x5")), + set_callbacks(IupSetAttributes(IupButton(NULL, NULL), "IMAGE=img1")), + set_callbacks(IupSetAttributes(IupButton("", NULL), "IMAGE=img1,IMPRESS=img2")), + NULL)); + IupSetAttribute(_frm_1,"TITLE","IupButton"); + + _frm_2 = IupFrame( + IupVbox( + IupLabel("Label Text"), + IupSetAttributes(IupLabel(NULL), "SEPARATOR=HORIZONTAL, MAXSIZE=150, NAME=SAMP_SEP"), + IupSetAttributes(IupLabel(NULL), "IMAGE=img1"), + NULL)); + IupSetAttribute(_frm_2,"TITLE","IupLabel"); + + _frm_3 = IupFrame( + IupVbox( + set_callbacks(IupSetAttributes(IupToggle("Toggle Text", NULL), "VALUE=ON")), + set_callbacks(IupSetAttributes(IupToggle(NULL, NULL), "VALUE=ON,IMAGE=img1,IMPRESS=img2")), + set_callbacks(IupSetAttributes(IupToggle(NULL, NULL), "VALUE=ON,IMAGE=img1")), + IupSetAttributes(IupFrame(IupRadio(IupVbox( + set_callbacks(IupToggle("Toggle Text", NULL)), + set_callbacks(IupToggle("Toggle Text", NULL)), + NULL))), "TITLE=IupRadio"), + NULL)); + IupSetAttribute(_frm_3,"TITLE","IupToggle"); + + _text_1 = IupText( NULL); + IupSetAttribute(_text_1,"VALUE","Single Line Text"); + IupSetAttribute(_text_1,"SIZE","80x"); + + _ml_1 = IupMultiLine( NULL); + IupSetAttribute(_ml_1,"VALUE","Multiline Text\nSecond Line\nThird Line"); + IupSetAttribute(_ml_1,"EXPAND","YES"); + IupSetAttribute(_ml_1,"SIZE","80x40"); + + _frm_4 = IupFrame(IupVbox( + set_callbacks(_text_1), + set_callbacks(_ml_1), + NULL)); + IupSetAttribute(_frm_4,"TITLE","IupText"); + + _list_1 = IupList( NULL); +// IupSetAttribute(_list_1,"EXPAND","YES"); + IupSetAttribute(_list_1,"VALUE","1"); + IupSetAttribute(_list_1,"1","Item 1 Text"); + IupSetAttribute(_list_1,"2","Item 2 Text"); + IupSetAttribute(_list_1,"3","Item 3 Text"); + + _list_2 = IupList( NULL); + IupSetAttribute(_list_2,"DROPDOWN","YES"); +// IupSetAttribute(_list_2,"EXPAND","YES"); + IupSetAttribute(_list_2,"VALUE","2"); + IupSetAttribute(_list_2,"1","Item 1 Text"); + IupSetAttribute(_list_2,"2","Item 2 Text"); + IupSetAttribute(_list_2,"3","Item 3 Text"); + + _list_3 = IupList( NULL); + IupSetAttribute(_list_3,"EDITBOX","YES"); +// IupSetAttribute(_list_3,"EXPAND","YES"); + IupSetAttribute(_list_3,"VALUE","3"); + IupSetAttribute(_list_3,"1","Item 1 Text"); + IupSetAttribute(_list_3,"2","Item 2 Text"); + IupSetAttribute(_list_3,"3","Item 3 Text"); + + _frm_5 = IupFrame(IupVbox( + set_callbacks(_list_1), + set_callbacks(_list_2), + set_callbacks(_list_3), + NULL)); + IupSetAttribute(_frm_5,"TITLE","IupList"); + + _hbox_1 = IupHbox( + _frm_1, + _frm_2, + _frm_3, + _frm_4, + _frm_5, + NULL); + + val = IupVal(NULL); + set_callbacks(val); + + pbar = IupProgressBar(); + IupSetAttribute(pbar, "VALUE", "0.5"); + set_callbacks(pbar); + + tabs = IupTabs(IupVbox(NULL), IupVbox(NULL), IupVbox(NULL), NULL); + IupSetAttribute(tabs,"TABTITLE0","Tab Title 0"); + IupSetAttribute(tabs,"TABTITLE1","Tab Title 1"); + IupSetAttributeHandle(tabs,"TABIMAGE1", load_image_LogoTecgraf()); + IupSetAttribute(tabs,"TABTITLE2","Tab Title 2"); + IupSetAttribute(tabs,"RASTERSIZE","300x50"); +// IupSetAttribute(tabs,"PADDING","5x5"); + set_callbacks(tabs); + + tree = IupTree(); + IupSetAttribute(tree, "SHOWRENAME", "YES"); + IupSetAttribute(tree,"RASTERSIZE","100x150"); + set_callbacks(tree); + + _cnv_1 = IupCanvas(NULL); + IupSetAttribute(_cnv_1,"BGCOLOR","128 255 0"); + IupSetAttribute(_cnv_1,"SCROLLBAR","YES"); + IupSetAttribute(_cnv_1,"EXPAND","HORIZONTAL"); + IupSetAttribute(_cnv_1,"RASTERSIZE","x100"); +// IupSetAttribute(_cnv_1,"CANFOCUS","NO"); + set_callbacks(_cnv_1); + + _vbox_1 = IupVbox( + _hbox_1, + IupHbox(IupSetAttributes(IupFrame(IupHbox(val, NULL)), "TITLE=IupVal"), + IupSetAttributes(IupFrame(IupHbox(pbar, NULL)), "TITLE=IupProgressBar"), + IupSetAttributes(IupFrame(IupHbox(tabs, NULL)), "TITLE=IupTabs"), + NULL), + IupHbox(IupSetAttributes(IupFrame(IupHbox(_cnv_1, NULL)), "TITLE=IupCanvas"), + IupSetAttributes(IupFrame(IupHbox(tree, NULL)), "TITLE=IupTree"), + NULL), + NULL); + IupSetAttribute(_vbox_1,"MARGIN","5x5"); + IupSetAttribute(_vbox_1,"GAP","5"); + + dlg = IupDialog(_vbox_1); + IupSetHandle("dlg",dlg); + IupSetAttribute(dlg,"MENU","mnu"); + IupSetAttribute(dlg,"TITLE","IupDialog Title"); +// IupSetAttribute(dlg,"COMPOSITED","YES"); /* Windows Only */ +// IupSetAttribute(dlg, "OPACITY", "192"); + +// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation +// IupSetAttribute(_vbox_1, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BACKGROUND", "200 10 80"); + + //IupSetGlobal("DLGBGCOLOR", "92 92 255"); + //IupSetGlobal("TXTFGCOLOR", "255 92 92"); + //IupSetGlobal("TXTBGCOLOR", "92 92 255"); + +// IupSetAttribute(dlg, "FONT", "Helvetica, 24"); +// IupSetAttribute(dlg, "FONT", "-*-helvetica-*-r-*-*-18-*-*-*-*-*-*-*"); + +// IupSetAttribute(box, "FGCOLOR", "255 0 0"); + + IupMap(dlg); + + IupSetAttribute(tree, "TITLE0", "Figures"); + IupSetAttribute(tree, "ADDLEAF0", "Other"); /* new id=1 */ + IupSetAttribute(tree, "ADDBRANCH1", "triangle"); /* new id=2 */ + IupSetAttribute(tree, "ADDLEAF2", "equilateral"); /* ... */ + IupSetAttribute(tree, "ADDLEAF3", "isoceles"); + IupSetAttribute(tree, "ADDLEAF4", "scalenus"); + + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + SampleTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/sbox.c b/iup/test/sbox.c new file mode 100755 index 0000000..13b5582 --- /dev/null +++ b/iup/test/sbox.c @@ -0,0 +1,46 @@ +#include +#include +#include "iup.h" + +void SboxTest(void) +{ + Ihandle *dlg, *bt, *box, *lbl, *ml, *vbox; + + bt = IupButton("Button", NULL); + //IupSetAttribute(bt, "EXPAND", "VERTICAL"); /* This is the only necessary EXPAND */ + IupSetAttribute(bt, "EXPAND", "YES"); + + box = IupSbox(bt); + IupSetAttribute(box, "DIRECTION", "SOUTH"); /* place at the bottom of the button */ +// IupSetAttribute(box, "COLOR", "0 255 0"); + + ml = IupMultiLine(NULL); + IupSetAttribute(ml, "EXPAND", "YES"); + IupSetAttribute(ml, "VISIBLELINES", "5"); + vbox = IupVbox(box, ml, NULL); + + lbl = IupLabel("Label"); + IupSetAttribute(lbl, "EXPAND", "VERTICAL"); + + dlg = IupDialog(IupHbox(vbox, lbl, NULL)); + IupSetAttribute(dlg, "TITLE", "IupSbox Example"); + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupSetAttribute(dlg, "GAP", "10"); + + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + SboxTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/scanf.c b/iup/test/scanf.c new file mode 100755 index 0000000..2ea7663 --- /dev/null +++ b/iup/test/scanf.c @@ -0,0 +1,39 @@ +#include +#include +#include "iup.h" + +void ScanfTest(void) +{ + int ret; + int integer = 12; + float real = 1e-3f; + char text[300]="This is a vector of characters"; + char *fmt = + { + "IupScanf Example\n" + "Text: %300.5%s\n" + "Real: %20.10%g\n" + "Integer: %20.10%d\n" + }; + +// IupSetLanguage("ENGLISH"); + + ret = IupScanf(fmt, text, &real, &integer); + if (ret == -1) + IupMessage("IupScanf","Operation canceled"); + else + IupMessagef("IupScanf","Text: %s\nReal: %f\nInteger: %d\nFields read successfully: %d",text,real,integer,ret); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ScanfTest(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/spin.c b/iup/test/spin.c new file mode 100755 index 0000000..63a3bbc --- /dev/null +++ b/iup/test/spin.c @@ -0,0 +1,43 @@ +#include +#include + +#include "iup.h" + + +static int spin_cb(Ihandle* ih, int inc) +{ + (void)ih; + /* does nothing, just print the call */ + printf("SPIN_CB(%d)\n", inc); + return IUP_DEFAULT; +} + +void SpinTest(void) +{ + Ihandle *dlg, *spinbox; + + spinbox = IupSpinbox(IupSetAttributes(IupText(NULL), "SIZE=50x")); + + IupSetCallback(spinbox, "SPIN_CB", (Icallback)spin_cb); + + dlg = IupDialog(IupVbox(spinbox, NULL)); + IupSetAttribute(dlg, "MARGIN", "10x10"); + + IupSetAttribute(dlg, "TITLE", "IupSpin Test"); + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + SpinTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/sysinfo.c b/iup/test/sysinfo.c new file mode 100755 index 0000000..2f0d9c0 --- /dev/null +++ b/iup/test/sysinfo.c @@ -0,0 +1,60 @@ +#include +#include +#include "iup.h" + +void SysInfoTest(void) +{ + char* sysver; + int motif = 0; + + printf("IUP System Info:\n"); + printf(" Version: %s\n", IupVersion()); + printf(" Copyright: %s\n", IUP_COPYRIGHT); + printf(" Driver: %s\n", IupGetGlobal("DRIVER")); + printf(" System: %s\n", IupGetGlobal("SYSTEM")); + printf(" System Version: %s\n\n", IupGetGlobal("SYSTEMVERSION")); + printf(" System Language: %s\n\n", IupGetGlobal("SYSTEMLANGUAGE")); + + sysver = IupGetGlobal("MOTIFVERSION"); + if (sysver) + { + printf(" Motif Version: %s\n", sysver); + printf(" Motif Number: %s\n", IupGetGlobal("MOTIFNUMBER")); + printf(" X Server Vendor: %s\n", IupGetGlobal("XSERVERVENDOR")); + printf(" X Vendor Release: %s\n\n", IupGetGlobal("XVENDORRELEASE")); + motif = 1; + } + + sysver = IupGetGlobal("GTKVERSION"); + if (sysver) + printf(" GTK Version: %s\n", sysver); + + printf(" Screen Depth: %s\n", IupGetGlobal("SCREENDEPTH")); + printf(" Screen Size: %s\n", IupGetGlobal("SCREENSIZE")); + printf(" Full Screen Size: %s\n", IupGetGlobal("FULLSIZE")); + printf(" True Color Canvas: %s\n\n", IupGetGlobal("TRUECOLORCANVAS")); + + if (!motif) + { + printf(" Virtual Screen: %s\n", IupGetGlobal("VIRTUALSCREEN")); + printf(" Monitors Info: %s\n", IupGetGlobal("MONITORSINFO")); + } + + printf(" Computer Name: %s\n", IupGetGlobal("COMPUTERNAME")); + printf(" User Name: %s\n", IupGetGlobal("USERNAME")); + printf(" Default Font: %s\n", IupGetGlobal("DEFAULTFONT")); +} + + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + SysInfoTest(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/tabs.c b/iup/test/tabs.c new file mode 100755 index 0000000..a069f01 --- /dev/null +++ b/iup/test/tabs.c @@ -0,0 +1,403 @@ +#include +#include + +#include "iup.h" +#include "iupkey.h" + +static Ihandle* load_image_LogoTecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4, + 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154, + 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153, + 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +#define TEST_IMAGE_SIZE 16 + +static Ihandle* load_image_TestImage(void) +{ + unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = + { + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + }; + + Ihandle* image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "0 255 0"); + IupSetAttribute(image, "3", "0 0 255"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + + return image; +} + +static int cbChildButton(Ihandle* ih) +{ + printf("button(%s)\n", IupGetAttribute(ih, "TITLE")); + return IUP_DEFAULT; +} + +static int cbValuePos(Ihandle* ih) +{ + Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS"); + IupSetAttribute(tabs, "VALUEPOS", "0"); +// printf("VALUE=%s\n", IupGetAttribute(tabs, "VALUE")); + return IUP_DEFAULT; +} + +static int cbType(Ihandle* ih, int v) +{ + if (v) + { + char* title = IupGetAttribute(ih, "TITLE"); + Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS"); + + switch(*title) + { + case 'L': + IupSetAttribute(tabs, "TABTYPE", "LEFT"); + break; + case 'R': + IupSetAttribute(tabs, "TABTYPE", "RIGHT"); + break; + case 'T': + IupSetAttribute(tabs, "TABTYPE", "TOP"); + break; + case 'B': + IupSetAttribute(tabs, "TABTYPE", "BOTTOM"); + break; + } + + IupSetAttribute(tabs, "UPDATE", NULL); + IupRefresh(tabs); /* update children layout */ + } + return IUP_DEFAULT; +} + +static int cbOrientation(Ihandle* ih, int v) +{ + if (v) + { + char* title = IupGetAttribute(ih, "TITLE"); + Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS"); + + switch(*title) + { + case 'H': + IupSetAttribute(tabs, "TABORIENTATION", "HORIZONTAL"); + break; + case 'V': + IupSetAttribute(tabs, "TABORIENTATION", "VERTICAL"); + break; + } + + IupSetAttribute(tabs, "UPDATE", NULL); + IupRefresh(tabs); /* update children layout */ + } + return IUP_DEFAULT; +} + +static int cbAddTab(Ihandle* ih) +{ + Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS"); + Ihandle *vbox; + + vbox = IupFrame(IupVbox(IupLabel("Label XXX"), IupButton("Button XXX", "cbChildButton"), NULL)); + IupSetAttribute(vbox, "TABTITLE", "XXX"); + IupSetAttribute(vbox, "TITLE", "TABS XXX"); + + IupAppend(tabs, vbox); + IupMap(vbox); + + IupSetAttribute(tabs, "UPDATE", NULL); + IupRefresh(tabs); /* update children layout */ + + return IUP_DEFAULT; +} + +static int cbInsertTab(Ihandle* ih) +{ + Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS"); + Ihandle* ref_vbox = IupGetHandle(IupGetAttribute(tabs, "VALUE")); + Ihandle *vbox; + + vbox = IupFrame(IupVbox(IupLabel("Label YYY"), IupButton("Button YYY", "cbChildButton"), NULL)); + IupSetAttribute(vbox, "TABTITLE", "YYY"); + IupSetAttribute(vbox, "TITLE", "TABS YYY"); + + IupInsert(tabs, ref_vbox, vbox); + IupMap(vbox); + + IupSetAttribute(tabs, "UPDATE", NULL); + IupRefresh(tabs); /* update children layout */ + + return IUP_DEFAULT; +} + +static int cbRemoveTab(Ihandle* ih) +{ + Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS"); + Ihandle* vbox = IupGetHandle(IupGetAttribute(tabs, "VALUE")); + + IupDestroy(vbox); + + IupSetAttribute(tabs, "UPDATE", NULL); + IupRefresh(tabs); /* update children layout */ + + return IUP_DEFAULT; +} + +static int cbTabChange(Ihandle* ih, Ihandle* new_tab, Ihandle* old_tab) +{ + printf("new Tab: %s, old Tab: %s\n", IupGetAttribute(new_tab, "TABTITLE"), IupGetAttribute(old_tab, "TABTITLE")); + return IUP_DEFAULT; +} + +static int cbInactive(Ihandle *ih, int state) +{ + Ihandle* tabs = (Ihandle*)IupGetAttribute(ih, "APP_TABS"); + IupSetAttribute(tabs, "ACTIVE", state? "NO": "YES"); + IupSetAttribute(tabs, "UPDATE", NULL); + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ + if (iup_isprint(c)) + printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c)); + printf(" MODKEYSTATE(%s)\n", IupGetGlobal("MODKEYSTATE")); + return IUP_DEFAULT; +} + +static int getfocus_cb(Ihandle *ih) +{ + printf("GETFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB()\n"); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + printf("ENTERWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +//#define IupFrame(_x) (_x) + +static Ihandle* CreateTabs(int tab) +{ + Ihandle *vboxA, *vboxB, *vboxG, + *vboxC, *vboxD,*vboxE, *vboxF, *vboxH, *vboxI, + *tabs; + +// if (tab) // to test Tabs inside Tabs + // vboxA = IupVbox(CreateTabs(0), NULL); +// else + vboxA = IupFrame(IupVbox(IupFill(), IupLabel("Label AAA"), IupButton("Button AAA", "cbChildButton"), //NULL)); + IupText(NULL), IupToggle("Button TTTT", "cbChildButton"), + IupVal(NULL), IupSetAttributes(IupProgressBar(), "VALUE=0.5"), NULL)); + vboxB = IupFrame(IupVbox(IupLabel("Label BBB"), IupButton("Button BBB", "cbChildButton"), NULL)); + vboxC = IupFrame(IupVbox(IupLabel("Label CCC"), IupButton("Button CCC", "cbChildButton"), NULL)); + vboxD = IupFrame(IupVbox(IupLabel("Label DDD"), IupButton("Button DDD", "cbChildButton"), NULL)); + vboxE = IupVbox(IupFill(), IupLabel("Label EEE"), IupButton("Button EEE", "cbChildButton"), + IupButton("Button EEE", "cbChildButton"), IupButton("Button EEE", "cbChildButton"), NULL); + vboxF = IupVbox(IupLabel("Label FFF"), IupButton("Button FFF", "cbChildButton"), NULL); + vboxG = IupVbox(IupLabel("Label GGG"), IupButton("Button GGG", "cbChildButton"), NULL); + vboxH = IupVbox(IupLabel("Label HHH"), IupButton("Button HHH", "cbChildButton"), NULL); + vboxI = IupVbox(IupLabel("Canvas"), IupCanvas(NULL), NULL); + + IupSetAttribute(vboxA, "TABTITLE", "A"); + IupSetAttributeHandle(vboxA, "TABIMAGE", load_image_LogoTecgraf()); + IupSetAttribute(vboxB, "TABTITLE", "BB"); +// IupSetAttribute(vboxC, "TABTITLE", "CCC"); + IupStoreAttribute(vboxC, "TABIMAGE", IupGetAttribute(vboxA, "TABIMAGE")); + IupSetAttribute(vboxD, "TABTITLE", "DDDD"); + IupSetAttribute(vboxE, "TABTITLE", "EEEEE"); + IupSetAttribute(vboxF, "TABTITLE", "FFFFFF"); + IupSetAttribute(vboxG, "TABTITLE", "GGGGGGG"); + IupSetAttribute(vboxH, "TABTITLE", "HHHHHHHH"); + IupSetAttribute(vboxI, "TABTITLE", "Canvas"); + IupSetAttribute(vboxA, "TITLE", "TABS A"); + IupSetAttribute(vboxB, "TITLE", "TABS BB"); + IupSetAttribute(vboxC, "TITLE", "TABS CCC"); + IupSetAttribute(vboxC, "ACTIVE", "NO"); + IupSetAttribute(vboxF, "TABSIZE", "100"); + IupSetAttribute(vboxI, "BGCOLOR", "32 192 32"); + + tabs = IupTabs(vboxA, vboxB, vboxC, vboxD, vboxE, vboxF, vboxG, vboxH, vboxI, NULL); + + IupSetCallback(tabs, "TABCHANGE_CB", (Icallback)cbTabChange); + + //IupSetAttributeHandle(tabs, "TABIMAGE1", load_image_LogoTecgraf()); + IupSetAttributeHandle(tabs, "TABIMAGE1", load_image_TestImage()); + + + // In Windows, must be set before map +// IupSetAttribute(tabs, "TABTYPE", "LEFT"); +// IupSetAttribute(tabs, "TABTYPE", "RIGHT"); +// IupSetAttribute(tabs, "TABTYPE", "BOTTOM"); +// IupSetAttribute(tabs, "TABORIENTATION", "VERTICAL"); +// IupSetAttribute(tabs, "MULTILINE", "YES"); + + IupSetAttribute(tabs, "MARGIN", "0x0"); /* for children */ +// IupSetAttribute(tabs, "EXPAND", "YES"); + IupSetAttribute(tabs, "RASTERSIZE", "300x200"); /* initial size */ +// IupSetAttribute(tabs, "ALIGNMENT", "NW"); +// IupSetAttribute(tabs, "ALIGNMENT", "NORTH"); +// IupSetAttribute(tabs, "ALIGNMENT", "WEST"); +// IupSetAttribute(tabs, "ALIGNMENT", "EAST"); +// IupSetAttribute(tabs, "ALIGNMENT", "SOUTH"); +// IupSetAttribute(tabs, "ALIGNMENT", "SE"); + +// IupSetAttribute(tabs, "BACKGROUND", "10 150 200"); +// IupSetAttribute(tabs, "BGCOLOR", "92 92 255"); +// IupSetAttribute(tabs, "FGCOLOR", "250 0 0"); +// IupSetAttribute(tabs, "FONT", "Helvetica, Italic 16"); + + IupSetAttribute(tabs, "TIP", "IupTabs Tip"); +// IupSetAttribute(tabs, "TIPFONT", "SYSTEM"); +// IupSetAttribute(tabs, "TIPBGCOLOR", "255 128 128"); +// IupSetAttribute(tabs, "TIPFGCOLOR", "0 92 255"); + + // Windows Only + //IupSetAttribute(tabs, "TIPBALLON", "YES"); + //IupSetAttribute(tabs, "TIPBALLONTITLE", "Tip Title"); + //IupSetAttribute(tabs, "TIPBALLONTITLEICON", "2"); + //IupSetAttribute(tabs, "TIPDELAY", "5000"); + + //IupSetCallback(tabs, "K_ANY", (Icallback)k_any); + //IupSetCallback(tabs, "HELP_CB", (Icallback)help_cb); + + //IupSetCallback(tabs, "GETFOCUS_CB", (Icallback)getfocus_cb); + //IupSetCallback(tabs, "KILLFOCUS_CB", (Icallback)killfocus_cb); + //IupSetCallback(tabs, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); + //IupSetCallback(tabs, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + + return tabs; +} + +void TabsTest(void) +{ + Ihandle *box, *frm1, *frm2, *dlg, *tabs; + + tabs = CreateTabs(1); + + box = IupHbox(tabs, + frm1 = IupFrame(IupRadio(IupVbox(IupToggle("TOP", "cbType"), + IupToggle("LEFT", "cbType"), + IupToggle("BOTTOM", "cbType"), + IupToggle("RIGHT", "cbType"), + NULL))), + frm2 = IupFrame(IupRadio(IupVbox(IupToggle("HORIZONTAL", "cbOrientation"), + IupToggle("VERTICAL", "cbOrientation"), + NULL))), + IupVbox(IupSetAttributes(IupButton("Add Tab", "cbAddTab"), "TIP=\"Button Tip\""), + IupButton("Insert Tab", "cbInsertTab"), + IupButton("Remove Tab", "cbRemoveTab"), + IupToggle("Inactive", "cbInactive"), + IupButton("VALUEPOS=0", "cbValuePos"), + NULL), + NULL); + + IupSetAttribute(frm1, "MARGIN", "5x5"); + IupSetAttribute(frm2, "MARGIN", "5x5"); + IupSetAttribute(frm1, "GAP", "0"); + IupSetAttribute(frm2, "GAP", "0"); + IupSetAttribute(frm1, "TITLE", "Type"); + IupSetAttribute(frm2, "TITLE", "Orientation"); + + IupSetAttribute(box, "MARGIN", "10x10"); + IupSetAttribute(box, "GAP", "10"); + dlg = IupDialog(box); + + IupSetAttribute(dlg, "TITLE", "IupTabs Test"); + IupSetAttribute(dlg, "APP_TABS", (char*)tabs); +// IupSetAttribute(box, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BACKGROUND", "200 10 80"); +// IupSetAttributeHandle(dlg, "BACKGROUND", load_image_LogoTecgraf()); +// IupSetAttribute(dlg, "FGCOLOR", "10 200 80"); +// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation +// IupSetAttribute(dlg,"COMPOSITED","NO"); + + IupMap(dlg); + IupSetAttribute(dlg, "SIZE", NULL); + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); + + IupSetFunction("cbOrientation", (Icallback)cbOrientation); + IupSetFunction("cbType", (Icallback)cbType); + IupSetFunction("cbAddTab", (Icallback)cbAddTab); + IupSetFunction("cbInsertTab", (Icallback)cbInsertTab); + IupSetFunction("cbRemoveTab", (Icallback)cbRemoveTab); + IupSetFunction("cbInactive", (Icallback)cbInactive); + IupSetFunction("cbChildButton", (Icallback)cbChildButton); + IupSetFunction("cbValuePos", (Icallback)cbValuePos); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + TabsTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/tecgraf.bmp b/iup/test/tecgraf.bmp new file mode 100755 index 0000000..e6dcbdd Binary files /dev/null and b/iup/test/tecgraf.bmp differ diff --git a/iup/test/text.c b/iup/test/text.c new file mode 100755 index 0000000..f1c29a2 --- /dev/null +++ b/iup/test/text.c @@ -0,0 +1,433 @@ +#include +#include +#include +#include + +static void text2multiline (Ihandle* ih, char* attribute) +{ + Ihandle *mltline = IupGetDialogChild(ih, "mltline"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute (mltline, attribute, IupGetAttribute (text, "VALUE")); +} + +static void multiline2text (Ihandle* ih, char* attribute) +{ + Ihandle *mltline = IupGetDialogChild(ih, "mltline"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetAttribute (text, "VALUE", IupGetAttribute(mltline, attribute)); +} + +static int btn_append_cb (Ihandle* ih) +{ + text2multiline(ih, "APPEND"); + return IUP_DEFAULT; +} + +static int btn_insert_cb (Ihandle* ih) +{ + text2multiline(ih, "INSERT"); + return IUP_DEFAULT; +} + +static int btn_clip_cb (Ihandle* ih) +{ + text2multiline(ih, "CLIPBOARD"); + return IUP_DEFAULT; +} + +int iupKeyNameToCode(const char *name); + +static int btn_key_cb (Ihandle* ih) +{ + Ihandle *mltline = IupGetDialogChild(ih, "mltline"); + Ihandle *text = IupGetDialogChild(ih, "text"); + IupSetFocus(mltline); + IupFlush(); + IupSetfAttribute(NULL, "KEY", "%d", iupKeyNameToCode(IupGetAttribute(text, "VALUE"))); + return IUP_DEFAULT; +} + +static int btn_caret_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle("text2multi"); + if (IupGetInt(opt, "VALUE")) + text2multiline(ih, "CARET"); + else + multiline2text(ih, "CARET"); + return IUP_DEFAULT; +} + +static int btn_readonly_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle("text2multi"); + if (IupGetInt(opt, "VALUE")) + text2multiline(ih, "READONLY"); + else + multiline2text(ih, "READONLY"); + return IUP_DEFAULT; +} + +static int btn_selection_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle ("text2multi"); + if (IupGetInt (opt, "VALUE")) + text2multiline (ih, "SELECTION"); + else + multiline2text (ih, "SELECTION"); + return IUP_DEFAULT; +} + +static int btn_selectedtext_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle ("text2multi"); + if (IupGetInt (opt, "VALUE")) + text2multiline (ih, "SELECTEDTEXT"); + else + multiline2text (ih, "SELECTEDTEXT"); + return IUP_DEFAULT; +} + +static int btn_overwrite_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle ("text2multi"); + if (IupGetInt (opt, "VALUE")) + text2multiline (ih, "OVERWRITE"); + else + multiline2text (ih, "OVERWRITE"); + return IUP_DEFAULT; +} + +static int btn_active_cb(Ihandle *ih) +{ + Ihandle *opt = IupGetHandle ("text2multi"); + if (IupGetInt (opt, "VALUE")) + text2multiline (ih, "ACTIVE"); + else + multiline2text (ih, "ACTIVE"); + return IUP_DEFAULT; +} + +static int btn_remformat_cb(Ihandle *ih) +{ + text2multiline (ih, "REMOVEFORMATTING"); + return IUP_DEFAULT; +} + +static int btn_nc_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle ("text2multi"); + if (IupGetInt (opt, "VALUE")) + text2multiline (ih, "NC"); + else + multiline2text (ih, "NC"); + return IUP_DEFAULT; +} + +static int btn_value_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle ("text2multi"); + if (IupGetInt (opt, "VALUE")) + text2multiline (ih, "VALUE"); + else + multiline2text (ih, "VALUE"); + return IUP_DEFAULT; +} + +static int btn_tabsize_cb (Ihandle* ih) +{ + Ihandle *opt = IupGetHandle ("text2multi"); + if (IupGetInt (opt, "VALUE")) + text2multiline (ih, "TABSIZE"); + else + multiline2text (ih, "TABSIZE"); + return IUP_DEFAULT; +} + +static int k_f2(void) +{ + printf("K_F2\n"); + return IUP_DEFAULT; +} + +static int file_open(void) +{ + char filename[100] = ""; + IupGetFile(filename); // test key after dlg in multiline + printf(filename); + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ + if (iup_isprint(c)) + printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c)); + printf(" CARET(%s)\n", IupGetAttribute(ih, "CARET")); + if (c == K_cA) + return IUP_IGNORE; // Sound a beep in Windows + if (c == K_cP) + { + file_open(); + return IUP_IGNORE; // Sound a beep in Windows + } + return IUP_CONTINUE; +} + +static int action(Ihandle *ih, int c, char* after) +{ + if (iup_isprint(c)) + printf("ACTION(%d = %s \'%c\', %s)\n", c, iupKeyCodeToName(c), (char)c, after); + else + printf("ACTION(%d = %s, %s)\n", c, iupKeyCodeToName(c), after); + if (c == K_i) + return IUP_IGNORE; // OK + if (c == K_cD) + return IUP_IGNORE; // Sound a beep in Windows + if (c == K_h) + return K_j; + return IUP_DEFAULT; +} + +static int caret_cb(Ihandle *ih, int lin, int col, int pos) +{ + printf("CARET_CB(%d, %d - %d)\n", lin, col, pos); + printf(" CARET(%s - %s)\n", IupGetAttribute(ih, "CARET"), IupGetAttribute(ih, "CARETPOS")); + return IUP_DEFAULT; +} + +static int getfocus_cb(void) +{ + printf("GETFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int help_cb(void) +{ + printf("HELP_CB()\n"); + return IUP_DEFAULT; +} + +static int killfocus_cb(void) +{ + printf("KILLFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int leavewindow_cb(void) +{ + printf("LEAVEWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int enterwindow_cb(void) +{ + printf("ENTERWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int btn_def_esc_cb(void) +{ + printf("DEFAULTESC\n"); + return IUP_DEFAULT; +} + +static int btn_def_enter_cb(void) +{ + printf("DEFAULTENTER\n"); + return IUP_DEFAULT; +} + +static int dropfiles_cb(Ihandle *ih, const char* filename, int num, int x, int y) +{ + printf("DROPFILES_CB(%s, %d, x=%d, y=%d)\n", filename, num, x, y); + return IUP_DEFAULT; +} + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + int lin, col, pos; + printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s])\n",(char)but,pressed,x,y, status); + pos = IupConvertXYToPos(ih, x, y); + IupTextConvertPosToLinCol(ih, pos, &lin, &col); + printf(" (lin=%d, col=%d, pos=%d)\n", lin, col, pos); + return IUP_DEFAULT; +} + +static int motion_cb(Ihandle *ih,int x,int y,char* status) +{ + int lin, col, pos; + printf("MOTION_CB(x=%d, y=%d [%s])\n",x,y, status); + pos = IupConvertXYToPos(ih, x, y); + IupTextConvertPosToLinCol(ih, pos, &lin, &col); + printf(" (lin=%d, col=%d, pos=%d)\n", lin, col, pos); + return IUP_DEFAULT; +} + +void TextTest(void) +{ + int formatting = 0; + Ihandle *dlg, *mltline, *text, *opt, *btn_def_enter, *btn_def_esc, *btn_active, *btn_overwrite, + *btn_append, *btn_insert, *btn_caret, *btn_clip, *btn_key, *btn_readonly, *btn_tabsize, + *btn_selection, *btn_selectedtext, *btn_nc, *btn_value, *lbl, *formattag, *btn_remformat; + +// IupSetGlobal("UTF8AUTOCONVERT", "NO"); + + text = IupText (NULL); + IupSetAttribute(text, "EXPAND", "HORIZONTAL"); +// IupSetAttribute(text, "VALUE", "Single Line Text"); + IupSetAttribute(text, "CUEBANNER", "Enter Attribute Value Here"); + IupSetAttribute(text, "NAME", "text"); + IupSetAttribute(text, "TIP", "Attribute Value"); + + opt = IupToggle("Set/Get", NULL); + IupSetAttribute (opt, "VALUE", "ON"); + IupSetHandle ("text2multi", opt); + + mltline = IupMultiLine(NULL); +// mltline = IupText(NULL); +// IupSetAttribute(mltline, "MULTILINE", "YES"); + IupSetAttribute(mltline, "NAME", "mltline"); + + IupSetCallback(mltline, "DROPFILES_CB", (Icallback)dropfiles_cb); + IupSetCallback(mltline, "BUTTON_CB", (Icallback)button_cb); +// IupSetCallback(mltline, "MOTION_CB", (Icallback)motion_cb); + IupSetCallback(mltline, "HELP_CB", (Icallback)help_cb); + IupSetCallback(mltline, "GETFOCUS_CB", (Icallback)getfocus_cb); + IupSetCallback(mltline, "KILLFOCUS_CB", (Icallback)killfocus_cb); + IupSetCallback(mltline, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); + IupSetCallback(mltline, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + //IupSetCallback(mltline, "ACTION", (Icallback)action); + IupSetCallback(mltline, "K_ANY", (Icallback)k_any); + IupSetCallback(mltline, "K_F2", (Icallback)k_f2); + IupSetCallback(mltline, "CARET_CB", (Icallback)caret_cb); +// IupSetAttribute(mltline, "WORDWRAP", "YES"); +// IupSetAttribute(mltline, "BORDER", "NO"); +// IupSetAttribute(mltline, "AUTOHIDE", "YES"); +// IupSetAttribute(mltline, "BGCOLOR", "255 0 128"); +// IupSetAttribute(mltline, "FGCOLOR", "0 128 192"); +// IupSetAttribute(mltline, "PADDING", "15x15"); +// IupSetAttribute(mltline, "VALUE", "First Line\nSecond Line Big Big Big\nThird Line\nmore\nmore\nçãõáóé"); // UTF-8 + IupSetAttribute(mltline, "VALUE", "First Line\nSecond Line Big Big Big\nThird Line\nmore\nmore\nçãõáóé"); // Windows-1252 + IupSetAttribute(mltline, "TIP", "First Line\nSecond Line\nThird Line"); +// IupSetAttribute(mltline, "FONT", "Helvetica, 14"); +// IupSetAttribute(mltline, "MASK", IUP_MASK_FLOAT); +// IupSetAttribute(mltline, "FILTER", "UPPERCASE"); +// IupSetAttribute(mltline, "ALIGNMENT", "ACENTER"); + + /* Turns on multiline expand and text horizontal expand */ + IupSetAttribute(mltline, "SIZE", "80x40"); + IupSetAttribute(mltline, "EXPAND", "YES"); + + formatting = 0; + if (formatting) /* just to make easier to comment this section */ + { + /* formatting before Map */ + IupSetAttribute(mltline, "FORMATTING", "YES"); + + formattag = IupUser(); + IupSetAttribute(formattag, "ALIGNMENT", "CENTER"); + IupSetAttribute(formattag, "SPACEAFTER", "10"); + IupSetAttribute(formattag, "FONTSIZE", "24"); + IupSetAttribute(formattag, "SELECTION", "3,1:3,50"); + IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag); + + formattag = IupUser(); + IupSetAttribute(formattag, "BGCOLOR", "255 128 64"); + IupSetAttribute(formattag, "UNDERLINE", "SINGLE"); + IupSetAttribute(formattag, "WEIGHT", "BOLD"); + IupSetAttribute(formattag, "SELECTION", "3,7:3,11"); + IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag); + } + + /* Creates buttons */ +// btn_append = IupButton ("APPEND çãõáóé", NULL); // Windows-1252 +// btn_append = IupButton ("APPEND çãõáóé", NULL); // UTF-8 + btn_append = IupButton ("&APPEND", NULL); + btn_insert = IupButton ("INSERT", NULL); + btn_caret = IupButton ("CARET", NULL); + btn_readonly = IupButton ("READONLY", NULL); + btn_selection = IupButton ("SELECTION", NULL); + btn_selectedtext = IupButton ("SELECTEDTEXT", NULL); + btn_nc = IupButton ("NC", NULL); + btn_value = IupButton ("VALUE", NULL); + btn_tabsize = IupButton ("TABSIZE", NULL); + btn_clip = IupButton ("CLIPBOARD", NULL); + btn_key = IupButton ("KEY", NULL); + btn_def_enter = IupButton ("Default Enter", NULL); + btn_def_esc = IupButton ("Default Esc", NULL); + btn_active = IupButton("ACTIVE", NULL); + btn_remformat = IupButton("REMOVEFORMATTING", NULL); + btn_overwrite = IupButton("OVERWRITE", NULL); + + IupSetAttribute(btn_append, "TIP", "First Line\nSecond Line\nThird Line"); + + /* Registers callbacks */ + IupSetCallback(btn_append, "ACTION", (Icallback) btn_append_cb); + IupSetCallback(btn_insert, "ACTION", (Icallback) btn_insert_cb); + IupSetCallback(btn_caret, "ACTION", (Icallback) btn_caret_cb); + IupSetCallback(btn_readonly, "ACTION", (Icallback) btn_readonly_cb); + IupSetCallback(btn_selection, "ACTION", (Icallback) btn_selection_cb); + IupSetCallback(btn_selectedtext, "ACTION", (Icallback) btn_selectedtext_cb); + IupSetCallback(btn_nc, "ACTION", (Icallback) btn_nc_cb); + IupSetCallback(btn_value, "ACTION", (Icallback) btn_value_cb); + IupSetCallback(btn_tabsize, "ACTION", (Icallback) btn_tabsize_cb); + IupSetCallback(btn_clip, "ACTION", (Icallback) btn_clip_cb); + IupSetCallback(btn_key, "ACTION", (Icallback) btn_key_cb); + IupSetCallback(btn_def_enter, "ACTION", (Icallback) btn_def_enter_cb); + IupSetCallback(btn_def_esc, "ACTION", (Icallback) btn_def_esc_cb); + IupSetCallback(btn_active, "ACTION", (Icallback) btn_active_cb); + IupSetCallback(btn_remformat, "ACTION", (Icallback) btn_remformat_cb); + IupSetCallback(btn_overwrite, "ACTION", (Icallback) btn_overwrite_cb); + + lbl = IupLabel("&Multiline:"); + IupSetAttribute(lbl, "PADDING", "2x2"); + + /* Creates dlg */ + dlg = IupDialog(IupVbox(lbl, + mltline, + IupHbox (text, opt, NULL), + IupHbox (btn_append, btn_insert, btn_caret, btn_readonly, btn_selection, NULL), + IupHbox (btn_selectedtext, btn_nc, btn_value, btn_tabsize, btn_clip, btn_key, NULL), + IupHbox (btn_def_enter, btn_def_esc, btn_active, btn_remformat, btn_overwrite, NULL), + NULL)); + IupSetCallback(dlg, "K_cO", (Icallback)file_open); + IupSetAttribute(dlg, "TITLE", "IupText Test"); + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupSetAttribute(dlg, "GAP", "5"); + IupSetAttributeHandle(dlg, "DEFAULTENTER", btn_def_enter); + IupSetAttributeHandle(dlg, "DEFAULTESC", btn_def_esc); + IupSetAttribute(dlg, "SHRINK", "YES"); + + if (formatting) /* just to make easier to comment this section */ + { + IupMap(dlg); + /* formatting after Map */ + + formattag = IupUser(); + IupSetAttribute(formattag, "ITALIC", "YES"); + IupSetAttribute(formattag, "STRIKEOUT", "YES"); + IupSetAttribute(formattag, "SELECTION", "2,1:2,12"); + IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag); + } + + /* Shows dlg in the center of the screen */ + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + TextTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/text_spin.c b/iup/test/text_spin.c new file mode 100755 index 0000000..114c1ed --- /dev/null +++ b/iup/test/text_spin.c @@ -0,0 +1,74 @@ +#include +#include + +#include "iup.h" +#include "iupkey.h" + + +static int spin_cb(Ihandle* ih, int pos) +{ + (void)ih; + printf("SPIN_CB(%d)\n", pos); + if (!IupGetInt(ih, "SPINAUTO")) + IupSetfAttribute(ih, "VALUE", "%s(%d)", "Test", pos); + return IUP_DEFAULT; +} + +static int action_cb(Ihandle* ih, int c, char* after) +{ + printf("ACTION(%d, %s)\n", c, after); + return IUP_DEFAULT; +} + +static int setspinvalue(Ihandle* ih) +{ + IupSetAttribute(IupGetDialogChild(ih, "spin"), "SPINVALUE", "25"); + return IUP_DEFAULT; +} + +void TextSpinTest(void) +{ + Ihandle *dlg, *text; + + text = IupText(NULL); + IupSetAttribute(text, "SIZE", "60x"); +// IupSetAttribute(text, "EXPAND", "HORIZONTAL"); + + IupSetAttribute(text, "SPIN", "YES"); +// IupSetAttribute(text, "SPINMIN", "10"); +// IupSetAttribute(text, "SPINMAX", "60"); +// IupSetAttribute(text, "SPININC", "5"); +// IupSetAttribute(text, "SPINWRAP", "YES"); +// IupSetAttribute(text, "SPINALIGN", "LEFT"); +// IupSetAttribute(text, "SPINVALUE", "25"); +// IupSetAttribute(text, "SPINAUTO", "NO"); + IupSetAttribute(text, "NAME", "spin"); + + IupSetCallback(text, "SPIN_CB", (Icallback)spin_cb); + IupSetCallback(text, "ACTION", (Icallback)action_cb); + + dlg = IupDialog(IupVbox(text, IupButton("SPINVALUE", "setspinvalue"), NULL)); + IupSetAttribute(dlg, "GAP", "20"); + IupSetAttribute(dlg, "MARGIN", "20x20"); +// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation + + IupSetFunction("setspinvalue", (Icallback)setspinvalue); + + IupSetAttribute(dlg, "TITLE", "Text Spin Test"); + IupShow(dlg); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + TextSpinTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/timer.c b/iup/test/timer.c new file mode 100755 index 0000000..f570b63 --- /dev/null +++ b/iup/test/timer.c @@ -0,0 +1,70 @@ +#include +#include +#include "iup.h" + +static Ihandle *timer1, *timer2, *timer3; + +static int timer_cb(Ihandle *ih) +{ + if (ih == timer1) + printf("timer 1 called\n"); + + if (ih == timer2) + { + printf("timer 2 called and stopped\n"); + IupSetAttribute(ih, "RUN", "NO"); + } + + if (ih == timer3) + { + printf("timer 3 called and CLOSE returned.\n"); + IupDestroy(timer1); + IupDestroy(timer2); + IupDestroy(timer3); + return IUP_CLOSE; + } + + return IUP_DEFAULT; +} + +void TimerTest(void) +{ + Ihandle *dlg; + + dlg = IupDialog(NULL); + IupSetAttribute(dlg, "TITLE", "IupTimer Test"); + IupSetAttribute(dlg, "SIZE", "200x100"); + + IupShow(dlg); + + timer1 = IupTimer(); + timer2 = IupTimer(); + timer3 = IupTimer(); + + IupSetAttribute(timer1, "TIME", "100"); + IupSetAttribute(timer1, "RUN", "YES"); + IupSetCallback(timer1, "ACTION_CB", (Icallback)timer_cb); + + IupSetAttribute(timer2, "TIME", "400"); + IupSetAttribute(timer2, "RUN", "YES"); + IupSetCallback(timer2, "ACTION_CB", (Icallback)timer_cb); + + IupSetAttribute(timer3, "TIME", "5000"); + IupSetAttribute(timer3, "RUN", "YES"); + IupSetCallback(timer3, "ACTION_CB", (Icallback)timer_cb); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + TimerTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/toggle.c b/iup/test/toggle.c new file mode 100755 index 0000000..e504eb1 --- /dev/null +++ b/iup/test/toggle.c @@ -0,0 +1,306 @@ +#include +#include +#include "iup.h" + +#define TEST_IMAGE_SIZE 20 + +static unsigned char image_data_32[16*16*4] = { + 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, + 255, 0, 255, 0, 183, 182, 245, 255, 183, 182, 245, 255, 179, 178, 243, 255, 174, 173, 241, 255, 168, 167, 238, 255, 162, 161, 234, 255, 155, 154, 231, 255, 148, 147, 228, 255, 143, 142, 224, 255, 136, 135, 221, 255, 129, 128, 218, 255, 123, 122, 214, 255, 117, 116, 211, 255, 112, 111, 209, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 179, 178, 243, 255, 190, 189, 255, 255, 147, 146, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 75, 88, 190, 255, 89, 88, 176, 255, 89, 88, 176, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 173, 172, 240, 255, 190, 189, 255, 255, 138, 137, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 63, 82, 184, 255, 51, 51, 103, 255, 86, 85, 170, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 167, 166, 237, 255, 190, 189, 255, 255, 129, 128, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 52, 77, 179, 255, 122, 121, 223, 255, 83, 82, 164, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 159, 158, 233, 255, 190, 189, 255, 255, 119, 118, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 40, 71, 173, 255, 114, 113, 215, 255, 80, 79, 159, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 152, 151, 229, 255, 190, 189, 255, 255, 110, 109, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 28, 65, 167, 255, 103, 103, 204, 255, 77, 77, 154, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 146, 145, 226, 255, 190, 189, 255, 255, 103, 102, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 251, 255, 234, 238, 246, 255, 222, 229, 240, 255, 210, 219, 234, 255, 198, 209, 229, 255, 189, 202, 225, 255, 17, 59, 161, 255, 92, 93, 194, 255, 74, 74, 148, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 139, 138, 223, 255, 188, 187, 255, 255, 183, 182, 255, 255, 96, 99, 201, 255, 86, 94, 196, 255, 75, 88, 190, 255, 63, 82, 184, 255, 52, 77, 179, 255, 40, 71, 173, 255, 28, 65, 167, 255, 17, 59, 161, 255, 92, 93, 193, 255, 84, 86, 186, 255, 71, 71, 143, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 132, 131, 219, 255, 180, 179, 255, 255, 174, 173, 255, 255, 164, 163, 252, 255, 143, 142, 244, 255, 135, 134, 236, 255, 129, 128, 230, 255, 122, 121, 223, 255, 114, 113, 215, 255, 108, 107, 209, 255, 92, 93, 193, 255, 84, 86, 186, 255, 76, 80, 178, 255, 68, 68, 137, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 124, 123, 215, 255, 170, 169, 255, 255, 160, 159, 251, 255, 148, 147, 245, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 75, 91, 113, 255, 82, 98, 118, 255, 91, 106, 125, 255, 84, 86, 186, 255, 76, 79, 178, 255, 68, 73, 170, 255, 65, 65, 131, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 118, 117, 212, 255, 160, 159, 255, 255, 145, 144, 245, 255, 135, 134, 236, 255, 75, 91, 113, 255, 0, 0, 0, 255, 52, 60, 71, 255, 206, 217, 233, 255, 212, 221, 236, 255, 103, 116, 133, 255, 67, 75, 174, 255, 68, 73, 170, 255, 60, 66, 163, 255, 62, 62, 125, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 112, 111, 209, 255, 154, 153, 255, 255, 135, 134, 236, 255, 129, 128, 230, 255, 75, 91, 113, 255, 52, 60, 71, 255, 104, 120, 141, 255, 216, 224, 237, 255, 224, 231, 241, 255, 115, 127, 143, 255, 53, 65, 163, 255, 60, 66, 162, 255, 53, 61, 156, 255, 60, 59, 120, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 108, 107, 207, 255, 143, 142, 243, 255, 129, 128, 230, 255, 36, 68, 170, 255, 33, 50, 71, 255, 171, 180, 195, 255, 179, 187, 198, 255, 188, 193, 202, 255, 196, 200, 206, 255, 72, 77, 86, 255, 51, 62, 158, 255, 54, 61, 156, 255, 49, 57, 152, 255, 57, 57, 114, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 108, 107, 207, 84, 101, 100, 195, 255, 86, 85, 170, 255, 83, 82, 164, 255, 80, 79, 159, 255, 77, 77, 154, 255, 74, 74, 148, 255, 71, 71, 143, 255, 68, 68, 137, 255, 65, 65, 131, 255, 60, 59, 120, 255, 60, 59, 120, 255, 57, 57, 114, 255, 55, 54, 110, 255, 255, 0, 255, 0, + 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0}; + +static unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,3,3,4,4,4,4,4,4,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +static unsigned char image_data_8_pressed [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,5,1,1,1,1,1,2,2,2,2,2,5,0,0,0,5, + 5,0,0,0,1,5,1,1,1,1,2,2,2,2,5,2,0,0,0,5, + 5,0,0,0,1,1,5,1,1,1,2,2,2,5,2,2,0,0,0,5, + 5,0,0,0,1,1,1,5,1,1,2,2,5,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,5,1,2,5,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,1,5,5,2,2,2,2,2,0,0,0,5, + 5,0,0,0,3,3,3,3,3,5,5,4,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,5,3,4,5,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,5,3,3,4,4,5,4,4,4,0,0,0,5, + 5,0,0,0,3,3,5,3,3,3,4,4,4,5,4,4,0,0,0,5, + 5,0,0,0,3,5,3,3,3,3,4,4,4,4,5,4,0,0,0,5, + 5,0,0,0,5,3,3,3,3,3,4,4,4,4,4,5,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +static unsigned char image_data_8_inactive [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,5,5,5,1,5,5,5,5,5,5,0,0,0,5, + 5,0,0,0,5,5,1,1,1,1,1,1,1,5,5,5,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +static void createimgs(void) +{ + Ihandle *image; + + image = IupImageRGBA(16, 16, image_data_32); + IupSetHandle ("image2", image); + + image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "0 255 0"); + IupSetAttribute(image, "3", "0 0 255"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetHandle ("image1", image); + + image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_inactive); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "0 255 0"); + IupSetAttribute(image, "3", "0 0 255"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetHandle ("image1i", image); + + image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8_pressed); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "0 255 0"); + IupSetAttribute(image, "3", "0 0 255"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + IupSetHandle ("image1p", image); +} + +static int togglecb(Ihandle *self, int v) +{ + if (v == 1) printf("Toggle %s - ON\n", IupGetAttribute(self, "NAME")); + else printf("Toggle %s - OFF\n", IupGetAttribute(self, "NAME")); + return IUP_DEFAULT; +} + +static int toggle9cb(Ihandle *self, int v) +{ + Ihandle* ih = IupGetHandle("radio test"); + if (v == 1) printf("Toggle 9 - ON\n"); + else if (v == -1) printf("Toggle 9 - NOTDEF\n"); + else printf("Toggle 9 - OFF\n"); + + if (v == 1) + IupSetAttribute(ih, "VALUE", "ON"); + else + IupSetAttribute(ih, "VALUE", "OFF"); + + return IUP_DEFAULT; +} + +static int toggle7cb(Ihandle *ih, int v) +{ + Ihandle* dlg = IupGetDialog(ih); + Ihandle* box = IupGetChild(dlg, 0); + if (v) + IupSetAttribute(box, "ACTIVE", "NO"); + else + IupSetAttribute(box, "ACTIVE", "YES"); + IupSetAttribute(ih, "ACTIVE", "YES"); + return IUP_DEFAULT; +} + +static int k_any(Ihandle *ih, int c) +{ + printf("K_ANY(%d)\n", c); + return IUP_DEFAULT; +} + +static int getfocus_cb(Ihandle *ih) +{ + printf("GETFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB()\n"); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + printf("ENTERWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +void ToggleTest(void) +{ + Ihandle *dlg, *box; + Ihandle *toggle1, *toggle2, *toggle3, *toggle4, *toggle5, *toggle6, *toggle7, *toggle8, *toggle9; + + createimgs(); + + toggle1 = IupToggle(NULL, NULL); + toggle2 = IupToggle(NULL, NULL); + toggle3 = IupToggle("Text Toggle", NULL); +// toggle4 = IupToggle("blue foreground color", NULL); + toggle4 = IupToggle("Radio &Text", NULL); + toggle5 = IupToggle("red background color", NULL); + toggle6 = IupToggle("multiple lines\nsecond line", NULL); + toggle7 = IupToggle("INACTIVE", NULL); + toggle8 = IupToggle("Courier 14 Bold font", NULL); + toggle9 = IupToggle("3 State", NULL); + + IupSetHandle("radio test", toggle8); + + IupSetCallback(toggle1, "ACTION", (Icallback)togglecb); + IupSetCallback(toggle2, "ACTION", (Icallback)togglecb); + IupSetCallback(toggle3, "ACTION", (Icallback)togglecb); + IupSetCallback(toggle4, "ACTION", (Icallback)togglecb); + IupSetCallback(toggle5, "ACTION", (Icallback)togglecb); + IupSetCallback(toggle6, "ACTION", (Icallback)togglecb); + IupSetCallback(toggle8, "ACTION", (Icallback)togglecb); + IupSetCallback(toggle7, "ACTION", (Icallback)toggle7cb); + IupSetCallback(toggle9, "ACTION", (Icallback)toggle9cb); + + IupSetCallback(toggle3, "K_ANY", (Icallback)k_any); + IupSetCallback(toggle3, "HELP_CB", (Icallback)help_cb); + IupSetCallback(toggle3, "GETFOCUS_CB", (Icallback)getfocus_cb); + IupSetCallback(toggle3, "KILLFOCUS_CB", (Icallback)killfocus_cb); + IupSetCallback(toggle3, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); + IupSetCallback(toggle3, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + + IupSetAttribute(toggle1, "IMAGE", "image1"); + IupSetAttribute(toggle1, "IMPRESS", "image1p"); + IupSetAttribute(toggle1, "IMINACTIVE", "image1i"); +// IupSetAttribute(toggle1, "PADDING", "10x10"); +// IupSetAttribute(toggle1, "RASTERSIZE", "160x160"); +// IupSetAttribute(toggle2, "RASTERSIZE", "60x60"); +// IupSetAttribute(toggle1, "ALIGNMENT", "ARIGHT"); +// IupSetAttribute(toggle2, "ALIGNMENT", "ARIGHT"); + IupSetAttribute(toggle2, "IMAGE", "image2"); + IupSetAttribute(toggle1, "NAME", "1"); + IupSetAttribute(toggle2, "NAME", "2"); + IupSetAttribute(toggle3, "NAME", "3"); + IupSetAttribute(toggle4, "NAME", "4"); + IupSetAttribute(toggle5, "NAME", "5"); + IupSetAttribute(toggle6, "NAME", "6"); + IupSetAttribute(toggle8, "NAME", "8"); +// IupSetAttribute(toggle4, "FGCOLOR", "0 0 255"); + IupSetAttribute(toggle5, "BGCOLOR", "255 0 0"); + IupSetAttribute(toggle8, "FONT", "COURIER_BOLD_14"); + IupSetAttribute(toggle9, "3STATE", "YES"); + IupSetAttribute(toggle6, "TIP", "Toggle Tip"); + IupSetAttribute(toggle7, "RIGHTBUTTON", "YES"); + IupSetAttribute(toggle5, "RIGHTBUTTON", "YES"); + + /* Creating box that contains the toggles */ + box = IupHbox( + IupVbox( + toggle1, + toggle2, + toggle3, + toggle7, + toggle9, + NULL), + IupFrame(IupRadio(IupVbox( + toggle4, + toggle5, + toggle6, + toggle8, + NULL))), + NULL); + + IupSetAttribute(IupGetChild(box, 1), "TITLE", "Radio in a Frame"); + +// IupSetAttribute(box, "BGCOLOR", "255 0 0"); + + /* Dialog */ + dlg = IupDialog(box); + IupSetAttribute (dlg, "TITLE", "IupToggle Test"); + IupSetAttributes(dlg, "MARGIN=5x5, GAP=5"); + + /* Associates a menu to the dlg */ + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ToggleTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/tray.c b/iup/test/tray.c new file mode 100755 index 0000000..58b7daf --- /dev/null +++ b/iup/test/tray.c @@ -0,0 +1,120 @@ +#include +#include +#include "iup.h" + +static unsigned char pixmap [ ] = +{ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,2,3,3,3,3,3,3,3,2,1,0,0,0, + 0,0,2,1,2,3,3,3,3,3,2,1,2,0,0,0, + 0,0,3,2,1,2,3,3,3,2,1,2,3,0,0,0, + 0,0,3,3,2,1,2,3,2,1,2,3,3,0,0,0, + 0,0,3,3,3,2,1,2,1,2,3,3,3,0,0,0, + 0,0,3,3,3,3,2,1,2,3,3,3,3,0,0,0, + 0,0,3,3,3,2,1,2,1,2,3,3,3,0,0,0, + 0,0,3,3,2,1,2,3,2,1,2,3,3,0,0,0, + 0,0,3,2,1,2,3,3,3,2,1,2,3,0,0,0, + 0,0,2,1,2,3,3,3,3,3,2,1,2,0,0,0, + 0,0,1,2,3,3,3,3,3,3,3,2,1,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +static int close(Ihandle* ih) +{ + IupDestroy((Ihandle*)IupGetAttribute(ih, "_DIALOG")); + return IUP_DEFAULT; +// return IUP_CLOSE; +} + +static int hide(Ihandle* ih) +{ + IupSetAttribute((Ihandle*)IupGetAttribute(ih, "_DIALOG"), "HIDETASKBAR", "YES"); + return IUP_DEFAULT; +} + +static int show(Ihandle* ih) +{ + IupSetAttribute((Ihandle*)IupGetAttribute(ih, "_DIALOG"), "HIDETASKBAR", "NO"); + return IUP_DEFAULT; +} + +static int showmenu(Ihandle* ih) +{ + Ihandle* menu = IupMenu(IupItem("Show", "show"), IupItem("Hide", "hide"), IupItem("Exit", "close"), NULL); + IupSetAttribute(menu, "_DIALOG", (char*)ih); + IupSetFunction("show", (Icallback) show); + IupSetFunction("hide", (Icallback) hide); + IupSetFunction("close", (Icallback) close); + IupPopup(menu, IUP_MOUSEPOS, IUP_MOUSEPOS); + IupDestroy(menu); + return IUP_DEFAULT; +} + +static int k_esc(Ihandle* ih) +{ + IupDestroy(ih); + return IUP_DEFAULT; +} + +static int close_cb(Ihandle* ih) +{ + IupSetAttribute(ih, "HIDETASKBAR", "YES"); + return IUP_IGNORE; +} + +static int trayclick(Ihandle *ih, int button, int pressed, int dclick) +{ +printf("trayclick_cb(button=%d, pressed=%d, dclick=%d)\n", button, pressed, dclick); + if (button == 1 && pressed) + IupSetAttribute(ih, "HIDETASKBAR", "NO"); + else if (button == 3 && pressed) + showmenu(ih); + return IUP_DEFAULT; +} + +void TrayTest(void) +{ + Ihandle *dlg, *img; + + img = IupImage(16, 16, pixmap); + IupSetAttribute(img, "0", "BGCOLOR"); + IupSetAttribute(img, "1", "255 255 0"); + IupSetAttribute(img, "2", "255 0 0"); + IupSetAttribute(img, "3", "255 255 0"); + IupSetHandle ("img", img); + + dlg = IupDialog(NULL); + + IupSetAttribute(dlg, "TITLE", "Tray Test"); + IupSetAttribute(dlg, "TRAY", "YES"); + IupSetAttribute(dlg, "TRAYTIP", "Tip at Tray"); + IupSetAttribute(dlg, "TRAYIMAGE", "img"); + IupSetAttribute(dlg, "SIZE", "100x100"); + IupSetCallback(dlg, "TRAYCLICK_CB", (Icallback)trayclick); + IupSetCallback(dlg, "CLOSE_CB", (Icallback)close_cb); + IupSetCallback(dlg, "K_ESC", (Icallback)k_esc); + + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); + + /* start only the task bar icon */ + IupSetAttribute(dlg, "HIDETASKBAR", "YES"); +} + + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + TrayTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/tree.c b/iup/test/tree.c new file mode 100755 index 0000000..009c97f --- /dev/null +++ b/iup/test/tree.c @@ -0,0 +1,518 @@ +/*IupTree Example in C +Creates a tree with some branches and leaves. +Two callbacks are registered: one deletes marked nodes when the Del key is pressed, +and the other, called when the right mouse button is pressed, opens a menu with options. */ + +#include +#include +#include + +#include "iup.h" +#include "iupkey.h" + + +static Ihandle* load_image_LogoTecgraf(void) +{ + unsigned char imgdata[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 120, 143, 125, 132, 148, 178, 173, 133, 149, 178, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 110, 130, 48, 130, 147, 177, 254, 124, 139, 167, 254, 131, 147, 176, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 128, 153, 134, 142, 159, 191, 194, 47, 52, 61, 110, 114, 128, 154, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 143, 172, 192, 140, 156, 188, 99, 65, 69, 76, 16, 97, 109, 131, 251, 129, 144, 172, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 147, 175, 232, 140, 157, 188, 43, 0, 0, 0, 0, 100, 112, 134, 211, 126, 141, 169, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 88, 26, 48, 52, 57, 60, 135, 150, 178, 254, 108, 121, 145, 83, 105, 118, 142, 76, 106, 119, 143, 201, 118, 133, 159, 122, 117, 129, 152, 25, 168, 176, 190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 118, 128, 145, 3, 104, 117, 140, 92, 114, 127, 152, 180, 131, 147, 177, 237, 133, 149, 178, 249, 38, 42, 50, 222, 137, 152, 180, 249, 126, 142, 170, 182, 114, 128, 154, 182, 104, 117, 140, 227, 95, 107, 128, 238, 83, 93, 112, 248, 84, 95, 113, 239, 104, 117, 141, 180, 115, 129, 155, 93, 127, 140, 165, 4, + 98, 109, 130, 153, 109, 123, 147, 254, 145, 163, 195, 153, 138, 154, 182, 56, 115, 123, 138, 5, 92, 99, 109, 35, 134, 149, 177, 230, 0, 0, 0, 0, 0, 0, 0, 0, 120, 133, 159, 143, 135, 151, 181, 115, 86, 89, 93, 5, 41, 45, 51, 54, 40, 45, 53, 150, 107, 120, 144, 254, 122, 137, 164, 154, + 51, 57, 66, 147, 83, 93, 112, 255, 108, 121, 145, 159, 113, 126, 151, 62, 123, 136, 159, 8, 87, 93, 103, 35, 125, 141, 169, 230, 0, 0, 0, 0, 0, 0, 0, 0, 129, 143, 169, 143, 140, 156, 184, 115, 134, 147, 172, 8, 124, 138, 165, 60, 124, 139, 167, 155, 131, 147, 177, 255, 131, 147, 176, 153, + 64, 68, 73, 2, 36, 39, 45, 86, 41, 46, 54, 173, 60, 67, 80, 232, 75, 84, 101, 251, 89, 100, 120, 228, 105, 118, 142, 250, 110, 123, 148, 187, 118, 132, 158, 187, 126, 141, 169, 229, 134, 149, 177, 239, 136, 152, 179, 250, 136, 152, 181, 234, 139, 156, 186, 175, 130, 145, 173, 90, 124, 134, 151, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 74, 79, 19, 60, 64, 73, 50, 92, 103, 124, 254, 86, 95, 111, 84, 90, 100, 117, 76, 126, 141, 168, 201, 113, 126, 150, 119, 99, 105, 117, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 105, 125, 231, 135, 151, 181, 46, 0, 0, 0, 0, 137, 154, 184, 212, 123, 137, 164, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 83, 98, 191, 133, 149, 179, 102, 111, 121, 139, 17, 134, 150, 180, 252, 126, 140, 166, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 48, 57, 132, 121, 136, 164, 197, 121, 135, 161, 115, 130, 146, 175, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 52, 46, 87, 98, 118, 254, 126, 142, 170, 254, 124, 139, 166, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 57, 67, 118, 115, 128, 152, 170, 127, 140, 164, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + Ihandle* image = IupImageRGBA(16, 16, imgdata); + return image; +} + +#define TEST_IMAGE_SIZE 16 + +static Ihandle* load_image_TestImage(void) +{ + unsigned char image_data_8 [TEST_IMAGE_SIZE*TEST_IMAGE_SIZE] = + { + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,1,1,1,1,2,2,2,2,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,3,3,3,3,4,4,4,4,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + }; + + Ihandle* image = IupImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, image_data_8); + IupSetAttribute(image, "0", "BGCOLOR"); + IupSetAttribute(image, "1", "255 0 0"); + IupSetAttribute(image, "2", "0 255 0"); + IupSetAttribute(image, "3", "0 0 255"); + IupSetAttribute(image, "4", "255 255 255"); + IupSetAttribute(image, "5", "0 0 0"); + + return image; +} + +static int addleaf(void) +{ + char attr[50]; + Ihandle* tree = IupGetHandle("tree"); + int id = IupGetInt(tree, "VALUE"); + sprintf(attr, "ADDLEAF%d", id); + IupSetAttribute(tree, attr, ""); + return IUP_DEFAULT; +} + +static int insertleaf(void) +{ + char attr[50]; + Ihandle* tree = IupGetHandle("tree"); + int id = IupGetInt(tree, "VALUE"); + sprintf(attr, "INSERTLEAF%d", id); + IupSetAttribute(tree, attr, ""); + return IUP_DEFAULT; +} + +static int addbranch(void) +{ + char attr[50]; + Ihandle* tree = IupGetHandle("tree"); + int id = IupGetInt(tree, "VALUE"); + sprintf(attr, "ADDBRANCH%d", id); + IupSetAttribute(tree, attr, ""); + return IUP_DEFAULT; +} + +static int insertbranch(void) +{ + char attr[50]; + Ihandle* tree = IupGetHandle("tree"); + int id = IupGetInt(tree, "VALUE"); + sprintf(attr, "INSERTBRANCH%d", id); + IupSetAttribute(tree, attr, ""); + return IUP_DEFAULT; +} + +static int text_cb(Ihandle* ih, int c, char *after) +{ + if (c == K_ESC) + return IUP_CLOSE; + + if (c == K_CR) + { + Ihandle *tree = IupGetHandle("tree"); + IupSetAttribute(tree, "NAME", after); + return IUP_CLOSE; + } + + return IUP_DEFAULT; +} + +static int removenode(void) +{ + Ihandle* tree = IupGetHandle("tree"); + IupSetAttribute(tree, "DELNODE", "SELECTED"); + return IUP_DEFAULT; +} + +static int removechild(void) +{ + Ihandle* tree = IupGetHandle("tree"); + IupSetAttribute(tree, "DELNODE", "CHILDREN"); + return IUP_DEFAULT; +} + +int renamenode(void) +{ + Ihandle* tree = IupGetHandle("tree"); + IupSetAttribute(tree, "RENAME", "YES"); + return IUP_DEFAULT; +} + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ + printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s]) - [id=%d]\n",(char)but,pressed,x,y, status, IupConvertXYToPos(ih, x, y)); + return IUP_DEFAULT; +} + +static int motion_cb(Ihandle *ih,int x,int y,char* status) +{ + printf("MOTION_CB(x=%d, y=%d [%s]) - [id=%d]\n",x,y, status,IupConvertXYToPos(ih, x, y)); + return IUP_DEFAULT; +} + +static int showrename_cb(Ihandle* ih, int id) +{ + (void)ih; + printf("SHOWRENAME_CB(%d)\n", id); + return IUP_DEFAULT; +} + +static int selection_cb(Ihandle *ih, int id, int status) +{ + (void)ih; + printf("SELECTION_CB(%d, %d)\n", id, status); + return IUP_DEFAULT; +} + +static int multiselection_cb(Ihandle *ih, int* ids, int n) +{ + int i; + (void)ih; + printf("MULTISELECTION_CB("); + for (i = 0; i < n; i++) + printf("%d, ", ids[i]); + printf("n=%d)\n", n); + return IUP_DEFAULT; +} + +static int executeleaf_cb(Ihandle* ih, int id) +{ + printf("EXECUTELEAF_CB (%d)\n", id); + return IUP_DEFAULT; +} + +static int renamenode_cb(Ihandle* ih, int id, char* title) +{ + printf("RENAMENODE_CB (%d=%s)\n", id, title); + return IUP_DEFAULT; +} + +static int rename_cb(Ihandle* ih, int id, char* title) +{ + printf("RENAME_CB (%d=%s)\n", id, title); + if (strcmp(title, "fool") == 0) + return IUP_IGNORE; + return IUP_DEFAULT; +} + +static int branchopen_cb(Ihandle* ih, int id) +{ + printf("BRANCHOPEN_CB (%d)\n", id); +// if (id == 6) +// return IUP_IGNORE; + return IUP_DEFAULT; +} + +static int branchclose_cb(Ihandle* ih, int id) +{ + printf("BRANCHCLOSE_CB (%d)\n", id); +// if (id == 6) +// return IUP_IGNORE; + return IUP_DEFAULT; +} + +static int dragdrop_cb(Ihandle* ih, int drag_id, int drop_id, int shift, int control) +{ + printf("DRAGDROP_CB (%d)->(%d)\n", drag_id, drop_id); + return IUP_CONTINUE; +// return IUP_DEFAULT; +} + +static int getfocus_cb(Ihandle* ih) +{ + printf("GETFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle* ih) +{ + printf("KILLFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle* ih) +{ + printf("ENTERWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int k_any_cb(Ihandle* ih, int c) +{ + if (c == K_DEL) + IupSetAttribute(ih, "DELNODE", "MARKED"); + if (iup_isprint(c)) + printf("K_ANY(%s, %d = %s \'%c\')\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%s, %d = %s)\n", IupGetAttribute(IupGetParent(IupGetParent(ih)), "TITLE"), c, iupKeyCodeToName(c)); + return IUP_CONTINUE; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB()\n"); + return IUP_DEFAULT; +} + +static int selectnode(Ihandle* ih) +{ + Ihandle* tree = IupGetHandle("tree"); + IupSetAttribute(tree, "VALUE", IupGetAttribute(ih, "TITLE")); + return IUP_DEFAULT; +} + +static int nodeinfo(Ihandle* ih) +{ + char attr[50], *kind; + Ihandle* tree = IupGetHandle("tree"); + int branch = 0, id = IupGetInt(tree, "VALUE"); + printf("\nTree Info:\n"); + printf(" TOTALCOUNT=%s\n", IupGetAttribute(tree, "COUNT")); + printf("Node Info:\n"); + printf(" ID=%d\n", id); + printf(" TITLE=%s\n", IupGetAttribute(tree, "TITLE")); + printf(" DEPTH=%s\n", IupGetAttribute(tree, "DEPTH")); + sprintf(attr, "KIND%d", id); + kind = IupGetAttribute(tree, "KIND"); + printf(" KIND=%s\n", kind); + if (strcmp(kind, "BRANCH")==0) branch = 1; + if (branch) + printf(" STATE=%s\n", IupGetAttribute(tree, "STATE")); + printf(" IMAGE=%s\n", IupGetAttribute(tree, "IMAGE")); + if (branch) + printf(" IMAGEBRANCHEXPANDED=%s\n", IupGetAttribute(tree, "IMAGEBRANCHEXPANDED")); + printf(" MARKED=%s\n", IupGetAttribute(tree, "MARKED")); + printf(" COLOR=%s\n", IupGetAttribute(tree, "COLOR")); + printf(" PARENT=%s\n", IupGetAttribute(tree, "PARENT")); + printf(" COUNT=%s\n", IupGetAttribute(tree, "CHILDCOUNT")); + printf(" USERDATA=%p\n", IupGetAttribute(tree, "USERDATA")); + return IUP_DEFAULT; +} + +static int rightclick_cb(Ihandle* ih, int id) +{ + Ihandle *popup_menu; + char attr[50]; + + popup_menu = IupMenu( + IupItem ("Node Info","nodeinfo"), + IupItem ("Rename Node","renamenode"), + IupSeparator(), + IupItem ("Add Leaf","addleaf"), + IupItem ("Add Branch","addbranch"), + IupItem ("Insert Leaf","insertleaf"), + IupItem ("Insert Branch","insertbranch"), + IupItem ("Remove Node","removenode"), + IupItem ("Remove Children","removechild"), + IupSubmenu("Focus", IupMenu( + IupItem ("ROOT", "selectnode"), + IupItem ("LAST", "selectnode"), + IupItem ("PGUP", "selectnode"), + IupItem ("PGDN", "selectnode"), + IupItem ("NEXT", "selectnode"), + IupItem ("PREVIOUS", "selectnode"), + NULL)), + IupSubmenu("Mark", IupMenu( + IupItem ("INVERT", "selectnode"), + IupItem ("BLOCK", "selectnode"), + IupItem ("CLEARALL", "selectnode"), + IupItem ("MARKALL", "selectnode"), + IupItem ("INVERTALL", "selectnode"), + NULL)), + NULL); + + IupSetFunction("nodeinfo", (Icallback) nodeinfo); + IupSetFunction("selectnode", (Icallback) selectnode); + IupSetFunction("addleaf", (Icallback) addleaf); + IupSetFunction("addbranch", (Icallback) addbranch); + IupSetFunction("insertleaf", (Icallback) insertleaf); + IupSetFunction("insertbranch", (Icallback) insertbranch); + IupSetFunction("removenode", (Icallback) removenode); + IupSetFunction("removechild", (Icallback) removechild); + IupSetFunction("renamenode", (Icallback) renamenode); + +// sprintf(attr, "%d", id); +// IupSetAttribute(ih, "VALUE", attr); + IupPopup(popup_menu, IUP_MOUSEPOS, IUP_MOUSEPOS); + + IupDestroy(popup_menu); + + return IUP_DEFAULT; +} + +static int active(Ihandle *ih) +{ + Ihandle* tree = IupGetHandle("tree"); + if (IupGetInt(tree, "ACTIVE")) + IupSetAttribute(tree, "ACTIVE", "NO"); + else + IupSetAttribute(tree, "ACTIVE", "YES"); + return IUP_DEFAULT; +} + +static int next(Ihandle *ih) +{ + Ihandle* tree = IupGetHandle("tree"); + IupSetAttribute(tree, "VALUE", "NEXT"); + //IupSetAttribute(tree, "TOPITEM", "8"); + return IUP_DEFAULT; +} + +static int prev(Ihandle *ih) +{ + Ihandle* tree = IupGetHandle("tree"); + IupSetAttribute(tree, "VALUE", "PREVIOUS"); + return IUP_DEFAULT; +} + +/* Initializes IupTree and registers callbacks */ +static void init_tree(void) +{ + Ihandle* tree = IupTree(); + + IupSetCallback(tree, "EXECUTELEAF_CB", (Icallback) executeleaf_cb); + IupSetCallback(tree, "RENAMENODE_CB", (Icallback) renamenode_cb); + IupSetCallback(tree, "RENAME_CB", (Icallback) rename_cb); + IupSetCallback(tree, "BRANCHCLOSE_CB", (Icallback) branchclose_cb); + IupSetCallback(tree, "BRANCHOPEN_CB", (Icallback) branchopen_cb); + IupSetCallback(tree, "DRAGDROP_CB", (Icallback) dragdrop_cb); + IupSetCallback(tree, "RIGHTCLICK_CB", (Icallback) rightclick_cb); + IupSetCallback(tree, "K_ANY", (Icallback) k_any_cb); + IupSetCallback(tree, "SHOWRENAME_CB", (Icallback) showrename_cb); + IupSetCallback(tree, "SELECTION_CB", (Icallback) selection_cb); + IupSetCallback(tree, "MULTISELECTION_CB", (Icallback) multiselection_cb); + IupSetCallback(tree, "GETFOCUS_CB", (Icallback) getfocus_cb); + IupSetCallback(tree, "KILLFOCUS_CB", (Icallback) killfocus_cb); + //IupSetCallback(tree, "ENTERWINDOW_CB", (Icallback) enterwindow_cb); + //IupSetCallback(tree, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + //IupSetCallback(tree, "BUTTON_CB", (Icallback)button_cb); + //IupSetCallback(tree, "MOTION_CB", (Icallback)motion_cb); + + IupSetCallback(tree, "HELP_CB", (Icallback)help_cb); + +// IupSetAttribute(tree, "FONT", "COURIER_NORMAL_14"); +// IupSetAttribute(tree, "FGCOLOR", "255 0 0"); +// IupSetAttribute(tree, "SPACING", "10"); +// IupSetAttribute(tree, "BGCOLOR", "255 255 255"); + + IupSetAttribute(tree, "MARKMODE", "MULTIPLE"); + //IupSetAttribute(tree, "SHOWDRAGDROP", "YES"); + IupSetAttribute(tree, "SHOWRENAME", "YES"); + //IupSetAttribute(tree, "AUTODRAGDROP", "YES"); /* Gtk Only */ + + //IupSetAttribute(tree, "ADDEXPANDED", "NO"); +// IupSetAttribute(tree, "HIDELINES", "YES"); +// IupSetAttribute(tree, "HIDEBUTTONS", "YES"); +// IupSetAttribute(tree, "INDENTATION", "40"); + + IupSetHandle("tree", tree); +} + +/* Initializes the dlg */ +static void init_dlg(void) +{ + Ihandle* butactv, *butnext, *butprev, *butmenu; + Ihandle* tree = IupGetHandle("tree"); + Ihandle* box = IupHbox(tree, IupVbox(butactv = IupButton("Active", NULL), + butnext = IupButton("Next", NULL), + butprev = IupButton("Prev", NULL), + butmenu = IupButton("Menu", NULL), + NULL), NULL); + Ihandle* dlg = IupDialog(box) ; + IupSetAttribute(dlg, "TITLE", "IupTree"); + IupSetAttribute(box, "MARGIN", "10x10"); + IupSetAttribute(box, "GAP", "10"); +// IupSetAttribute(box, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BGCOLOR", "92 92 255"); +// IupSetAttribute(dlg, "BACKGROUND", "200 10 80"); +// IupSetAttribute(dlg, "BGCOLOR", "173 177 194"); // Motif BGCOLOR for documentation + IupSetCallback(butactv, "ACTION", active); + IupSetCallback(butnext, "ACTION", next); + IupSetCallback(butprev, "ACTION", prev); + IupSetCallback(butmenu, "ACTION", (Icallback)rightclick_cb); + + IupSetHandle("dlg", dlg); +} + +static void init_tree_nodes(void) +{ + Ihandle* tree = IupGetHandle("tree"); + +#if 0 + /* create from bottom to top */ + /* the current node is the ROOT */ + //IupSetAttribute(tree, "VALUE", "0"); + IupSetAttribute(tree, "TITLE", "Figures"); /* title of the root, id=0 */ + IupSetAttribute(tree, "ADDBRANCH", "3D"); /* 3D=1 */ + IupSetAttribute(tree, "ADDBRANCH", "2D"); /* add to the root, so it will be before "3D", now 2D=1, 3D=2 */ + IupSetAttribute(tree, "ADDBRANCH", "parallelogram"); /* id=1 */ + IupSetAttribute(tree, "ADDLEAF1", "diamond"); + IupSetAttribute(tree, "ADDLEAF1", "square"); + IupSetAttribute(tree, "ADDBRANCH", "triangle"); + IupSetAttribute(tree, "ADDLEAF1", "scalenus"); + IupSetAttribute(tree, "ADDLEAF1", "isoceles"); + IupSetAttribute(tree, "ADDLEAF1", "equilateral"); + IupSetAttribute(tree, "ADDLEAF", "Other (çãé)"); +#else + /* create from top to bottom */ + IupSetAttribute(tree, "TITLE0", "Figures"); + IupSetAttribute(tree, "ADDLEAF0", "Other"); /* new id=1 */ + IupSetAttribute(tree, "ADDBRANCH1", "triangle"); /* new id=2 */ + IupSetAttribute(tree, "ADDLEAF2", "equilateral"); /* ... */ + IupSetAttribute(tree, "ADDLEAF3", "isoceles"); + IupSetAttribute(tree, "ADDLEAF4", "scalenus"); + IupSetAttribute(tree, "INSERTBRANCH2","parallelogram"); /* same depth as id=2, new id=6 */ + IupSetAttribute(tree, "ADDLEAF6", "square"); + IupSetAttribute(tree, "ADDLEAF7", "diamond"); + IupSetAttribute(tree, "INSERTBRANCH6","2D"); /* new id=9 */ + IupSetAttribute(tree, "INSERTBRANCH9","3D"); +#endif + + IupSetAttribute(tree, "VALUE", "6"); + IupSetAttribute(tree, "RASTERSIZE", NULL); /* remove the minimum size limitation */ + IupSetAttribute(tree, "COLOR8", "92 92 255"); + IupSetAttribute(tree, "TITLEFONT8", "Courier, 14"); + IupSetAttributeHandle(tree, "IMAGE8", load_image_LogoTecgraf()); + IupSetAttributeHandle(tree, "IMAGE7", load_image_TestImage()); + IupSetAttribute(tree, "IMAGE6", IupGetAttribute(tree, "IMAGE8")); +} + +void TreeTest(void) +{ + Ihandle* dlg; + + init_tree(); /* Initializes IupTree */ + init_dlg(); /* Initializes the dlg */ + dlg = IupGetHandle("dlg"); /* Retrieves the dlg handle */ + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); /* Displays the dlg */ + init_tree_nodes(); /* Initializes attributes, can be done here or anywhere */ +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + IupControlsOpen(); + + TreeTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/val.c b/iup/test/val.c new file mode 100755 index 0000000..2f0b500 --- /dev/null +++ b/iup/test/val.c @@ -0,0 +1,199 @@ +#include +#include + +#include "iup.h" +#include "iupkey.h" + + +static Ihandle *lbl_h=NULL, *lbl_v=NULL; + +static void print_value(Ihandle *ih, double a) +{ + char *type = IupGetAttribute(ih, "TYPE"); + + switch(type[0]) + { + case 'V': + IupSetfAttribute(lbl_v, "TITLE", "VALUE=%.2f", a); + break; + case 'H': + IupSetfAttribute(lbl_h, "TITLE", "VALUE=%.2f", a); + break; + } +} + +static int mousemove(Ihandle *ih, double a) +{ + printf("mousemove %.2f\n", a); + print_value(ih, a); + return IUP_DEFAULT; +} + +static int button_press(Ihandle *ih, double a) +{ + char *type = IupGetAttribute(ih, "TYPE"); + + printf("button_press %.2f\n", a); + + switch(type[0]) + { + case 'V': + IupSetAttribute(lbl_v, "FGCOLOR", "255 0 0"); + break; + + case 'H': + IupSetAttribute(lbl_h, "FGCOLOR", "255 0 0"); + break; + } + + print_value(ih, a); + + return IUP_DEFAULT; +} + +static int button_release(Ihandle *ih, double a) +{ + char *type = IupGetAttribute(ih, "TYPE"); + + printf("button_release %.2f\n", a); + + switch(type[0]) + { + case 'V': + IupSetAttribute(lbl_v, "FGCOLOR", "0 0 0"); + break; + + case 'H': + IupSetAttribute(lbl_h, "FGCOLOR", "0 0 0"); + break; + } + + print_value(ih, a); + + return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ + if (iup_isprint(c)) + printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c); + else + printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c)); + return IUP_CONTINUE; +} + +static int getfocus_cb(Ihandle *ih) +{ + printf("GETFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int help_cb(Ihandle* ih) +{ + printf("HELP_CB()\n"); + return IUP_DEFAULT; +} + +static int killfocus_cb(Ihandle *ih) +{ + printf("KILLFOCUS_CB()\n"); + return IUP_DEFAULT; +} + +static int leavewindow_cb(Ihandle *ih) +{ + printf("LEAVEWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +static int enterwindow_cb(Ihandle *ih) +{ + printf("ENTERWINDOW_CB()\n"); + return IUP_DEFAULT; +} + +void ValTest(void) +{ + Ihandle *dlg, *val_h, *val_v; + +// IupOldValOpen(); + + lbl_v = IupLabel("VALUE="); + IupSetAttribute(lbl_v, "SIZE", "70x"); + + lbl_h = IupLabel("VALUE="); + IupSetAttribute(lbl_h, "SIZE", "70x"); + + val_v = IupVal("VERTICAL"); + IupSetAttribute(val_v, "MAX", "10.0"); + IupSetAttribute(val_v, "STEP", ".02"); + IupSetAttribute(val_v, "PAGESTEP", ".2"); + IupSetAttribute(val_v, "SHOWTICKS", "5"); +// IupSetAttribute(val_v, "TICKSPOS", "REVERSE"); + IupSetCallback(val_v, "HELP_CB", (Icallback)help_cb); + IupSetCallback(val_v, "GETFOCUS_CB", (Icallback)getfocus_cb); + IupSetCallback(val_v, "KILLFOCUS_CB", (Icallback)killfocus_cb); + IupSetCallback(val_v, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); + IupSetCallback(val_v, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); + IupSetCallback(val_v, "K_ANY", (Icallback)k_any); +// IupSetAttribute(val_v, "INVERTED", "NO"); + IupSetAttribute(val_v, "EXPAND", "VERTICAL"); + + val_h = IupVal("HORIZONTAL"); + IupSetAttribute(val_h, "MAX", "100.0"); + IupSetAttribute(val_h, "SHOWTICKS", "10"); + IupSetAttribute(val_h, "TICKSPOS", "BOTH"); /* Windows Only */ +// IupSetAttribute(val_h, "INVERTED", "YES"); + IupSetAttribute(val_h, "EXPAND", "HORIZONTAL"); + + dlg = IupDialog + ( + IupHbox + ( + IupSetAttributes(IupHbox + ( + val_v, + lbl_v, + NULL + ), "ALIGNMENT=ACENTER"), + IupSetAttributes(IupVbox + ( + val_h, + lbl_h, + NULL + ), "ALIGNMENT=ACENTER"), + NULL + ) + ); + + IupSetCallback(val_v, "BUTTON_PRESS_CB", (Icallback) button_press); + IupSetCallback(val_v, "BUTTON_RELEASE_CB", (Icallback) button_release); + IupSetCallback(val_v, "MOUSEMOVE_CB", (Icallback) mousemove); + + IupSetCallback(val_h, "BUTTON_PRESS_CB", (Icallback) button_press); + IupSetCallback(val_h, "BUTTON_RELEASE_CB", (Icallback) button_release); + IupSetCallback(val_h, "MOUSEMOVE_CB", (Icallback) mousemove); + + IupSetAttribute(dlg, "TITLE", "IupVal Test"); +// IupSetAttribute(IupGetChild(dlg, 0), "BGCOLOR", "50 50 255"); +// IupSetAttribute(IupGetChild(dlg, 0), "ACTIVE", "NO"); + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupShowXY(dlg,IUP_CENTER,IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ValTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/vbox.c b/iup/test/vbox.c new file mode 100755 index 0000000..3040ea6 --- /dev/null +++ b/iup/test/vbox.c @@ -0,0 +1,122 @@ +#include +#include +#include + +void VboxTest(void) +{ + /* IUP identifiers */ + Ihandle *dlg; + Ihandle *fr1, *fr2, *fr3; + Ihandle *btn_11, *btn_12, *btn_13; + Ihandle *btn_21, *btn_22, *btn_23; + Ihandle *btn_31, *btn_32, *btn_33; + Ihandle *vbox_1, *vbox_2, *vbox_3; + + /* Creates frame 1 */ + fr1 = IupFrame + ( + vbox_1 = IupVbox + ( + IupFill(), + btn_11=IupButton("1", NULL), + btn_12=IupButton("2", NULL), + btn_13=IupButton("3", NULL), + IupFill(), + NULL + ) + ); + + IupSetAttribute(fr1, "TITLE", "ALIGNMENT=ALEFT"); + IupSetAttribute(btn_11, "SIZE", "20x10"); + IupSetAttribute(btn_12, "SIZE", "30x20"); + IupSetAttribute(btn_13, "SIZE", "40x30"); + IupSetAttribute(vbox_1, "ALIGNMENT", "ALEFT"); +// IupSetAttribute(vbox_1, "MARGIN", "20x20"); +// IupSetAttribute(vbox_1, "GAP", "10"); + IupSetAttribute(vbox_1, "HOMOGENEOUS", "YES"); + IupSetAttribute(vbox_1, "EXPANDCHILDREN", "YES"); +// IupSetAttribute(btn_12, "VISIBLE", "NO"); +// IupSetAttribute(btn_12, "FLOATING", "YES"); + + /* Creates frame 2 */ + fr2 = IupFrame + ( + vbox_2 = IupVbox + ( + IupFill(), + btn_21 = IupButton ("1", NULL), + btn_22 = IupButton ("2", NULL), + btn_23 = IupButton ("3", NULL), + IupFill(), + NULL + ) + ); + + IupSetAttribute(fr2, "TITLE", "ALIGNMENT=ACENTER"); + IupSetAttribute(btn_21, "SIZE", "20x30"); + IupSetAttribute(btn_22, "SIZE", "30x30"); + IupSetAttribute(btn_23, "SIZE", "40x30"); + IupSetAttribute(vbox_2, "ALIGNMENT", "ACENTER"); + + /* Creates frame 3 */ + fr3 = IupFrame + ( + vbox_3 = IupVbox + ( + IupFill (), + btn_31=IupButton ("1", NULL), + btn_32=IupButton ("2", NULL), + btn_33=IupButton ("3", NULL), + IupFill (), + NULL + ) + ); + + IupSetAttribute(fr3, "TITLE", "ALIGNMENT=ARIGHT"); + IupSetAttribute(btn_31, "SIZE", "20x30"); + IupSetAttribute(btn_32, "SIZE", "30x30"); + IupSetAttribute(btn_33, "SIZE", "40x30"); + IupSetAttribute(vbox_3, "ALIGNMENT", "ARIGHT"); + + dlg = IupDialog + ( + IupHbox + ( + fr1, + IupFill (), + fr2, + IupFill (), + fr3, + IupFill (), + NULL + ) + ); + + IupSetAttribute(dlg, "TITLE", "IupVbox Test"); /* Sets dlg's title */ + IupSetAttribute(dlg, "MARGIN", "10x10"); + IupSetAttribute(dlg, "GAP", "10"); + IupSetAttribute(fr1, "MARGIN", "0x0"); /* avoid attribute propagation */ + IupSetAttribute(fr2, "MARGIN", "0x0"); + IupSetAttribute(fr3, "MARGIN", "0x0"); + IupSetAttribute(fr1, "GAP", "0"); + IupSetAttribute(fr2, "GAP", "0"); + IupSetAttribute(fr3, "GAP", "0"); + + /* Shows dlg in the center of the screen */ + IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + VboxTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif diff --git a/iup/test/zbox.c b/iup/test/zbox.c new file mode 100755 index 0000000..0451277 --- /dev/null +++ b/iup/test/zbox.c @@ -0,0 +1,98 @@ +#include +#include +#include "iup.h" + +static int list_cb (Ihandle *h, char *t, int o, int selected) +{ + if (selected == 1) + { + Ihandle* zbox = IupGetHandle ("zbox"); + IupSetAttribute (zbox, "VALUE", t); + } + + return IUP_DEFAULT; +} + +void ZboxTest(void) +{ + Ihandle *dlg; + Ihandle *frm; + Ihandle *zbox; + Ihandle *text; + Ihandle *list; + Ihandle *lbl; + Ihandle *btn; + Ihandle *frame; + + frame = IupFrame(IupSetAttributes(IupList(NULL), "DROPDOWN=YES, 1=Test, 2=XXX, VALUE=1")); + IupSetAttribute (frame, "TITLE", "List"); + + text = IupText(""); + + IupSetAttributes (text, "EXPAND = YES, VALUE = \"Enter your text here\""); + + /* Creates a label */ + lbl = IupLabel("This element is a label"); + + /* Creatas a button */ + btn = IupButton ("This button does nothing", ""); + + /* Creates handles for manipulating the zbox VALUE */ + IupSetHandle ("frame", frame); + IupSetHandle ("text", text); + IupSetHandle ("lbl", lbl); + IupSetHandle ("btn", btn); + + /* Creates zbox with four elements */ + zbox = IupZbox (frame, text, lbl, btn, NULL); + + /* Associates handle "zbox" with zbox */ + IupSetHandle ("zbox", zbox); + + /* Sets zbox alignment */ + IupSetAttribute (zbox, "ALIGNMENT", "ACENTER"); + IupSetAttribute (zbox, "VALUE", "text"); + + /* Creates frame */ + frm = IupFrame + ( + IupHbox + ( + list = IupList(NULL), + NULL + ) + ), + + /* Creates dialog */ + dlg = IupDialog + ( + IupVbox + ( + frm, + zbox, + NULL + ) + ); + + IupSetAttributes (list, "1 = frame, 2 = text, 3 = lbl, 4 = btn, VALUE=2"); + IupSetAttribute (frm, "TITLE", "Select an element"); + IupSetAttributes (dlg, "MARGIN=10x10, GAP=10, TITLE = \"IupZbox Example\""); + IupSetCallback (list, "ACTION", (Icallback) list_cb); + + IupShowXY (dlg, IUP_CENTER, IUP_CENTER ); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ + IupOpen(&argc, &argv); + + ZboxTest(); + + IupMainLoop(); + + IupClose(); + + return EXIT_SUCCESS; +} +#endif -- cgit v1.2.3